如何在张量流中使用小的非负随机数来变量变量?

时间:2017-10-09 14:16:09

标签: tensorflow

如何在张量流中使用小的非负随机数来变量变量?

如何找到文档中TF中定义的所有可能的变量初始值设定项?

3 个答案:

答案 0 :(得分:4)

创建变量并选择正确尺寸的随机分布。

w = tf.Variable(tf.random_uniform((dim1, dim2)))

对于初始化,您需要创建随机数。此链接为您提供Tensorflow中的所有随机操作(分发)。 https://www.tensorflow.org/api_guides/python/constant_op#Random_Tensors

答案 1 :(得分:3)

使用小的非负数初始化变量:

norm = tf.random_uniform_initializer(minval=0,  maxval = 1, dtype=tf.float32)
with tf.variable_scope('scope') as scope:
     w = tf.get_variable('w', [inp.get_shape()[1], output_dim], initializer=norm, dtype=tf.float32)

答案 2 :(得分:3)

非负random numbers in TensorFlow有几个选项。正如其他人已经提到的那样,您可以使用tf.random_uniform

w = tf.Variable(tf.random_uniform(shape, minval=0, maxval=max))

表示[minval, maxval)中的均匀随机数。对于更一般的分布,您可以使用tf.random_gamma,其从由形状参数alpha参数化的gamma distribution和反比例参数beta中提取样本。必须提供alpha,但默认情况下为beta=1(即使指纹显示None):

w = tf.Variable(tf.random_gamma(shape, alpha=alpha, beta=beta))

伽玛分布具有支持[0, +inf)和其他一些不错的属性(在某些假设下的最大熵分布,贝叶斯统计中某些事物的共轭先验)。根据您的参数,您可以从中获得许多不同的形状。它有点类似于正态分布,但仅适用于正数。

你也可以(虽然我不知道我会推荐它;但感觉很奇怪)使用tf.truncated_random_normal,它使用指定mean和{{1}的正态分布进行采样},除了正或负2标准偏差之外的样本被删除并重新采样:

stddev

其中w = tf.Variable(tf.truncated_random_normal(shape, mean=mean, stddev=stddev)) 为正值,而mean 最多等于stddev