nn.ReLU(inplace=False)
中inplace
的默认为False
当inplace = False
时,nn.ReLU
不会修改输入对象的值,而是创建一个新的对象作为输出。
当inplace = True
时,nn.ReLU
会修改输入对象的值作为输出,而不是创建一个新的对象。
import torch
import torch.nn as nn
input = torch.randn(5)
relu_F = nn.ReLU(inplace=False)
relu_T = nn.ReLU(inplace=True)
output_F = relu_F(input)
output_T = relu_T(input)
print('输入:', input, 'id:', id(input))
print('inplace=False,输出:', output_F, 'id:', id(output_F))
print('inplace=Ture,输出:', output_T, 'id:', id(output_T))
利用inplace = True
计算可以节省内存,同时还可以省去反复申请和释放内存的时间。但是会对原变量覆盖,只要不带来错误就用。
参考: