在训练softmax分类器时,我在 Matlab
中使用了minFunc函数,但是它不起作用,步长会快速达到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));
%这是成本函数,target是期望的输出,它是m * n矩阵。 l是权重衰减参数。
Wgrad=-x'*(target-a)/m+l*W;
可以找到公式here。谁能指出我的错误在哪里?
答案 0 :(得分:0)
我发现错误,我不应该使用sigmoid函数,它应该只是exp
。