我有一个二维张量。我想将该 2D 张量中的每个向量和tf.tensordot(vector, matrix, axes=1)
3D 张量中的矩阵获取,该矩阵在 3D 张量中与向量在 2D 张量中具有相同的索引。
本质上,我希望得到与这个 for 循环相同的结果,但是通过执行 tensorflow 矩阵运算而不是 numpy 和循环:
tensor2d = np.array([[1.,1.,1.,0.,0.],
[1.,1.,0.,0.,0.]],
np.float32)
tensor3d = np.array([
[
[1., 2., 3.],
[2., 2., 3.],
[3., 2., 3.],
[4., 2., 3.],
[5., 2., 3.],
],
[
[1., 2., 3.],
[2., 2., 3.],
[3., 2., 3.],
[4., 2., 3.],
[5., 2., 3.],
]
], np.float32)
results = []
for i in range(len(tensor2d)):
results.append(np.tensordot(tensor2d[i], tensor3d[i], axes=1))
它的输出应该是一个看起来像这样的矩阵(尽管类型会有所不同):
[array([6., 6., 9.], dtype=float32), array([3., 4., 6.], dtype=float32)]