Умножьте слой с 1 выходом на слой с несколькими выходами

#tensorflow #keras

#tensorflow #keras

Вопрос:

Я пытаюсь заставить нейронную сеть умножить два входных тензора (я не могу этого сделать до того, как передам их в сеть). multiply Функция Кераса может обрабатывать только два тензора одной и той же размерности. Есть что-то вроде:

 scale_, mean_ = 2., 4.
a = Input(shape=(300,), name='Input_vec')
m_num = Input(shape=(1,), name='Input_num')
mulNum = Lambda(lambda x: K.exp(x * scale_   mean_))(m_num)
output = multiply([mulNum, a]) # tensors not same shape
 

как я могу выполнить умножение двух входных данных, где один является просто скаляром?

Ответ №1:

Используйте tf.multiply() (или tf.math.multiply() ), поддерживающий широковещательную передачу:

 output = Lambda(lambda x: tf.multiply(x[0], x[1]))((a, mulNum))
 

Комментарии:

1. Вы должны ввести входные данные для лямбда-слоя, иначе появится ошибка.