数据操作

import torch
x=torch.arange(12)
print(x)
print(x.shape)#张量的形状以及元素总数
print(x.numel())
X=x.reshape(3,4)#把张量分成3行4列
print(X)
x=torch.zeros(2,3,4)#深度为2,3行4列
print(x)
x=torch.ones(3,4,5)#深度为3,4行5列
print(x)
x=torch.randn(3,4)#创建(3,4)的张量,从N(0,1)分布随机采样
print(x)
x=torch.tensor([[1,2,3],[2,3,4],[3,4,5]])#自定义张量
print(x)
X=torch.arange(12,dtype=torch.float32).reshape(3,4)#随机生成12个浮点数,分成3行4,列
Y=torch.tensor([
                [1.,2.,3.,4.],
                [2.,3.,4.,5.],
                [3.,4.,5.,6.]
              ])
dim0=torch.cat((X,Y),dim=0)#将x和y在维度0(行)进行合并
print(dim0)
dim1=torch.cat((X,Y),dim=1)#将x和y在维度1(列进行合并)
print(dim1)
Y=(X==Y)
print(Y)#逻辑运算构建二维张量
X=X.sum()
print(X)#对张量中所有元素求和
a=torch.arange(3).reshape(3,1)
print(a)
b=torch.arange(2).reshape(1,2)
print(b)
print(a+b)#广播
x=torch.tensor([[1,2,3],[2,3,4],[3,4,5]])#自定义张量
print(x[-1])#访问最后一行
print(x[0:2])#访问第一行和第二行
before=id(x)
x=x+x#这里先执行x+x,为结果分配新的内存
if id(x)==before:
    print('True')
else:
    print('False')


数据预处理

import os
import pandas as pd
import torch
os.makedirs(os.path.join('..', 'data'), exist_ok=True)#.. 表示当前目录的上一级目录。exist_ok:只有在目录不存在时创建目录,目录已存在时不会抛出异常。
data_file = os.path.join('..', 'data', 'house_tiny.csv')#创建一个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位置索引,分别拿出0、1列 拿出第2列将data分成inputs和outputs
inputs = inputs.fillna(inputs.mean())# mean 输出均值,(第一列无数值)fillna 补充缺失值 对于inputs中缺少的数值,我们用同一列的均值替换“NaN”项
print(inputs)
inputs=pd.get_dummies(inputs,dummy_na=True)#get_dummies实现one hot encode ,dummy_na=True表示用bool值表示具体值,对于inputs中的类别值或离散值,我们将“NaN”视为一个类别。
# Alley”)列只接受两种类型的类别值“Pave”和“NaN”, pandas可以自动将此列转换为两列“Alley_Pave”和“Alley_nan”
print(inputs)
X,y=torch.tensor(inputs.values),torch.tensor(outputs.values)#把数值转换成张量
print(X)
print(y)

# 线性代数
import os
import pandas as pd
import torch
os.makedirs(os.path.join('..', 'data'), exist_ok=True)#.. 表示当前目录的上一级目录。exist_ok:只有在目录不存在时创建目录,目录已存在时不会抛出异常。
data_file = os.path.join('..', 'data', 'house_tiny.csv')#创建一个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位置索引,分别拿出0、1列 拿出第2列将data分成inputs和outputs
inputs = inputs.fillna(inputs.mean())# mean 输出均值,(第一列无数值)fillna 补充缺失值 对于inputs中缺少的数值,我们用同一列的均值替换“NaN”项
print(inputs)
inputs=pd.get_dummies(inputs,dummy_na=True)#get_dummies实现one hot encode ,dummy_na=True表示用bool值表示具体值,对于inputs中的类别值或离散值,我们将“NaN”视为一个类别。
# Alley”)列只接受两种类型的类别值“Pave”和“NaN”, pandas可以自动将此列转换为两列“Alley_Pave”和“Alley_nan”
print(inputs)
X,y=torch.tensor(inputs.values),torch.tensor(outputs.values)#把数值转换成张量
print(X)
print(y)
torch.tensor(3.0)#向量
x=torch.arange(4)#标量
print(x[3])
print(len(x))#长度
# 向量或轴的维度被用来表示向量或轴的长度,即向量或轴的元素数量。
# 然而,张量的维度用来表示张量具有的轴数。 在这个意义上,张量的某个轴的维数就是这个轴的长度。
A=torch.arange(20).reshape(5,4)
print(A)
print(A.T)#转置
#当我们开始处理图像时,张量将变得更加重要,图像以维数组形式出现, 其中3个轴对应于高度、宽度,以及一个通道(channel)轴, 用于表示颜色通道
X=torch.arange(24).reshape(2,3,4)
print(X)
A=torch.arange(20,dtype=torch.float32).reshape(5,4)
B=A.clone()
print(A*B)
print(B.sum)
print(B.shape)
X=torch.arange(24).reshape(2,3,4)
print(X)
A=torch.arange(20,dtype=torch.float32).reshape(5,4)
B=A.clone()
print(A)
print(A+B)
print(A*B)#对应元素相乘积
print(A.sum())
A = torch.arange(20).reshape(5, 4)
A_sum_axis0=A.sum(axis=0)
A_sum_axis1=A.sum(axis=1)
print(A)
print(A_sum_axis0)
print(A_sum_axis1)
sum_A=A.sum(axis=1,keepdims=True)#keepdims 保持原来的维数
print(sum_A)
U=torch.tensor([3.0,-4.0])
u=torch.norm(U)#求范数
print(u)