Variable型が持つvolatileパラメタについて、本家のマニュアルでは下記の通り
Users can disable this chaining behavior by setting the volatile flag for the initial variables. When a function gets volatile variables as its inputs, the output variables do not hold references to the function. This acts like unchaining on every function application.
本家のマニュアルをみても今一、ユースケースが分からなかったので、ちょっと調べてみた
分かってしまえば何てことはない
volatile = 揮発性の意図から察せられる通り、メモリの節約をしますか?しませんか?という意味
とりあえず、重要な点として、
volatileをTrueにするとBackpropergationできない
forwardしている間に、通過した各層で計算されたパラメータ群がvolatile(揮発)しちゃうということになる
だからモデルを学習させるときは原則、volatile=Falseにする
逆に、誤差逆伝搬させないテストのときは途中経過のデータはいらないからvolatile=Trueにしてしまう
そうするとメモリの負荷が減る
本家のマニュアルだけだとピンとこなかったけど、こちらのやりとりで解決した
0 件のコメント:
コメントを投稿