import numpy as np
np.random.rand(2,3)随机产生2*3个【0,1】之间的数
np.random.randn(2,3)随机产生2*3个服从标准正态分布的数。N(0,1)
10*np.random.randn(2,3)+20 服从u=20 ,sig=10的正态分布
np.random.randint(1,3,(2,3))生成[1,3)的2*3的矩阵,然后只能是1,2取值了,因为左闭右开
np.random.randint(5,size=(2,3))默认高位是5,相当于[0,5)的int型
import theano
import theano.tensor as tf
数值类型:
iscalar(int类型的变量)、fscalar(float类型的变量)
一维向量:ivector(int 类型的向量)、fvector(float类型的向量)、
二维矩阵:fmatrix(float类型矩阵)、imatrix(int类型的矩阵)
三维float类型矩阵:ftensor3
四维float类型矩阵:ftensor4
theano的风格是:先定义变量名,然后定义计算,然后输入值计算结果
x=theano.tensor.iscalar('x') #声明一个int类型的变量x
y=x+x #定义y=x+x
f=theano.function([x],y)#定义函数的自变量为x(输入),因变量为y(输出)
print f(20)#计算当x=20的时候,函数f(x)的值
求导
- import theano
- x =theano.tensor.fscalar('x')#定义一个float类型的变量x
- y= 1 / (1 + theano.tensor.exp(-x))#定义变量y
- dx=theano.grad(y,x)#偏导数函数
- f= theano.function([x],dx)#定义函数f,输入为x,输出为s函数的偏导数
- print f(3)#计算当x=3的时候,函数y的偏导数
共享变量:(值得用get_value()来提取)
- import theano
- import numpy
- A=numpy.random.randn(3,4);#随机生成一个矩阵
- x = theano.shared(A)#从A,创建共享变量x
- print x.get_value()
共享变量更新:
- import theano
- w= theano.shared(1)#定义一个共享变量w,其初始值为1
- x=theano.tensor.iscalar('x')
- f=theano.function([x], w, updates=[[w, w+x]])#定义函数自变量为x,因变量为w,当函数执行完毕后,更新参数w=w+x
- print f(3)#函数输出为w
- print w.get_value()#这个时候可以看到w=w+x为4
转自:https://blog.youkuaiyun.com/hjimce/article/details/46806923