Я использую Python Keras package
для нейронной сети. Это ссылка . Is batch_size
равно числу тестовых образцов? Из Википедии у нас есть эта информация:
Однако в других случаях оценка градиента суммы может потребовать дорогостоящих оценок градиентов от всех функций слагаемых. Когда обучающий набор огромен и простых формул не существует, оценка сумм градиентов становится очень дорогой, потому что оценка градиента требует оценки всех градиентов функций слагаемых. Чтобы сэкономить на вычислительных затратах на каждой итерации, стохастический градиентный спуск выбирает подмножество функций слагаемых на каждом шаге. Это очень эффективно в случае масштабных проблем машинного обучения.
Выше информация описывает тестовые данные? Это то же самое, что и batch_size
в керасах (количество выборок на обновление градиента)?
источник
Ответы:
Размер пакета определяет количество выборок, которые будут распространяться по сети.
Например, допустим, у вас есть 1050 обучающих выборок, и вы хотите установить значение,
batch_size
равное 100. Алгоритм берет первые 100 выборок (с 1-го по 100-й) из набора обучающих данных и обучает сеть. Затем он берет вторые 100 выборок (с 101-го по 200-й) и снова обучает сеть. Мы можем продолжать делать эту процедуру, пока мы не распространим все образцы через сеть. Проблема может возникнуть с последним набором образцов. В нашем примере мы использовали 1050, который не делится на 100 без остатка. Самое простое решение - просто получить последние 50 образцов и обучить сеть.Преимущества использования размера партии <количество всех образцов:
Это требует меньше памяти. Поскольку вы тренируете сеть, используя меньшее количество выборок, общая процедура обучения требует меньше памяти. Это особенно важно, если вы не можете уместить весь набор данных в памяти вашей машины.
Обычно сети тренируются быстрее с мини-пакетами. Это потому, что мы обновляем вес после каждого распространения. В нашем примере мы распространили 11 пакетов (10 из них имели 100 выборок и 1 имел 50 выборок), и после каждой из них мы обновляли параметры нашей сети. Если бы мы использовали все образцы во время распространения, мы сделали бы только 1 обновление для параметра сети.
Недостатки использования размера партии <количество всех образцов:
Стохастик - это просто мини-пакет с
batch_size
равным 1. В этом случае градиент меняет свое направление даже чаще, чем мини-пакетный градиент.источник
batch_size=1
. Идея онлайн-обучения заключается в том, что вы обновляете свою модель, как только видите пример. С большим размером пакета это означает, что сначала вы просматриваете несколько образцов перед обновлением. В РНН размер партии может иметь разные значения. Обычно принято разделять обучающую последовательность на окно фиксированного размера (например, 10 слов). В этом случае включение 100 из этих окон во время обучения будет означать, что у вас естьbatch_size=100
.В терминологии нейронной сети:
Пример: если у вас есть 1000 обучающих примеров, а размер пакета равен 500, то для завершения 1 эпохи потребуется 2 итерации.
К вашему сведению: размер пакета в зависимости от количества итераций для обучения нейронной сети
источник
Решая с помощью ЦП задачу оптимизации, вы итеративно применяете алгоритм к некоторым входным данным. На каждой из этих итераций вы обычно обновляете метрику своей задачи, выполняя некоторые вычисления для данных. Теперь, когда размер ваших данных велик, может потребоваться значительное количество времени для завершения каждой итерации и может потребоваться много ресурсов. Поэтому иногда вы выбираете применение этих итеративных вычислений к части данных для экономии времени и вычислительных ресурсов. Эта часть представляет собой batch_size, и этот процесс называется (в Neural Network Lingo) пакетной обработкой данных. Когда вы применяете свои вычисления ко всем своим данным, вы выполняете онлайн-обработку данных. Я предполагаю, что терминология пришла из 60-х и даже раньше. Кто-нибудь помнит. Bat DOS файлы? Но, конечно, воплощенная концепция означает поток или часть данных, которые будут использоваться.
источник
Документацию
Keras
о размере партии можно найти подfit
функцией на странице Модели (функциональный API).Если у вас небольшой набор данных, лучше всего сделать размер пакета равным размеру обучающих данных. Сначала попробуйте небольшую партию, затем увеличьте, чтобы сэкономить время. Как уже упоминалось, существует компромисс между точностью и скоростью.
источник