什么是Pytorch中的volatile变量

时间:2018-04-15 01:15:35

标签: pytorch

Pytorch中变量的volatile属性是什么?这是一个用于在PyTorch中定义变量的示例代码。

datatensor = Variable(data, volatile=True)

2 个答案:

答案 0 :(得分:18)

基本上,如果您只进行推理,则将网络输入设置为volatile,并且不会运行反向传播以节省内存。

来自docs

  

当您确定时,建议在纯推理模式下使用易失性   你甚至不会打电话.backward()。它比任何一个都更有效率   其他autograd设置 - 它将使用绝对最小量   记忆来评估模型。 volatile也决定了这一点   requires_grad是假的。

编辑:自pytorch版本0.4.0起,volatile关键字已deprecated

答案 1 :(得分:2)

对于0.4.0之前的Pytorch版本,VariableTensor是两个不同的实体。对于变量,可以指定两个标志:volatilerequire_grad。它们都用于从梯度计算中细粒度地排除子图。

volatilerequires_grad之间的区别在于将标志应用于操作输出的方式。如果甚至只有一个volatile = True变量作为操作的输入,则其输出也将标记为volatile。对于requires_grad,您需要将该操作的所有输入标记为requires_grad = False,以便也以相同的方式标记输出。

Pytorch 0.4.0起,TensorsVariables已合并,并且已弃用volatile标志。