파이썬/텐서플로우

Tensorflow 이미지분류(ANN) 모델링 하기

공부짱짱열심히하기 2022. 12. 29. 11:34
mnist = tf.keras.datasets.fashion_mnist
( X_train,y_train ) , ( X_test , y_test ) = mnist.load_data()

기존 텐서플로우 안에 존재하는 이미지 딥러닝 세트

 

6만장 사진 28행 28열 (컬러 사진은 rgb값까지 포함해서 뒤에 3이 하나 더붙음)

 

이미지값은 숫자로 되어있다. 0부터 255까지의 숫자로 되어있다.

그림으로 보면 이런식

 

X_train = X_train /255.0
이미지란 어짜피 0~255 사이숫자이기때문에 최대값으로 나눠버리면 그게 노말라이징 그리고 255.0 으로 하는이유는 딥러닝엔 float으로 해야됨 int값은 잘 안됨
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from keras.layers import Flatten

https://seonggongstory.tistory.com/142

 

Tensorflow 이미지분류(CNN) 과 Flatten

Artificial Neural Network 알고리즘으로 이미지셋 데이터를 표 형태의 데이터로 변형해서 원하는 아웃풋을 얻어내는 알고리즘을 CNN이라고 한다. flatten을 사용하는 이유? cnn에서 이미지를 행렬로 나타

seonggongstory.tistory.com

 

def build_model() :
  model = Sequential()
  model.add( Flatten()  )
  model.add(Dense(128 ,'relu' )  )
  model.add(Dense(64,'relu')  )
  model.add( Dense(10, 'softmax') )
  model.compile('adam','sparse_categorical_crossentropy',['accuracy'])
  return model

https://seonggongstory.tistory.com/133

 

딥러닝 하이퍼 파라미터 용어: optimizer 와 손실함수(loss function)

Loss Function(손실함수) 손실 함수란 실제값과 예측값의 차이(loss, cost)를 수치화해주는 함수이다. 오차가 클수록 손실 함수의 값이 크고, 오차가 작을수록 손실 함수의 값이 작아진다. 손실 함수의

seonggongstory.tistory.com

loss function은 sparse_categorical_crossentropy 로 하고

 

https://seonggongstory.tistory.com/127

 

딥러닝 하이퍼 파라미터 용어 : activation Functions (수정)

액티베이션 활성화 함수: 딥러닝 네트워크에서 노드에 입력된 값들을 비선형 함수에 통과시킨 후 다음 레이어로 전달하는데, 이 때 사용하는 함수를 활성화 함수(Activation Function)라고 한다. 선형

seonggongstory.tistory.com

 

 

 

model = build_model()
model.fit(X_train, y_train,epochs = 5)

 

컨퓨전 메트릭스로 나온 결과를 

y_pred = y_pred.argmax(axis=1)

argmax를 통해 레이블 인코더로 바꿔버림

 

confusion_matrix(y_test,y_pred)

컨퓨전 매트릭스로 과연 인공지능이 어떤걸 많이 헷갈려 했는가 파악해보기

대각선은 1을 1이라한거 2를 2라한거 3을3이라한거... 나머지는 각자리라고 착각한 수
 
 

히트맵을 통해 더 자세히 알 수 있다