import tensorflow as tf
import numpy as np
x_tf = tf.placeholder('float',[None, 2, 5, 1])
x_np = np.random.noraml(0,1,[1,2,5,1])
# ======== filter option1 and option2 ===========
f_np = np.random.normal(0,1,[1,3,1,1])
f_tf = tf.constant(f_np,'float') # option 1
f_tf = tf.random_normal([1,3,1,1]) # option 2
# ===============================================
x_conv = tf.nn.conv2d(x_tf,f_tf,[1,1,1,1],'SAME')
with tf.Session() as sess:
tf.global_variables_initializer().run()
x_conv_np = sess.run(x_conv, feed_dict={x_tf: x_np})
x_conv_np2 = sess.run(x_conv, feed_dict={x_tf: x_np})
Wenn ich den Code oben mit option1 laufen, ich die gleichen Werte für x_conv_np
erhalten und x_conv_np2
Allerdings, wenn ich die oben mit option2 laufen, bekomme ich verschiedene Werte für x_conv_np
und x_conv_np2
.Sitzung Laufmehrmal mit tf.random gibt unterschiedliche Werte für conv2d
Ich vermute, die tf.random_normal wird jedes Mal initialisiert, wenn die Sitzung ausgeführt wird. Soll das geschehen? Das passiert auch, wenn ich die tf.set_random_seed
Kann jemand erklären, wie TensorFlow seine zufälligen Variablen initialisiert, wenn die Sitzung ausgeführt wird?
Haben Sie keinen Tippfehler in Ihrem Code? Ihr feed_dict sollte '{x_tf: x_np}' –
Vielen Dank! Fehler behoben –