#python #tensorflow #tensor #softmax
#python #тензорный поток #тензор #softmax
Вопрос:
Привет, так что я точно хочу, если у нас есть матрица W и вектор V, такие как:
V=[1,2,3,4]
W=[[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]]
мы должны получить результат:
result=[[1,1,1,1],[2,2,2,2],[3,3,3,3],[4,4,4,4]]
Я нашел этот метод на веб-сайте:
V = tf.constant([1,2,4], dtype=tf.float32)
W = tf.constant([[1,2,3,4],[1,2,3,4],[1,2,3,4]], dtype=tf.float32)
tf.multiply(tf.expand_dims(V,1),W)
## produce: [[1,2,3,4],[2,4,6,8],[4,8,12,16]]
это именно то, что я хочу, но когда я реализую это в своей модели, он также включает размер пакета вектора, в результате чего возникает ошибка, такая
with input shapes: [?,1,297], [?,297,300].
я предполагаю, что это та же ошибка, которую это может вызвать
V = tf.constant([[1,2,4]], dtype=tf.float32)
W = tf.constant([[[1,2,3,4],[1,2,3,4],[1,2,3,4]]], dtype=tf.float32)
tf.multiply(tf.expand_dims(V,1),W)
Я хотел знать, какова стандартная процедура получения каждого элемента из выходного вектора softmax и умножения их как веса для каждого вектора в тензоре объектов
Ответ №1:
Я обнаружил, что с помощью
V = tf.constant([[1,2,4]], dtype=tf.float32)
W = tf.constant([[[1,2,3,4],[1,2,3,4],[1,2,3,4]]], dtype=tf.float32)
h2=tf.keras.layers.multiply([W,tf.expand_dims(V,2)])
слой keras будет игнорировать часть размера пакета для нас, но мы должны изменить параметр expand dim, потому что нам все еще нужно учитывать размер пакета V перед загрузкой в слой.