嗨,我是 tensorflow 和神经网络的新手。试图了解 tensorflow 的官方模型 repo 中的ncf 推荐模型。
我的理解是你建立一个带有输入层和学习层的模型。然后创建批量数据来训练模型,然后使用测试数据来评估模型。这是在这个文件中完成的。
但是,我无法理解输入层。
它显示在代码中
user_input = tf.keras.layers.Input(
shape=(1,), name=movielens.USER_COLUMN, dtype=tf.int32)
据我了解,您一次可以输入一个参数。
但是我只能使用以下虚拟数据来调用 predict_on_batch
user_input = np.full(shape=(256,),fill_value=1, dtype=np.int32)
item_input = np.full(shape=(256,),fill_value=1, dtype=np.int32)
valid_pt_mask_input = np.full(shape=(256,),fill_value=True, dtype=np.bool)
dup_mask_input = np.full(shape=(256,),fill_value=1, dtype=np.int32)
label_input = np.full(shape=(256,),fill_value=True, dtype=np.bool)
test_input_list = [user_input,item_input,valid_pt_mask_input,dup_mask_input,label_input]
tf.print(keras_model.predict_on_batch(test_input_list))
当我运行以下代码时:
user_input = np.full(shape=(1,),fill_value=1, dtype=np.int32)
item_input = np.full(shape=(1,),fill_value=1, dtype=np.int32)
valid_pt_mask_input = np.full(shape=(1,),fill_value=True, dtype=np.bool)
dup_mask_input = np.full(shape=(1,),fill_value=1, dtype=np.int32)
label_input = np.full(shape=(1,),fill_value=True, dtype=np.bool)
test_input_list = [user_input,item_input,valid_pt_mask_input,dup_mask_input,label_input]
classes = _model.predict(test_input_list)
tf.print(classes)
我收到了这个错误:
tensorflow.python.framework.errors_impl.InvalidArgumentError: Input to reshape is a tensor with 1 values, but the requested shape requires a multiple of 256
[[{{node model_1/metric_layer/StatefulPartitionedCall/StatefulPartitionedCall/Reshape_1}}]] [Op:__inference_predict_function_2828]
有人可以帮助我如何使用这个模型来预测单个输入吗?还有为什么在进行预测时需要 user_id 和 item_id?不应该是您提供模型返回项目列表的用户列表吗?