防网站模板怎么给网站做spm
- 作者: 五速梦信息网
- 时间: 2026年03月21日 11:17
当前位置: 首页 > news >正文
防网站模板,怎么给网站做spm,网站被iframe,wordpress 头部引入js深度学习中的张量 - 使用PyTorch进行广播和元素级操作 元素级是什么意思#xff1f; 元素级操作在神经网络编程中与张量的使用非常常见。让我们从一个元素级操作的定义开始这次讨论。 一个_元素级_操作是在两个张量之间进行的操作#xff0c;它作用于各自张量中的相应元素…深度学习中的张量 - 使用PyTorch进行广播和元素级操作 元素级是什么意思 元素级操作在神经网络编程中与张量的使用非常常见。让我们从一个元素级操作的定义开始这次讨论。 一个_元素级_操作是在两个张量之间进行的操作它作用于各自张量中的相应元素。 一个_元素级_操作在张量之间的相应元素上进行操作。 如果两个元素被认为在张量中占据相同的位置那么这两个元素就被称为相应的元素。位置由用来定位每个元素的索引决定。 假设我们有以下两个张量 t1 torch.tensor([[1,2],[3,4] ], dtypetorch.float32) t2 torch.tensor([[9,8],[7,6] ], dtypetorch.float32) 这两个张量都是秩为2的张量形状为2 x 2。 这意味着我们有两个长度为二的轴。第一个轴的元素是数组第二个轴的元素是数字。 print(t1[0]) tensor([1., 2.]) print(t1[0][0]) tensor(1.)这是我们现在在这个系列中用来看到的东西。好了让我们在此基础上进一步讨论。 我们知道如果两个元素占据张量中的相同位置那么它们就被认为是相应的元素位置由用来定位每个元素的索引决定。让我们看看相应元素的例子。 t1[0][0] tensor(1.) t2[0][0] tensor(9.)这使我们能够看到t1中1的相应元素是t2中的9。 通过索引定义的对应关系很重要因为它揭示了元素级操作的一个重要特征。我们可以推断出为了执行元素级操作张量必须具有相同数量的元素。 我们将进一步限制这个陈述。为了在它们上执行元素级操作两个张量必须具有相同的形状。 加法是一个元素级操作 让我们看看我们的第一个元素级操作加法。别担心它会变得更有趣。 t1 t2 tensor([[10., 10.],[10., 10.]]) 这使我们能够看到张量之间的加法是一个元素级操作。相应位置的每对元素都被加在一起产生一个形状相同的新张量。 所以加法是一个元素级操作实际上所有的算术操作加、减、乘和除都是元素级操作。 算术操作是元素级操作 我们经常看到的张量操作是使用标量值的算术操作。我们可以用两种方式进行这种操作 (1) 使用这些符号操作 print(t 2) tensor([[3., 4.],[5., 6.]]) print(t - 2) tensor([[-1., 0.],[ 1., 2.]]) print(t * 2) tensor([[2., 4.],[6., 8.]]) print(t / 2) tensor([[0.5000, 1.0000],[1.5000, 2.0000]])或者等效地(2) 使用这些内置于张量对象的方法 print(t1.add(2)) tensor([[3., 4.],[5., 6.]]) print(t1.sub(2)) tensor([[-1., 0.],[ 1., 2.]]) print(t1.mul(2)) tensor([[2., 4.],[6., 8.]]) print(t1.div(2)) tensor([[0.5000, 1.0000],[1.5000, 2.0000]])这两种选项都有效。我们可以看到在这两种情况下标量值2都应用于每个元素和相应的算术操作。 这里似乎有些问题。这些例子打破了我们之前所说的元素级操作必须在形状相同的张量上进行的规则。 标量是秩为0的张量这意味着它们没有形状而我们的张量t1是一个形状为2 x 2的秩为2的张量。 那么这如何适应呢让我们分解一下。 首先想到的解决方案可能是操作只是使用单个标量值并对张量中的每个元素进行操作。 这种逻辑是可行的。然而这有点误导当我们在更一般的情况下使用标量时它就崩溃了。 要不同地考虑这些操作我们需要引入_张量广播_或广播的概念。 广播张量 广播描述了在元素级操作期间如何处理形状不同的张量。 广播是一个概念其实现允许我们将标量添加到更高维的张量。 让我们考虑t1 2操作。在这里标量值张量被广播到t1的形状然后执行元素级操作。 我们可以使用broadcast_to() NumPy函数查看广播后的标量值是什么样子 np.broadcast_to(2, t1.shape) array([[2, 2],[2, 2]], dtypefloat32) 这意味着标量值被转换为一个像t1一样的秩为2的张量就像那样形状匹配具有相同形状的元素级规则再次发挥作用。这当然是在幕后进行的。 这段代码在这里描绘了画面。这个 t1 2 tensor([[3., 4.],[5., 6.]])实际上是这样的 t1 torch.tensor(np.broadcast_to(2, t1.shape),dtypetorch.float32 ) tensor([[3., 4.],[5., 6.]])此时你可能会认为这似乎很复杂所以让我们看一个更巧妙的例子来强调这一点。假设我们有以下两个张量。 广播的更巧妙的例子 让我们看一个更巧妙的例子来强调这一点。假设我们有以下张量。 t1 torch.tensor([[1,1],[1,1] ], dtypetorch.float32)t2 torch.tensor([2,4], dtypetorch.float32)这个元素级加法操作的结果会是什么考虑到元素级操作的相同形状规则这甚至可能吗 t1.shape torch.Size([2, 2]) t2.shape torch.Size([2])尽管这两个张量的形状不同元素级操作是可能的广播是使操作成为可能的关键。秩为低的张量t2将通过广播转换以匹配秩为高的张量t1的形状然后像往常一样执行元素级操作。 理解广播的概念是理解这个操作如何进行的关键。和以前一样我们可以使用NumPy的broadcast_to()函数检查广播转换。 np.broadcast_to(t2.numpy(), t1.shape) array([[2., 4.],[2., 4.]], dtypefloat32) t1 t2 tensor([[3., 5.],[3., 5.]])广播后这两个张量之间的加法操作是一个形状相同的张量之间的常规元素级操作。 广播是一个比基本元素级操作更高级的话题所以如果需要更长时间来适应这个概念不要担心。 我们何时实际使用广播当我们预处理数据时尤其是进行归一化程序时我们经常需要使用广播。 在Keras课程的TensorFlow.js部分中有一篇文章更详细地介绍了广播。那里有一个实际的例子并且也涵盖了确定如何广播特定张量的算法所以请查看那篇文章以获得关于广播的更深入讨论。 不用担心不了解TensorFlow.js。这不是一个要求我强烈推荐那里关于广播的内容。 比较操作是元素级的 比较操作也是元素级操作。 对于两个张量之间的给定比较操作将返回一个形状相同的新张量每个元素包含一个torch.bool值的True或False。 PyTorch 1.2.0版本中的行为变化 比较操作返回的数据类型已从torch.uint8变更为torch.bool在版本21113中。 版本1.1 torch.tensor([1, 2, 3]) torch.tensor([3, 1, 2]) tensor([1, 0, 0], dtypetorch.uint8)版本1.2 torch.tensor([1, 2, 3]) torch.tensor([3, 1, 2]) tensor([True, False, False])以下示例展示了PyTorch版本1.2.0及更高版本中的输出。 元素级比较操作示例 假设我们有以下张量 t torch.tensor([[0,5,0],[6,0,7],[0,8,0] ], dtypetorch.float32)让我们看看这些比较操作。 t.eq(0) tensor([[True, False, True],[False, True, False],[True, False, True]]) t.ge(0) tensor([[True, True, True],[True, True, True],[True, True, True]]) t.gt(0) tensor([[False, True, False],[True, False, True],[False, True, False]]) t.lt(0) tensor([[False, False, False],[False, False, False],[False, False, False]]) t.le(7) tensor([[True, True, True],[True, True, True],[True, False, True]])从广播的角度考虑这些操作我们可以看到最后一个操作t.le(7)实际上是这样的 t torch.tensor(np.broadcast_to(7, t.shape),dtypetorch.float32 ) tensor([[True, True, True],[True, True, True],[True, False, True]])相应地这也可以表示为 t torch.tensor([[7,7,7],[7,7,7],[7,7,7] ], dtypetorch.float32) tensor([[True, True, True],[True, True, True],[True, False, True]])使用函数进行元素级操作 对于元素级操作这些操作是函数形式的可以假设函数被应用于张量的每个元素。 以下是一些示例 t.abs() tensor([[0., 5., 0.],[6., 0., 7.],[0., 8., 0.]]) t.sqrt() tensor([[0.0000, 2.2361, 0.0000],[2.4495, 0.0000, 2.6458],[0.0000, 2.8284, 0.0000]]) t.neg() tensor([[-0., -5., -0.],[-6., -0., -7.],[-0., -8., -0.]]) t.neg().abs() tensor([[0., 5., 0.],[6., 0., 7.],[0., 8., 0.]])一些术语 还有其他一些方式来指代元素级操作所以我只想提一下所有这些术语都意味着相同的事情 元素级组件级点级 如果在其他地方遇到这些术语请记住这一点。 总结 现在我们应该对元素级操作有了很好的理解以及它们如何应用于神经网络和深度学习的张量操作。在下一篇文章中我们将涵盖张量操作的最后两个类别 重塑操作元素级操作归约操作访问操作
- 上一篇: 防盗网站人做清洁网络公司规章制度范本
- 下一篇: 防伪网站建设邯郸大名网站建设
相关文章
-
防盗网站人做清洁网络公司规章制度范本
防盗网站人做清洁网络公司规章制度范本
- 技术栈
- 2026年03月21日
-
坊子营销型网站建设扁平化风格 网站
坊子营销型网站建设扁平化风格 网站
- 技术栈
- 2026年03月21日
-
方正悠黑使用网站建设侵权么北风风淘网站开发
方正悠黑使用网站建设侵权么北风风淘网站开发
- 技术栈
- 2026年03月21日
-
防伪网站建设邯郸大名网站建设
防伪网站建设邯郸大名网站建设
- 技术栈
- 2026年03月21日
-
防止网站流量被刷手机网站底部代码
防止网站流量被刷手机网站底部代码
- 技术栈
- 2026年03月21日
-
房产采集网站源代码百度极速版app下载安装
房产采集网站源代码百度极速版app下载安装
- 技术栈
- 2026年03月21日






