Как запретить моей модели выводить нулевые векторы при обучении с использованием векторов с горячим кодированием? - PullRequest
0 голосов
/ 08 июля 2020

Я тренировал модель для исследования однократного обучения.

В обучающем наборе данных имеется 19280 примеров (в основном популярный набор данных Omniglot) и вектор длиной 300 для каждого образца данных .

Модель состоит из следующей архитектуры:

----------------------------------------------------------------
        Layer (type)               Output Shape         Param #
================================================================
            Conv2d-1           [-1, 32, 50, 50]           1,600
       BatchNorm2d-2           [-1, 32, 50, 50]              64
              ReLU-3           [-1, 32, 50, 50]               0
            Conv2d-4           [-1, 32, 50, 50]           9,248
       BatchNorm2d-5           [-1, 32, 50, 50]              64
              ReLU-6           [-1, 32, 50, 50]               0
            Conv2d-7           [-1, 32, 50, 50]           9,248
       BatchNorm2d-8           [-1, 32, 50, 50]              64
              ReLU-9           [-1, 32, 50, 50]               0
           Conv2d-10           [-1, 64, 24, 24]          18,496
      BatchNorm2d-11           [-1, 64, 24, 24]             128
             ReLU-12           [-1, 64, 24, 24]               0
           Conv2d-13           [-1, 64, 24, 24]          36,928
      BatchNorm2d-14           [-1, 64, 24, 24]             128
             ReLU-15           [-1, 64, 24, 24]               0
           Conv2d-16          [-1, 256, 11, 11]         147,712
      BatchNorm2d-17          [-1, 256, 11, 11]             512
             ReLU-18          [-1, 256, 11, 11]               0
           Conv2d-19            [-1, 512, 5, 5]       1,180,160
      BatchNorm2d-20            [-1, 512, 5, 5]           1,024
             ReLU-21            [-1, 512, 5, 5]               0
           Conv2d-22           [-1, 1024, 2, 2]       4,719,616
      BatchNorm2d-23           [-1, 1024, 2, 2]           2,048
             ReLU-24           [-1, 1024, 2, 2]               0
           Linear-25                  [-1, 300]       1,229,100
================================================================
Total params: 7,356,140
Trainable params: 7,356,140
Non-trainable params: 0
----------------------------------------------------------------

В основном входное изображение представляет собой одноканальное изображение размером 105x105 (оттенки серого). Я применил сигмоид к выходу.

Во время обучения модели я использую простую среднеквадратичную ошибку. Я использую оптимизатор Adam со скоростью обучения, установленной на 10 ^ {- 5} $, чтобы облегчить настройку.

Модель получает такую ​​же постоянную потерю через 2 или 3 эпохи.

При дальнейшем исследовании я обнаружил, что модель обобщает и выдает нулевой вектор в каждом случае. Я предполагаю, что он застрял на локальных минимумах, но как мне go об успешном обучении моей модели?

Кроме того, архитектура модели была выбрана случайным образом (не буквально, но без конкретного logi c за размерностью, сохраняющейся в конце каждого слоя), поэтому, пожалуйста, сообщите мне, если вы считаете, что есть какие-либо существующие нарушения, которые лучше тренировать после исправления с точки зрения слоев.

Я бы хотел услышать несколько советов: ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...