将 TFRecords 与 Tensorflow Estimator 一起使用时,是否有一种简单的方法来设置纪元

Is there a simple way to set epochs when using TFRecords with Tensorflow Estimators

将 numpy 数组输入估算器时,有一种很好的方法可以设置历元

  tf.estimator.inputs.numpy_input_fn(
     x,
     y=None,
     batch_size=128,
     num_epochs=1 ,
     shuffle=None,
     queue_capacity=1000,
     num_threads=1  
   )

但我无法找到与 TFRecords 类似的方法,大多数人似乎只是将其循环使用

 i = 0 
 while ( i < 100000):
   model.train(input_fn=input_fn, steps=100)

是否有一种简洁的方法来显式设置带有估算器的 TFRecords 的纪元数?

您可以使用 dataset.repeat(num_epochs) 设置纪元数。数据集管道输出一个数据集对象,一个批量大小的元组(特征,标签),输入到 model.train()

dataset = tf.data.TFRecordDataset(file.tfrecords)
dataset = tf.shuffle().repeat()
...
dataset = dataset.batch()

为了使其工作,您设置 model.train(steps=None, max_steps=None) 在这种情况下,您让数据集 API 通过生成 tf.errors.OutOfRange 错误或 StopIteration 异常来处理纪元计数一旦达到 num_epoch。