Использование модели в качестве слоя в другой модели, первая модель не тренируется - PullRequest
0 голосов
/ 13 марта 2020

Я построил модель 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 или потому, что я вызываю модель? Как я могу это исправить?

...