Поскольку B
уже нормализовано, ответ
tf.reduce_sum(A * B[:, :, None], axis=1)
Индексирование с помощью None
добавляет новое измерение, поведение, унаследованное от numpy. B[:,:, None]
добавляет последнее измерение, чтобы результат имел форму (a, b, 1)
. Вы можете добиться того же с помощью tf.expand_dims
, чье имя может иметь для вас больше смысла.
A
имеет форму (a, b, c)
, тогда как B[:, :, None]
имеет форму (a, b, 1)
. Когда они умножены, расширенный B будет также иметь форму (a, b, c)
, а последнее измерение будет c
копий того же значения. Это называется вещание .
Из-за того, как вещание работает, тот же ответ также работает, если B
имеет форму (1, b)
.