問題タブ [dropout]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
tensorflow - get_tensor_by_name を使用してドロップアウトを復元できません
いくつかのテンソルを保存して復元しようとしました。
セッションの保存中:
保存後、セッションを復元しようとしました
しかし、エラーが発生しました:
「名前 'def:0' は、存在しないテンソルを参照しています。操作 'def' はグラフに存在しません。」
助けてください。
pytorch - Pytorch の model.train() と model.eval() が奇妙な動作をする
私のモデルは、複数の BN レイヤーと DO レイヤーを持つ CNN ベースのモデルです。もともと、次のように誤って model.train() をループの外側に置きました。
記録のために、上記のコードは適切にトレーニングされ、検証セットで適切に実行されました。
しかし、コードを見直しているうちに、上記のコードは最初の繰り返しの後に BN レイヤーと DO レイヤーをオフにしてしまうため、間違いを犯したことに気付きました。
そこで、次の行を移動しました: model.train() ループ内:
この時点で、モデルの学習は比較的不十分でした (次の出力でわかるように、モデルのオーバーフィットのように見えました)。トレーニングの精度は高くなりましたが、検証セットの精度が大幅に低下しました (BN と DO の通常の効果を考慮すると、この時点で奇妙になり始めていました)。
そこで、「BN レイヤーと DO レイヤーが私のモデルに悪影響を及ぼしていると思います」と考えたので、それらを削除しました。ただし、モデルは BN 層と DO 層を削除してもうまく機能しませんでした (実際、モデルは何も学習していないようです)。
この時点で私は非常に混乱しました。さらに進んで、別の実験を行いました。BN レイヤーと DO レイヤーをモデルに戻し、次のことをテストしました。
それはうまくいきませんでした:
上記の実験を複数回実行しましたが、結果は上に投稿した結果と大きくかけ離れていませんでした。(私が扱っているデータは非常に単純です)。
要約すると、このモデルは非常に特殊な設定で最適に機能します。
- モデルにバッチ正規化とドロップアウトが追加されました。(これはいい)。
- 最初のエポックのみ model.train() をオンにしてモデルをトレーニングします。(奇妙な.. 3と組み合わせて)
- 残りの反復では、model.eval() をオンにしてモデルをトレーニングします。(これもおかしい)
正直なところ、上記のようにトレーニング手順を設定することはありませんでしたが (誰もそうしないと思います)、何らかの理由でうまく機能します。誰かが似たようなことを経験したことがありますか? または、モデルがこのように動作する理由を教えていただければ幸いです!!
前もって感謝します!!