前言
斯坦福的UFLDL教程每一个章节都配有练习
本文是softmax这一章节的练习的解答
练习的目的是学习softmax算法的基本知识,并且训练一个softmax手写体数字识别器
具体内容可以浏览课程网页
注意事项
1.matlab是从1开始计数的所以为了方便起见,将所有数字0的标记变为10
2.注意利用稀疏矩阵函数sparse和full生成ground_truth
3.为了防止指数函数的上溢,将所有的指数项都减去其最大值,这并不影响分类的结果
4.善于利用bsxfun函数有助于减少代码量
5.需要利用到稀疏自动编码器一章中的l-bfgs函数,已经梯度函数验证函数和手写体数字的数据以及读取函数
softmaxCost
function [cost, grad] = softmaxCost(theta, numClasses, inputSize, lambda, data, labels)
% numClasses - the number of classes
% inputSize - the size N of the input vector
% lambda - weight decay parameter
% data - the N x M