iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >pytorch tensor内所有元素相乘怎么实现
  • 579
分享到

pytorch tensor内所有元素相乘怎么实现

2023-07-02 18:07:22 579人浏览 安东尼
摘要

这篇“PyTorch tensor内所有元素相乘怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“pytorc

这篇“PyTorch tensor内所有元素相乘怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“pytorch tensor内所有元素相乘怎么实现”文章吧。

tensor内所有元素相乘

a = torch.Tensor([1,2,3])print(torch.prod(a))

输出 

tensor(6.)

tensor乘法运算汇总与解析

元素一一相乘

该操作又称作 “哈达玛积”, 简单来说就是 tensor 元素逐个相乘。这个操作,是通过 * 也就是常规的乘号操作符定义的操作结果。torch.mul 是等价的。

import torchdef element_by_element():        x = torch.tensor([1, 2, 3])    y = torch.tensor([4, 5, 6])        return x * y, torch.mul(x, y)element_by_element()
(tensor([ 4, 10, 18]), tensor([ 4, 10, 18]))

这个操作是可以 broad cast 的。

def element_by_element_broadcast():        x = torch.tensor([1, 2, 3])    y = 2        return x * yelement_by_element_broadcast()
tensor([2, 4, 6])

向量点乘

torch.matmul: If both tensors are 1-dimensional, the dot product (Scalar) is returned.

如果都是1维的,返回的就是 dot product 结果

def vec_dot_product():        x = torch.tensor([1, 2, 3])    y = torch.tensor([4, 5, 6])        return torch.matmul(x, y)vec_dot_product()
tensor(32)

矩阵乘法

torch.matmul: If both arguments are 2-dimensional, the matrix-matrix product is returned.

如果都是2维,那么就是矩阵乘法的结果返回。与 torch.mm 是等价的,torch.mm 仅仅能处理的是矩阵乘法。

def matrix_multiple():        x = torch.tensor([        [1, 2, 3],        [4, 5, 6]    ])    y = torch.tensor([        [7, 8],        [9, 10],        [11, 12]    ])        return torch.matmul(x, y), torch.mm(x, y)matrix_multiple()
(tensor([[ 58,  64],         [139, 154]]), tensor([[ 58,  64],         [139, 154]]))

vector 与 matrix 相乘

torch.matmul: If the first argument is 1-dimensional and the second argument is 2-dimensional, a 1 is prepended to its dimension for the purpose of the matrix multiply. After the matrix multiply, the prepended dimension is removed.

如果第一个是 vector, 第二个是 matrix, 会在 vector 中增加一个维度。也就是 vector 变成了 与 matrix 相乘之后,变成 , 在结果中将 维 再去掉。

def vec_matrix():    x = torch.tensor([1, 2, 3])    y = torch.tensor([        [7, 8],        [9, 10],        [11, 12]    ])        return torch.matmul(x, y)vec_matrix()
tensor([58, 64])

matrix 与 vector 相乘

同样的道理, vector会被扩充一个维度。

def matrix_vec():    x = torch.tensor([        [1, 2, 3],        [4, 5, 6]    ])    y = torch.tensor([        7, 8, 9    ])        return torch.matmul(x, y)matrix_vec()
tensor([ 50, 122])

带有batch_size 的 broad cast乘法

def batched_matrix_broadcasted_vector():    x = torch.tensor([        [            [1, 2], [3, 4]        ],        [            [5, 6], [7, 8]        ]    ])        print(f"x shape: {x.size()} \n {x}")    y = torch.tensor([1, 3])        return torch.matmul(x, y)batched_matrix_broadcasted_vector()
x shape: torch.Size([2, 2, 2])  tensor([[[1, 2],         [3, 4]],        [[5, 6],         [7, 8]]])tensor([[ 7, 15],        [23, 31]])
batched matrix x batched matrixdef batched_matrix_batched_matrix():    x = torch.tensor([        [            [1, 2, 1], [3, 4, 4]        ],        [            [5, 6, 2], [7, 8, 0]        ]    ])        y = torch.tensor([        [            [1, 2],             [3, 4],             [5, 6]        ],        [            [7, 8],             [9, 10],             [1, 2]        ]    ])        print(f"x shape: {x.size()} \n y shape: {y.size()}")    return torch.matmul(x, y)xy = batched_matrix_batched_matrix()print(f"xy shape: {xy.size()} \n {xy}")
x shape: torch.Size([2, 2, 3])  y shape: torch.Size([2, 3, 2])xy shape: torch.Size([2, 2, 2])  tensor([[[ 12,  16],         [ 35,  46]],        [[ 91, 104],         [121, 136]]])

上面的效果与 torch.bmm 是一样的。matmul 比 bmm 功能更加强大,但是 bmm 的语义非常明确, bmm 处理的只能是 3维的。

def batched_matrix_batched_matrix_bmm():    x = torch.tensor([        [            [1, 2, 1], [3, 4, 4]        ],        [            [5, 6, 2], [7, 8, 0]        ]    ])        y = torch.tensor([        [            [1, 2],             [3, 4],             [5, 6]        ],        [            [7, 8],             [9, 10],             [1, 2]        ]    ])        print(f"x shape: {x.size()} \n y shape: {y.size()}")    return torch.bmm(x, y)xy = batched_matrix_batched_matrix()print(f"xy shape: {xy.size()} \n {xy}")
x shape: torch.Size([2, 2, 3])  y shape: torch.Size([2, 3, 2])xy shape: torch.Size([2, 2, 2])  tensor([[[ 12,  16],         [ 35,  46]],        [[ 91, 104],         [121, 136]]])
tensordotdef tesnordot():    x = torch.tensor([        [1, 2, 1],         [3, 4, 4]])    y = torch.tensor([        [7, 8],         [9, 10],         [1, 2]])    print(f"x shape: {x.size()}, y shape: {y.size()}")    return torch.tensordot(x, y, dims=([0], [1]))tesnordot()
x shape: torch.Size([2, 3]), y shape: torch.Size([3, 2])tensor([[31, 39,  7],        [46, 58, 10],        [39, 49,  9]])

