Pytorch中变量的volatile属性是什么?这是一个用于在PyTorch中定义变量的示例代码。
datatensor = Variable(data, volatile=True)
答案 0 :(得分:18)
基本上,如果您只进行推理,则将网络输入设置为volatile,并且不会运行反向传播以节省内存。
来自docs:
当您确定时,建议在纯推理模式下使用易失性 你甚至不会打电话.backward()。它比任何一个都更有效率 其他autograd设置 - 它将使用绝对最小量 记忆来评估模型。 volatile也决定了这一点 requires_grad是假的。
编辑:自pytorch版本0.4.0起,volatile关键字已deprecated
答案 1 :(得分:2)
对于0.4.0之前的Pytorch
版本,Variable
和Tensor
是两个不同的实体。对于变量,可以指定两个标志:volatile
和require_grad
。它们都用于从梯度计算中细粒度地排除子图。
volatile
和requires_grad
之间的区别在于将标志应用于操作输出的方式。如果甚至只有一个volatile = True
变量作为操作的输入,则其输出也将标记为volatile
。对于requires_grad
,您需要将该操作的所有输入标记为requires_grad = False
,以便也以相同的方式标记输出。
从Pytorch
0.4.0起,Tensors
和Variables
已合并,并且已弃用volatile
标志。