在
pytorch
中,我们需要注意,对于tensor的操作时候是in-place类型。
in-place类型是指,但在一个tensor上操作了之后,是直接修改了这个tensor,还是返回一个新的tensor,而旧的tensor并不修改。
pytorch
中,一般来说,如果对tensor的一个
函数
后加上了
下划线
,则表明这是一个in-place类型
clamp 和 clamp_ (以下为实际例子)
一般来说,在
pytorch
中如果对tensor的一个
函数
后加上了
下划线
,则表明这是一个in-place类型,所谓in-place类型是指在一个tensor上操作了之后,是直接修改了这个tensor,还是返回一个新的tensor,而旧的tensor并不修改。
clamp和clamp_
可以看到,
函数
名后加
下划线
会修改原始输入,即直接改了这个tensor。
(1)直接修改这个tensor;
(2)返回一个新的tensor,而旧的tensor并不修改。
pytorch
中对tensor的操作的
函数
后加上了
下划线
,则表明这是一个in-place类型,也就是(1)这种情况。
例如(2)
import torch
x = torch.randn([2,3])
print(x)
y = x.abs() #没加
下划线
,不会对x直接操作,而是赋予y
print(y)
print(x)
自定义类中,含有的方法名带有
下划线
【放在方法名前】
作用:会阻止其他python脚本通过【from module import *】语句导入该名字,即该名字不会被星号匹配;保证只在该类中进行调用。
框架中,带有
下划线
的方法【放在方法名后】