Я хочу создать постоянный тензор в Tensorflow, который будет инициализирован с помощью указанного механизма, например, random_uniform, random_normal.
Я знаю, что могу генерировать массив случайных пустышек в соответствии с этими механизмами, например, random_uniform, random_normal и т. Д .; Затем мы передаем полученный массив Numpy в качестве аргумента значения в tf.constant.
Однако вопрос в том, что мы должны придать форму при использовании простой версии случайного механизма. Однако я не хочу предварительно указывать форму, и я надеюсь, что форма будет эластичной, так же, как мы пишем код 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]]