Mnist fashion 데이터를 불러온 이후 train데이터로 학습을 진행하고 test데이터로 예측을 진행해보자
model = tf.keras.Sequential([
tf.keras.layers.Dense(128,input_shape = (28,28), activation = "relu"),
tf.keras.layers.Dense(64, activation = "relu"),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(10, activation = 'softmax'),
])
model =
형식으로 모델을 정의할수 있다.
Dense layers를 통해 은닉층 노드수를 설정할 수 있으며
activation function으로 relu함수를 사용했다.
x<0 구간에서 0의 값을 가지고, x>=0구간에서 일차함수의 직선형태를 가지는 함수인데
activation function으로 relu를 사용한 이유는 픽셀의 값이 0~255사이의 음이아닌 정수의 값만 가지기 때문에 성능이 잘나오는 활성화함수이다.
model.summary()
위 코드를 통해 model의 구조를 확인할 수 있다.
flatten layer를 통해 2차원 데이터를 1차원 데이터로 변환이 가능하다.
마지막 layer의 output으로 10을 지정하고 activation함수를 softmax로 사용해야 10개의 label의 각각의 정답 확률을 출력할수 있다. (sigmoid를 사용하는 경우는 binary이진분류일때 사용한다.)
모델 layers의 구조를 만들었으면 학습을 진행해보자
model.compile(loss = 'sparse_categorical_crossentropy',optimizer='adam',metrics = ['accuracy'])
model.fit(trainX,trainY,epochs = 5)
model.compile을 통해 모델의 loss_function optimizer, metrics을 설정할수있는데
각각
loss ->모델의 오차를 어떤 방식으로 줄여나가며 학습시킬지에 대한 함수
optimizer->학습률 조정에 있어 어떠한 방식으로 조정할 것인지
metric ->모델의 성능평가를 어떤 걸로 설정할것인지
에 대해서 각자 모델의 목적에 맞게 설정하면된다.
이때 loss function에서 sparse_categorical_crossentropy와 categorical_crossentropy의 차이는
label의 형태가 순서대로 정수형인지 원핫인코딩 형태인지에 따라 다르게 해주면 된다.
이후
모델의 학습회수(epochs)를 5로 하고 학습을 진행하게된다.
해당 모델은 약 86퍼센트의 정확도가 나온다.
다음에는 해당 모델의 성능을 올리는 방법에 대해서 공부해보겠다.
'딥러닝 기초' 카테고리의 다른 글
학습한 모델 저장 및 불러오기 (0) | 2024.07.31 |
---|---|
개 고양이 구분 AI모델 만들기-2. Preprocess & modeling 전처리 및 모델링 (0) | 2024.07.10 |
개 고양이 구분 AI모델 만들기-1. Dataset load(kaggle) (0) | 2024.07.07 |
Mnist fashion 의류데이터 분류하기-3. 컨볼루션 레이어로 성능 높이기 (0) | 2024.07.04 |
Mnist fashion 의류데이터 분류하기-1.데이터 로드 및 설명 (0) | 2024.07.03 |