-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathimage_recognition1.py
More file actions
77 lines (62 loc) · 2.28 KB
/
Copy pathimage_recognition1.py
File metadata and controls
77 lines (62 loc) · 2.28 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import tensorflow as tf
from tensorflow import keras
import matplotlib.pyplot as plt
import numpy as np
import random
# --- 1. Load dataset MNIST ---
mnist = keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# Normalisasi data (ubah nilai pixel dari 0–255 menjadi 0–1)
x_train, x_test = x_train / 255.0, x_test / 255.0
# Ambil subset data
subset_train = 10000
subset_test = 2000
x_train, y_train = x_train[:subset_train], y_train[:subset_train]
x_test, y_test = x_test[:subset_test], y_test[:subset_test]
# model Neural Network sederhana
# Model terdiri dari 3 lapisan:
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(64, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
# Kompilasi model
model.compile(
optimizer='adam', # algoritma optimasi
loss='sparse_categorical_crossentropy', # label angka
metrics=['accuracy'] # akurasi
)
# Latih model
print("Training sedang berjalan...\n")
model.fit(
x_train, y_train,
epochs=3,
batch_size=128,
validation_split=0.1,
verbose=2
)
# 6. Evaluasi hasil pada data uji
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)
print(f"\nAkurasi pada data test: {test_acc * 100:.2f}%")
# Prediksi satu gambar acak
# Pilih satu gambar dari data uji
index = random.randint(0, len(x_test) - 1)
plt.imshow(x_test[index], cmap='gray')
plt.title(f"Asli: {y_test[index]} (index {index})")
plt.axis('off')
plt.show()
# Model membuat prediksi untuk gambar tersebut
pred = model.predict(np.expand_dims(x_test[index], axis=0), verbose=0)
print(f"Prediksi model: {np.argmax(pred)}")
# Tampilkan 5 gambar acak dengan hasil prediksi
print("\nMenampilkan 5 gambar acak dari dataset test:")
for i in range(5):
idx = random.randint(0, len(x_test) - 1)
# Tampilkan gambar
plt.imshow(x_test[idx], cmap='gray')
plt.title(f"Asli: {y_test[idx]} (index {idx})")
plt.axis('off')
plt.show()
# Prediksi dan tampilkan hasilnyo
pred = model.predict(np.expand_dims(x_test[idx], axis=0), verbose=0)
print(f"Gambar ke-{i+1} → Asli: {y_test[idx]}, Prediksi: {np.argmax(pred)}")