ํจ์ MNIST ๋ฐ์ดํฐ์ ์ฌ์ฉํด์ ์ธ๊ณต์ง๋ฅ ํ์ตํ๊ธฐ
1. MNIST
2. ์ฝ๋ ์ค๋ช
์ธ๊ณต์ง๋ฅ ๋ณต์ตํ๊ธฐ ์ํด ํฌ์คํ ํ๊ณ ์์ต๋๋ค.
1. MNIST
๋จธ์ ๋ฌ๋๊ณผ ๋ฅ๋ฌ๋์ ์ฒ์ ๋ฐฐ์ธ ๋ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐ์ดํฐ์ ์ค ํ๋์ ๋๋ค.
2. ์์ ์ฝ๋
# ํจ์
MNIST ๋ฐ์ดํฐ์
๋ก๋
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
ํจ์ MNIST ๋ฐ์ดํฐ์ ์ ๋ก๋ํ ํ ๋ฐ์ดํฐ์ ์ ํ๋ จ์ฉ๊ณผ ํ ์คํธ์ฉ์ผ๋ก ๋ถ๋ฆฌํฉ๋๋ค.
ํ๋ จ ๋ฐ์ดํฐ๋ ๋ชจ๋ธ์ ํ์ตํ ๋ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ์ด๊ณ , ํ ์คํธ ๋ฐ์ดํฐ๋ ๋ชจ๋ธ์ ํ ์คํธํ ๋ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ์ ๋๋ค.
# ํด๋์ค ์ด๋ฆ ์ ์
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
๊ฐ ์ซ์ ๋ ์ด๋ธ์ ํด๋นํ๋ ์๋ฅ ์ข ๋ฅ์ ์ด๋ฆ์ ๋ฆฌ์คํธ๋ก ์ ์ํฉ๋๋ค.
# ๋ฐ์ดํฐ ์ ๊ทํ
train_images = train_images / 255.0
test_images = test_images / 255.0
ํ๋ จ ๋ฐ์ดํฐ์ ํ ์คํธ ๋ฐ์ดํฐ์ ํฝ์ ๊ฐ์ 0~1 ๋ฒ์๋ก ์ ๊ทํํฉ๋๋ค.
์ด๋ฏธ์ง ํฝ์ ๊ฐ์ 0~255 ๋ฒ์์ธ๋ฐ, 0~255 ๋ฒ์๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ฐ์ ํฌ๊ธฐ ์ฐจ์ด๋ก ์ธํด ํ์ต์ด ๋นํจ์จ์ ์ผ ์ ์์ต๋๋ค.
์ ๊ทํ๋ฅผ ํตํด 0~1 ๋ฒ์๋ก ๋ณํํ์ฌ ๋ฐ์ดํฐ ๋ฒ์๋ฅผ ์ผ์ ํ๊ฒ ๋ง์ถ์ด ํ์ต ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ๋ ์์ ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ ์ ์์ต๋๋ค.
# ๋ชจ๋ธ ์์ฑ
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
๋ฐ์ดํฐ๋ฅผ ํ์ตํ ๋ชจ๋ธ์ ์์ฑํฉ๋๋ค.
# ๋ชจ๋ธ ์ปดํ์ผ
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
๋ชจ๋ธ์ ํ์ตํ ๋ ์ฌ์ฉํ ์ตํฐ๋ง์ด์ , ์์ค ํจ์, ํ๊ฐ ์งํ๋ฅผ ์ค์ ํฉ๋๋ค.
# ๋ชจ๋ธ ํ๋ จ
model.fit(train_images, train_labels, epochs=10)
ํ๋ จ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ์ epochs ํฌ๊ธฐ๋งํผ ๋ฐ๋ณต ํ์ต ์ํต๋๋ค.
ํด๋น ๋ชจ๋ธ์ 10๋ฒ ํ์ต์ํค๊ฒ ๋ฉ๋๋ค.
# ๋ชจ๋ธ ํ๊ฐ
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print(f'\nํ
์คํธ ์ ํ๋: {test_acc}')
ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ์ ์์ค ๊ฐ๊ณผ ์ ํ๋๋ฅผ ํ๊ฐํฉ๋๋ค.
# ์์ธก ์ํ
predictions = model.predict(test_images)
ํ ์คํธ ๋ฐ์ดํฐ์ ๋ํ ๋ชจ๋ธ์ ์์ธก๊ฐ์ ์์ฑํฉ๋๋ค.
# ์ฒซ ๋ฒ์งธ ์ด๋ฏธ์ง ์์ธก ๊ฒฐ๊ณผ ์๊ฐํ
plt.figure()
plt.imshow(test_images[0], cmap=plt.cm.binary)
plt.colorbar()
plt.grid(False)
plt.show()
์ฒซ ๋ฒ์งธ ํ ์คํธ ์ด๋ฏธ์ง์ ์๊ฐํ๋ฅผ ์ํํ์ฌ ์์ธก๋ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
# ์์ธก๋ ๋ ์ด๋ธ ์ถ๋ ฅ
predicted_label = np.argmax(predictions[0])
print(f'์์ธก๋ ๋ ์ด๋ธ: {class_names[predicted_label]}')
๋ฐฐ์ด์์ ๊ฐ์ฅ ๋์ ํ๋ฅ ์ ๊ฐ์ง๋ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํฉ๋๋ค.
predictions[0]์ด [0.1, 0.05, 0.02, 0.8, 0.03, ...]๋ผ๋ฉด np.argmax(predictions[0])์ 3์ ๋ฐํํฉ๋๋ค.
class_names ๋ฆฌ์คํธ์์ ํด๋น ์ธ๋ฑ์ค์ ๋์ํ๋ ํด๋์ค๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ์์ธก๋ ๋ ์ด๋ธ์ ํด๋์ค ์ด๋ฆ์ด ์ถ๋ ฅ๋ฉ๋๋ค.
์ฐธ๊ณ ์ฌ์ดํธ
Keras MNIST ์์ ์ฝ๋
Tensorflow , Kerasยถ ์ด๋ฒ ๊ธ๋ถํฐ ํ ์ํ๋ก์ฐ, ์ผ๋ผ์ค๋ฅผ ์ด์ฉํด์ ๋ช ๊ฐ์ง ์์ ๋ฅผ ์๋ํด ๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๋จผ์ Tensorflow ,keras๊ฐ ๋ญ์ง ์์์ผ๊ฒ ์ฃ ?? ๋จผ์ tensorflow ๋ ๊ตฌ๊ธ์์ ๊ฐ๋ฐํ ๋จธ์ ๋ฌ๋, ๋ฅ
suhyun72.tistory.com
๊ธฐ๋ณธ ๋ถ๋ฅ: ์๋ฅ ์ด๋ฏธ์ง ๋ถ๋ฅ | TensorFlow Core
๊ธฐ๋ณธ ๋ถ๋ฅ: ์๋ฅ ์ด๋ฏธ์ง ๋ถ๋ฅ ์ปฌ๋ ์ ์ ์ฌ์ฉํด ์ ๋ฆฌํ๊ธฐ ๋ด ํ๊ฒฝ์ค์ ์ ๊ธฐ์ค์ผ๋ก ์ฝํ ์ธ ๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฅํ์ธ์. ์ด ํํ ๋ฆฌ์ผ์์๋ ์ด๋ํ๋ ์ ์ธ ๊ฐ์ ์ท ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฅํ๋ ์ ๊ฒฝ๋ง ๋ชจ๋ธ์
www.tensorflow.org
๋ฌธ์ ๊ฐ ์์ผ๋ฉด ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์ !
ํผ๋๋ฐฑ์ ์ธ์ ๋ ํ์์ ๋๋ค <3
'๐ค AI' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[AI] LLM, ์ถ์ฒ ์๊ณ ๋ฆฌ์ฆ (0) | 2025.01.14 |
---|