我有两个像这样的numpy矩阵:
matrix_a = np.random.random((2, 3))
matrix_b = np.random.random((2, 3, 5))
使用以下函数,我为 matrix_a
的轴1中的每个元素生成一个对角矩阵:
def foo(M):
b = np.zeros((M.shape[0], M.shape[1], M.shape[1]))
diag = np.arange(M.shape[1])
b[:, diag, diag] = M
return b
我也在扩大 matrix_a
的尺寸,如下所示:
diag_mixed_alignments = np.expand_dims(diag_mixed_alignments, axis=1)
matrix_a
的形状将变为 (2, 1, 3, 3)
.
假设第0维的大小2表示批量大小 . 我想为每个批次执行以下操作:
for row in range(0, diag_mixed_alignments.shape[0]):
cur_M = diag_mixed_alignments[row, :]
cur_V = values[row, :]
intmd_op1 = np.sum(np.matmul(cur_V.T, cur_M), axis=2)
op1.append(intmd_op1)
以上将产生一个形状矩阵 (2, 1, 5)
我的目标是在tensorflow中执行相同的操作,这样我就可以考虑在 matrix_a
not in an iterative manner 中创建的对角矩阵 . 实现这一目标的等效操作集是什么?