Можем ли мы взять подмножество любой предварительно обученной модели в тензорном потоке? Например, если у нас есть предварительно обученная модель, которая может обнаруживать 545 объектов, можем ли мы создать подмножество этой модели, которое может обнаруживать только 20 объектов, чтобы можно было сократить время, необходимое для загрузки модели, а также процесс обнаружения.
подмножество любой предварительно обученной модели в тензорном потоке
Ответы (2)
Лучшее, что вы можете сделать, это уменьшить веса, относящиеся только к последнему (выходному) слою. Итак, если размер вашего второго последнего слоя равен 1000, это уменьшит ваши параметры на (1000 * 545 - 1000 * 20) = 525000.
Но, если ваша сеть очень глубокая, это не будет большое ускорение, так как вам все равно нужно будет рассчитать все остальные слои, кроме последнего.
Вы могли бы, но это значительный объем работы, и он существенно не улучшит скорость.
Действительно, вам нужно будет изменить только уровень прогнозирования класса, который вам придется уменьшить с n_featuresx545
до n_featuresx20
. Обычно на этом этапе у вас есть n_features=7*7=49
(хотя на самом деле это зависит от используемого вами метода; это верно для Faster RCNN с обычными настройками), поэтому вы должны сохранить примерно 26k
параметров и 8million
операций на изображение (с учетом 300 обнаружений на изображение ), что ничтожно мало по сравнению с миллионами параметров и миллиардами операций, обычно задействованных в моделях обнаружения объектов.
А изменение уровня прогнозирования без повторного обучения и при сохранении обученных значений непросто, вам придется написать фрагмент кода для изменения вашей сети вручную.