Запуск как активных сетей, так и не активных сетей в одном сценарии Python - PullRequest
0 голосов
/ 18 февраля 2020

Итак, мой код был написан в Tensorflow v1 с активным режимом DISABLED. Теперь я, наконец, передал код в TF 2. Я хочу проверить, что код дает тот же результат, поэтому я хочу провести симуляцию МонтеКарло для запуска обеих сетей много раз и сравнить ее значения точности и потерь. Если я сделал код правильно, оба будут иметь одинаковое распределение.

Сначала я сделал код следующим образом:

for iter in iterations:
    run_v2_net()
    run_v1_net()

v1 не имеет проблем, потому что я просто использую tf.compat.v1.disable_eager_execution() и tf.compat.v1.reset_default_graph() и работает как шарм. Однако для v2 не все так просто. Когда я запускаю его, я получаю:

Если я пытаюсь использовать tf.compat.v1.enable_eager_execution(), я получаю ValueError: tf.enable_eager_execution must be called at program startup., потому что:

tf.enable_eager_execution() предназначен для однократного вызова в программе, как правило, первое, что в программе. Библиотеки не должны вызывать tf.enable_eager_execution(), а вместо этого должны вообще работать как для построения графа, так и для нетерпеливого выполнения (или утверждают tf.executing_eagerly(), если они работают только с нетерпеливым выполнением).

Ссылка: tf.enable_eager_execution должен вызываться при запуске программы . Здесь они рекомендуют переустанавливать ядро, но для меня это, конечно, не вариант (если только нет способа переустановить его внутри для l oop, что на самом деле может быть решением).

Конечно, это можно решить, просто запустив 2 сценария, сохранив результат на CSV или чем-то еще, а затем сравните оба CSV. Но мне интересно знать, есть ли на самом деле решение сделать это только одним скриптом.

Наконец, я попытался tf.keras.backend.clear_session(), но в начале для l oop (или в конце), но это ничего не изменило.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...