У меня есть 2 тензора, тензор A и тензор B, как показано на рисунке. Я хочу взять каждый вектор 1x16 из тензора B и выполнить скалярное произведение с соответствующей партией (ось 0 - это размер партии в каждом тензоре) тензора A вдоль осей 1 и 2 A. Как я могу сделать это в тензорном потоке. Любая помощь с кодом будет принята с благодарностью. Спасибо
Я пробовал эйнсум, но запутался.
Ожидаемая выходная форма должна быть (3,2,28,28).






Вы можете сделать это следующим образом:
import tensorflow as tf
A = tf.placeholder(tf.float32, [3, 28, 28, 16])
B = tf.placeholder(tf.float32, [3, 2, 16])
A_exp = A[:, tf.newaxis]
B_exp = B[:, :, tf.newaxis, tf.newaxis]
C = tf.reduce_sum(A_exp * B_exp, axis=-1)
print(C)
# Tensor("Sum:0", shape=(3, 2, 28, 28), dtype=float32)
Большое вам спасибо ... Это было то, что мне было нужно.
@AbhisekDash Я рад, что это помогло. Пожалуйста, рассмотрите возможность пометить ответ как принятый, если вы считаете, что он решил вашу проблему.
Я пытался проголосовать, но статус не меняется, потому что у меня меньше 15 очков репутации.
@AbhisekDash Все в порядке, спасибо. Вы должны иметь возможность пометить его как принятое, если хотите (зеленая галочка), но не беспокойтесь об этом.
Добро пожаловать в SO; пожалуйста, найдите время, чтобы прочитать Как спросить и Как создать минимальный, полный и проверяемый пример. Пожалуйста, покажите, что именно вы пробовали до сих пор и в чем ваша проблема.