天天看点

pytorch中(函数名有下划线和没有下划线)clamp和clamp_的区别

在pytorch中,我们需要注意,对于tensor的操作有时候是in-place类型。

in-place类型是指,“在一个tensor上操作了之后,直接修改这个tensor”,

而不是   “返回一个新的tensor,旧的tensor并不修改”。

pytorch中,一般来说,如果对tensor的一个函数后加上了下划线,则表明这是一个in-place类型

clamp 和 clamp_ (以下为实际例子)

import torch

a=torch.rand(3)
print(a)
b=a.clamp(min=0.5,max=0.7)
print(a)
print(b)
print()

a=torch.rand(3)
print(a)
c=a.clamp_(min=0.5,max=0.7)
print(a)
print(c)
print()
           
pytorch中(函数名有下划线和没有下划线)clamp和clamp_的区别

另外:

pandas 中 inplace 参数在很多函数中都会有,它的作用是:是否在原对象基础上进行修改

​ inplace = True:不创建新的对象,直接对原始对象进行修改;不返回东西

​ inplace = False:对数据进行修改,创建并返回新的对象承载其修改结果。

默认是False,即创建新的对象进行修改,原对象不变,和深复制和浅复制有些类似。

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(4,3),columns=["A","B","C"])
data=df.drop(["A"],axis=1,inplace=True)
print(df)
print(data)

df=pd.DataFrame(np.random.randn(4,3),columns=["A","B","C"])
data=df.drop(["A"],axis=1,inplace=False)
print(df)
print(data)
           
pytorch中(函数名有下划线和没有下划线)clamp和clamp_的区别