【theano-windows】学习笔记七——logistic回归
来源:互联网 发布:linux如何修改用户组 编辑:程序博客网 时间:2024/06/05 08:50
前言
前面只是学了最基本的theano
操作,但是theano
中还有很多其他的东西,比如图结构,自定义函数等,这些暂时没有用到就先不看了,后续学啥用啥,没必要一口气吃个胖子,免得消化不良还把前面吃的东西忘记了,先拿logistic
回归试试水
基本理论
推导可以看我前面你的博客softmax理论及代码解读——UFLDL, 这里只贴出前向计算公式和损失函数,毕竟theano
可以自动梯度咯
前向计算公式就是sigmoid
函数, 得到的是当前数据
损失函数的定义就是
代码实现
导入包
import numpy as npimport theanoimport theano.tensor as T
定义样本矩阵(样本*属性)以及对应标签向量(样本*标签)
N=400#训练集大小feats=784#每个样本的特征维度,可以当做输入神经元个数train_steps=10000#训练次数x=T.dmatrix('x') #样本*特征维度y=T.dvector('y') #样本*标签
因为是二分类,所以只有一个输出神经元,那么权重维度就是(输入数据维度*1), 进而可以据此进行初始化共享变量,也即模型参数权重、偏置. 注意权重不能初始化为0, 因为这样你的输出就都是一样了,整个网络参数都会一样,这还学个锤子
rng=np.random#随机初始化权重w=theano.shared(rng.randn(feats),name='w')#权重初始化b=theano.shared(0.,name='b')#偏置初始化
随后计算梯度
#logistic回归损失函数print w.get_value().shape#看看每个输入神经元对应的权重维度p1=T.nnet.sigmoid(T.dot(x,w)+b)prediction=p1>0.5xnet=-y*T.log(p1)-(1-y)*T.log(1-p1)#目标函数cost=xnet.mean()+0.01*(w**2).sum()#损失函数+权重衰减#求解梯度gw,gb=theano.grad(cost,[w,b])#损失函数对权重和偏置求导
利用function
更新模型参数,以及输出结果
#用function编译训练函数train=theano.function(inputs=[x,y], outputs=[prediction,xnet], updates=[(w,w-0.1*gw),(b,b-0.1*gb)])#预测函数predict=theano.function(inputs=[x],outputs=[prediction])
可以输出看看预测结果
print 'Target values for D: 'print D[1]print 'Prediction values for D'print predict(D[0])
后续
这只是最基础的一个使用grad
计算损失函数梯度, 然后用function
更新参数的例子,循环还没使用scan
, 后续将跟进深度学习0.1文档学习各种网络的实现,当然依据需求对theano
进行更深一步的探索
阅读全文
0 0
- 【theano-windows】学习笔记七——logistic回归
- Theano入门——Logistic回归
- 机器学习笔记—Logistic 回归
- 【theano-windows】学习笔记一——theano中的变量
- 【theano-windows】学习笔记三——theano中的导数
- 机器学习实战学习笔记9——Logistic回归
- 周志华《机器学习》学习笔记——Logistic回归
- 《机器学习实战》笔记之五——Logistic回归
- 《机器学习实战》笔记之五——Logistic回归
- MatLab建模学习笔记12——Logistic回归模型
- 《机器学习实战》笔记之五——Logistic回归
- 《统计学习方法》笔记(七)--logistic 回归
- 机器学习笔记-Logistic回归
- 机器学习笔记:Logistic回归
- 【机器学习笔记】logistic回归
- 《统计学习方法笔记》——Logistic回归
- 用Theano实现logistic回归
- 斯坦福大学机器学习——logistic回归
- AP聚类算法原理
- 后缀表达式
- 浅谈Redis---(2)
- Android Studio live template巧用动态模板也能大大提高你的开发效率
- 关于MySQL 触发器的使用
- 【theano-windows】学习笔记七——logistic回归
- Spring静态代理
- 入职自我介绍
- 选择排序、快速排序、冒泡排序、插入排序
- 如何选择compileSdkVersion, minSdkVersion 和 targetSdkVersion
- CSS3 background-size 属性
- Hibernate初学者---关于annotation注解的相关知识
- 【JAVA300】51-55 笔记
- Python 多线层协调应用举例