什么是Pytorch中的volatile变量

sat*_*tya 15 pytorch

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

datatensor = Variable(data, volatile=True)
Run Code Online (Sandbox Code Playgroud)

dec*_*ell 21

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

来自文档:

当你确定你甚至不会调用.backward()时,建议使用Volatile进行纯推理模式.它比任何其他autograd设置更有效 - 它将使用绝对最小的内存量来评估模型.volatile也确定requires_grad为False.

编辑:自pytorch版本0.4.0 起,不推荐使用 volatile关键字


Jad*_*mas 5

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

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

Pytorch0.4.0开始,Tensors并且Variables已经合并,并且volatile不推荐使用该标志。