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;
式はここにあります。誰でも私のエラーがどこにあるのか指摘できますか?