0

在训练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;

公式可以在这里找到。谁能指出我的错误在哪里?

4

1 回答 1

0

我发现了错误,我不应该使用 sigmoid 函数,它应该只是exp.

于 2013-06-23T08:26:33.647 回答