DQN ведет себя по-разному на разных компьютерах - PullRequest
2 голосов
/ 07 мая 2019

У меня есть более или менее стандартная реализация DQN, решающая «прорыв» Atari (из курса обучения Coursera Reinforcement), который на разных компьютерах ведет себя совершенно по-разному:

  • на моем ноутбуке он сходится каждый раз Я запускаю его
  • на серверах Coursera и Google Colab оно никогда не сходится!

Я использую

  • Python3
  • Tensorflow
  • Kerass (только для слоев Conv2D, Flatten и Dense)

Я уже потратил две недели на эту проблему без какого-либо прогресса: (

Я уже проверил:

  • Версии:
    • Python: то же самое (3.6.7)
    • Tensorflow: то же самое (протестировано с 1.4.0 и 1.5.0)
    • numpy: то же самое, что и номер исправления ошибки (1.16.2 против 1.16.3)
  • Случайные семена
  • float32 против float64: я всегда передаю dtype=np.float32 каждому вызову np.array и tf.placeholder.
  • Мой ноутбук, который сходится , использует старый процессор (который ограничивает Tensorflow до <= 1.5.0) </li>
  • На сервере Coursera никогда не сходится : ЦП?
  • На сервере Google Colab это никогда не сходится : GPU

Мои вопросы здесь:

  • Что может быть причиной различного поведения?
  • Как отладить такие проблемы?
  • Что я могу также сделать / проверить, чтобы наконец найти проблему?

Обновление: весь код (включая гиперпараметры, env, ...) точно такой же.

1 Ответ

1 голос
/ 09 мая 2019

Я предполагаю, что вы запускаете определенную версию вашего кода с заданными значениями гиперпараметров.Затем вам нужно исправить случайное начальное число в начале вашего кода для tensorflow (например, tf.set_random_seed(1)), для numpy (например, np.random.seed(1)) и для случайного, если вы его используете.

Кроме того, вы должны иметь одинаковую версию tenorflow на всех ваших машинах.У меня был опыт, что даже прямой проход между 1,3 и 1,8 привел к двум различным результатам.Такая же проверка требуется для gym.

Наконец, вы должны проверить либо с CPU, либо с GPU.Вы не можете сравнить результаты запуска процессора с запуском процессора.

Если ни одна из этих проверок не сработала, я могу проверить ваш код colab, если вы хотите поделиться им.

...