sieć neuronowa, rozpoznawanie cyfry z obrazka oraz testowe cyfry

This commit is contained in:
Aniela 2022-05-25 20:21:27 +02:00
parent 4a49e5d829
commit 7200dd8e38
13 changed files with 46 additions and 0 deletions

BIN
digits/digit1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

BIN
digits/digit10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 B

BIN
digits/digit11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 B

BIN
digits/digit12.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 B

BIN
digits/digit2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 B

BIN
digits/digit3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 B

BIN
digits/digit4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 B

BIN
digits/digit5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 B

BIN
digits/digit6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

BIN
digits/digit7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B

BIN
digits/digit8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

BIN
digits/digit9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 B

46
neural_network.py Normal file
View File

@ -0,0 +1,46 @@
import os
import cv2
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
def recognition():
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = tf.keras.utils.normalize(x_train, axis=1)
x_test = tf.keras.utils.normalize(x_test, axis=1)
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28,28)))
model.add(tf.keras.layers.Dense(128, activation='relu'))
model.add(tf.keras.layers.Dense(128, activation='relu'))
model.add(tf.keras.layers.Dense(10, activation='softmax'))
model.compile(optimizer ='adam', loss = 'sparse_categorical_crossentropy', metrics = ['accuracy'])
model.fit(x_train, y_train, epochs = 3)
model.save('handwritten.model')
model = tf.keras.models.load_model('handwritten.model')
image_number = 1
while os.path.isfile(f"digits/digit{image_number}.png"):
try:
img = cv2.imread(f"digits/digit{image_number}.png")[:,:,0]
img = np.invert(np.array([img]))
prediction = model.predict(img)
print(f"This digit is probably a {np.argmax(prediction)}")
plt.imshow(img[0], cmap = plt.cm.binary)
plt.show()
except:
print("Error!")
finally:
image_number +=1
loss, accuracy = model.evaluate(x_test, y_test)
print(loss)
print(accuracy)
recognition()