Как получить доступ и обновить вес каждого слоя, используя fit_generator в Keras? - PullRequest
0 голосов
/ 02 июля 2019

Я хочу поэкспериментировать с весами и уклонами каждого слоя во время оптимизации.В настоящее время я работаю над набором данных Cats Vs Dogs .Здесь после компиляции данные модели передаются через model.fit_generator () .

Я хочу получить вес и градиент каждого слоя при обновлении, чтобы применить порог (если значение градиента меньше порога, веса не будут обновляться).

Я пыталсяреализовать пользовательский fit_generator , но я также хочу fit_generator параллелизм для повышения эффективности, увеличения данных в реальном времени на изображениях на CPUпараллельно с тренировкой модели на GPU.

1 Ответ

2 голосов
/ 02 июля 2019

Вам не нужен специальный метод fit_generator.Просто пользовательский оптимизатор.Оптимизатор определяет операции обновления веса.Таким образом, вы можете определить собственный оптимизатор, который будет реализовывать стратегию, аналогичную sgd или Adam после подрезания весов.

Ключ в том, чтобы определить класс, который происходит от keras.optimizers.Optimizer и реализует метод get_updates.Этот метод определяет способ обновления весов града.В вашей версии вы можете обрезать градиенты.

Я могу указать вам пример кода: я написал собственный оптимизатор, который позволяет использовать оптимизаторы SciPy вместо sgd (https://github.com/pedro-r-marques/keras-opt). Это простонесколько строк кода, поэтому целесообразно использовать в качестве примера.

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