일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- reshape
- 머신러닝(딥러닝)
- 파이썬
- flatten
- 연산자
- 딥러닝
- 데이터베이스 개론
- JavaScript
- 생활코딩 머신러닝야학
- LeNet
- 데이터베이서
- 데이터베이스
- 개발자
- 생활코딩 데이터베이스
- 판다스
- Database
- MySQL
- tensorflow
- 야학
- 생활코딩
- 머신러닝야학
- CNN
- 머신러닝
- pandas
- Java
- 이것이 자바다
- 카카오클라우드스쿨2기
- Python
- Today
- Total
IT's 우
생활코딩 머신러닝야학_Tensorflow 102 - 이미지 분류(CNN) - 내 이미지 사용하기 본문
생활코딩 머신러닝야학_Tensorflow 102 - 이미지 분류(CNN) - 내 이미지 사용하기
디우 2021. 1. 20. 02:03# 샘플로 이미지 다운, 압축해제
!wget -q https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/notMNIST_small.tar.gz
!tar -xzf notMNIST_small.tar.gz
# 이미지 읽어서 데이터 준비하기
import glob
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#경로명을 가져오기
paths = glob.glob('./notMNIST_small/*/*.png')
#경로들을 랜덤 하게 섞기
paths = np.random.permutation(paths)
#파일 경로에 가서 이미지 읽어 들이기
독립 = np.array([plt.imread(paths[i]) for i in range(len(paths))])
#정답을 가져오기
종속 = np.array([paths[i].split('/')[2] for i in range(len(paths))])
print(독립.shape, 종속.shape)
# 학습시킬 수 있는 형태의 데이터로 변경하기
# 이미지 한 장을 3차원으로 바꾸어주기 위해
독립 = 독립.reshape(18724, 28,28,1)
#원핫인코딩
종속 = pd.get_dummies(종속)
print(독립.shape, 종속.shape)
import tensor flow as tf
# 모델을 완성합니다.
X = tf.keras.layers.Input(shape=[28, 28, 1])
H = tf.keras.layers.Conv2D(6, kernel_size=5, padding='same', activation='swish')(X)
H = tf.keras.layers.MaxPool2D()(H)
H = tf.keras.layers.Conv2D(16, kernel_size=5, activation='swish')(H)
H = tf.keras.layers.MaxPool2D()(H)
H = tf.keras.layers.Flatten()(H)
H = tf.keras.layers.Dense(120, activation='swish')(H)
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)
# 정답 확인
종속[0:10]
#이미지 확인
plt.imshow(독립[3], cmap='gray')
전체 소스코드
###########################
# 라이브러리 로딩
import glob
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import tensorflow as tf
###########################
# 이미지 읽어서 데이터 준비하기
paths = glob.glob('./notMNIST_small/*/*.png')
paths = np.random.permutation(paths)
독립 = np.array([plt.imread(paths[i]) for i in range(len(paths))])
종속 = np.array([paths[i].split('/')[-2] for i in range(len(paths))])
print(독립.shape, 종속.shape)
독립 = 독립.reshape(18724, 28, 28, 1)
종속 = pd.get_dummies(종속)
print(독립.shape, 종속.shape)
###########################
# 모델을 완성합니다.
X = tf.keras.layers.Input(shape=[28, 28, 1])
H = tf.keras.layers.Conv2D(6, kernel_size=5, padding='same', activation='swish')(X)
H = tf.keras.layers.MaxPool2D()(H)
H = tf.keras.layers.Conv2D(16, kernel_size=5, activation='swish')(H)
H = tf.keras.layers.MaxPool2D()(H)
H = tf.keras.layers.Flatten()(H)
H = tf.keras.layers.Dense(120, activation='swish')(H)
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])
pd.DataFrame(pred).round(2)
# 정답 확인
종속[0:5]
# 모델 확인
model.summary()
출처 : 생활코딩 www.opentutorials.org/module/5268/29793
'생활코딩 > 머신러닝(텐서플로우(python))' 카테고리의 다른 글
생활코딩 머신러닝야학_Tensorflow 102 - 이미지 분류(CNN)/ 다섯번째 딥러닝 완성 - LeNet (0) | 2021.01.19 |
---|---|
생활코딩 머신러닝야학_Tensorflow 102 - 이미지 분류(CNN)/ 다섯번째 딥러닝 3 - MaxPool2D (0) | 2021.01.18 |
생활코딩 머신러닝야학_Tensorflow 102 - 이미지 분류(CNN)/ 다섯번째 딥러닝 2 - Conv2D (0) | 2021.01.17 |
생활코딩 머신러닝야학_Tensorflow 102 - 이미지 분류(CNN)/ 다섯번째 딥러닝 1- Flatten (0) | 2021.01.16 |
생활코딩 머신러닝야학_Tensorflow 102 -이미지 분류(CNN)/ 데이터와 차원 (0) | 2021.01.15 |