今天踩了什么坑
今天看训练的输出结果使发现了一个报错
百度后发现是新的版本下volatile已经被弃用,并且提示可使用:
with torch.no_grad
代替volatile;
前置知识
requires_grad
在pytorch中,tensor有一个requires_grad参数(默认为False),如果设置为True,则反向传播时,该tensor就会自动求导。tensor的requires_grad的属性默认为False,若一个节点(叶子变量:自己创建的tensor)requires_grad被设置为True,那么所有依赖它的节点requires_grad都为True(即使其他相依赖的tensor的requires_grad = False)
volatile(已弃用)
如果一个tensor的volatile = True,那么所有依赖他的tensor会全部变成True,反向传播时就不会自动求导了,因此大大节约了显存或者说内存。
注:volatile=True的优先级高于requires_grad,即当volatile = True时,无论requires_grad是Ture还是False,反向