请在代码之前添加所有随机种子函数:
tf.reset_default_graph()
tf.set_random_seed(0)
random.seed(0)
np.random.seed(0)
我认为,TensorFlow中的某些模型正在使用numpy或python random函数。
0
请在代码之前添加所有随机种子函数:
tf.reset_default_graph()
tf.set_random_seed(0)
random.seed(0)
np.random.seed(0)
我认为,TensorFlow中的某些模型正在使用numpy或python random函数。
0
确定性行为可以通过提供图形级种子或操作级种子来获得。两者都为我工作。可以使用tf.set_random_seed放置图级种子。可以将操作级别的种子放置在例如变量初始化器中,例如:
myvar = tf.Variable(tf.truncated_normal(((10,10)), stddev=0.1, seed=0))
0
设置当前TensorFlow随机种子仅影响当前默认图。由于要为训练创建一个新图并将其设置为默认图( with g.as_default():
,因此必须在with
block的范围内设置随机种子。
例如,您的循环应如下所示:
for i in range(3):
g = tf.Graph()
with g.as_default():
tf.set_random_seed(1)
accuracy_result, average_error = network.train_network(
parameters, inputHeight, inputWidth, inputChannels, outputClasses)
请注意,这将为外部for
循环的每次迭代使用相同的随机种子。如果要在每次迭代中使用tf.set_random_seed(i + 1)
但仍是确定性的)种子,则可以使用tf.set_random_seed(i + 1)
。
0
Tensorflow 2.0兼容答案 :对于大于2.0的Tensorflow版本,如果要设置全局随机种子,则使用的命令为tf.random.set_seed
。
如果要从Tensorflow Version 1.x to 2.x
迁移Tensorflow Version 1.x to 2.x
,则可以使用命令tf.compat.v2.random.set_seed
。
请注意,在这种情况下, tf.function
就像重新运行程序一样。
要设置操作级别种子(如上回答),我们可以使用命令tf.random.uniform([1], seed=1)
。
有关更多详细信息,请参见此Tensorflow页面 。
0
我正在尝试使用不同的参数多次运行神经网络,以便校准网络参数(辍学概率,学习率ed)。但是我遇到的问题是,当我按如下所示循环运行网络时,在保持参数不变的情况下运行网络仍然为我提供了不同的解决方案:
在设置网络的层和错误功能之前,我在train_network函数的开头使用了以下代码:
我还尝试在TensorFlow图形创建之前添加此代码,但是在结果输出中我不断获得不同的解决方案。
我正在使用AdamOptimizer并使用
tf.truncated_normal
初始化网络权重。另外,我正在使用np.random.permutation
来随机播放每个时期的传入图像。