딥러닝 - 8

CYSSSSSSSSS·2023년 9월 6일
0

딥러닝

목록 보기
8/12

flatten

  • n차원 데이터 를 차원을 낮추는 작업이다
  • model 의 input shape 을 맞추기 위해 사용하는 작업이다
  • 레이어에서 쉽게 처리하기 위해 만들어주는 역할을 합니다.

train/test/validation 을 나누는 이유

  • train 만 이용할려면 학습하다가는 오래 걸린다 (overfitting )
  • 따라서 중간에 멈출수 있는 장치 인 validation 을 만들어서 학습 도중에 모니터링 하기 위해서 필요하다.

Train

  • 모델을 학습하기 위한 데이터셋으로 이때 학습은 최적의 파라미터를 찾는 것입니다.

  • 오직 학습 을 위한 데이터셋

Validation

  • 학습이 이미 완료된 모델을 검증하기 위한 데이터셋입니다.

  • 학습이 된 여러 가지 모델 중 가장 좋은 하나의 모델을 고르기 위한 데이터셋입니다.

  • 학습 과정에 어느 정도 관여를 한다고 볼 수 있습니다.

  • 하지만 Validation 데이터 자체가 학습에 직접적으로 관여하는 것은 아님

# 모델 학습
model.fit(x_train,y_train,epochs = 100 , batch_size = 128,validation_split=0.2)
  • model fit 을 할떄 validation option 을 줄수 있다.

test

  • 모델의 '최종 성능'을 평가하기 위한 데이터셋

  • 학습 과정에 관여를 하지 않음!!!

mnist 실습

  • 손글씨 분류 데이터

데이터 준비

# 데이터 준비
import tensorflow as tf
import pandas as pd
(x_train , y_train) , (x_test , y_test) = tf.keras.datasets.mnist.load_data() 
print(x_train.shape , y_train.shape)
# 2차원으로
x_train = x_train.reshape(60000 , 784)
x_test = x_test.reshape(10000 , 784)

# 원 핫 인코딩
y_train = pd.get_dummies(y_train)
y_test = pd.get_dummies(y_test)

print(x_train.shape , y_train.shape)
print(x_test.shape , y_test.shape)
  • mnist.load_data() 는 keras 에서 제공하는 mnist 3차원 데이터 이다.
  • load_data 는 4개의 데이터 변수를 리턴 한다 (x_train , y_train) , (x_test , y_test) sklearn 의 train_test_split 과 같은 원리
  • 원 핫 인코딩에 의해 모델의 Input 데이터를 맞춰주는것이다.

모델 준비

# 모델 준비
X = tf.keras.Input(shape = [784])
Y = tf.keras.layers.Dense(10 , activation = 'softmax')(X)
model = tf.keras.Model(X,Y)
model.compile(loss="categorical_crossentropy" , metrics="accuracy")
model.summary()

모델 학습

# 모델 학습
model.fit(x_train,y_train,epochs = 100 , batch_size = 128)

모델 평가

# 모델 평가
model.evaluate(x_test, y_test)
profile
개발자 되고 싶어요

0개의 댓글