0

クロスエントロピーを使用して RNN を実装しようとしています。以下は私のコードです:

net = layrecnet(1:2,10);
net.performFcn = 'crossentropy';
net.performParam.regularization = 0.1;
net.performParam.normalization = 'none';
[Xs,Xi,Ai,Ts] = preparets(net, featureMatrix, labels);
net = train(net,Xs,Ts,Xi,Ai);
% view(net)
Y = net(Xs,Xi,Ai);
perf = perform(net,Y,Ts);

これperformParamは、Matlab の公式ドキュメントからのものです。ただし、実行した後、次のような警告が表示されました。

Warning: Performance function replaced with squared
error performance. 
> In trainlm>formatNet (line 155)
  In trainlm (line 65)
  In nntraining.setup (line 14)
  In network/train (line 335) 

feedforwardnet を実行しても同じ警告が出ました。以下は私のコードです。

[x,t] = simplefit_dataset;
net = feedforwardnet(10);
net.performFcn = 'crossentropy';
net.performParam.regularization = 0.1;
net.performParam.normalization = 'none';
net = train(net,x,t);
view(net)
y = net(x);
perf = perform(net,y,t);

では、コードでクロスエントロピーを使用するにはどうすればよいでしょうか?

4

1 に答える 1

0

この問題は、ドキュメントに記載されているようにtrainlm使用する損失関数にのみ適用されます。Jacobian Matrix

この関数は計算にヤコビアンを使用します。これは、パフォーマンスが平均または二乗誤差の合計であると仮定します。したがって、この関数で学習させたネットワークは、mse または sse パフォーマンス関数のいずれかを使用する必要があります。

trainrp1 つの解決策は、や などの他のトレーニング アルゴリズムを使用することtrainscgです。以下の作品:

[x,t] = simplefit_dataset;
net = feedforwardnet(10);
net.performFcn = 'crossentropy';
net.performParam.regularization = 0.1;
net.performParam.normalization = 'none';
net.trainFcn = 'trainrp';
net = train(net,x,t);
view(net)
y = net(x);
perf = perform(net,y,t);
于 2016-05-12T14:11:02.820 に答える