케라스에서 개발 과정
- 학습 데이터를 정의한다.
- 데이터에 적합한 모델을 정의한다.
- 손실함수, 옵티마이저, 평가지표를 선택하여 학습과정을 설정한다.
- 모델을 학습시킨다.
- 모델을 평가한다.
모델 구축
1. 모델 구성
model = Sequential()
model.add(Dense(32, input_shape= (2, ), activation = 'relu' ))
model.add(Dense(1, activation = 'sigmoid' ))
- 첫 번째 node에서는 input_shape를 전달해주어야 함.
- 활성화 함수activation function : 신경망의 뉴런(neuron)에서는 입력 신호의 가중치 합을 출력값으로 변환해 주는 함수 →
2. 컴파일 함수 호출
# 평균 제곱 오차 회귀 문제
model.compile(optimizer = RMSprop(),
loss = 'mse',
metrics = [])
# 이항 분류 문제
model.compile(optimizer = RMSprop(),
loss = 'binary_crossentropy',
metrics = ['acc'])
# 다항 분류 문제
model.compile(optimizer = RMSprop(),
loss = 'categorical_crossentropy',
metrics = ['acc'])
-
옵티마이저 : 옵티마이저란 가중치를 변경하는 방법론이다. 최적화 방법을 설정. SGD()(확률적 경사 하강법), RMSProp(), Adam(), NAdam()등이 있다.
tf.teras.optimizers
에서 다양한 옵티마이저를 볼 수 있다. -
손실함수 : 신경망의 성능을 나타내는 지표. 학습과정에서 최적화시켜야 할 손실 함수를 설정한다. 대표적으로
평균 제곱 오차(mse: mean_squared_error)
,binary_crossentropy
,categorical_crossentropy
가 있으며, 문자열로 지정하여 사용할 수 있다.tf.keras.losses
모듈에서 다양한 손실 함수를 볼 수 있다.
정답레이블과 예측값을 이용해 손실함수의 미분값을 계산한 뒤 → 옵티마이저의 방법론을 통해 가중치를 수정한다.
- 평가지표metrics : 학습과정을 모니터링하기 위해 설정한다. 객체를 호출하거나 'acc'와 같이 문자열을 지정하여 전달할 수 있으며, 직접 정의하여 사용하기도 한다.
tf.keras.metrics
모듈에서 다양한 평가지표를 볼 수 있다.
3. 모델 학습
model.fit(data, label, epochs = 100)
model.fit(data, label, epochs = 100, validation_data = (val_data, val_label)
fit()
함수에서는 입력 및 정답 데이터로 이루어진 학습 데이터와 함께 주로 세 가지를 추가로 설정 한다.
- 에폭epochs: 전체 학습 데이터를 몇 번 반복할지 결정한다.
- 배치 크기batch_size: 전달한 배치 크기만큼 학습 데이터를 나누어 학습한다.
- 검증 데이터validation_data: 모델의 성능을 모니터링하기 위해 사용한다. 입력과 정답 데이터로 이루어진 검증 데이터를 전달하면 1회 에폭이 끝날 때마다 전달된 검증 데이터에서의 손실과 평가지표를 출력한다.
- 훈련 데이터 10,000개를 100개의 미니배치로 학습한 경우, 확률적 경사 하강법을 100회 반복하면 모든 훈련 데이터를 소진하게 된다. 이 경우 100회가 1 에폭이 된다.
4. 평가
model.evaluate(data, label)
result = model.predict(data)
print(result)
evaluate()
와predict()
는tf.keras.Model
모듈 아래에 존재하기 때문에 정의한 모델에서 바로 사용할 수 있다.
'Python > Python 딥러닝' 카테고리의 다른 글
keras를 이용한 mnist 숫자 데이터 분류(2) (0) | 2020.07.13 |
---|---|
Keras를 이용한 mnist 숫자 데이터 분류(1) (0) | 2020.07.13 |
파이썬_확률적 경사 하강법-SGD(Stochastic Gradient Descent) (1) | 2020.07.13 |
[tensorflow]텐서 선언하기, 즉시 실행모드를 통한 연산, @tf.function (0) | 2020.07.10 |
Tensorflow의 기본 개념 : Tensor, Rank, Flow, Graph, Node, Edge, Session (0) | 2020.07.10 |