1. PyTorch简介
概念:由Facebook人工智能研究小组开发的一种基于Lua编写的Torch库的Python实现的深度学习库
优势:简洁、上手快、具有良好的文档和社区支持、项目开源、支持代码调试、丰富的扩展库
2 PyTorch基础知识
2.1张量
分类:0维张量(标量)、1维张量(向量)、2维张量(矩阵)、3维张量(时间序列)、4维张量(图像)、5维张量(视频)
概念:一个数据容器,可以包含数据、字符串等
import torch # 创建tensor x = torch.rand(4, 3) print(x) # 构造数据类型为long,数据是0的矩阵 x = torch.zeros(4, 3, dtype=torch.long) print(x) tensor([[0.9515, 0.6332, 0.8228], [0.3508, 0.0493, 0.7606], [0.7326, 0.7003, 0.1925], [0.1172, 0.8946, 0.9501]]) tensor([[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]])
常见的构造Tensor的函数:
函数 功能
Tensor(*sizes) 基础构造函数
tensor(data) 类似于np.array
ones(*sizes) 全1
zeros(*sizes) 全0
eye(*sizes) 对角为1,其余为0
arange(s,e,step) 从s到e,步长为step
linspace(s,e,steps) 从s到e,均匀分成step份
rand/randn(*sizes) rand是[0,1)均匀分布;randn是服从N(0,1)的正态分布
normal(mean,std) 正态分布(均值为mean,标准差是std)
randperm(m) 随机排列
操作:
使用索引表示的变量与原数据共享内存,即修改其中一个,另一个也会被修改
使用torch.view改变tensor的大小
广播机制:当对两个形状不同的Tensor按元素运算时,可能会触发广播(broadcasting)机制
# 使用view改变张量的大小 x = torch.randn(5, 4) y = x.view(20) z = x.view(-1, 5) # -1是指这一维的维数由其他维度决定 print(x.size(), y.size(), z.size()) torch.Size([5, 4]) torch.Size([20]) torch.Size([4, 5]) x = tensor([[1, 2]]) y = tensor([[1], [2], [3]]) x + y = tensor([[2, 3], [3, 4], [4, 5]])