web-dev-qa-db-ja.com

Pytorchのvolatile変数とは

Pytorchの変数のvolatile属性とは何ですか? PyTorchで変数を定義するためのサンプルコードを次に示します。

datatensor = Variable(data, volatile=True)
15
satya

基本的に、推論のみを行い、メモリを節約するために逆伝播を実行しない場合は、ネットワークへの入力をvolatileに設定します。

docs から:

.backward()を呼び出すことさえないことが確実な場合、純粋な推論モードには揮発性が推奨されます。他のどのautograd設定よりも効率的です。絶対最小量のメモリを使用してモデルを評価します。 volatileはまた、requires_gradがFalseであることも判別します。

編集:volatileキーワードはpytorchバージョン0.4.0以降 非推奨 になりました

20
decrispell

0.4.0より前のPytorchのバージョンでは、VariableTensorは2つの異なるエンティティでした。変数には、volatilerequire_gradの2つのフラグを指定できます。両方とも、勾配計算からサブグラフを細かく除外するために使用されました。

volatilerequires_gradの違いは、フラグが操作の出力に適用される方法にあります。操作への入力として単一のvolatile = True変数さえある場合、その出力もvolatileとしてマークされます。 requires_gradの場合、その操作へのすべての入力にrequires_grad = Falseフラグを付ける必要があります。これにより、出力にも同じ方法でフラグが付けられます。

Pytorch 0.4.0から、TensorsVariablesがマージされ、volatileフラグは非推奨になりました。

4
Jadiel de Armas