如何在张量流中使用小的非负随机数来变量变量?
如何找到文档中TF中定义的所有可能的变量初始值设定项?
答案 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
。