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

9 октября, 16:06 Работа 3632 4

Начал изучать Tensorflow ради интереса. Во всех примерах, которые я встречал, сетке скармливают целый датасет из 40к+ изображений для тренировки. Далее тестируют. Но мне стало интересно вот что. Допустим, я хочу научить сетку определять символы, для которых нет огромного датасета (я придумал собственные иероглифы). И собираюсь делать это так: в специальном окошке рисую свой символ, и говорю сетке, какой именно это символ. И так сотни тысяч раз, по одной картинке за раз.

4 комментариев
Сортировка:
Добавить комментарий
Igor Gnatishin
Igor Gnatishin 2019, 9 октября, 22:18
0
Точно так же, как и батч из N картинок, но для случая N=1. Грубо говоря, массив [img] из 1 картинки. Допустим, картинка img - это np.array размера (Y, X, D). Тогда сети надо подать img[np.newaxis, ...], что даст np.array размера (1, Y, X, D).
Seroga Proga
Seroga Proga 2019, 9 октября, 19:49
0
Сиамские нейросети. Там по моему как раз таки все примеры на иероглифах.
Nikolas
Nikolas 2019, 9 октября, 19:18
0
Главная причина, почему второй вариант применяется чаще - потому что рассчитывать backprop на сотне миллионов весов это затратная операция и при batch=10 ты сокращаешь время в 10 раз. При этом кол-во выученой инфы сокращается незначительно.
King Artur
King Artur 2019, 9 октября, 18:19
0
Обучение и происходит по одной картинке. То есть если размер партии = 1 картинка, то после просмотра 1 картинки полученные ошибки сразу запускают в backprop, чтобы изменить весы сети. Если размер партии 10, то картинки просматриваются, но ошибка суммируется отдельно, и отдается в backprop только в конце. То есть твоя сеть смотрит 10 картинок не обучаясь, но потом суммарная ошибка применяется.