Я получил предупреждение Пакет с не более чем одним образцом --- при попытке предсказать одно изображение с помощью Resnet50 с Chainer

Я получил предупреждение «Пакет с не более чем одним образцом был передан F.batch_normalization. F.batch_normalization всегда будет выводить нулевой тензор для таких пакетов» при попытке предсказать одно изображение.

Я использую модель Resnet50 (вывод двоичной классификации) с Chainer, при обучении точность как обучающего, так и тестового набора составляет> 98%. Но когда я попытался предсказать одно изображение, точность составляет всего около 50%.

Я предполагаю, что мне нужно прогнозировать изображения в пакетном режиме (из-за пакетной нормализации), чтобы избежать предупреждений и получить высокую точность, верно? Можно ли предсказать одиночное изображение?

P/s: я попробовал chainer.using_config('train', False) в сценарии прогнозирования, но это не помогло.


person Tâm Nguyễn    schedule 11.07.2018    source источник


Ответы (2)


Вы правильно установили chainer.config.train = False? Обратите внимание, что chainer.using_config — это менеджер контекста.

with chainer.using_config('train', False):
    do_something()

(почти) эквивалентно:

chainer.config.train = False
try:
    do_something()
finally:
    chainer.config.train = True

См. также: https://docs.chainer.org/en/stable/reference/configuration.html#change-configuration

person kmaehashi    schedule 11.07.2018
comment
Спасибо. Я работал с помощью chainer.using_config('train', False): я должен использовать chainer.config.train = False вместо команды chainer.using_config('train', False) - person Tâm Nguyễn; 12.07.2018

Не могли бы вы загрузить полную трассировку стека? Меня очень интересует, откуда возникла ошибка.

Если это из «chainer/links/normalization/batch_normalization.py», строки 271–273, ошибка может быть связана с chainer.config.train == True.

В других случаях происходит что-то не так.

Или вы можете попробовать print("chainer.config.train") непосредственно перед вызовом L.BatchNormalization.

person Yuki Hashimoto    schedule 12.07.2018