pytorch常用函数总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
pytorch常⽤函数总结jupyter⽆法画图,不断重启的话,把这个代码放在最前⾯。
好像是因为某些环境重复配置了?import os
os.environ['KMP_DUPLICATE_LIB_OK']='True'
L.append(b) 列表末尾添加新的对象
2.1数据操作
2.1.1⼊门
x = torch.arange(12) ⽣成0-11的12个数的向量(张量)
X = torch.arange(24).reshape(2, 3, 4) ⽣成完直接改变形状
len(x) 显⽰张量的列数
x.shape /x.size() 显⽰X张量的形状
x.numel() 输出X中元素的总数
x.reshape(4,3) 改变张量的形状
x.reshape(-1,4) -1表⽰默认添加
torch.zeros(3,4) ⽣成全为0的张量
torch.ones(3,5) ⽣成全为1的张量
torch.randn(3,5) 服从⾼斯分布的(-1,1)随机值
torch.tensor([[3,4], [1,2], [5,6] ]) ⾃⼰定义张量的形状和内容
B = A.clone() 通过分配新内存,将A的⼀个副本分配给B
2.1.2运算
x+y,x-y,x*y,x/y,x**y **为求幂运算
torch.exp(x) e的x次⽅
torch.cat((X, Y), dim=0) 矩阵拼接 dim=0,为竖着拼接
torch.cat((X, Y), dim=1) 矩阵拼接 dim=1,为横着拼接
X.sum() (X+Y).sum 张量求和
A.sum(axis=0) axis=1是按照⾏
A.sum(axis=1)
torch.dot(x, y) 两个张量点积
torch.mv(A, x) 向量积
torch.mm(A, B) 矩阵乘法
torch.norm(u) 向量范数
torch.abs(u).sum() 向量内数据的绝对值之和
u=y.detach() y是反向传播⾃动求导内的,detach后,
u则成为新的常数,和原来⽆关
2.1.3⼴播机制(就是张量补全机制)
a = torch.arange(3).reshape((3, 1))
b = torch.arange(2).reshape((1, 2)) 操作优秀啊
a+b 张量的⼤⼩不同的话,会在每个形状上取最⼤值
2.1.4索引和切⽚
X[-1] -1代表直接取最后⼀⾏
X[1:3] 取2 3⾏
X[1,2]
X[0:2,:]
2.1.5节省内存
z= torch.zeros_like(Y) 建⽴⼀个全为0的形状和Y相同的张量
X=X+Y 不要使⽤,可能会在内存中建⽴两个X,可以使⽤下⾯的两种形式
X[:] =X+ Y X+=Y
id[X] 显⽰变量的内存地址
2.1.6转换为其他python对象
A=X.numpy() 如操作所⽰
B=torch.tensor(A) 如操作所⽰
type(A),type(B) 显⽰变量的类型
a.item() 将⼤⼩为1的张量转换为标量
2.2数据的预处理
2.2.1读取数据集
import os 调⽤os库
os.makedirs(os.path.join('..', 'data'), exist_ok=True) 在程序⽂件的同等级中建⽴⼀个data的⽂件夹
data_file = os.path.join('..', 'data', 'house_tiny.csv') 在data⽂件夹中,建⽴⼀个house_tiny的csv格式的数据with open(data_file, 'w') as f: 数据的写⼊格式如下
f.write('NumRooms,Alley,Price\n') # 列名
f.write('NA,Pave,127500\n') # 每⾏表⽰⼀个数据样本
f.write('2,NA,106000\n')
f.write('4,NA,178100\n')
f.write('NA,NA,140000\n')
import pandas as pd 调⽤pandas库
data = pd.read_csv(data_file) csv数据的读⼊格式如下。
2.2.2缺失值处理
csv⽂件打开⽅式:
import pandas as pd
data = pd.read_csv("house_tiny.csv")
对读⼊的数据进⾏索引的⽅式
inputs = data.iloc[:, 0:2] 这个是按列数索引
inputs = dataloc[:,'A'] 取A列中所有⾏的数据
inputs = dataloc[:,['A','B']] 取A,B列中所有⾏的数据
inputs = dataloc[:,['A','B'],['a','b']] 取A,B列和a,b⾏中所有的数据
数据缺省值的替换
input.mean() 求input中所有数的均值
input.fillna(X)⽤X值对缺省值进⾏替换
⽂字缺省值替换:
inputs = pd.get_dummies(inputs, dummy_na=True)
结果为:直接把Alley中的数据进⾏了分类,然后列到了新的⼏⾏中。
NumRooms Alley_Pave Alley_nan
0 3.0 1 0
1 2.0 0 1
2 4.0 0 1
3 3.0 0 1
2.2.3转换为张量模式
X, y = torch.tensor(inputs.values), torch.tensor(outputs.values)
2.3线性代数
A.T。