Skip to main content
 首页 » 编程设计

python之TensorFlow 估计器.预测 : Saving when as_iterable=True

2025年04月02日29java哥

我修改了Wide and Deep tutorial (运行 python 2.7)使用回归器而不是分类器,并输出我的测试数据的预测。我目前这样做(将 numpy 导入为 np):

predicts = m.predict(input_fn=lambda: input_fn(df_test)) 
np.savetxt("predict.csv", predicts, delimiter=",") 

在最新的 r0.11 版本中,我收到了关于即将弃用的警告,其中返回值将是一个可迭代的。为了适应这一点,我尝试了以下操作:

predicts = m.predict(input_fn=lambda: input_fn(df_test), as_iterable=True) 
np.savetxt("predict.csv", list(predicts), delimiter=",") 

这并没有达到预期的效果。 CPU 达到大约 80% 并保持这种状态,似乎无限期。半小时后,我终于不得不在没有写入数据的情况下将其杀死。它试图做什么?

当返回 as_iterable=True 时,关于如何将这些预测输出到文本文件有什么建议吗?

更新: 我试过这个:

predicts = m.predict(input_fn=lambda: input_fn(df_test), as_iterable=True)   
with open("predict.csv", "w") as f: 
    for x in predicts: 
      f.write(str(x)+"\n") 

结果似乎是一样的。我怀疑这是一个错误。谁能证实这一点?

请您参考如下方法:

将 as_iterable 与 input_fn 一起使用有点危险:如果 input_fn 不是每次都提示用完新数据,as_iterable 会很高兴地产生越来越多的输出,通常一遍又一遍地运行相同的输入。

如果您查看 Wide and Deep 教程中的 input_fn,您会发现其中没有队列,数据直接放入常量。因此,无论您多频繁地使用该 input_fn 创建的张量,您都将始终获得数据。

as_iterable 只要获得新数据就会拉取输入。在这种情况下,这意味着永远。

这是一个错误,我们应该修复它。