프로그래밍/AI·Tensorflow

(keras) Big Train data 학습

Frog Photo Developer 2021. 4. 25. 01:16

딥러닝을 이용해 모델을 학습시키기 위해서는 학습데이터의 양이 많으면 좋다 하지만 이러한 많은양의 데이터를 학습시키기 위해서 데이터 전체를 메모리에 Load하면 메모리가 부족한 현상이 발생할수 있다.

 

이러한 문제를 해결하기위해서는 학습시 epoch 전체의 데이터를 전달하는게 아니라 batch 사이즈마다 데이터를 나누어서 모델에게 데이터를 전달하여 학습시키는 방법이 있다.

 

이러한 방법중에는 Sequence 클래스를 상속하는 방법도 있지만 간단하게 할 수 있는 방법도 있어서 기록을 남긴다.

1
2
3
4
5
6
data_size = 90000
batch_size = 100
def train(batch):
    yield X[:batch], y[:batch] #example
 
model.fit(train(batch_size),steps_per_epoch=data_size/batch_size,epochs=10)
cs

data_load 함수 train은 각 배치 마다의 학습 데이터셋을 iterator하게 반환해주게 작성해 주면 된다.

첫번째 인자로는 train_data를 불러오는 함수를 인자로 넣어주고

두번째 인자 steps_per_epoch는 1 epoch를 학습하는데 배치를 몇번 호출 하는지에 대한 스텝 사이즈이다. ( steps_per_epoch * batch_size = 1 epoch) 

'프로그래밍 > AI·Tensorflow' 카테고리의 다른 글

(keras) Timedistributed Layer  (0) 2021.12.21
(keras) tensorflow-addons CRF 사용법  (0) 2021.04.24
(keras) Input Layer Split  (0) 2021.04.24