一、数据操作
import torch x=torch.arange(12) print(x) print(x.shape) print(x.numel())#元素的种数 x=x.reshape(3,4) print(x) #全0或者全1 print(torch.zeros(2,3,4)) print(torch.ones(2,3,4)) print(torch.tensor([[2,1,4,3],[1,2,3,4],[4,3,2,1]])) print(torch.tensor([[2,1,4,3],[1,2,3,4],[4,3,2,1]]).shape) x=torch.tensor([1.0,2,4,8]) y=torch.tensor([2,2,2,2]) print(x+y) print(x/y) print(x**y) print(torch.exp(x)) x=torch.arange(12,dtype=torch.float32).reshape((3,4)) y=torch.tensor([[2.0,1,4,3],[1,2,3,4],[4,3,2,1]]) print(torch.cat((x,y),dim=0))#在行上面合并 print('------') print(torch.cat((x,y),dim=1))#列合并 print(x==y) print(x.sum()) a=torch.arange(3).reshape((3,1)) b=torch.arange(2).reshape((1,2)) print(a) print(b) #广播机制,若形状不合适可自行复制 print(a+b) #元素的访问 print(x) print(x[-1])#最后一行 print(x[1:3]) # 如何写入一个值如下 x[1,2]=9 print(x) #为多个元素赋值 x[0:2,:]=12 print(x) # 运行一些操作可能会导致为新结果分配内存 before=id(y) y=y+x print(id(y)==before)#新的id不=旧的 z=torch.zeros_like(y)#和z结构相似,但所有元素为0 print('id(z):',id(z)) z[:]=x+y print('id(z):',id(z))#这为原地操作 before=id(x) x+=y print(id(x)==before) #转化为numpy张量 A=x.numpy()#构建numpy类型 B=torch.tensor(A)#构建torch类型 print(type(A)) print(type(B)) #将大小为1的张量转化为python标量 print('------') a=torch.tensor([3.5]) print(a) print(a.item()) print(float(a)) print(int(a))
二、数据预处理
import os#操作系统接口模块 import pandas as pd os.makedirs(os.path.join('..','data'),exist_ok=True)#makedirs()方法是递归目录创建功能,使所有中间级目录需要包含子目录。 data_file=os.path.join('..','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') data=pd.read_csv(data_file) print(data) #理缺失数据,典型的方法为插值和删除 inputs,outputs=data.iloc[:,0:2],data.iloc[:,2]#iloc通过整数位置获得行和列的数据 inputs=inputs.fillna(inputs.mean()) print(inputs) inputs=pd.get_dummies(inputs,dummy_na=True)#④ get_dummies 是利用pandas实现one hot encode的方式 print(inputs) import torch x,y=torch.tensor(inputs.values),torch.Tensor(outputs.values) print(x,y) #线性代数的实现 A=torch.arange(20).reshape(5,4) print(A) print(A.cumsum(axis=0))#累加求和 #范数,向量或矩阵的长度,向量元素平方和的平方根 u=torch.tensor([3.0,-4.0]) print(torch.norm(u)) #向量元素绝对值求和 print(torch.abs(u).sum()) # axis=几,就把第几个维度去改掉,keepdims是False就是去掉,True改为1 a=torch.ones((2,5,4)) print(a.shape) print(a.sum(axis=1).shape) print(a.sum(axis=[0,2],keepdims=True).shape)