Я реализую остаточный cnn (измененную уменьшенную версию xception) в среде с низкой задержкой.Я выполнил много ручной настройки, чтобы минимизировать скорость работы моей сети (уменьшить количество фильтров, удалить слои и т. Д.).
Но теперь я хочу попытаться разрешить моей сети сделать классификационный прогноз.(окончательный уровень fcnn) на остаточном соединении после каждого остаточного блока.
базовая логика -
попытка окончательного прогнозирования с остаточным соединением в качестве входных данных
, если этот уровень fcnn предсказывает определенноекласс с вероятностью> установленного порога:
return fcnn output as if it was normal final layer
else:
do next residual block like normal and try the previous conditional again unless we are already at final block
Я надеюсь, что это позволит моей сети научиться решатьболее легкие проблемы с меньшим количеством вычислений, позволяя ему все еще делать дополнительные слои, если он все еще не уверен в классификации.
Итак, мой основной вопрос : В pytorch, какой лучший способ реализовать это условие таким образом, чтобы мой nn во время выполнения решал, выполнять больше обработки или нет
В настоящее время я тестировал возврат промежуточных x после блоков в функции forward, но я не знаю, как лучше всего установить условное выражение, чтобы выбрать, какой x возвращать
Также примечание: я полагаю, что могу закончитьнеобходимость в другом слое cnn между остатком и fcnn, который будет выполнять функцию функции преобразования внутреннего представления для обработки в представление, которое fcnn понимает для классификации.