基本的数据操作
import torch
# 创建一个行向量,默认为从0开始的12个整数
# n维数组也称为张量
x = torch.arange(12)
x
# 张量的形状
x.shape
# 张量的大小,张量所有元素的个数
x.numel()
#修改张量的形状
x = x.reshape(3,4)
#生成形状为3*4的两个向量,向量中数字全为0
torch.zeros(2,3,4)
#生成形状为3*4的两个向量,向量中数字全为1
torch.ones(2,3,4)
随机取样
# 创建一个形状为(3,4)的张量,其中每个元素为0,标准差为1的标准高斯分布(正态分布)中随机取样
torch.randn(3,4)
张量的运算操作
x = torch.tensor([1.0, 2.0, 3.0, 4])
y = torch.tensor([2, 3, 5, 7])
x + y, x - y, x * y, x / y, x ** y
张量的拼接操作
x = torch.arange(12, dtype=torch.float32).reshape((3, 4))
y = torch.tensor([[2.0, 1, 3, 4],[1, 2, 5, 6],[5, 6, 2, 1]])
print(x)
# dim=0时y的每一行都添加到x的每一行下方
torch.cat((x, y),dim=0),torch.cat((x, y),dim=1)
广播机制
# 我们可以在形状不同的两个张量调用广播机制进行按元素操作
# 可以适当复制元素来扩展一个或两个数组
import torch
a = torch.arange(3).reshape(3,1)
b = torch.arange(2).reshape(1,2)
a, b
# 矩阵a将复制列,矩阵b将复制行,然后按元素相加
# 复制的都是原本的元素
a + b
索引和切片
# 索引和切片
x = torch.arange(12).reshape(3,4)
# 输出的是行
print(x[-1])
print(x[1:3])
# 第2行,第三列的元素改为9
x[1,2] = 9
#前两行的所有元素都变为12
x[0:2, : ] = 12
转换为其他python对象
# 转换为其他python对象
a = x.numpy()
b = torch.tensor(a)
type(a), type(b)
# numpy.ndarray
a = torch.tensor([3.5])
a, a.item(), float(a), int(a)
# (tensor([3.5000]), 3.5, 3.5, 3)
数据预处理
写入文件
# os模块提供了很多与操作系统交互的功能,如文件路径操作、文件读写
import os
# exist_ok=True 表示如果目录已存在,则不会抛出异常,而是继续执行
os.makedirs(os.path.join