所以我使用Keras(Tensorflow后端,如果这很重要)运行协作过滤算法,用于游戏评级数据库。
def collaborative_filtering(num_items, num_users, num_item_features=50):
user_in = Input(shape=(1,), dtype='int64', name='user_in')
users_preferences = Embedding(
#...
name='users_preferences',
)(user_in)
item_in = Input(shape=(1,), dtype='int64', name='item_in')
items_factors = Embedding(
#...
name='items_factors',
)(item_in)
x = concatenate([users_preferences, items_factors])
x = Flatten()(x)
x = Dense(100, use_bias=True)(x)
x = Dropout(0.5)(x)
x = Dense(1)(x)
model = Model([item_in, user_in], x)
return model
现在我已将所有权重保存在weights_633-1.79.hdf5
文件中。我想用items_factors
权重来说明哪些游戏应该彼此相似。我如何实际编写那个?
我找到了
model.load_weights(filepath, by_name=True)
但是,似乎使用它我必须编码整个模型,即使我只是想加载已经训练过的权重。
我也看过how to get the outputs from the embedding layer这就是我现在开始编写的代码,但似乎应该有更优雅的解决方案。