Как и многие из нас, сегодня мы пытаемся обучить нейронную сеть и в какой-то момент пытаемся повысить ее производительность. Не может быть единой причины, чтобы застрять на одном месте, вот контрольный список объяснений, которые могут сыграть роль, и вы можете использовать его для повышения производительности.

Переопределение одной партии
Если вы не набрали высший балл, вам следует проверить конвейер. у тебя где-то ошибка.

Сбалансированные пакеты
Рассмотрите возможность повторного балансирования пакетов. даже на несбалансированных наборах данных это иногда значительно повышает производительность.

Установите смещение выходного слоя
Установка лучшего смещения для конечного слоя может значительно сократить время обучения! Для сигмовидного слоя смещение можно рассчитать как смещение = log (положительное/отрицательное)

Настройте скорость обучения
Если вы ищете какой-либо гиперпараметр для настройки, сосредоточьтесь на скорости обучения. Больше не нужно слов.

Добавить фиктивный класс
Введите другой класс, которому не назначены обучающие образцы. этот дополнительный класс представляет метку «я не знаю». Во время прогнозирования иногда вы обнаруживаете, что сеть выдает более высокую вероятность (по сравнению с другими выборками, верно? В конце концов, это класс без выборок в обучающем наборе).
Эти неопределенные выборки часто являются выборками, которые путаются сети каким-то образом. взгляните на них!

Автоэнкодеры для извлечения встраивания
Используйте автоэнкодер с достаточным размером скрытого пространства (скажем, 300 или 600..), чтобы обеспечить достаточно низкие потери при реконструкции.
Затем используйте оставшаяся сеть кодировщика для создания вложений: вы даже можете попытаться использовать кодировщик в качестве магистрали для своей основной сети.

Размер пакета
Если вы используете смешанную точность: выберите размер пакета, который делится на 4 или больше, кратное 2
В противном случае: вы хотите, чтобы размер пакета был как можно меньше как вы можете себе позволить. [Я только что разозлил некоторых людей в комментариях ;)]

Генераторы данных
Для небольших проектов используйте собственный генератор или простой «.fit .predict»
В более крупных проектах: используйте специальные механизмы набора данных. В случае с TensorFlow: tf.data. это действительно ускоряет обучение!

Точная настройка
Точная настройка замораживает первые пару слоев, а затем выполняет точную настройку в вашем наборе данных.

Точная настройка проверочного набора
Тренируйтесь еще несколько эпох в проверочном наборе. просто обратите внимание, чтобы не испортить его.

Ветвь автоматического кодирования
Добавьте еще одну «ветвь автоматического кодирования» с замаскированной потерей mse и научите свою модель восстанавливать входные данные через эту ветвь.
Иногда это повышает эффективность вашей основной ветви прогнозирования. сильно.

Поэкспериментируйте с различными масштабаторами
Попробуйте использовать как масштабатор среднего стандартного значения, так и ранговый гаусс, и обязательно попробуйте заменить пакетные нормы нормами слоев, групповыми нормами и нормами веса.
Иногда у вас возникает узкое место. мощность представления сети по ошибке, не заметив. попробуйте и посмотрите, что работает лучше всего.

Увеличение размера пакета во время обучения
Увеличение размера пакета во время обучения. это обычно помогает и повышает общую производительность сети.

Используйте дистилляцию знаний для псевдомаркировки
Хорошо, хорошо, я знаю. это надумано. но я постоянно пытаюсь сделать это:
Обучайте меньшую сеть имитировать прогнозы другой огромной сети, а затем используйте ее для того, чтобы повесить ярлык (шумная студенческая мода).

Спасибо

пожалуйста, следите за более