首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在设置Tensorflow图形级种子后,随机值在同一会话中具有不同的值?

为什么在设置Tensorflow图形级种子后,随机值在同一会话中具有不同的值?
EN

Stack Overflow用户
提问于 2019-07-11 15:09:42
回答 1查看 82关注 0票数 0

在本教程中,它解释了图形级别的种子和操作级别的种子。令人困惑的是,在设置图形级种子之后,在同一会话中打印相同的变量,但却获得了不同的值,如代码所示:

代码语言:javascript
复制
tf.compat.v1.random.set_random_seed(1234)
a = tf.random.uniform([1])

with tf.compat.v1.Session() as sess1:
  print(sess1.run(a))  # generates 'A1'
  print(sess1.run(a))  # generates 'A2'

即使在设置了操作级种子之后,仍然打印出不同的结果。

EN

回答 1

Stack Overflow用户

发布于 2019-07-11 15:48:30

我的理解是,设置种子用于设置随机生成器的起始位置。因此,第一个印刷品是种子为1234的第一个随机制服,而第二个印刷品是种子为1234的第二个随机制服。对于新会话,种子将再次设置为1234。

Set seed通常用于确保您在不同的运行和不同的硬件上获得相同的场景。否则,使用依赖于随机生成器的错误搜索代码将非常困难和令人沮丧。

例如,我们可以启动两个不同的会话,并检查它们是否相同:

代码语言:javascript
复制
import tensorflow as tf

tf.compat.v1.random.set_random_seed(1234)
a = tf.random.uniform([1])

print('session 1')
with tf.compat.v1.Session() as sess1:
    print(sess1.run(a))  # generates 'A1'
    print(sess1.run(a))  # generates 'A1'

print('session 2')    
with tf.compat.v1.Session() as sess1:
    print(sess1.run(a))  # generates 'A1'
    print(sess1.run(a))  # generates 'A1'

>> session 1
>> [0.96046877]
>> [0.8362156]
>> session 2
>> [0.96046877]
>> [0.8362156]

正如预测的那样,两个会话都会给出相同的输出。如果你在你的电脑上试一下,你应该会得到相同的输出。

这是一个如何在会话之间设置种子的示例。相反,在会话级别设置随机种子,似乎不可能到目前为止?有关这方面的更深入的讨论,请参阅comment for this question

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56983494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档