이미지를 분류하는 인공지능을 만들어보자
데이터셋 : TensorFlow keras datasets API에 들어있는 Fashion MNIST데이터
import numpy as np
import tensorflow as tf
from tensorflow.keras.datasets import fashion_mnist
mnist = tf.keras.datasets.fashion_mnist
텐서플로우에서 사진을 넘파이로 변환해 둔 데이터 트레이닝셋과 테스트셋 가져온다
(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train.shape
# (60000, 28, 28)
X_test.shape
# (10000, 28, 28)
데이터의 들어있는 사진 확인하는 방법
- pyplot의 imshow() 사용
import matplotlib.pyplot as plt
plt.imshow(X_test[0, : , : ], cmap='gray')
plt.show()
피처스케일링 , 노말라이징(normalizing)
- 피처스케일링 해야 하는데 최댓값을 이미 알고 있으니 이미지의 최댓값으로 나눠도 된다
X_train = X_train / 255.0
X_test = X_test / 255.0
# 255.0 에서 .0 은 상수로 만들어 주기 위함이다
Flatten 라이브러리로 평탄화하기
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from types import MethodWrapperType
def build_model():
model = Sequential()
model.add(Flatten())
model.add(Dense(128, 'relu'))
model.add(Dense(10, 'softmax'))
model.compile('adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
return model
model = build_model()
학습 시키기 _ earlt stop을 이용해서 fit()하기
early_stop = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)
epoch_history = model.fit(X_train, y_train, epochs= 1000, validation_split=0.2, callbacks=[early_stop])
나온 결과를 확인 정확도가 몇인지 확인한다
model.evaluate(X_test, y_test)
테스트데이터로 데이터 예측시켜 변수에 저장한다
y_pred = model.predict(X_test)
컨퓨전매트릭스를 이용해서 인공지능이 헷갈려 하는 부분을 파악한다
- argmax() 함수를 이용해서 y_pred 값 정리하기
from sklearn.metrics import confusion_matrix
# argmax() 함수를 이용해 레이블 인코딩
y_pred = y_pred.argmax(axis=1)
# confusion_matrix(행, 열)
cm = confusion_matrix(y_test, y_pred)
cm
- 대각선 값만 더해서 전체 합한 값으로 나눠주면 정확도가 구해진다
# prompt: 넘파이 써서 cm 변수의 대각선 값 더해줘
import numpy as np
np.diagonal(cm).sum() / cm.sum()
# 0.8768
'MACHINE | DEEP LEARNING > Deep Learning Project' 카테고리의 다른 글
[AI] 딥러닝 CNN의 컨볼루션(Convloution) (0) | 2024.04.18 |
---|---|
[AI] 딥러닝 모델 저장하기, 불러오기_폴더로 저장, 파일로 저장 (0) | 2024.04.18 |
[AI] 딥러닝 compile, loss(손실함수) 값 설정 _ 분류문제, 수치문제 (0) | 2024.04.18 |
[AI] 딥러닝 이미지 인식 _ 프래튼 라이브러리(Flatten Library), 소프트맥스(activation= 'softmax') (2) | 2024.04.18 |
[AI] 딥러닝 오버피팅 되는 것을 방지하기 위한 EarlyStopping, Callback (0) | 2024.04.17 |