gpt4 book ai didi

python - 如何使用 TensorFlow 获得稳定的结果,设置随机种子

转载 作者:IT老高 更新时间:2023-10-28 20:28:38 25 4
gpt4 key购买 nike

我正在尝试使用不同的参数多次运行神经网络,以校准网络参数(辍学概率、学习率 e.d.)。但是我遇到的问题是,当我在循环中运行网络时,在保持参数相同的情况下运行网络仍然给了我不同的解决方案,如下所示:

filename = create_results_file()
for i in range(3):
g = tf.Graph()
with g.as_default():
accuracy_result, average_error = network.train_network(
parameters, inputHeight, inputWidth, inputChannels, outputClasses)
f, w = get_csv_writer(filename)
w.writerow([accuracy_result, "did run %d" % i, average_error])
f.close()

在设置网络的层和错误函数之前,我在 train_network 函数的开头使用以下代码:

np.random.seed(1)
tf.set_random_seed(1)

我也尝试在创建 TensorFlow 图形之前添加此代码,但我在结果输出中不断得到不同的解决方案。

我正在使用 AdamOptimizer 并正在使用 tf.truncated_normal 初始化网络权重。此外,我正在使用 np.random.permutation 对每个时期的传入图像进行洗牌。

最佳答案

设置当前的 TensorFlow 随机种子仅影响当前的默认图。由于您正在为您的训练创建一个新图并将其设置为默认值 (with g.as_default():),因此您必须在该 with 的范围内设置随机种子> 阻止。

例如,您的循环应如下所示:

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)

关于python - 如何使用 TensorFlow 获得稳定的结果,设置随机种子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36288235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com