tensor运算小结


前言

提示:这里可以添加本文要记录的大概内容:

本文主要关注在使用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运算中,有兴趣可在后续进行补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值