HyeM

Optimization & Training (Beginner / Expert) 본문

Study/AI&DeepLearning

Optimization & Training (Beginner / Expert)

Hailey_HyeM207 2021. 1. 18. 14:57


Optimization & Training (Beginner.ver)


▶ 준비 작업 

더보기

opitmization과 traning을 하기 위해 우선, mnist 데이터 셋을 불러오고, 모델을 쌓아 준비한다. 

MNIST Dataset 불러오기 

모델 쌓기 

 

▶ Optimization

: 모델을 학습하기 전 설정 

  • Loss Function
  • Optimization
  • Metrics

Loss Function 

: 비용함수.  Loss값 계산 

loss = 'binary_crossentropy'
loss = 'categorical_crossentropy'

binaray와 categorical로 2가지로 나뉜다.

클래스가 2개 일때는 binary를 사용하고, 두 개 이상 멀티플하게 다룰 때는 cateorical을 사용한다.

 

- binary_crossentropy

binary

- sparse_categorical_crossentropy vs categorical_crossentropy

sparse_categorical_crossentropy vs categorical_crossentropy

 

 Metrics

: 모델 평가하는 방법 (정확도)

가장 간단한 방법은 accuracy로, 전체 개수에서 맞힌 확률로 나타낸다.

 

Optimizer (Compile)

optimizer를 적용한다. 모델을 컴파일 함.

  • 'sgd' -tf.keras.optimizers.SGD()
  • 'rmsprop' - tf.keras.optimizers.RMSprop()
  • 'adam' - tf.keras.optimizers.Adam()

 

모델을 컴파일 해보자. 이때, loss function과 metrics를  맞춰줘야 한다. (안 맞춰주면 에러가 뜰 수 있다...경험담..)

아래가 옳은 방법

 

▶ Prepare Dataset

Training 전 학습에 사용할 데이터 셋을 준비한다. 

1. shape 확인

-> 채널이 없으니 늘려야 된다. 

 

 

2. 차원수 늘리기 

마지막에 train_x의 모양을 확인하여 차원수 잘 늘어난 것을 확인할 수 있다.

 

 

3. Rescaling

rescaling 해주는게 좋고 , 차원이 안맞다면 차원수 하나 늘려주고 rescaling 해주는게 좋음

rescaling 적용시 학습이 잘되고, 기울기도 잘 잡힌다.

▶ Training

본격적 학습에 들어가기전 학습용 Hyperparameter 설정해준다. (Hyperparameter는 사용자가 직접 설정해줘야 된다.)

  • num_epochs : 전체 데이터를 보면 그게 한 에폭임
  • batch_size 

- model.fit (모델 훈련)

 #shuffle안하고 순서대로 공부하면 오버피팅 & 공부하면 효과없음. 이곳저곳 shuffle하는게 좋음. 

 

 

 

 

 

 

 


Optimization & Training (Expert.ver)


▶ 준비 작업 

더보기

opitmization과 traning을 하기 위해 우선, mnist 데이터 셋을 불러오고, 모델을 쌓아 준비한다. 

MNIST Dataset 불러오기 

모델 쌓기 

▶ Preprocess

1. tf.data사용

 

2. Visualize Data

metplotlib 불러와서 데이터를 시각화 한다. 

 

(32, 28, 28, 1) #train_ds의 shape, batch_size는 32, image shape이 28,28 바이 1
2개의 데이터를 가져와 시각화 해주었다.

* train_ds.take() : 몇개의 데이터를 가져오느냐

 

 

 

 

▶ Training (Keras)

Keras로 학습 할 때는 기존과 같지만, train_ds는 generator라서 그대로 넣을 수 있다.

 

 

▶ Optimization

loss Function & Optimizer

optimizer로 Adam 적용

▷ Metrics

 

 

 

▶ Training

model -> logit -> loss -> optm 이 과정을 그대로 구현을 해보려 한다. 

@tf.function 

: 기존 session 열었던 것처럼 바로 작동 안 하고, 그래프만 만들고 학습이 시작되면 돌아가도록 함

'Study > AI&DeepLearning' 카테고리의 다른 글

[PyTorch] 데이터 불러오기 & Layer 이해하기  (0) 2021.01.18
Evaluating & Prediction  (0) 2021.01.18
각 Layer별 살펴보기  (0) 2021.01.11
MNIST 불러오기  (0) 2021.01.11
시각화 기초(그래프, 이미지)  (0) 2021.01.11
Comments