我正在写一个tensorflow.Keras包装器来执行ML实验。
我需要我的框架能够执行配置yaml文件中指定的实验并在GPU中并行运行。
…
尝试将种子参数添加到权重/偏差初始值设定项。只是为Alexander Ejbekov的评论添加更多细节。
Tensorflow有两个随机种子图级别和操作级别。如果您使用多个图表,则需要在每个图表中指定种子。您可以通过在函数内设置种子参数来覆盖op级别的图级别种子。如果设置相同的种子,即使从不同的图形输出相同的值,您也可以创建两个函数。 考虑这个例子:
g1 = tf.Graph() with g1.as_default(): tf.set_random_seed(1) a = tf.get_variable('a', shape=(1,), initializer=tf.keras.initializers.glorot_normal()) b = tf.get_variable('b', shape=(1,), initializer=tf.keras.initializers.glorot_normal(seed=2)) with tf.Session(graph=g1) as sess: sess.run(tf.global_variables_initializer()) print(sess.run(a)) print(sess.run(b)) g2 = tf.Graph() with g2.as_default(): a1 = tf.get_variable('a1', shape=(1,), initializer=tf.keras.initializers.glorot_normal(seed=1)) with tf.Session(graph=g2) as sess: sess.run(tf.global_variables_initializer()) print(sess.run(a1))
在这个例子中,输出 a 是相同的 a1 但是 b 是不同的。
a
a1
b