4

複数の出力層を持つネットワークをトレーニングしたいと考えています。

in->hidden->out 1
          ->out 2

これは可能ですか?もしそうなら、トレーニングを達成するためにデータセットとトレーナーをセットアップするにはどうすればよいですか。

4

3 に答える 3

1

複数の SoftMax 領域を持つために出力を分割することを検討しているため、PartialSoftmaxLayerPyBrain が提供するものを使用できます。

同じ長さのスライスに制限されていることに注意してください。ただし、カスタム出力レイヤーが必要な場合は、そのコードが参考になります。

https://github.com/pybrain/pybrain/blob/master/pybrain/structure/modules/softmax.py

于 2015-02-14T05:22:31.960 に答える
0

いいえ。このように、複数の非表示レイヤーを使用できます

イン -> 非表示 1 -> 非表示 2 -> アウト

または、複数の出力ニューロンを (単一の出力層に) 持つこともできます。

技術的には、ニューロンとレイヤーの任意の配置を設定し、それらを好きなように接続し、好きなように呼び出すことができますが、上記が一般的な方法です。

于 2014-03-06T22:13:39.723 に答える
0

プログラマーとしてはより多くの作業が必要になりますが、2 つの異なる出力が必要な場合は、いつでも出力を 1 つのベクトルに連結し、それをネットワークの出力として使用できます。

in --> hidden --> concatenate([out1, out2])

このアプローチの重大な欠点として考えられるのは、2 つの出力のスケールが異なる場合、ネットワークのトレーニングに使用するエラー メトリックが連結によって歪められることです。

ただし、2 つの別個の出力を使用できたとしても、おそらく使用する 2 つのエラー メトリックに何らかの重みを付けて、この問題を解決する必要があります。

この問題の潜在的な解決策には、カスタム エラー メトリックの定義 (たとえば、加重二乗誤差または加重クロス エントロピーのバリアントを使用することによる) および/または 2 つの出力データセットを標準化して、それらが共通のスケールに存在するようにすることが含まれます。

于 2014-03-08T17:38:15.923 に答える