本文将介绍PyTorch中张量的数学运算之向量运算,包括加减乘除、数乘、内积、外积、范数、广播机制等
本系列实验使用如下环境
conda create -n DL python==3.11
conda activate DL
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
Tensor(张量)是PyTorch中用于表示多维数据的主要数据结构,类似于多维数组,可以存储和操作数字数据。
Tensor(张量)的维度(Dimensions)是指张量的轴数或阶数。在PyTorch中,可以使用size()方法获取张量的维度信息,使用dim()方法获取张量的轴数。
PyTorch中的张量可以具有不同的数据类型:
【深度学习】Pytorch 系列教程(一):PyTorch数据结构:1、Tensor(张量)及其维度(Dimensions)、数据类型(Data Types)
【深度学习】Pytorch 系列教程(二):PyTorch数据结构:1、Tensor(张量): GPU加速(GPU Acceleration)
PyTorch提供了丰富的操作函数,用于对Tensor进行各种操作,如数学运算、统计计算、张量变形、索引和切片等。这些操作函数能够高效地利用GPU进行并行计算,加速模型训练过程。
import torch
tensor1 = torch.tensor([1, 2, 3])
tensor2 = torch.tensor([4, 5, 6])
# 加法
result_add = tensor1 + tensor2
print("加法结果:", result_add)
# 减法
result_sub = tensor1 - tensor2
print("减法结果:", result_sub)
# 乘法
result_mul = tensor1 * tensor2
print("乘法结果:", result_mul)
# 除法
result_div = tensor1 / tensor2
print("除法结果:", result_div)
scalar_multiplication_result = 2 * tensor1
print("数乘结果:", scalar_multiplication_result)
可以对不同维度的向量进行运算,利用广播机制进行自动扩展和对齐。
# 广播操作
broadcasted = tensor1 + 1
print("广播结果:", broadcasted)
Broadcasted result: tensor([2, 3, 4])
import torch
vector1 = torch.tensor([1, 2, 3])
vector2 = torch.tensor([4, 5, 6])
# 向量相加
result = torch.add(vector1, vector2)
print(result)
import torch
vector1 = torch.tensor([1, 2, 3])
vector2 = torch.tensor([4, 5, 6])
# 向量相乘
result = torch.mul(vector1, vector2)
print(result)
import torch
vector1 = torch.tensor([1, 2, 3])
vector2 = torch.tensor([4, 5, 6])
# 计算内积
result = torch.dot(vector1, vector2)
print(result)
叉积是两个三维向量的向量积,结果是一个新的向量,垂直于原始向量所在平面。
import torch
vector1 = torch.tensor([1, 0, 0])
vector2 = torch.tensor([0, 1, 0])
# 计算叉积
cross_product = torch.cross(vector1, vector2)
print(cross_product)
范数是衡量向量大小的指标,norm
默认计算L2范数。
import torch
vector = torch.tensor([1, 2, 3, 4, 5], dtype=torch.float)
# 计算范数
norm = torch.norm(vector)
print(norm)
注意数据类型转换
RuntimeError: linalg.vector_norm: Expected a floating point or complex tensor as input. Got Long