2016年5月18日水曜日

chainer.Variableにおけるvolatileパラメータの意義


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 件のコメント:

コメントを投稿