MxNet не может сохранить все параметры сети

Синяя птица

В моем эксперименте MxNet может забыть сохранить некоторые параметры моей сети.

Я изучаю пакет gluoncv mxnet ( https://gluon-cv.mxnet.io/index.html ). Чтобы научиться программировать у инженеров, я вручную сгенерировал SSD с ' gluoncv.model_zoo.ssd.SSD '. Параметры , которые я использую для инициализации этого класса являются такими же , как официальными « ssd_512_resnet50_v1_voc сети» кроме « классов = (» автомобиля «„пешеходный“,„грузовик“,„TrafficLight“,„байкерских“) ».

from gluoncv.model_zoo.ssd import SSD
import mxnet as mx
name = 'resnet50_v1'
base_size = 512
features=['stage3_activation5', 'stage4_activation2']
filters=[512, 512, 256, 256]
sizes=[51.2, 102.4, 189.4, 276.4, 363.52, 450.6, 492]
ratios=[[1, 2, 0.5]] + [[1, 2, 0.5, 3, 1.0/3]] * 3 + [[1, 2, 0.5]] * 2
steps=[16, 32, 64, 128, 256, 512]
classes=('car', 'pedestrian', 'truck', 'trafficLight', 'biker')

pretrained=True

net = SSD(network = name, base_size = base_size, features = features, 
          num_filters = filters, sizes = sizes, ratios = ratios, steps = steps,
              pretrained=pretrained, classes=classes)

Я пытаюсь передать искусственные данные x в эту сеть, и это дает следующие ошибки.

x = mx.nd.zeros(shape=(batch_size,3,base_size,base_size))
cls_preds, box_preds, anchors = net(x)

RuntimeError: Parameter 'ssd0_expand_trans_conv0_weight' has not been initialized. Note that you should initialize parameters and create Trainer with Block.collect_params() instead of Block.params because the later does not include Parameters of nested child Blocks

Это разумно. SSD использует функцию « gluoncv.nn.feature.FeatureExpander » для добавления новых слоев в «_ resnet50_v1 _», и я забываю их инициализировать. Итак, я использую следующие коды.

net.initialize()

Ого, это дает мне много предупреждений.

  v.initialize(None, ctx, init, force_reinit=force_reinit)
C:\Users\Bird\AppData\Local\conda\conda\envs\ssd\lib\site-packages\mxnet\gluon\parameter.py:687: UserWarning: Parameter 'ssd0_resnetv10_stage4_batchnorm9_running_mean' is already initialized, ignoring. Set force_reinit=True to re-initialize.
  v.initialize(None, ctx, init, force_reinit=force_reinit)
C:\Users\Bird\AppData\Local\conda\conda\envs\ssd\lib\site-packages\mxnet\gluon\parameter.py:687: UserWarning: Parameter 'ssd0_resnetv10_stage4_batchnorm9_running_var' is already initialized, ignoring. Set force_reinit=True to re-initialize.
  v.initialize(None, ctx, init, force_reinit=force_reinit)

" _Resnet50_v1_ ", который является основой SSD, предварительно обучен, поэтому эти параметры не могут быть установлены. Однако эти предупреждения раздражают.

Как их выключить?

Но здесь возникает первая проблема . Хочу сохранить параметры сети.

net.save_params('F:/Temps/Models_tmp/' +'myssd.params')

Размер файла параметров _ 'resnet50_v1 _' ('resnet50_v1-c940b1a0.params') составляет 97,7 МБ ; однако мой файл параметров составляет всего 9,96 МБ . Есть ли какие-то волшебные технологии для сжатия этих параметров?

Чтобы протестировать эту новую технологию, я открываю новую консоль и восстанавливаю ту же сеть. Затем я загружаю сохраненные параметры и загружаю в них данные.

net.load_params('F:/Temps/Models_tmp/' +'myssd.params')
x = mx.nd.zeros(shape=(batch_size,3,base_size,base_size)) 

Повторяется ошибка инициализации .

RuntimeError: параметр ssd0_expand_trans_conv0_weight не был инициализирован. Обратите внимание, что вы должны инициализировать параметры и создать трейнер с помощью Block.collect_params () вместо Block.params, потому что последний не включает параметры вложенных дочерних блоков.

Это не может быть правильным, потому что сохраненный файл myssd.params должен содержать все установленные параметры моей сети.

Чтобы найти блок '_ ssd0_expand_trans_conv0 ', я провожу более глубокое исследование в ' gluoncv.nn.feature. FeatureExpander _ '. Я использую mxnet.gluon. nn.Conv2D 'для замены ' mx.sym.Convolution 'в функции' FeatureExpander '.

'''
        y = mx.sym.Convolution(
            y, num_filter=num_trans, kernel=(1, 1), no_bias=use_bn,
            name='expand_trans_conv{}'.format(i), attr={'__init__': weight_init})
        '''
        Conv1 = nn.Conv2D(channels = num_trans,kernel_size = (1, 1),use_bias = use_bn,weight_initializer = weight_init)
        y = Conv1(y)
        Conv1.initialize(verbose = True)
    '''    
    y = mx.sym.Convolution(
        y, num_filter=f, kernel=(3, 3), pad=(1, 1), stride=(2, 2),
        no_bias=use_bn, name='expand_conv{}'.format(i), attr={'__init__': weight_init})
    '''
    Conv2 = nn.Conv2D(channels = f,kernel_size = (3, 3),padding = (1, 1),strides = (2, 2),use_bias = use_bn, weight_initializer = weight_init)
    y = Conv2(y)
    Conv2.initialize(verbose = True)

Эти новые блоки можно инициализировать вручную. Однако MxNet по-прежнему сообщает о тех же ошибках . Похоже, что ручная инициализация ни на что не влияет.

Как я могу сохранить все параметры моей сети и восстановить их?

Саймон Корстон-Оливер

Существует руководство по сохранению и загрузке, которое может помочь: https://mxnet.apache.org/versions/1.6/api/python/docs/tutorials/packages/gluon/blocks/save_load_params.html

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

MXNet - умножение скаляра на массив приводит к нулю

Как сохранить модель при использовании MXnet

Как предсказать метки для набора тестов при использовании пользовательского итератора в MXnet?

Разница в производительности ввода-вывода для последовательного и случайного доступа с итераторами данных MxNet?

Почему функция стоимости и последняя функция активации связаны в MXNet?

почему этот код об использовании mxnet для обучения сети регрессии не сходится?

Mxnet - понимание формы веса для плотного слоя

Какую операцию рекомендуется использовать для защиты некоторых весов от изменения тренером в MxNet?

Ошибка инициализации MXNet для переменной метки

Невозможно импортировать пакет mxnet в мою среду

Я не понимаю ошибки "Несоответствие формы" при использовании mxnet

Регрессия с использованием MXNet

Сохраненные модели mxnet зависят от графического процессора или системы?

Есть ли игрушечный пример построения сверточных автоэнкодеров с использованием MxNet?

стандартная ошибка установки mxnet

как использовать настраиваемую функцию потерь с mxnet?

Как использовать адаптированную скорость обучения в MxNet

Как извлечь типичные строки в MXNet?

Простой градиентный спуск с использованием mxnet

Есть ли в MXNET функция автоматического распознавания?

Обучение mxnet не продвигается

Модель mxnet не дает одинаковый результат для одного и того же входа без промежуточного обратного распространения градиента

Почему MXNet сообщает о неверной точности проверки?

Эффективное создание сжатой диагональной матрицы с полосами в mxnet

Отказано в доступе в распределенном обучении Mxnet

Определение простой нейронной сети в ошибке mxnet

Mxnet на мобильном графическом процессоре

Каковы оптимальные требования к оборудованию для бесперебойной работы MXNET?

mxnet: есть ли способ при обратном вызове отслеживать значение скорости обучения?

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    Машинопись: перебор каждого члена между двумя классами и разность флагов в Angular

  3. 3

    Как разбить строку на несколько строк и сохранить пробелы в YAML?

  4. 4

    Проверьте, была ли новая вкладка открыта с помощью puppeteer

  5. 5

    В типе Observable <unknown> отсутствуют следующие свойства из типа Promise <any>.

  6. 6

    Элемент "эллипс", созданный с помощью JS, не отображается в HTML

  7. 7

    How do I search for an entry out of two SQL tables and know which table it came from?

  8. 8

    Сделать программу автоматически добавлять текстовые поля в java

  9. 9

    JavaFX TextArea как установить текст с автоматическим переносом новой строки

  10. 10

    Как я могу нарисовать заполненный прямоугольник в JFreeChart?

  11. 11

    Как добавить Swagger в веб-API с поддержкой OData, работающий на ASP.NET Core 3.1

  12. 12

    Merging legends in plotly subplot

  13. 13

    ViewPager2 мигает / перезагружается при смахивании

  14. 14

    что делать, если в коде нет объявления Tk ()

  15. 15

    YAML: ошибка при разборе строки, содержащей квадратную скобку в качестве первого символа

  16. 16

    Передача параметра msbuild в Build.proj

  17. 17

    Как фильтровать таблицу SQLite3 в PyQt5

  18. 18

    Как в точности работает внутренний пул потоков Nodejs?

  19. 19

    Нарушение ограничения внешнего ключа JPA не может вставить Null

  20. 20

    TypeError: store.getState não é uma função. (Em 'store.getState ()', 'store.getState' é indefinido, como posso resolver esse problema?

  21. 21

    Невозможно запустить iReports 5.6.0 с Netbeans 8 и JDK 1.8

популярныйтег

файл