编程语言
首页 > 编程语言> > python-使用theano / numpy.tensordot的外部产品

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

作者:互联网

我有一个NumPy数组,其中n = 3个向量的长度为m = 10,因此input.shape =(n,m,1).我正在尝试使用theano / numpy.tensordot计算每个向量的外积,这样output.shape =(n,m,m)和:

output[i] = np.dot(input[i],input[i].T) = np.outer(input[i],input[i])

我很确定这是可能的,但是很难确定要为轴使用哪些参数.这可以很容易地在数组上进行迭代,但是我正在尝试使用tensordot完成此步骤,因为它在theano和numpy中实现相同.这很重要,因为我正在使用theano,但是当前正在使用numpy进行调试.

解决方法:

您并没有完全使用点积的总和减少部分,而只是使用转置版本对每行广播逐元素乘法.通过在输入数组的两个版本中创建单例尺寸,可以再次以矢量化的方式对所有行使用broadcasting来实现这一点-一个在轴= 1处具有单调暗,另一个在轴= 2处具有单调暗.由于输入数组已经是3D形状的,因此我们已经有了#2版本.要获得第一个版本,只需沿最后两个暗角交换轴即可.因此,将这两个版本相乘会给我们所需的输出,就像这样-

output = input*input.swapaxes(1,2)

标签:theano,arrays,python,numpy
来源: https://codeday.me/bug/20191119/2033202.html