Как мне реализовать трансферное обучение в NiftyNet? - PullRequest
0 голосов
/ 09 июня 2018

Я бы хотел провести некоторое обучение с помощью стека NiftyNet, так как мой набор помеченных изображений довольно мал.В TensorFlow это возможно - я могу загружать различные предварительно обученные сети и напрямую работать с их слоями.Чтобы настроить сеть, я мог бы заморозить обучение промежуточных слоев и обучить только последний слой, или я мог бы просто использовать выходные данные промежуточных слоев в качестве вектора объектов для передачи в другой классификатор.

Какя делаю это в NiftyNet?Единственное упоминание «передачи обучения» в документации или исходном коде относится к модели зоопарка, но для моей задачи (классификация изображений) в зоопарке нет доступных сетей.Архитектура ResNet, кажется, реализована и доступна для использования, но, насколько я могу судить, она еще ни на чем не обучена.Кроме того, кажется, что я могу обучить сеть только путем запуска net_classify train, используя различные параметры конфигурации TRAIN в файле конфигурации, ни у одного из которых нет параметров для замораживания сетей.Различные слои в niftynet.layer также, похоже, не имеют опций, позволяющих их обучать или нет.

Полагаю, у меня есть следующие вопросы:

  1. Можно ли портировать через предварительно обученную сеть TensorFlow?
    • Если я вручную воссоздаю архитектуру слоев в NiftyNet, есть ли способ импортировать веса из предварительно обученной сети TF?
  2. Как получить доступ к промежуточномувеса и слои модели?( Как я могу получить доступ к промежуточным картам активации предварительно обученных моделей в NiftyNet? относится к модельному зоопарку, где их можно получить, используя net_download, но не к какой-либо произвольной модели) *
  3. Кроме того, кажется, что скорость обучения является постоянной величиной - чтобы изменить это со временем, пришлось бы мне запускать сеть для некоторого числа итераций, изменить lr, а затем возобновить обучение с последней контрольной точки?

1 Ответ

0 голосов
/ 19 сентября 2018

[Редактировать]: Здесь - документы для обучения с помощью NiftyNet.

В настоящее время эта функция работает.См. здесь для получения полной информации.

Предполагаемые возможности включают следующее:

  • Команда для печати всех обучаемых имен переменных (с необязательным сопоставлением регулярных выражений)
  • Возможность случайной инициализации подмножества переменных, это подмножество создается путем сопоставления имени регулярного выражения
  • Возможность восстановления (из существующей контрольной точки) и продолжения обновления подмножества переменных.Если метод оптимизации изменяется, имейте дело с переменными, специфичными для метода (например, импульс)
  • Возможность восстановить (из существующей контрольной точки) и заморозить обученные веса для остальных переменных
  • Сохранениевсе обучаемые переменные после обучения
  • Добавить параметры конфигурации для тонкой настройки, регулярное выражение имени переменной, модульные тесты
  • Демонстрация / учебное пособие
  • Предварительная обработка контрольных точек для проблем совместимости
  • Работа с пакетной нормой и выпадающими слоями (редактирование сетей для удаления переменных пакетной нормы)
...