728x90
반응형
MNIST라고 하는 손글씨 숫자 데이터를 입력받아 학습시켜봅니다.
import tensorflow as tf
mnist=tf.keras.datasets.mnist
(X,YT),(x,yt)=mnist.load_data() #60000개의 학습데이터, 10000개의 검증데이터
X,x=X/255, x/255 # 60000x28x28, 10000x28x28
X,x=X.reshape((60000,784)), x.reshape((10000,784))
model = tf.keras.Sequential([
tf.keras.Input(shape=(784)),
tf.keras.layers.Dense(128,activation='relu'),
tf.keras.layers.Dense(10,activation='softmax')
]) # 신경망 모양 결정(W, B 내부적 준비)
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(X,YT,epochs=5)
model.evaluate(x,yt)
데이터 모양 살펴보기
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(X,YT),(x,yt)=mnist.load_data() #60000개의 학습데이터, 10000개의 검증데이터
print(X.shape, YT.shape, x.shape, yt.shape)
학습 데이터 그림 그려보기
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(X,YT),(x,yt)=mnist.load_data() #60000개의 학습데이터, 10000개의 검증데이터
import matplotlib.pyplot as plt
plt.imshow(X[0])
plt.show()
print(YT[0])
print(tf.one_hot(YT[0],10))
그림 픽셀 값 출력해보기
import tensorflow as tf
mnist=tf.keras.datasets.mnist
(X,YT),(x,yt)=mnist.load_data() #60000개의 학습데이터, 10000개의 검증데이터
for row in range(28):
for col in range(28):
print('%4s'%X[0][row][col], end='')
print()
학습 데이터 그림 그려보기(그림 25개를 화면에 출력)
import tensorflow as tf
mnist=tf.keras.datasets.mnist
(X,YT),(x,yt)=mnist.load_data() #60000개의 학습데이터, 10000개의 검증데이터
import matplotlib.pyplot as plt
plt.figure(figsize=(10,10))
for i in range(25):
plt.subplot(5,5,i+1)
plt.xticks([]) # 눈금
plt.yticks([])
plt.imshow(X[i],cmap=plt.cm.binary)
plt.xlabel(YT[i])
plt.show()
인공 신경망 학습 시키고 저장하기
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(X, YT), (x, yt) = mnist.load_data() #60000개의 학습데이터, 10000개의 검증데이터
X, x = X/255, x/255 # 60000x28x28, 10000x28x28
X, x = X.reshape((60000,784)), x.reshape((10000,784))
model = tf.keras.Sequential([
tf.keras.Input(shape=(784,)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
]) # 신경망 모양 결정(W, B 내부적 준비)
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(X,YT,epochs=5)
model.evaluate(x,yt)
model.save('model.h5')
학습된 인공신경망 시험하기
import tensorflow as tf
import numpy as np
np.set_printoptions(suppress=True)
mnist=tf.keras.datasets.mnist
_, (x,yt)=mnist.load_data() #60000개의 학습데이터, 10000개의 검증데이터
x=x/255 #10000x28x28
x=x.reshape((10000,784))
model=tf.keras.models.load_model('model.h5')
y=model.predict(x)
print(y[0])
시험 데이터 그림 그려보기
import tensorflow as tf
import numpy as np
np.set_printoptions(suppress=True)
mnist=tf.keras.datasets.mnist
_, (x,yt)=mnist.load_data() # 60000개의 학습데이터, 10000개의 검증데이터
x=x/255 #10000x28x28
x=x.reshape((10000,784))
model=tf.keras.models.load_model("model.h5")
y=model.predict(x)
print(y[0])
print(np.argmax(y[0]),yt[0])
import matplotlib.pyplot as plt
x=x.reshape(10000,28,28)
plt.figure(figsize=(10,10))
for i in range(25):
plt.subplot(5,5,i+1)
plt.xticks([])
plt.yticks([])
plt.imshow(x[i], cmap=plt.cm.binary)
plt.xlabel(np.argmax(y[i]))
plt.show()
잘못된 예측 살펴보기
import tensorflow as tf
mnist=tf.keras.datasets.mnist
_, (x,yt)=mnist.load_data() # 60000개의 학습데이터, 10000개의 검증데이터
x=x/255 #10000x28x28
x=x.reshape((10000,784))
model=tf.keras.models.load_model("model.h5")
y=model.predict(x)
import numpy as np
import matplotlib.pyplot as plt
x=x.reshape(10000,28,28)
cnt_wrong=0
y_wrong=[]
for i in range(10000):
if np.argmax(y[i]) != yt[i]:
y_wrong.append(i)
cnt_wrong += 1
print(cnt_wrong)
print(y_wrong[:10])
728x90
반응형
'즐거운프로그래밍' 카테고리의 다른 글
[딥러닝] 딥러닝 활용하기(패션 MNIST 데이터 셋 학습하기) (0) | 2023.10.30 |
---|---|
[딥러닝] 딥러닝 활용하기(MNIST 선형회귀) (0) | 2023.10.30 |
[딥러닝] 딥러닝 목표값 변경, 은닉층 늘리기, 학습 후 모델 내보내기, 모델 불러와 예측하기 (0) | 2023.10.30 |
[딥러닝] 딥러닝 출력층에 linear 함수 적용해보기 (0) | 2023.10.30 |
[딥러닝] 딥러닝 국소해의 문제 해결해보기 (0) | 2023.10.30 |