카테고리 없음

머신러닝with파이썬9(1)_이미지분류

디지털랫드 2024. 3. 26. 12:48

이미지 분류


이번 시간에는 이미지 분류에서 2가지 데이터를 다뤄보겠습니다.

이번 시간 정리


[리마인드] Sequential 모델
레고블럭처럼 원하는 레이어만 불러들여서 쌓게 되면 하나의 딥러닝 모델을 만들 수 있다.

Flatten Layer
keras에서 제공하는 함수인 Flatten을 통해 다차원 배열 공간을 1차원으로 평탄화 해준다.
예 : (영상 설명 참고) 28x28 크기의 데이터를 1차원으로 평탄화 -> 길이가 784인 벡터

Dense Layer
입력과 출력을 모두 연결해 준다. 입력 뉴런이 2개, 출력 뉴런이 4개라고 할때 총 연결선은 2x4개가 된다. 각 연결선은 가중치(연결 강도)를 포함한다.

activation(활성화 함수)

  • softmax : 확률 값 출력, 가장 높은 확률 값을 가지는 클래스 선택
  • ReLU : x가 0보다 작으면 0을 출력하고, x가 0보다 크면 x값을 출력한다.

optimizer(최적화 알고리즘)

1. mnist 데이터



아래의 코드 실행 버튼을 눌러 실습을 진행해 보세요!

 
 
실행 완료
 
 
 
실행 완료
[29]:
'2.6.0'
 
 
실행 완료
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
11493376/11490434 [==============================] - 0s 0us/step
11501568/11490434 [==============================] - 0s 0us/step
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/3781236045.py in <module>
      1 # 데이터 크기
----> 2 X_train.shape, y_train.shape, X_test.shape, y_test.shape

NameError: name 'X_train' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/3551297787.py in <module>
      2 import numpy as np
      3 np.set_printoptions(linewidth=120)
----> 4 print(X_train[0])

NameError: name 'X_train' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/875772443.py in <module>
      1 # 데이터 확인(이미지)
----> 2 plt.imshow(X_train[0])

NameError: name 'X_train' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/2405148911.py in <module>
      1 # label 확인
----> 2 y_train[0]

NameError: name 'y_train' is not defined
 
 
실행 완료
 
 
 
실행 완료
Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
flatten (Flatten)            (None, 784)               0         
_________________________________________________________________
dense (Dense)                (None, 128)               100480    
_________________________________________________________________
dropout (Dropout)            (None, 128)               0         
_________________________________________________________________
dense_1 (Dense)              (None, 10)                1290      
=================================================================
Total params: 101,770
Trainable params: 101,770
Non-trainable params: 0
_________________________________________________________________
 
 
실행 완료
 
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/1022933965.py in <module>
      1 # 학습
----> 2 history = model.fit(X_train, y_train, epochs=5)

NameError: name 'X_train' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/1279644483.py in <module>
      1 # 학습 정확도 (epoch에 따른 accuracy 변화)
----> 2 plt.plot(history.history['accuracy'], label='acc')
      3 plt.xlabel('epochs')
      4 plt.ylabel('accuracy')
      5 plt.legend()

NameError: name 'history' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/2099412916.py in <module>
      1 # loss
----> 2 plt.plot(history.history['loss'], label='loss')
      3 plt.xlabel('epochs')
      4 plt.ylabel('loss')
      5 plt.legend()

NameError: name 'history' is not defined

2. fashion-mnist 데이터



아래의 코드 실행 버튼을 눌러 실습을 진행해 보세요!

 
 
실행 완료
 
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/1086576669.py in <module>
      1 # 데이터 불러오기
----> 2 mnist = tf.keras.datasets.fashion_mnist
      3 (X_train, y_train), (X_test, y_test) = mnist.load_data()

NameError: name 'tf' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/4205031976.py in <module>
      1 # 정규화(0~1 사이)
----> 2 X_train, X_test = X_train / 255.0, X_test / 255.0

NameError: name 'X_train' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/875772443.py in <module>
      1 # 데이터 확인(이미지)
----> 2 plt.imshow(X_train[0])

NameError: name 'plt' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/2332557866.py in <module>
----> 1 y_train[0]

NameError: name 'y_train' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/3640735385.py in <module>
      5 ]
      6 
----> 7 print(classes[y_train[0]])

NameError: name 'y_train' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/2354171848.py in <module>
      1 # 데이터 확인(이미지, 레이블)
----> 2 print(classes[y_train[1]])
      3 plt.imshow(X_train[1])

NameError: name 'classes' is not defined
 
 
실행 완료
 
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/3274765079.py in <module>
      5 
      6 # 특정 dataset을 validation data로 사용
----> 7 history = model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=10)

NameError: name 'model' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/285050788.py in <module>
      1 # 학습 정확도
----> 2 plt.plot(history.history['accuracy'], label='acc')
      3 plt.plot(history.history['val_accuracy'], label='val')
      4 plt.xlabel('epochs')
      5 plt.ylabel('accuracy')

NameError: name 'plt' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/3516959128.py in <module>
----> 1 plt.plot(history.history['loss'], label='train')
      2 plt.plot(history.history['val_loss'], label='val')
      3 plt.xlabel('epochs')
      4 plt.ylabel('loss')
      5 plt.legend()

NameError: name 'plt' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/321040607.py in <module>
      1 # 예측
----> 2 pred = model.predict(X_test)
      3 pred[1]

NameError: name 'model' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/417980549.py in <module>
----> 1 np.argmax(pred[1])

NameError: name 'np' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/2529749787.py in <module>
      1 # 예측한 label
----> 2 classes[np.argmax(pred[1])]

NameError: name 'classes' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/3686967216.py in <module>
      1 # 실제 label
----> 2 classes[y_test[1]]

NameError: name 'classes' is not defined
 
 
코드 실행
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/tmp/ipykernel_13/2039830511.py in <module>
      1 # 이미지 확인
----> 2 plt.imshow(X_test[1])

NameError: name 'plt' is not defined