подмножество любой предварительно обученной модели в тензорном потоке

Можем ли мы взять подмножество любой предварительно обученной модели в тензорном потоке? Например, если у нас есть предварительно обученная модель, которая может обнаруживать 545 объектов, можем ли мы создать подмножество этой модели, которое может обнаруживать только 20 объектов, чтобы можно было сократить время, необходимое для загрузки модели, а также процесс обнаружения.


person zakib    schedule 09.02.2018    source источник


Ответы (2)


Лучшее, что вы можете сделать, это уменьшить веса, относящиеся только к последнему (выходному) слою. Итак, если размер вашего второго последнего слоя равен 1000, это уменьшит ваши параметры на (1000 * 545 - 1000 * 20) = 525000.
Но, если ваша сеть очень глубокая, это не будет большое ускорение, так как вам все равно нужно будет рассчитать все остальные слои, кроме последнего.

person layog    schedule 09.02.2018

Вы могли бы, но это значительный объем работы, и он существенно не улучшит скорость.

Действительно, вам нужно будет изменить только уровень прогнозирования класса, который вам придется уменьшить с n_featuresx545 до n_featuresx20. Обычно на этом этапе у вас есть n_features=7*7=49 (хотя на самом деле это зависит от используемого вами метода; это верно для Faster RCNN с обычными настройками), поэтому вы должны сохранить примерно 26k параметров и 8million операций на изображение (с учетом 300 обнаружений на изображение ), что ничтожно мало по сравнению с миллионами параметров и миллиардами операций, обычно задействованных в моделях обнаружения объектов.

А изменение уровня прогнозирования без повторного обучения и при сохранении обученных значений непросто, вам придется написать фрагмент кода для изменения вашей сети вручную.

person gdelab    schedule 09.02.2018