该Estimator.fit()
函数也可以作为参数
(
x
,y
, andbatch_size
) wherex
andy
可以是 numpy 数组或迭代器。优点
- 便于使用。
- 允许从任意来源提供数据,只要问题可以分解为
x
和y
。
缺点
- 没有提供时代的规定
- 如果
x
和y
是数组,则数据聚合必须可用,而不是动态读取(例如从数据库中读取) - 无论是数组还是迭代器,
x
都y
不能是字典。大多数复杂问题不能简化为输入矩阵和输出矩阵,可能需要多个输入特征矩阵。
input_fn
- 这是回调函数,它必须返回张features
量target
或张量字典。优点
- 允许从任意来源提供数据(理论上)。
- 返回的特征和目标可以是字典,从而允许解决需要多个输入的复杂问题。
缺点
- 仅支持使用
read_batch_examples()
,read_batch_features()
,read_batch_record_features()
等读取文件。 - 不支持传递占位符和 feed_fn 以允许不需要队列的任意输入数据源。
相关讨论
- https://github.com/tensorflow/tensorflow/pull/4696#issuecomment-253632403
- 如何使用 StreamingDataFeeder 作为 contrib.learn.Estimator.fit() 的 input_fn?
在 1. 的讨论中,@martinwick 建议使用py_func
来克服 input_fn 的缺点,但是,我仍然不确定如何。欢迎任何建议、想法、蓝图。