在训练softmax分类器的时候,我用了minFunc函数Matlab
,但是没用,步长TolX
很快就达到了,准确率连5%都没有。一定有什么问题,但我就是找不到。
这是我Matlab
关于成本函数和梯度的代码:
z=x*W;
%x
是输入数据,它是一个 m*n 矩阵,m 是样本数,n 是输入层中的单元数。W 是一个 n*o 矩阵,o 是输出层中的单元数。
a=sigmoid(z)./repmat(sum(sigmoid(z),2),1,o);
%a
是分类器的输出。
J=-mean(sum(target.*log(a),2))+l/2*sum(sum(W.^2));
%这是成本函数,目标是期望的输出,它是一个 m*n 矩阵。l 是权重衰减参数。
Wgrad=-x'*(target-a)/m+l*W;
公式可以在这里找到。谁能指出我的错误在哪里?