Как получить стабильные результаты с TensorFlow, установив случайное начальное число
Я пытаюсь запустить нейронную сеть несколько раз с разными параметрами, чтобы откалибровать параметры сети (вероятности отсева, скорость обучения и т. Д.). Однако у меня проблема в том, что работа сети при сохранении неизменных параметров все же дает мне другое решение, когда я запускаю сеть в цикле следующим образом:
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
перетасовать входящие изображения для каждой эпохи.