【问题标题】:TensorFlow and random variablesTensorFlow 和随机变量
【发布时间】:2017-10-07 19:21:56
【问题描述】:

我有一个关于 TensorFlow 中随机变量的问题。假设我的损失函数中需要一个随机变量。 在 TensorFlow 教程中,我发现用于初始化变量的随机函数,例如在第二次通过训练过程修改的权重。 在我的情况下,我需要一个随机的浮点向量(比如说 128 个值),它遵循特定的分布(均匀或高斯),但在每次损失计算中都会发生变化。

在我的损失函数中定义这个变量,这是我需要做的简单的事情,因为在每个时期我都会得到新的值(无论如何都遵循选定的分布)或者我得到的值总是相同的在所有的迭代中?

【问题讨论】:

标签: variables random tensorflow


【解决方案1】:

TensorFlow 中的随机节点每次调用时总是取不同的值,你可以通过多次调用来验证

import tensorflow as tf
x = tf.random_uniform(shape=())
sess = tf.Session()
sess.run(x)
# 0.79877698
sess.run(x)
# 0.76016617

它不是 tensorflow 术语中的 Variable,正如您可以从上面的代码中检查的那样,它无需调用变量初始化即可运行。

【讨论】:

    【解决方案2】:

    如果您将随机生成的值分配给Variable,那么此值将保持固定,直到您更新此变量。

    如果您直接将损失函数放入数字的“生成”(tf.random_*),那么它们在每次调用时都会有所不同。

    试试这个:

    import tensorflow as tf
    
    # generator
    x = tf.random_uniform((3,1), minval=0, maxval=10)
    
    # variable
    a = tf.get_variable("a", shape=(3,1), dtype=tf.float32)
    
    # assignment
    b = tf.assign(a, x)
    
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        for i in range(5):
            # 5 different values
            print(sess.run(x))
    
        # assign the value
        sess.run(b)
        for i in range(5):
            # 5 equal values
            print(sess.run(a))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多