【发布时间】:2019-06-24 12:03:51
【问题描述】:
我想在Tensorflow中生成一个常量张量,它会用指定的机制初始化,例如random_uniform、random_normal。
我知道我可以根据这些机制生成一个随机的numpy数组,比如random_uniform、random_normal等;然后我们将生成的 numpy 数组作为 tf.constant 中的值参数提供。
但是,问题是我们在使用 numpy 版本的随机机制时必须给出一个形状。不过我不想预先指定形状,希望形状有弹性,就像我们写Tensorflow代码shape = tf.shape(some_previous_tensor)
Way1 我试过了:在图的构建阶段不需要预先指定常量的具体形状。然而,生成的张量是随机的而不是静态的。这不是我所期望的。
var = tf.random.normal(
[2,2], mean=0.0, stddev=0.5, dtype=tf.float32,
)
with tf.Session() as sess:
print('var:', sess.run(var))
print('var:', sess.run(var))
Output:
var: [[ 0.21260215 0.13721827]
[ 0.7704196 -0.48304045]]
var: [[-0.63397115 -0.0956466 ]
[ 0.0761982 0.54037064]]
Way2 我试过了:我可以得到静态常量,但是需要在 np.random.normal 中给出一个大小,这不是我所期望的。
var_np = np.random.normal(0,0.5, size=(2,2))
var = tf.constant(value=var_np)
with tf.Session() as sess:
print('var:', sess.run(var))
print('var:', sess.run(var))
Output:
var: [[-0.73357953 -0.10277695]
[ 0.57406473 0.32157612]]
var: [[-0.73357953 -0.10277695]
[ 0.57406473 0.32157612]]
【问题讨论】:
标签: python numpy tensorflow