Нужно ли сеять семена, несмотря на невоспроизводимые результаты благодаря GPU? - PullRequest
1 голос
/ 05 ноября 2019

Я хотел бы несколько раз обучить архитектуру CNN с помощью графического процессора в Google Colab (Tensorflow + Keras) с одним и тем же набором обучающих данных, а затем протестировать каждую из этих обученных моделей с одним и тем же набором тестируемых данных. Затем я хочу определить среднее значение и стандартное отклонение от результатов (точности), чтобы оценить производительность CNN. (Я хотел бы многократно обучать архитектуру CNN, потому что из-за графического процессора невозможно воспроизвести какие-либо результаты.)

Интересно, не следует ли мне ставить разные начальные числа при каждом запуске, чтобы хотя бы немного ограничить случайность?

До сих пор я установил следующие начальные числа, значения которых меняются в зависимости от пробега, за исключением os.environ['PYTHONHASHSEED']='0', из которых я не уверен, стоит ли вообще ставить это значение?

import os
import numpy as np
import tensorflow as tf
import random as rn

os.environ['PYTHONHASHSEED']='0'
np.random.seed(1)
rn.seed(2)
tf.set_random_seed(1)

Что ты об этом думаешь? Должен ли я установить семена или я не должен устанавливать какие-либо семена?

Ответы [ 2 ]

2 голосов
/ 05 ноября 2019

Я бы предположил, что вы хотели бы получить число или доверительный интервал производительности модели. В этом случае вы хотите, чтобы производительность учитывала все источники случайности: инициализация, перемешивание данных, недетерминированные операции и т. Д. Это означает, что вы должны сохранять свои начальные значения случайными.

Установка начальных значений на постоянные значения может несделайте вашу модель сразу детерминированной. Тем не менее, по крайней мере, это должно сделать вас инициализирующим по весу детерминированным, что часто оказывает значительное влияние на конечную производительность, т.е. является основным источником случайности. Я бы порекомендовал только исправить ваши семена / инициализации, если вы выполняете некоторые мелкие эксперименты, и вы ожидаете, что эффекты улучшения производительности могут быть труднее увидеть из-за случайных эффектов инициализации.

2 голосов
/ 05 ноября 2019

Установка семян бесполезна, если вы не пытаетесь добиться идеально воспроизводимых результатов. Поскольку это не является вашей целью, я бы посоветовал не сажать семена.

...