Вы можете использовать tf.matmul
здесь.Просто вам придется перенести размеры.
Рассмотрим, N = 2, D1 = 4, D2 = 5
.Сначала создайте две матрицы, имеющие формы N x D1 x 3
и D1 x D2 x 3
.
a = tf.constant(np.arange(1, 25, dtype=np.int32), shape=[2,4,3])
b = tf.constant(np.arange(1, 61, dtype=np.int32), shape=[4,5,3])
. Переставьте матрицы так, чтобы первое измерение было одинаковым.
a = tf.transpose(a, (2, 0, 1)) # a.shape = (3, 2, 4)
b = tf.transpose(b, (2, 0, 1)) # b.shape = (3, 4, 5)
Выполните умножение как обычно.
r = tf.matmul(a,b) # r.shape = (3, 2, 5)
r = tf.transpose(r, (1, 2, 0)) # r.shape = (2, 5, 3)
Надеюсь, это поможет.