1 、OutOfRangeError: End of sequence错误:
比如代码最后执行部分为:
with tf.Session() as session:
train(session, train_X, train_y)
run_eval(session, test_X, test_y)
就有可能会报出这样的错误,这种行为是正常的。来自Tensorflow文档:
如果迭代器到达数据集的末端,则执行iterator .get_next()操作将引发tf.errors.OutOfRangeError。在此之后,迭代器将处于不可用的状态,如果您想进一步使用它,则必须再次初始化它。
其实就是你已经迭代到最后了,还要申请继续迭代1个就越界了。要么自己排查看看自己那地方越界了;要么捕捉错误。网上给出的解决方式为,捕捉到错误,即表示迭代结束,可以结束了:
with tf.Session() as session:
try:
train(session, train_X, train_y)
run_eval(session, test_X, test_y)
except tf.errors.OutOfRangeError:
pass # 或者 print("End of dataset") 说明迭代已经结束了