zoukankan      html  css  js  c++  java
  • 随机数生成、常量生成

    随机数生成

    tf.random_uniform_initializer

    tf.random_uniform_initializer(-0.1, 0.1, seed=2) 生成具有[-0.1, 0.1]均匀分布的张量的初始化器。

    tf.truncated_normal与tf.random_normal

    tf.truncated_normal

    从截断的正态分布中输出随机值。

    生成的值服从具有指定平均值和标准偏差的正态分布,如果生成的值大于平均值2个标准偏差的值则丢弃重新选择。

    tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)

    shape: 一维的张量,也是输出的张量。

    mean: 正态分布的均值。

    stddev: 正态分布的标准差。

    dtype: 输出的类型。

    seed: 一个整数,当设置之后,每次生成的随机数都一样。

    name: 操作的名字。

    tf.random_normal

    从正态分布中输出随机值。

    tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)

    参数:

    shape: 一维的张量,也是输出的张量。

    mean: 正态分布的均值。

    stddev: 正态分布的标准差。

    dtype: 输出的类型。

    seed: 一个整数,当设置之后,每次生成的随机数都一样。

    name: 操作的名字。

    随机数生成种子

    Tensorflow中的随机数生成种子是在数据流图资源上运作的。每一个数据流图中,我们可以执行针对随机数生成种子应用不同的操作(operation)。

    op-level: 随机数生成种子作为random系列函数的参数之一,可在相应的参数列表进行设置,这就是op-level的操作。

    graph-level: 与之对应的是graph-level的操作tf.set_random_seed(),它管理着同一数据流图下的资源。

    import tensorflow as  tf

    # Repeatedly running this block with the same graph will generate the same

    # sequences of 'a' and 'b'.

    g1 = tf.Graph()

    g2 = tf.Graph()

    print("Graph 1")

    with g1.as_default():

        tf.set_random_seed(-1)

        a = tf.random_uniform([1])

        b = tf.random_normal([1])

        print("Session 1")

        with tf.Session() as sess1:

            print(sess1.run(a))  # generates 'A1'

            print(sess1.run(a))  # generates 'A2'

            print(sess1.run(b))  # generates 'B1'

            print(sess1.run(b))  # generates 'B2'

        print("Session 2")

        with tf.Session() as sess2:

            print(sess2.run(a))  # generates 'A1'

            print(sess2.run(a))  # generates 'A2'

            print(sess2.run(b))  # generates 'B1'

            print(sess2.run(b))  # generates 'B2

    print("--------------")

    print("Graph 2")

    with g2.as_default():

        a = tf.random_uniform([1])

        b = tf.random_normal([1],seed=-1)

        print("Session 3")

        with tf.Session() as sess3:

            print(sess3.run(a))  # generates 'A1'

            print(sess3.run(a))  # generates 'A2'

            print(sess3.run(b))  # generates 'B1'

            print(sess3.run(b))  # generates 'B2'

        print("Session 4")

        with tf.Session() as sess4:

            print(sess4.run(a))  # generates 'A3'

            print(sess4.run(a))  # generates 'A4'

            print(sess4.run(b))  # generates 'B1'

            print(sess4.run(b))  # generates 'B2'

    >>> 

    Graph 1

    Session 1

    [0.45231807]

    [0.82921326]

    [-0.90662855]

    [0.52898115]

    Session 2

    [0.45231807]

    [0.82921326]

    [-0.90662855]

    [0.52898115]

    --------------

    Graph 2

    Session 3

    [0.18341184]

    [0.42214954]

    [-0.96254766]

    [-1.088825]

    Session 4

    [0.40388882]

    [0.7478839]

    [-0.96254766]

    [-1.088825]

    在Graph1中,我们通过tf.set_random_seed()函数对该图资源下的全局随机数生成种子进行设置,使得不同Session中的random系列函数表现出相对协同的特征,这就是Graph-Level的表现;

    在Graph2中,我们仅对张量b进行了seed设置,可以发现,这是Op-Level的表现,仅在执行张量b的情况下,才会有和Graph1类似的协同效果。另外,值得注意的是,seed的传参类型为integer,所以只要是整数(如果过大,源码中会进行截断),就能完成它的设置(可以是1234、87654321等),效果和上述的-1是一样的。

    常量生成

    Tensors常量值函数

    tf.zeros(shape, dtype=tf.float32, name=None)

    tf.zeros_like(tensor, dtype=None, name=None)

    tf.ones(shape, dtype=tf.float32, name=None)

    tf.ones_like(tensor, dtype=None, name=None)

    tf.fill(dims, value, name=None)

    tf.constant(value, dtype=None, shape=None, name='Const')

    想生成一个和tensor维度相同的全为0或者1的对象,但又不知道这个tensor的维度时,可以使用:

    tf.zeros_like(tensor, dtype=None, name=None)

    tf.ones_like(tensor, dtype=None, name=None)

    tf.fill(dims, value, name=None)

    创建一个维度为dims,值为value的tensor对象.该操作会创建一个维度为dims的tensor对象,并将其值设置为value,该tensor对象中的值类型和value一致

    当value为0时,该方法等同于tf.zeros()

    当value为1时,该方法等同于tf.ones()

  • 相关阅读:
    Gym
    [APIO2014] 回文串
    python选课系统
    python面向对象之类成员修饰符
    python面向对象之类成员
    python的shelve模块
    python的re模块
    python的configparser模块
    python的sys和os模块
    python的hashlib模块
  • 原文地址:https://www.cnblogs.com/yongfuxue/p/10095881.html
Copyright © 2011-2022 走看看