#tensorflow #keras #vector #tensorflow2.0
#tensorflow #keras #вектор #tensorflow2.0
Вопрос:
В tensorflow у меня есть:
- Константа из 2000 векторов размером 1500. (dim = (2000, 1500)) с именем X
- Переменная пакетного ввода из 75 векторов размером 1500 (dim = (?, 75, 1500)) с именем y
Я хочу, чтобы скалярное произведение каждого вектора X между каждым вектором y приводило к вектору размерности (?, 75, 2000)
Есть ли способ, которым я могу это сделать, используя dot или batch_dot?
Ответ №1:
ДА.
Используйте tf.matmul(). Он будет работать с неизвестным пакетом.
import tensorflow as tf
# random X
X = tf.random.normal([2000, 1500])
print(X.shape)
# (2000, 1500)
# variable-batch y
y = tf.keras.Input([75, 1500])
print(y.shape)
# (None, 75, 1500)
# dot-product
out = tf.matmul(y, X, transpose_b=True)
print(out.shape)
# (None, 75, 2000)