这个问题困扰了我一个星期终于解决了。主要原因在于sess.run()的运用。
注意!!!sess.run()的下面两种方式:
sess.run([a, b])
和
sess.run(a)
sess.run(b)
不一样!!!!尤其是在b与a有前后连接的时候,当他们有连接的时候,第一种方式是同时运行,也就是在同一步里运行,而后一种方式则是运行完a后,当a处在下一个状态时再运行b。而一旦b是由a得到的,那么在运行b的时候就是又运行了a的下一个状态。
在我的代码中,我用了可初始化迭代器和他的get_next() 方法来获取dataset管道中的数据,再将获取的数据投入模型进行训练,训练完之后想要print损失值,于是我单独sess.run(loss)。在这之前训练网络的时候肯定要对训练操作进行sess.run,这就相当于采用了上面第二种方式,导致的结果就是在一个step中,我多次sess.run()了迭代器,迭代器当然会跳跃着读取训练数据,导致训练步骤提前终止。