似乎MonitoredTrainingSession在第一次调用.run(..)之前执行一些操作(日志记录?),这意味着当我执行以下操作时:
train_data = reader.traindata() # returns a tf.contrib.data.Dataset
it = tf.contrib.data.Iterator.from_structure(train_data.output_types, train_data.output_shapes)
init_train = it.make_initializer(train_data)
ne = it.get_next()
ts = tf.train.MonitoredTrainingSession(checkpoint_dir=save_path)
... no calls to ts.run ...
ts.run(init_train)
这会产生错误:
FailedPreconditionError (see above for traceback): GetNext() failed because the iterator has not been initialized. Ensure that you have run the initializer operation for this iterator before getting the next element
看起来MonitoredTrainingSession在运行我提供的操作之前进行了一些操作,导致无法与数据集中的可重新初始化迭代器一起使用。
我确定我错过了什么,并且很想知道是什么:-)