Использование «learning_phase» в keras для бэкэнда тензорного потока?Python

Программы на Python
Ответить
Anonymous
 Использование «learning_phase» в keras для бэкэнда тензорного потока?

Сообщение Anonymous »

Я пытаюсь обучить сеть Resnet, используя бэкэнд keras в тензорном потоке. Словарь канала для каждого пакетного обновления записывается как:

Код: Выделить всё

    feed_dict= {x:X_train[indices[start:end]], y:Y_train[indices[start:end]], keras.backend.learning_phase():1}
Я использую серверную часть Keras (

Код: Выделить всё

keras.backend.set_session(sess)
), потому что исходная сеть resnet определена с помощью keras. Поскольку модель содержит слои dropout и patch_norm, ей требуется этап обучения, чтобы различать обучение и тестирование.

Я заметил, что всякий раз, когда я устанавливаю keras.backend.learning_phase():1, точность обучения/тестирования модели вряд ли превышает 10%. Напротив, если фаза обучения не установлена, т. е. словарь каналов определяется как:

Код: Выделить всё

feed_dict= {x:X_train[indices[start:end]], y:Y_train[indices[start:end]]}
Тогда, как и ожидалось, точность модели продолжает расти с эпохами стандартным образом.

Я был бы признателен, если бы кто-нибудь разъяснил, необходимо ли использование фазы обучения или что-то еще не так. Документация Keras 2.0, похоже, предлагает использовать этап обучения со слоями dropout и patch_norm.

Подробнее здесь: https://stackoverflow.com/questions/491 ... ow-backend
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»