스터디📖/ML, DL

Tensorflow 이미지 분류(CNN) - 5, 6강 다섯번째 딥러닝 1 - Flatten

호프 2021. 10. 3. 16:50

https://opentutorials.org/module/5268/29787

 

다섯번째 딥러닝 1 - Flatten - Tensorflow 102 - 이미지 분류(CNN)

수업소개 이미지셋 데이터를 표 형태의 데이터로 변형해서 학습하는 법을 배웁니다. 딥러닝 모델의 "특징 자동 추출기"라는 별명의 의미를 이해합니다.  강의 실습 소스코드 colab |  backend.ai ##

opentutorials.org

5강 Flatten

이미지 분류기: 지도학습, 분류문제.
이미지 데이터. 28 x 28 -> 784개의 칼럼을 가진 형태로 변형

print(독립.shape)
# (60000, 28, 28)

독립.reshape(60000, 784)
print(독립.shape)
# (60000, 784)

특징 자동 추출기

히든레이어를 추가했을 때 84개의 특징컴퓨터가 인공신경망 구조 안에서 학습을 통해 스스로 찾은 것.
컴퓨터에게 이 이미지들이 0~9까지 중 어느 숫자인지 판단하기 위해 가장 좋은 특징 84개를 찾아달라는 명령

👉 인공신경망 == 특징 자동 추출기

reshape -> flatten 사용할 수 있음.

6강 Flatten(실습)

실습 코드는 드라이브에 업로드

###########################
# 라이브러리 사용
import tensorflow as tf
import pandas as pd
 
###########################
# with reshape
 
# 데이터를 준비하고
(독립, 종속), _ = tf.keras.datasets.mnist.load_data()
독립 = 독립.reshape(60000, 784)
종속 = pd.get_dummies(종속)
print(독립.shape, 종속.shape)
 
# 모델을 만들고
X = tf.keras.layers.Input(shape=[784])
H = tf.keras.layers.Dense(84, activation='swish')(X)
Y = tf.keras.layers.Dense(10, activation='softmax')(H)
model = tf.keras.models.Model(X, Y)
model.compile(loss='categorical_crossentropy', metrics='accuracy')
 
# 모델을 학습하고
model.fit(독립, 종속, epochs=10)
 
# 모델을 이용합니다. 
pred = model.predict(독립[0:5])
print(pd.DataFrame(pred).round(2))
print(종속[0:5])
 
###########################
# with flatten
 
# 데이터를 준비하고
(독립, 종속), _ = tf.keras.datasets.mnist.load_data()
# 독립 = 독립.reshape(60000, 784)
종속 = pd.get_dummies(종속)
print(독립.shape, 종속.shape)
 
# 모델을 만들고
X = tf.keras.layers.Input(shape=[28, 28])
H = tf.keras.layers.Flatten()(X)
H = tf.keras.layers.Dense(84, activation='swish')(H)
Y = tf.keras.layers.Dense(10, activation='softmax')(H)
model = tf.keras.models.Model(X, Y)
model.compile(loss='categorical_crossentropy', metrics='accuracy')
 
# 모델을 학습하고
model.fit(독립, 종속, epochs=10)
 
# 모델을 이용합니다. 
pred = model.predict(독립[0:5])
print(pd.DataFrame(pred).round(2))
print(종속[0:5])