Theano是一个Python库,专门用于定义、优化、求值数学表达式,效率高,适用于多维数组。特别适合做机器学习。一般来说,使用时需要安装python和numpy.
首先回顾一下机器学习的东西,定义一个模型(函数)f(x;w) x为输入,w为模型参数,然后定义一个损失函数c(f),通过数据驱动在一堆模型函数中选择最优的函数就是训练training的过程,在机器学习中训练一般采用梯度下降法gradient descent.
使用theano来搭建机器学习(深度学习)框架,有以下优点:
1、 theano能够自动计算梯度
2、只需要两步骤就能搭建框架,定义函数和计算梯度。
一、 定义函数
步骤 0 宣告使用 theano import theano 步骤 1 定义输入 x=theano.tensor.scalar() 步骤 2 定义输出 y=2*x 步骤 3 定义 fuction f = theano.function([x],y) 步骤 4 调用函数 print f(-2) |
步骤1 定义输入变量
a = theano.tensor.scalar()
b =theano.tensor.matrix()
简化 import theano.tensor as T |
步骤2 定义输出变量 需要和输入变量的关系
x1=T.matrix()
x2=T.matrix()
y1=x1*x2
y2=T.dot(x1,x2) #矩阵乘法
步骤3 申明函数
f= theano.function([x],y)
函数输入必须是list 带[]
example:
import theano import theano.tensor as T a= T.matrix() b= T.matrix() c = a*b # 这里的两个矩阵必须完全相同,对应位置元素分别相乘 d = T.dot(a,b) # 这里的两个矩阵不必完全相同,a的列数目必须与b的行数目相同 F1= theano.function([a,b],c) F2= theano.function([a,b],d) A=[[1,2],[3,4]] B=[[2,4],[6,8]] #2*2矩阵 C=[[1,2],[3,4],[5,6]] #3*2矩阵 print(F1(A,B)) print(F2(C,B)) |
结果:
[[ 2. 8.] [18. 32.]] [[14. 20.] [30. 44.]< |