2 pytorch
我的火炬程序此时停止了,我想我不能使用 volatile=True
我应该如何更改它以及停止的原因是什么?
以及我应该如何更改此代码?
images = Variable(images.cuda())
targets = [Variable(ann.cuda(), volatile=True) for ann in targets]
Run Code Online (Sandbox Code Playgroud)
train.py:166:用户警告:易失性已被删除,现在没有效果。
with torch.no_grad():代替使用。
Variable不执行任何操作,自 pytorch 0.4.0 起已被弃用。它的功能已与类合并torch.Tensor。当时,该volatile标志用于禁用 volatile 变量参与的任何操作的计算图的构造。较新的 pytorch 已更改此行为,改为用于with torch.no_grad():禁用语句正文中任何内容的计算图的构造with。
您应该更改什么首先取决于您使用 volatile 的原因。不管怎样,尽管你可能想使用
images = images.cuda()
targets = [ann.cuda() for ann in targets]
Run Code Online (Sandbox Code Playgroud)
在训练期间,您将使用类似以下内容的内容来创建计算图(假设模型、标准和优化器的标准变量名称)。
output = model(images)
loss = criterion(images, targets)
optimizer.zero_grad()
loss.backward()
optimizer.step()
Run Code Online (Sandbox Code Playgroud)
由于您不需要在评估期间执行反向传播,因此您可以使用with torch.no_grad():禁用计算图的创建来减少内存占用并加快计算速度。
with torch.no_grad():
output = model(images)
loss = criterion(images, targets)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5447 次 |
| 最近记录: |