tensorflow tf.Variable() 引用Dataset导致 MonitedTrainingSession 无法初始化

TL;DR TensorFlowDataset接口需要初始化后才能使用get_next()方法,如果模型中一个变量通过tf.Variable()引用了get_next()返回的tensor,使用MonitedTrainingSession训练时将导致难以理解的错误。解决办法是不要在tf.Variable()中使用Dataset提供的没有初始化的tensor,或者你可以在初始化全局变量前初始化Dataset的迭代器。

触发条件

如果模型中tf.Variable()引用了Dataset模块的get_next()返回的tensor,那么在初始化全局变量时会导致错误,如果你使用MonitedTrainingSession来监控训练,那么这个错误将会相当隐蔽,难以debug。