文章目录
01 Pytorch基础知识
主要介绍pytorch中的tensor,包括tensor的创建、基本操作、广播机制等
1.1 Tensor简介
tensor,即张量,是基于向量和矩阵的拓展:
- 0D tensor:标量
- 1D tensor:矢量
- 2D tensor:矩阵
- 3D tensor:时间序列,RGB图像
- 4D tensor:多张RGB图像,一段视频
- 5D tensor:多个视频(第一个维度是batchsize
1.2 Tensor的创建
# 直接通过torch.tensor(data)创建
torch.tensor([1,2,3,4])
# 随机初始化
torch.rand(4)
# 全0
torch.zeros(4)
# 全1
torch.ones(4)
# 规定范围和步长进行创建
torch.arange(0,10,2)
函数 | 功能 |
---|---|
Tensor(sizes) | 基础构造函数 |
tensor(data) | 类似于np.array,参数是一个list,[] |
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) | 随机排列 |
在创建tensor的时候,可以通过参数
dtype
来指定tensor中的数据类型。
也可以基于numpy的array创建tensor,主要使用torch.from_numpy()方法
# 从NumPy ndarray转换为Tensor
import numpy as np
np_array = np.array([1, 2, 3])
tensor_from_np = torch.from_numpy(np_array)
通过size()或者shape可以查看tensor的形状。
1.3 张量的操作
1. 运算操作
运算包括普通的四则运算和矩阵运算
四则运算,都是进行逐个元素的运算:
-
加法:
torch.add(tensor1, tensor2) # 或者 tensor1 + tensor2
-
减法:
torch.sub(tensor1, tensor2) # 或者 tensor1 - tensor2
-
乘法(逐元素):
torch.mul(tensor1, tensor2) # 或者 tensor1 * tensor2
-
除法(逐元素):
torch.div(tensor1, tensor2) # 或者 tensor1 / tensor2
import torch
# 创建两个Tensor
tensor1 = torch.tensor([1, 2, 3], dtype=torch.float32)
tensor2 = torch.tensor([4, 5, 6], dtype=torch.float32)
# 加法
add_result = tensor1 + tensor2