CS231n作业笔记1.5:Softmax的误差以及梯度计算
来源:互联网 发布:雅可比矩阵公式 编辑:程序博客网 时间:2024/04/28 22:41
CS231n简介
详见 CS231n课程笔记1:Introduction。
本文都是作者自己的思考,正确性未经过验证,欢迎指教。
作业笔记
Softmax的误差函数以及正则项请参考 CS231n课程笔记3.1:线性分类器(SVM,softmax)的误差函数、正则化。
代码部分请参考 python、numpy、scipy、matplotlib的一些小技巧。
注:这里只写了向量化的实现方法,因为非向量方法代码冗长,而且速度慢。
1. 损失函数Loss Function
这里值得注明的有
1. 使用了broadcasting来把sum_exp拓展到所有class label处;
2. 使用了integer array index用于得到真值处的log_loss;
3. 使用了average函数防止sum函数超范围;
4. 做除法的时候加上1e-15用于防止除0。
scores = X.dot(W) exp_scores = np.exp(scores) sum_exp_scores = np.sum(exp_scores,axis=1,keepdims=True)+1e-15 norm_exp_scores = exp_scores/sum_exp_scores log_loss = -np.log(norm_exp_scores) log_loss = np.average(log_loss[np.arange(X.shape[0]),y]) loss = log_loss + 0.5*reg*np.sum(W*W)
2. 梯度计算
这里值得注意的有:
1. dlog_loss中只对真值label对应处传播。
2. dsum_exp到dexp传播的时候要对所有class传播。
3. 使用broadcasting的时候注意[d,]以及[d,1]的区别。
dloss = 1. dlog_loss = np.zeros(norm_exp_scores.shape) dlog_loss[np.arange(X.shape[0]),y] = dloss/X.shape[0] dnorm_exp_scores = -1./norm_exp_scores*dlog_loss dexp_scores = dnorm_exp_scores / sum_exp_scores dsum_exp_scores = - dnorm_exp_scores * exp_scores / sum_exp_scores / sum_exp_scores dexp_scores += np.sum(dsum_exp_scores,axis=1,keepdims=True) dscores = dexp_scores * exp_scores dW = X.T.dot(dscores) dW += reg*W
0 0
- CS231n作业笔记1.5:Softmax的误差以及梯度计算
- CS231n作业笔记1.6:神经网络的误差与梯度计算
- cs231n的第一次作业Softmax
- CS231n课程笔记3.1:线性分类器(SVM,softmax)的误差函数、正则化
- CS231n作业笔记1.3:SVM的误差函数以及反向传播(非向量及向量算法)
- cs231n作业1--softmax
- softmax 损失函数以及梯度推导计算
- cs231n - assignment1 - softmax 梯度推导
- CS231n-Assignment1(作业1)-softmax
- CS231n作业笔记2.6:卷积层以及池化层的实现
- CS231n作业笔记1.4:随机梯度下降(SGD)
- cs231n课程课件、作业以及课程笔记
- cs231n课程作业assignment1(Softmax)
- cs231n作业一之实现softmax
- cs231n笔记(3)—误差函数
- CS231n课程笔记3.2:梯度下降
- cs231n笔记--到底什么是梯度消散
- CS231n作业笔记1.2: KNN的交叉验证
- H5与微信获取用户当前位置
- m2e (maven eclipse) 在运行一些命令时出现了无法compile(Unable to locate the Javac Compiler in:)
- iOS 切换到MRC环境下打印 retainCount 始终是-1或者一长串证书
- selenium之 搞定checkbox、radiobox
- eclipse svn 文件冲突问题
- CS231n作业笔记1.5:Softmax的误差以及梯度计算
- C#编写和调用动态链接库
- DataGridRow的创建
- HTML5 文件API
- 加载指定bundleName照片
- 通过netsh一键连接指定WIFI
- Mac OS X 安装 rvm
- 【DVB】【DSMCC】如何从TS流中找到OC数据
- selenium之 如何控制网页内嵌div中滚动条的滚动