漂亮全屏网站盐城网站开发市场
news/
2025/9/23 13:00:15/
文章来源:
漂亮全屏网站,盐城网站开发市场,响应式网站滑动,成都网页制作公司在线咨询文章目录 一、简单运算二、广播运算1.广播的基本规则2.广播操作的例子 三、运算函数 参考#xff1a;与凤行 张量的数学运算是深度学习和科学计算中的基础。张量可以被视为一个多维数组#xff0c;其在数学和物理学中有广泛的应用。这些运算包括但不限于加法、减法、乘法、除… 文章目录 一、简单运算二、广播运算1.广播的基本规则2.广播操作的例子 三、运算函数 参考与凤行 张量的数学运算是深度学习和科学计算中的基础。张量可以被视为一个多维数组其在数学和物理学中有广泛的应用。这些运算包括但不限于加法、减法、乘法、除法、内积、外积、张量积、索引、切片以及各种变换等。运算的结果都是一个张量。 一维张量被称作向量。 下面我们会详细介绍这些基础运算。
一、简单运算
import torch
tensor1torch.tensor([1,2,3,4,5])
tensor2torch.tensor([5,4,3,2,1])1.加法 对应位置的元素相加要求参与运算的张量形状相同
print(加法结果,tensor1tensor2)2.减法- 对应位置的元素相减要求参与运算的张量形状相同
print(减法结果,tensor1-tensor2)3.逐元素乘法* 对应位置的元素相乘要求参与运算的张量形状相同
print(乘法结果,tensor1*tensor2)3.逐元素除法/ 对应位置的元素相除要求参与运算的张量形状相同
print(除法结果,tensor1/tensor2)5.数乘标量乘法* 标量乘以张量的每一个元素
print(数乘结果,2*tensor1)
print(数乘结果,2*tensor2)6.点积 和数学上向量的点积效果一致用于计算两个矩阵乘法 或 向量的点积要求参与运算的张量形状相同
print(点积结果,tensor1tensor2)二、广播运算 广播Broadcasting是一种在不同形状的数组张量之间进行数学运算的方法它允许逐元素操作自动扩展到不匹配的数组形状无需显式复制数据。广播规则可以简化数组操作使代码更简洁同时提高运算效率。这在NumPy、TensorFlow、PyTorch等科学计算和深度学习库中非常常见。
1.广播的基本规则
广播遵循以下三条规则 规则1如果两个数组的维数不相同那么小维度数组的形状将会在最左边补1。 举例来说如果你有一个256×256×3的数组比如一张256x256像素的彩色图像3表示颜色通道和一个3的数组表示每个颜色通道的缩放因子那么这个小维度数组的形状会在最左边补1直到两个数组的维数相同即小数组的形状会被视为1 ×1 × 3。 规则2对于每个维度如果一个数组的大小在该维度上为1而另一个数组的大小在该维度上大于1那么首先数组会在该维度上扩展以匹配另一个数组的大小。 继续上面的例子1 ×1 × 3的数组在前两个维度上大小为1会被扩展为与另一个数组在这些维度上的大小相同即扩展为256×256×3。 规则3如果在所有维度上大小匹配或其中一个数组的大小为1则认为它们是兼容的。如果在某个维度上两个数组的大小既不相等也不是其中一个为1则会抛出异常因为它们被认为是不兼容的。 在规则1和规则2的帮助下大部分时候数组都能够兼容。但如果两个数组在某个维度上都不为1且不相等比如一个形状为(2,3)的数组和一个形状为(3,3)的数组那么它们就无法通过广播兼容。
2.广播操作的例子
假设我们有一个4×3的矩阵A想要逐元素加上一个长度为3的向量v即对A的每一行都加上v。按照传统方法我们可能需要通过循环来实现但利用广播这个操作可以自动完成。
import torch
tensor1torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
tensor2torch.tensor([1, 0, 1])
# A是一个4x3的矩阵v是一个长度为3的向量# 通过广播将v加到A的每一行上# 利用广播无需显式扩展v的形状
print(广播加法结果\n,tensor1tensor2)
print(广播乘法结果\n,tensor1*tensor2)这里v的形状被自动扩展到与A一致实际上相当于v被复制成了一个4×3的矩阵然后与A进行逐元素相加。
三、运算函数
import torch
tensor1torch.tensor([1,2,3,4,5])
tensor2torch.tensor([5,4,3,2,1])加法torch.add() 和直接加法是一样效果的直接加法进行了函数重载而已。
print(加法结果,torch.add(tensor1,tensor2))减法torch.sub()
print(减法结果,torch.sub(tensor1,tensor2))乘法torch.mul()
print(乘法结果,torch.mul(tensor1,tensor2))除法torch.div()
print(除法结果,torch.div(tensor1,tensor2))点积torch.dot() 和数学上向量的点积效果一致用于计算两个一维张量的点积要求参与运算的张量形状相同
print(点积结果,torch.dot(tensor1,tensor2))高维张量的点积torch.matmul() 用于计算矩阵乘法 外积torch.cross() 外积叉积是定义在两个三维向量上的二元运算结果是一个向量而不是点积的标量结果。外积的结果向量垂直于原来的两个向量假设两个原向量不平行并遵循右手规则即当你的右手的四指从第一个向量通过最短角度旋转到第二个向量时你的大拇指指向的方向就是外积向量的方向。和数学上的外积一样长度是原始向量 a 和 b 构成的平行四边形的面积。
import torch
tensor1torch.tensor([1,2,3])
tensor2torch.tensor([4,5,6])
print(外积结果,torch.cross(tensor1,tensor2))范数torch.norm() norm默认计算L2范数欧几里得距离。vector_norm: Expected a floating point or complex tensor as input.期望一个浮点或复数张量作为输入
import torch
x torch.tensor([1.0, -2.0, 3.0])
#等价于x torch.tensor([1, -2, 3],dtypetorch.float)
# 计算L1范数
l1_norm torch.norm(x, p1)
print(L1 norm:, l1_norm)
# 计算L2范数
l2_norm torch.norm(x, p2)#等价于l2_norm torch.norm(x)
print(L2 norm:, l2_norm)
# 计算无穷范数
inf_norm torch.norm(x, pfloat(inf))
print(Infinity norm:, inf_norm)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912615.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!