美文网首页
tf2 随机种子设置

tf2 随机种子设置

作者: 见喉 | 来源:发表于2021-08-23 15:30 被阅读0次

全局种子

tf.random.set_seed(116)

针对程序重新运行或者tf.function(类似于re-run of a program),保证随机操作顺序相同

例如1

重新运行程序

tf.random.set_seed(1234)

print(tf.random.uniform([1]))  # generates 'A1'

print(tf.random.uniform([1]))  # generates 'A2'

(now close the program and run it again)

tf.random.set_seed(1234)

print(tf.random.uniform([1]))  # generates 'A1'

print(tf.random.uniform([1]))  # generates 'A2'

例如2

定义函数tf.function

tf.random.set_seed(1234)

@tf.function

def f():

  a = tf.random.uniform([1])

  b = tf.random.uniform([1])

  return a, b

@tf.function

def g():

  a = tf.random.uniform([1])

  b = tf.random.uniform([1])

  return a, b

print(f())  # prints '(A1, A2)'

print(g())  # prints '(A1, A2)'

output

(<tf.Tensor: id=20, shape=(1,), dtype=float32, numpy=array([0.96046877], dtype=float32)>, <tf.Tensor: id=21, shape=(1,), dtype=float32, numpy=array([0.85591054], dtype=float32)>)

(<tf.Tensor: id=41, shape=(1,), dtype=float32, numpy=array([0.96046877], dtype=float32)>, <tf.Tensor: id=42, shape=(1,), dtype=float32, numpy=array([0.85591054], dtype=float32)>)




操作种子

tf.random.truncated_normal([4,3], stddev=0.1, seed=1)

例如1

内部计数器,每次执行时会增加,产生不同的结果

print(tf.random.uniform([1], seed=1))  # generates 'A1'

print(tf.random.uniform([1], seed=1))  # generates 'A2'

(now close the program and run it again)

print(tf.random.uniform([1], seed=1))  # generates 'A1'

print(tf.random.uniform([1], seed=1))  # generates 'A2'

例如2

多个相同操作种子包含在tf.funtion中,因操作时间不长,共享相同的计数器

@tf.function

def foo():

  a = tf.random.uniform([1], seed=1)

  b = tf.random.uniform([1], seed=1)

  return a, b

print(foo())  # prints '(A1, A1)'

print(foo())  # prints '(A2, A2)'

output

(<tf.Tensor: id=20, shape=(1,), dtype=float32, numpy=array([0.2390374], dtype=float32)>, <tf.Tensor: id=21, shape=(1,), dtype=float32, numpy=array([0.2390374], dtype=float32)>)

(<tf.Tensor: id=22, shape=(1,), dtype=float32, numpy=array([0.22267115], dtype=float32)>, <tf.Tensor: id=23, shape=(1,), dtype=float32, numpy=array([0.22267115], dtype=float32)>)

@tf.function

def bar():

  a = tf.random.uniform([1])#不设置操作种子

  b = tf.random.uniform([1])

  return a, b

print(bar())  # prints '(A1, A2)'

print(bar())  # prints '(A3, A4)'


全局种子+操作种子

全局种子会重置计数器tf.random.set_seed()

tf.random.set_seed(1234)

print(tf.random.uniform([1], seed=1))  # generates 'A1'

print(tf.random.uniform([1], seed=1))  # generates 'A2'

tf.random.set_seed(1234)

print(tf.random.uniform([1], seed=1))  # generates 'A1'

print(tf.random.uniform([1], seed=1))  # generates 'A2'

相当于关闭了程序re-run


附注

以下三种随机操作顺序不同:

1全局+操作

tf.random.set_seed(1234)

print(tf.random.uniform([1], seed=1)) 

output

tf.Tensor([0.1689806], shape=(1,), dtype=float32)

2全局

tf.random.set_seed(1234)

print(tf.random.uniform([1)) 

output

tf.Tensor([0.5380393], shape=(1,), dtype=float32)

3操作

print(tf.random.uniform([1], seed=1)) 

output

tf.Tensor([0.2390374], shape=(1,), dtype=float32)

相关文章

  • tf2 随机种子设置

    全局种子 tf.random.set_seed(116) 针对程序重新运行或者tf.function(类似于re-...

  • PyTorch/Tensorflow设置随机种子 ,保证结果复现

    Pytorch随机种子设置 Tensorflow设置随机种子 第一步 仅导入设置种子和初始化种子值所需的那些库 第...

  • random随机函数

    import random seed([1]) #随机数种子要每次产生随机数相同就要设置种子,相同种子数的Ran...

  • 随机数函数

    对于 rand()和random()随机函数,每次安装程序的时候系统会为其设置一个固定的随机种子,如果不主动设置随...

  • [Toddler's Bottle]-random

    首先我们看源代码 可以看到random这个函数,由于没有设置种子(设置种子也要变化啊)所以可以知道这里是伪随机数,...

  • 数据分析学习笔记(五)-- numpy:随机数

    常用的random函数 uniform :产生low到high之间到随机数 seed :设置随机数种子 注:see...

  • random库

    seed()给随机数一个种子值,,默认随机种子是系统时钟。 随机种子相同,随机数相同。伪随机数。 random()...

  • matlab随机序列

    伪随机序列发生器有多种,先看一种吧 基本思想:先通过rand('seed', key);设置一个种子,控制随机序列...

  • R,笔记01

    设置随机数的种子值 grep用法 载入数据 创建数据框 subset用法 strsplit 和 paste用法

  • C语言随机数的产生

    1. 设置随机数种子,设置一次即可,例如srand(100)(需要包含头文件stdlib.h) 2. 如果sran...

网友评论

      本文标题:tf2 随机种子设置

      本文链接:https://www.haomeiwen.com/subject/oeyqhktx.html