如何处理嵌入层上变化的输入形状

时间:2019-09-06 11:06:56

标签: python keras embedding

我正在尝试有关keras的推荐问题 我的模型如下

def build_model(n_users, n_movies, n_factors, min_rating, max_rating):
   user = Input(shape=(1,))
   u = EmbeddingLayer(n_users, n_factors)(user)
   movie = Input(shape=(1,))
   m = EmbeddingLayer(n_movies, n_factors)(movie)
   x = Concatenate()([u, m])
   x = Dropout(0.05)(x)
   x = Dense(10, kernel_initializer='he_normal')(x)
   x = Activation('relu')(x)
   x = Dropout(0.5)(x)
   x = Dense(1, kernel_initializer='he_normal')(x)
   x = Activation('sigmoid')(x)
   x = Lambda(lambda x: x * (max_rating - min_rating) + min_rating)(x)
   model = Model(inputs=[user, movie], outputs=x)
   opt = Adam(lr=0.001)
   model.compile(loss='mean_squared_error', optimizer=opt)
   return model

当用户数量随时间变化而没有从头开始时,总有一种方法可以重新训练模型,因为如果我对嵌入的理解正确,那么嵌入层将无法正常工作。当用户或电影的数量发生变化时,我将不得不从头开始重新训练模型,是否有任何方法可以保留在密集层上学习到的权重。

0 个答案:

没有答案