목차
개요
배치 처리에서 입력은 더 작은 배치로 나뉘고 각 배치는 한 번에 하나씩 모델을 통과합니다. 그런 다음 각 배치에 대한 예측을 수집하고 결합하여 전체 데이터 세트에 대한 최종 예측을 생성합니다. 이 프로세스는 CPU 또는 GPU와 같은 사용 가능한 리소스를 더 잘 활용하므로 각 입력을 개별적으로 처리하는 것보다 계산적으로 더 효율적입니다.
특징
배치 처리는 메모리에 맞지 않는 대용량 데이터 세트로 작업할 때 특히 유용합니다. 이를 통해 모델은 더 작은 청크로 데이터를 처리할 수 있으므로 메모리 요구 사항이 줄어듭니다. 또한 모델이 각 반복에서 더 많은 데이터를 처리할 수 있도록 하여 더 빠른 수렴으로 이어지므로 모델의 교육 시간을 개선할 수도 있습니다.
그러나 배치 처리에도 한계가 있습니다. 주요 제한 사항 중 하나는 모델의 예측이 배치의 입력 순서에 영향을 받을 수 있다는 것입니다. 또한 배치 크기가 작으면 학습 속도가 느려지고 배치 크기가 크면 일반화가 제대로 이루어지지 않으므로 배치 크기를 신중하게 선택해야 합니다.
TensorFlow, Keras 및 Pytorch와 같은 일괄 처리를 지원하는 많은 라이브러리가 있습니다. 이러한 라이브러리는 Keras의 fit() 메서드 및 TensorFlow의 train() 함수와 같이 일괄 처리를 처리하기 위한 내장 함수 및 메서드를 제공합니다.
결론적으로 신경망에서의 일괄 처리는 모델을 통한 단일 순방향 통과에서 여러 입력을 처리하는 프로세스를 의미합니다. 대규모 데이터 세트에 대한 예측을 수행하는 데 사용되며 오프라인 추론에 자주 사용됩니다.
[컴퓨터과학/딥러닝] - 인공 신경망의 추론처리 특징부터 구현까지 - 딥러닝 정리
구현
from keras.models import load_model
import numpy as np
# load the trained model
model = load_model('trained_model.h5')
# input data for inference
x_test = np.array([[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
[21, 22, 23, 24, 25, 26, 27, 28, 29, 30]])
# make predictions with batch processing
batch_size = 2
predictions = []
for i in range(0, x_test.shape[0], batch_size):
predictions.append(model.predict(x_test[i:i+batch_size,:]))
# print the predictions
print(predictions)
더보기