私はビットオートエンコーダを実験しており、テンソルフローを使用して、MNISTデータセットを再構築しようとするモデルを作成しました。
私のネットワークは非常に単純です:X、e1、e2、d1、Y、ここでe1とe2はエンコード層、d2とYはデコード層です(そしてYは再構築された出力です)。
Xには784個、e1には100個、e2には50個、d1には再び100個、Y 784には再びあります。
シグモイドをレイヤーe1、e2、d1、およびYのアクティベーション関数として使用しています。入力は[0,1]であり、出力もそうである必要があります。
さて、クロスエントロピーを損失関数として使用してみましたが、出力は常にブロブであり、Xからe1への重みは常にゼロ値の行列に収束することに気付きました。
一方、損失関数として二乗平均誤差を使用すると、適切な結果が得られ、入力を再構築できるようになりました。
どうしてこんなことに?値を確率として解釈することができ、したがってクロスエントロピーを使用できると思いましたが、明らかに何か間違っています。