케라스를 이용한 기본 적인 딥러닝 모델 생성과정

JJulme·2021년 9월 6일
0

1. 케라스를 이용해서 은닉층이 없는 모델 생성

딥러닝 모델의 껍데기를 만든다.

from keras.models import Sequential
from keras.layers import Dense

# 입력 데이터 크기 : 32*32 픽셀, RGB형 이미지 데이터
in_size = 32*32*3 

# 출력 데이터 크기 : 10개의 카테고리
num_classes = 10

# Sequential()은 층을 차례대로 쌓은 모델을 만들어 준다
model = Sequential()

# 512개의 유닛을 가진 입력층, 활성화 함수는 relu
model.add(Dense(512, activation='relu', input_shape=(in_size,)))

# 출력 결과는 10가지 중 1가지라서 10으로 설정, 활성화 함수는 softmax
model.add(Dense(num_classes,activation='softmax'))

2. 컴파일 하기

컴파일을 이용해 모델 껍데기가 학습하는 과정을 설정한다.

model.compile(
    # 손실함수: categorical_crossentropy로 설정
    loss = 'categorical_crossentropy',
    
    # 최적화: adam으로 설정
    optimizer = 'adam',
    
    # accracy로 정확도 수집하도록 명령
    metrics = ['accuracy']
)

3. 학습 시키기

hist = model.fit(X_train, y_train,
                # batch_size: 읽어들이는 데이터 수
                batch_size=32,
                
                # 훈련할 횟수
                epochs=50,
                
                # verbose=1로 해야 학습되는 모습을 보여줌
                verbose=1,
                validation_data=(X_test, y_test)) #[3]

통상 batch = mini batch로 같은 뜻이다.
데이터가 만약 1000개 이고 batch_size를 100으로 설정하면
데이터가 10번에 거쳐서 들어올 것이다.
batch_size는 메모리 상황에 알맞게 조절해서 훈련해줘야 한다.

(iteration: epoch를 나누어서 실행하는 횟수,
데이터가 1000개 이고 batch_size가 100이면 iteration은 10이다.)
iteration은 왜 하는지 이해가 안가네

한 턴에 1,000개씩 10번 , 5턴을 학습시킨다고 하면, batch_size = 1,000 / iteration = 10 /epoch = 5이다.

0개의 댓글