Использование «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

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