python - 广播 np.dot 与 tf.matmul 进行张量矩阵乘法(形状必须为 2 级,但为 3 级错误)

标签 python numpy tensorflow matrix-multiplication tensor

假设我有以下张量:

X = np.zeros((3,201, 340))
Y = np.zeros((340, 28))

使用 numpy 成功制作 X、Y 的点积,并生成形状为 (3, 201, 28) 的张量。 但是,使用tensorflow时,我收到以下错误:形状必须是等级2,但等级3错误...

最小代码示例:

X = np.zeros((3,201, 340))
Y = np.zeros((340, 28))
print(np.dot(X,Y).shape) # successful (3, 201, 28)
tf.matmul(X, Y) # errornous

知道如何使用 tensorflow 实现相同的结果吗?

最佳答案

由于您正在使用张量,因此使用tensordot(为了性能)会比np.dot更好。 NumPy 允许它 (numpy.dot) 通过降低性能来处理张量,而 tensorflow 似乎根本不允许这样做。

因此,对于 NumPy,我们将使用 np.tensordot -

np.tensordot(X, Y, axes=((2,),(0,)))

对于tensorflow,它将是 tf.tensordot -

tf.tensordot(X, Y, axes=((2,),(0,)))

Related post to understand tensordot .

关于python - 广播 np.dot 与 tf.matmul 进行张量矩阵乘法(形状必须为 2 级,但为 3 级错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47969305/

相关文章:

python - 使用 Django 播放上传的视频

python - python 2中如何抑制回车?

python - 按另一个数据框中的值分组

python - 在 Pandas 数据框中扩展时间序列数据

image-processing - 仿射变换检索中的最小点数?

Python 看不到使用 apt-get 安装的模块

python - python 、Spyder、Mayavi

python - 仅获取张量的一部分的对角线元素

python - Tensorflow - keras - 'strided_slice' 的形状错误(使用调整大小的 MNIST 数据集)

python - 如何使用可变长度字符串解码 TFRecord 数据样本?