#tensorflow
#tensorflow
Вопрос:
Я использую tensorflow
для обучения простого двухслойного RNN в моем наборе данных. Кривая обучения показана следующим образом:
где, x-axis
это шаги (за один шаг batch_size
для обновления параметров сети используется несколько выборок), y-axis
это точность. Красная, зеленая, синяя линии — это точность в обучающем наборе, наборе проверки и наборе тестов соответственно. Кажется, что кривая обучения не является гладкой и имеет некоторые искаженные изменения. Разумно ли это?
Ответ №1:
Вы пробовали обрезку градиента, оптимизатор Adam и снижение скорости обучения? По моему опыту, обрезка градиента может предотвратить взрывные градиенты, оптимизатор Adam может сходиться быстрее, а снижение скорости обучения может улучшить обобщение.
Вы перетасовали данные обучения?
Кроме того, визуализация распределения весов также помогает отладке модели.
Комментарии:
1. Привет, дорогой Сян, большое вам спасибо за ваши ценные предложения и опыт! В настоящее время я просто использую оптимизатор SGD и настраиваю скорость обучения, остальные параметры установлены по умолчанию и фиксированы. Я изучу производительность, как вы предложили позже. Да, я перетасовал данные обучения после завершения эпохи.
Ответ №2:
Это абсолютно нормально, поскольку вы используете SGD. Общая тенденция заключается в том, что ваша точность увеличивается с увеличением количества используемых мини-наборов, однако некоторые мини-наборы могут значительно «отличаться» от большинства других, поэтому точность для них может быть низкой.
Комментарии:
1. Большое спасибо за ваш ответ! В этих экспериментах я просто установил фиксированный размер пакета, скажем, 30. И я пытаюсь поэкспериментировать с переменной скоростью обучения. Начальные эксперименты показывают, что скорость обучения слишком велика в приведенных выше экспериментах. Я попробую поэкспериментировать с переменной batch_sizes .
Ответ №3:
Тот факт, что точность вашего тестирования и проверки ужасно падает в моменты времени 13 и 21, вызывает подозрение. Например, 13 снижает оценку теста ниже epoch 1.
Это означает, что ваша скорость обучения, вероятно, слишком велика: один мини-пакет не должен вызывать такого изменения веса.
Комментарии:
1. Большое спасибо за ваш ответ! Да, я пробовал переменные скорости обучения, это показывает, что скорость обучения в приведенных выше экспериментах слишком велика. Если скорость обучения установлена на относительно небольшое значение, кривая кажется более гладкой, но с медленной сходимостью. Поэтому требуется больше шагов. Кроме того, шаг в моем эксперименте не означает
epoch
, как вы сказали. Коэффициентx-axis
умножения на приведенном выше рисунке должен быть равен 1000. (извините, что я не указал это в вопросе). У меня есть1600
обучающие выборки и batch_size= 30, поэтому одна эпоха составляет более 50 шагов.