pytorch中函数名后有下划线和没有下划线
一般来说,在pytorch中如果对tensor的一个函数后加上了下划线,则表明这是一个in-place类型,所谓in-place类型是指在一个tensor上操作了之后,是直接修改了这个tensor,还是返回一个新的tensor,而旧的tensor并不修改。
例如:
clamp和clamp_
x = torch.randn(3) # output_1 = torch.clamp(x,min= 0,max = 0.5) # print(x,'\n',output_1) tensor([2.2404, 0.3846, 0.6169]) tensor([0.5000, 0.3846, 0.5000]) output_2 = torch.clamp_(x,min= 0,max = 1) print(x,'\n',output_2) tensor([0.0000, 0.4333, 0.0000]) tensor([0.0000, 0.4333, 0.0000])