Через полтора года я возвращаюсь к своему ответу, потому что мой предыдущий ответ был неверным.
Размер партии значительно влияет на обучение. Когда вы помещаете пакет в свою сеть, происходит то, что вы усредняете градиенты. Концепция заключается в том, что если размер вашей партии достаточно велик, это обеспечит достаточно стабильную оценку того, каким будет градиент полного набора данных. Взяв образцы из вашего набора данных, вы оцените градиент при значительном снижении вычислительных затрат. Чем ниже вы идете, тем менее точной будет ваша оценка, однако в некоторых случаях эти шумовые градиенты могут фактически помочь избежать локальных минимумов. Когда оно слишком низкое, вес вашей сети может просто перепрыгнуть, если ваши данные шумят, и они могут быть неспособны к обучению или они сходятся очень медленно, что отрицательно влияет на общее время вычислений.
Другое преимущество пакетной обработки - для вычислений на GPU. GPU очень хороши для распараллеливания вычислений, которые происходят в нейронных сетях, если часть вычислений одинакова (например, многократное умножение матриц для одной и той же весовой матрицы вашей сети). Это означает, что размер пакета из 16 займет менее чем вдвое больше, чем размер пакета из 8.
В случае, если вам нужны пакеты большего размера, но они не будут соответствовать вашему графическому процессору, вы можете подать небольшую партию, сохранить оценки градиента и одну или несколько партий, а затем выполнить обновление веса. Таким образом, вы получите более стабильный градиент, потому что вы увеличили размер виртуального пакета.
НЕПРАВИЛЬНО, СТАРЫЙ ОТВЕТ: [[[Нет, размер batch_size в среднем влияет только на скорость вашего обучения, а не на качество обучения. Batch_sizes также не обязательно должны иметь степень 2, хотя я понимаю, что некоторые пакеты допускают только степени 2. Вы должны попытаться получить максимальный размер batch_size, который по-прежнему умещается в памяти вашего графического процессора, чтобы получить максимально возможную скорость .]]]]