Я пишу лямбда-слой в Керасе, чтобы вычислить умножение тензора и матрицы констант.Но размер в выходных данных оказался неправильным.
В коде jdes
- тензор с размерностью TensorShape([Dimension(None), Dimension(100)])
.Далее, six_title_embedding
- это матрица констант, и она имеет форму (6, 100)
.
def cosine_distance(input):
jd = K.l2_normalize(input, axis=-1)
jt_six = K.l2_normalize(six_title_embedding, axis=-1)
return jd * jt_six
distance = Lambda(cosine_distance, output_shape=(None, 6,100))(jdes)
result = Dense(1, activation='sigmoid')(distance)
. В выводе я ожидал, что result
будет иметь форму (None, 6, 1)
, но теперь это (6, 1)
, поэтомучисло batch_size
теряется при вычислении лямбда-слоя.Форма distance
теперь TensorShape([Dimension(6), Dimension(100)])
.Должно ли это быть (None, 6, 100)
, чтобы результат мог иметь (None, 6, 1)
?