Я построил модель Keras, которая использует другую модель в качестве слоя, но проблема в том, что веса в другой модели не тренировались. Как обойти это?
Для получения более подробной информации я использую преобразователь для индивидуального кодирования предложений, а затем комбинирую набор предложений с другим преобразователем.
Вот псевдокод:
Class:
def build_context_encoder(self):
a = Input(sentences shape)
#function stuff
b = #transformer structure
context_encoder = Model(inputs=[a], outputs=b)
return context encoder
def build_model(self):
list_of _contexts = Input(list of contexts shape)
context_embs = Lambda(lambda x: K.map_fn(fn=self.context_encoder, elems=x, dtype=tf.float32))(list_of_contexts)
c = #rest of the model (context_embs)
model = Model(inputs=[list_of _contexts], outputs=c)
model.compile(loss='mean_squared_error', optimizer='adam', metrics=[])
return model
def __init__():
self.context_encoder = self.build_context_encoder()
self.model = self.build_model()
Почему весовые коэффициенты в context_encoder не обновляются, когда я вызываю fit? Это из-за map_fn или потому, что я вызываю модель? Как я могу это исправить?