如何使用 Tensorflow Ranking 进行预测

问题描述

我目前正在使用 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...