def test_SDM(): model_name = "SDM" x, y, user_feature_columns, item_feature_columns, history_feature_list = get_xy_fd_sdm(False) if tf.__version__ >= '2.0.0': tf.compat.v1.disable_eager_execution() else: K.set_learning_phase(True) model = SDM(user_feature_columns, item_feature_columns, history_feature_list, units=8) # model.summary() model.compile('adam', sampledsoftmaxloss) check_model(model, model_name, x, y)
] item_feature_columns = [SparseFeat('movie_id', feature_max_idx['movie_id'], embedding_dim)] K.set_learning_phase(True) import tensorflow as tf if tf.__version__ >= '2.0.0': tf.compat.v1.disable_eager_execution() # units must be equal to item embedding dim! model = SDM(user_feature_columns, item_feature_columns, history_feature_list=['movie_id', 'genres'], units=embedding_dim, num_sampled=100, ) model.compile(optimizer='adam', loss=sampledsoftmaxloss) # "binary_crossentropy") history = model.fit(train_model_input, train_label, # train_label, batch_size=512, epochs=1, verbose=1, validation_split=0.0, ) K.set_learning_phase(False) # 3.Define Model,train,predict and evaluate test_user_model_input = test_model_input all_item_model_input = {"movie_id": item_profile['movie_id'].values, } user_embedding_model = Model(inputs=model.user_input, outputs=model.user_embedding) item_embedding_model = Model(inputs=model.item_input, outputs=model.item_embedding) user_embs = user_embedding_model.predict(test_user_model_input, batch_size=2 ** 12) # user_embs = user_embs[:, i, :] # i in [0,k_max) if MIND item_embs = item_embedding_model.predict(all_item_model_input, batch_size=2 ** 12)