Какова концепция и как рассчитать значения узких мест? Как эти значения помогают классификации изображений? Пожалуйста, объясните простыми словами.
Какова концепция и как рассчитать значения узких мест? Как эти значения помогают классификации изображений? Пожалуйста, объясните простыми словами.
Ответы:
Узким местом в нейронной сети является просто слой с меньшим количеством нейронов, чем слой ниже или выше его. Наличие такого уровня побуждает сеть сжимать представления функций, чтобы наилучшим образом соответствовать доступному пространству, чтобы получить максимальные потери во время обучения.
В CNN (например, в начальной сети Google) добавляются слои узких мест, чтобы уменьшить количество карт объектов (или «каналов») в сети, которые в противном случае имеют тенденцию к увеличению в каждом слое. Это достигается за счет использования сверток 1x1 с меньшим количеством выходных каналов, чем у входных каналов.
Обычно вы не рассчитываете веса для слоев с узкими местами напрямую, процесс обучения справляется с этим, как и для всех других весов. Выбор подходящего размера для слоя с узким местом - это то, что вы должны угадать, а затем поэкспериментировать, чтобы найти сетевые архитектуры, которые хорошо работают. Цель здесь обычно состоит в том, чтобы найти сеть, которая хорошо подходит для новых изображений, и узкие места помогают уменьшить количество параметров в сети, в то же время позволяя ей быть глубокой и представлять множество карт характеристик.
Представьте, что вы хотите пересчитать последний слой предварительно обученной модели:
Input->[Freezed-Layers]->[Last-Layer-To-Re-Compute]->Output
Чтобы обучить [Last-Layer-To-Re-Compute] , вам нужно несколько раз оценить выходы [Freezed-Layers] для заданных входных данных. Чтобы сэкономить время, вы можете рассчитать эти выходы только один раз .
Input#1->[Freezed-Layers]->Bottleneck-Features-Of-Input#1
Затем вы сохраняете все « входные особенности бутылочного горлышка» # и непосредственно используете их для обучения [Last-Layer-To-Re-Compute].
Пояснения из функции «cache_bottlenecks» примера «image_retraining»:
Поскольку мы, вероятно, будем читать одно и то же изображение несколько раз (если во время обучения не применены искажения), это может значительно ускорить процесс, если мы вычислим значения слоя узкого места один раз для каждого изображения во время предварительной обработки, а затем просто прочитаем эти кэшированные значения. неоднократно во время тренировки.
Узкое место в тензорном потоке - это последняя предварительная фаза перед началом фактического обучения с распознаванием данных. Это фаза, в которой структура данных формируется из каждого тренировочного образа, и может иметь место заключительная фаза обучения, которая отличает изображение от любого другого изображения, используемого в учебном материале. Что-то вроде отпечатка пальца изображения.
Он связан с командой переобучения и, как следует из названия, является основным потребителем времени выполнения команды. Количество учебного материала может быть скомпрометировано, если это узкое место кажется слишком длительным.
Поскольку это команда командной строки, я не знаю точного алгоритма. Алгоритм общедоступен в коде на Github, но предположительно настолько сложен (по определению время выполнения очень велико), что я считаю, что не могу просто записать его в ответе такого типа.