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