【MatConvNet代码解析】 vl_nnsoftmaxloss

背景知识:http://deeplearning.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92

【MatConvNet代码解析】 vl_nnsoftmaxloss

假设softmax层的输入(softmax前一次的输出),或者理解为一般分类器的得分f(x)=</theta,x>中的/theta可以随便减一个常量。

或者假设现在的类别数目为N,不妨设为N=3,那么会有三个分类器,假设每个分类器的得分为f_j(x)=</theta_j,x>

我们知道在做softmax操作其实就是将exp(f_j(x))归一化。

所以这里每一个f_j(x)其实都可以去减三个分类器得分中任意一个,只要大家减同一个值,不影响结果。

所以在MatConvNet才会有这样的代码

【MatConvNet代码解析】 vl_nnsoftmaxloss

这里大家减去的是N个分类器得分中最大的那个得分,代码中的x就是上面所述的分类器得分。

【MatConvNet代码解析】 vl_nnsoftmaxloss

最后的损失函数为t,如果愿意硬推,不按照背景知识去解释,依然可以解释。解释如下:

【MatConvNet代码解析】 vl_nnsoftmaxloss

【MatConvNet代码解析】 vl_nnsoftmaxloss

上一篇:How to prevent SQL injection attacks?


下一篇:web 安全相关(一):Log注入(转)