Tensorflow 如何获取和设置随机状态(种子)

Tensorflow 如何获取和设置随机状态(种子),tensorflow,Tensorflow,情景:我训练了一段时间,然后想将当前的训练状态准确地保存到磁盘,然后退出。然后我想以后继续训练。这应该是完全相同的行为,好像我不会离开 为了简单起见,假设我使用SGD,尽管存储更新程序状态(Adam等)也不是问题 但是,我不知道如何读取和存储随机状态。因此,当我下次重新创建图表和一个新会话时,它不会继续随机序列(或者我已经完成了,然后它会像第一次一样开始,或者它是随机的) 那么,如何读取随机状态呢?或者是一个随机种子,如果我稍后使用该种子初始化,它将继续使用相同的序列 如果这是不可能的,也许有

情景:我训练了一段时间,然后想将当前的训练状态准确地保存到磁盘,然后退出。然后我想以后继续训练。这应该是完全相同的行为,好像我不会离开

为了简单起见,假设我使用SGD,尽管存储更新程序状态(Adam等)也不是问题

但是,我不知道如何读取和存储随机状态。因此,当我下次重新创建图表和一个新会话时,它不会继续随机序列(或者我已经完成了,然后它会像第一次一样开始,或者它是随机的)

那么,如何读取随机状态呢?或者是一个随机种子,如果我稍后使用该种子初始化,它将继续使用相同的序列


如果这是不可能的,也许有其他随机发生器,我可以用呢?我发现了哪些似乎提供了这样的信息。在那里,我可以使用诸如:

tf.contrib.stateless.stateless_random_normal(..., seed=global_step * some_number)

你读了吗?这里似乎有很好的记录。作为评论而不是答案发布,因为我不是100%确定(可能在某个时候会改变),但很可能你无法做到这一点。就我所见,RNG状态最终封装在C++类中,它似乎无法提供读取其当前状态的方式。你可以给一张图和一个操作添加种子,但(我认为)不能从给定的点恢复RNG。@avigil是的,但这不能回答我的问题。@jdehesa有趣。可能通过使用那里的
跳过
功能?但是我真的不知道有什么可靠的方法可以得到要跳过的确切数字。@Albert是的,就是这样,成员var
counter\uu
持有跳过的数量,但看起来你无法得到它(你还必须从那里得到值,一直到Python或一些状态保存功能,ofc)。