問題タブ [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.

0 投票する
1 に答える
36 参照

tensorflow - get_tensor_by_name を使用してドロップアウトを復元できません

いくつかのテンソルを保存して復元しようとしました。

セッションの保存中:

保存後、セッションを復元しようとしました

しかし、エラーが発生しました:

「名前 'def:0' は、存在しないテンソルを参照しています。操作 'def' はグラフに存在しません。」

助けてください。

0 投票する
0 に答える
1038 参照

pytorch - Pytorch の model.train() と model.eval() が奇妙な動作をする

私のモデルは、複数の BN レイヤーと DO レイヤーを持つ CNN ベースのモデルです。もともと、次のように誤って model.train() をループの外側に置きました。

記録のために、上記のコードは適切にトレーニングされ、検証セットで適切に実行されました。

しかし、コードを見直しているうちに、上記のコードは最初の繰り返しの後に BN レイヤーと DO レイヤーをオフにしてしまうため、間違いを犯したことに気付きました。

そこで、次の行を移動しました: model.train() ループ内:

この時点で、モデルの学習は比較的不十分でした (次の出力でわかるように、モデルのオーバーフィットのように見えました)。トレーニングの精度は高くなりましたが、検証セットの精度が大幅に低下しました (BN と DO の通常の効果を考慮すると、この時点で奇妙になり始めていました)。

そこで、「BN レイヤーと DO レイヤーが私のモデルに悪影響を及ぼしていると思います」と考えたので、それらを削除しました。ただし、モデルは BN 層と DO 層を削除してもうまく機能しませんでした (実際、モデルは何も学習していないようです)。

この時点で私は非常に混乱しました。さらに進んで、別の実験を行いました。BN レイヤーと DO レイヤーをモデルに戻し、次のことをテストしました。

それはうまくいきませんでした:

上記の実験を複数回実行しましたが、結果は上に投稿した結果と大きくかけ離れていませんでした。(私が扱っているデータは非常に単純です)。

要約すると、このモデルは非常に特殊な設定で最適に機能します。

  1. モデルにバッチ正規化とドロップアウトが追加されました。(これはいい)。
  2. 最初のエポックのみ model.train() をオンにしてモデルをトレーニングします。(奇妙な.. 3と組み合わせて)
  3. 残りの反復では、model.eval() をオンにしてモデルをトレーニングします。(これもおかしい)

正直なところ、上記のようにトレーニング手順を設定することはありませんでしたが (誰もそうしないと思います)、何らかの理由でうまく機能します。誰かが似たようなことを経験したことがありますか? または、モデルがこのように動作する理由を教えていただければ幸いです!!

前もって感謝します!!