文章目录
前言
提示:这里可以添加本文要记录的大概内容:
本文主要关注在使用PyTorch框架下的tensor基本运算,作为后续使用tensor建立神经网络模型的基础。
提示:以下是本篇文章正文内容,下面案例可供参考
引入基本库
import torch
一、tensor变量的基本创建
1. 创建随机变量
sample_tensor_1 = torch.rand(2,2)
# 此处创建 (2 * 2) 的tensor
sample_tensor_2 = torch.rand(3,2,2)
# 可理解为创建(3 * (2 * 2))
sample_tensor_3 = torch.one(2,3)
# 创建 (2 * 3), 每个位置数字为1
二、基本加减乘除运算
1. 两tensor相加
相同size的tensor,对应位置相加。有以下几种方式:使用加法符号 +, 使用类函数add或者add_。若不同size,会根据numpy中的广播机制(broadcast)进行计算。
sample_tensor_3 = sample_tensor_1 + sample_tensor_2
sample_tensor_4 = torch.add(sample_tensor_1, sample_tensor_2)
# sample_tensor_3 = sample_tensor_4
类自带的函数add和add_,共同效果是实现相加功能,add不改变原本值,add_使原始值发生变化,效果类似对list进行append操作。
sample_tensor_4.add_(5)
2.其余运算
与加法相同,在两相同size的tensor间进行其余运算,每个位置的结果为对应位置的值进行运算的结果。
减法的函数为sub和sub_,对应运算符为 -
乘法的函数为mul和mul_,对应运算符为 *
除法的函数为div和div_,对应运算符为 /
带_的函数,会对原始值进行改变,效果类似对list进行append操作。
三、矩阵乘法
1. torch.mm
需要符合矩阵乘法的相邻矩阵要求。
sample_tensor_1 = torch.rand(3,5)
# 此处创建 (3 * 5) 的tensor
sample_tensor_2 = torch.rand(5,2)
# 此处创建 (5 * 2) 的tensor
torch.mm(sample_tensor_1, sample_tensor_2)
# 生成 (3 * 2)矩阵相乘结果
2. torch.matmul
可使用广播机制,其余运用与torch.mm相同。
torch.mm 无广播机制。
sample_tensor_1 = torch.rand(3,5,6)
# 可理解为创建(3 * (5 * 6))
sample_tensor_2 = torch.rand(6, 8)
# 创建(6 * 8)
torch.matmul(sample_tensor_1, sample_tensor_2)
# 结果为 (3 * (5 * 8))
总结
本文介绍了torch之间常见创建、运算的代码实现。广播机制常见于numpy和PyTorch运算中,有兴趣可在后续进行补充。