问题描述
我目前正在使用 TensorFlow Ranking 模块进行推荐任务。我正在复制这个 tutorial,使用完全相同的代码和相同的数据库,来自雅虎的著名数据集,用于学习排名
模型运行完美并产生了预期的结果,但您可能会注意到,本教程没有说明如何进行预测,我已经尝试了此 question 中发布的解决方案以及以下功能
def predict_input_fn(features):
iterator_initializer_hook = IteratorInitializerHook()
features_placeholder = {
k: tf.compat.v1.placeholder(v.dtype,v.shape)
for k,v in six.iteritems(features)
}
#labels_placeholder = tf.compat.v1.placeholder(labels.dtype,labels.shape)
dataset = tf.data.Dataset.from_tensors(
(features_placeholder))
iterator = tf.compat.v1.data.make_initializable_iterator(dataset)
Feed_dict = {}
Feed_dict.update(
{features_placeholder[k]: features[k] for k in features_placeholder})
iterator_initializer_hook.iterator_initializer_fn = (
lambda sess: sess.run(iterator.initializer,Feed_dict=Feed_dict))
features = iterator.get_next()
return features
gen_predictions = estimator.predict(input_fn=lambda: predict_input_fn(features_vali))
features_vali 来自教程中的这行代码
features_vali,labels_vali = load_libsvm_data(FLAGS.vali_path,FLAGS.list_size)
我尝试过的一切都会产生相同的错误:
ValueError:无法将具有 630600 个元素的张量整形为 [6306,1](6306 个元素),用于 > 'transform/encoding_layer/1/Reshape'(操作:'Reshape'),输入形状:[6306,100,1]、2 和 > 输入张量计算为部分形状:输入 1 = [6306,1]。
6306 是我想要预测的查询,100 是 list_size 参数(即查询 100 个文档)
我很确定我在 predict_input_fn 中遗漏了一些东西,但我找不到错误
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)