以上就是关于“pytorch tensor内所有元素相乘怎么实现”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: pytorch tensor内所有元素相乘怎么实现

本文链接: https://www.lsjlt.com/news/343778.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • pytorch tensor内所有元素相乘怎么实现
    这篇“pytorch tensor内所有元素相乘怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“pytorc...
    99+
    2023-07-02
  • pytorch tensor内所有元素相乘实例
    目录tensor内所有元素相乘tensor乘法运算汇总与解析元素一一相乘向量点乘矩阵乘法vector 与 matrix 相乘matrix 与 vector 相乘带有batch_siz...
    99+
    2024-04-02
  • python怎么删除列表所有相同元素
    可以使用集合(set)来删除列表中的所有相同元素,然后将结果转换为列表。以下是一个示例代码:```pythonlst = [1, 2...
    99+
    2023-09-06
    python
  • css的display属性怎么实现块级元素和内联元素的相互转换
    这篇文章给大家分享的是有关css的display属性怎么实现块级元素和内联元素的相互转换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   默认情况下,段落<p>(...
    99+
    2024-04-02
  • HTML怎么从ul元素继承的所有em元素
    本文小编为大家详细介绍“HTML怎么从ul元素继承的所有em元素”,内容详细,步骤清晰,细节处理妥当,希望这篇“HTML怎么从ul元素继承的所有em元素”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,...
    99+
    2024-04-02
  • pytorch中矩阵乘法和数组乘法怎么实现
    本篇内容介绍了“pytorch中矩阵乘法和数组乘法怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、torch.mul该乘法可简单理...
    99+
    2023-07-05
  • python怎么实现数组元素两两相加
    这篇“python怎么实现数组元素两两相加”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python怎么实现数组元素两两相加...
    99+
    2023-06-30
  • php怎么实现两个数相乘
    这篇文章主要介绍“php怎么实现两个数相乘”,在日常操作中,相信很多人在php怎么实现两个数相乘问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php怎么实现两个数相乘”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-07-05
  • c++中vector怎么清空所有元素
    要清空一个vector中的所有元素,可以使用vector的clear()方法。该方法会删除所有元素,使得vector变为空。示例如下...
    99+
    2024-03-13
    c++
  • 怎么使用CSS选择所有子元素
    本文将为大家详细介绍“怎么使用CSS选择所有子元素”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“怎么使用CSS选择所有子元素”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知...
    99+
    2023-06-08
  • php怎么输出数组的所有元素
    这篇文章主要讲解了“php怎么输出数组的所有元素”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php怎么输出数组的所有元素”吧!3种方法:1、用“var_dump($array)”输出整个数...
    99+
    2023-06-30
  • java怎么打印数组中的所有元素
    要打印数组中的所有元素,可以使用for循环遍历数组,并使用System.out.println()方法打印每个元素。以下是示例代码:...
    99+
    2024-02-29
    java
  • python怎么输出所有奇数下标元素
    可以使用切片来输出所有奇数下标元素。首先创建一个列表,然后使用切片操作来获取所有奇数下标元素。下面是示例代码:```python# ...
    99+
    2023-10-11
    python
  • PHP中怎么用array_filter()查找所有匹配元素
    在PHP中,可以使用array_filter()函数来过滤数组中的元素,并返回符合指定条件的元素。下面是一个示例,演示如何使用arr...
    99+
    2024-04-02
  • C#实现统计100以内所有素数的个数
    简要介绍 统计100以内所有素数的个数 分析 素数(prime number)又称质数,在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数,2是最小的素数。 代码实...
    99+
    2024-04-02
  • python中怎么利用numpy.matmul实现矩阵相乘
    这篇文章将为大家详细讲解有关python中怎么利用numpy.matmul实现矩阵相乘,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。说明该函数返回两个数组的矩阵乘积。虽然返回二维数组的正常乘...
    99+
    2023-06-20
  • HTML怎么匹配所有<p>元素中的第一个<i>元素
    本文小编为大家详细介绍“HTML怎么匹配所有<p>元素中的第一个<i>元素”,内容详细,步骤清晰,细节处理妥当,希望这篇“HTML怎么匹配所有<p>元素中的第一个<...
    99+
    2024-04-02
  • CSS怎么实现元素居中
    这篇文章将为大家详细讲解有关CSS怎么实现元素居中,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在 CSS 中要设置元素水平垂直居中是一个非常常见的需求了。但就是这样一个从理论上来看似乎实现起来极其简单的...
    99+
    2023-06-08
  • C语言怎么实现两个浮点数相乘
    本篇内容主要讲解“C语言怎么实现两个浮点数相乘”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言怎么实现两个浮点数相乘”吧!输入两个浮点数,计算乘积。实例#include <stdio....
    99+
    2023-06-17
  • python怎么用lambda函数实现两个数相乘
    这篇文章给大家分享的是有关python怎么用lambda函数实现两个数相乘的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。用lambda函数实现两个数相乘python的数据类型有哪...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作