이미지 분류
이번 시간에는 이미지 분류에서 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(최적화 알고리즘)
- 손실함수(Loss Function)를 최소화 하면서 학습하는 방법
- optimizer 자세히 알아보기
- Loss Function 자세히 알아보기

아래의 코드 실행 버튼을 눌러 실습을 진행해 보세요!
실행 완료
실행 완료
[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

아래의 코드 실행 버튼을 눌러 실습을 진행해 보세요!
실행 완료
코드 실행
---------------------------------------------------------------------------
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