Я тренировал модель для исследования однократного обучения.
В обучающем наборе данных имеется 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 за размерностью, сохраняющейся в конце каждого слоя), поэтому, пожалуйста, сообщите мне, если вы считаете, что есть какие-либо существующие нарушения, которые лучше тренировать после исправления с точки зрения слоев.
Я бы хотел услышать несколько советов: ).