首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用theano/numpy.tensordot的外部产品

使用theano/numpy.tensordot的外部产品
EN

Stack Overflow用户
提问于 2016-02-09 17:00:39
回答 1查看 332关注 0票数 3

我有一个NumPy数组,长度为m=10n=3向量,所以是input.shape = (n,m,1)。我试图使用theano/numpy.tensordot计算每个向量的外部乘积,以便使output.shape = (n,m,m)和:

代码语言:javascript
复制
output[i] = np.dot(input[i],input[i].T) = np.outer(input[i],input[i])

我很确定这是可能的,但我很难弄清楚用什么参数来表示轴。这可以很容易地对数组进行迭代,但是我尝试使用tensordot来完成这个步骤,因为它在theano和numpy中也是一样实现的。这一点很重要,因为我正在使用theano,但目前使用numpy进行调试。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-09 17:30:53

您并不是在使用点积的和缩减部分,而只是对每一行进行元素级的乘法,并使用它的转置版本。这可以通过在两个版本的输入数组中创建broadcasting维度(一个在axis=1上使用singleton dim,另一个在axis=2上),以向量化的方式实现。因为输入数组已经是三维的,所以我们已经有了version #2。要获得第一个版本,只需在最后两个dim之间交换轴。因此,将这两个版本相乘将给我们所需的输出,如下所示-

代码语言:javascript
复制
output = input*input.swapaxes(1,2)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35297798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档