diff --git a/digits/digit1.png b/digits/digit1.png new file mode 100644 index 0000000..84e08ef Binary files /dev/null and b/digits/digit1.png differ diff --git a/digits/digit10.png b/digits/digit10.png new file mode 100644 index 0000000..289f4a4 Binary files /dev/null and b/digits/digit10.png differ diff --git a/digits/digit11.png b/digits/digit11.png new file mode 100644 index 0000000..fe878ca Binary files /dev/null and b/digits/digit11.png differ diff --git a/digits/digit12.png b/digits/digit12.png new file mode 100644 index 0000000..9ec2b52 Binary files /dev/null and b/digits/digit12.png differ diff --git a/digits/digit2.png b/digits/digit2.png new file mode 100644 index 0000000..158db36 Binary files /dev/null and b/digits/digit2.png differ diff --git a/digits/digit3.png b/digits/digit3.png new file mode 100644 index 0000000..ddb0eb6 Binary files /dev/null and b/digits/digit3.png differ diff --git a/digits/digit4.png b/digits/digit4.png new file mode 100644 index 0000000..1ddec60 Binary files /dev/null and b/digits/digit4.png differ diff --git a/digits/digit5.png b/digits/digit5.png new file mode 100644 index 0000000..36f7d73 Binary files /dev/null and b/digits/digit5.png differ diff --git a/digits/digit6.png b/digits/digit6.png new file mode 100644 index 0000000..0ac2082 Binary files /dev/null and b/digits/digit6.png differ diff --git a/digits/digit7.png b/digits/digit7.png new file mode 100644 index 0000000..0b73f62 Binary files /dev/null and b/digits/digit7.png differ diff --git a/digits/digit8.png b/digits/digit8.png new file mode 100644 index 0000000..d3c9223 Binary files /dev/null and b/digits/digit8.png differ diff --git a/digits/digit9.png b/digits/digit9.png new file mode 100644 index 0000000..311e9d1 Binary files /dev/null and b/digits/digit9.png differ diff --git a/neural_network.py b/neural_network.py new file mode 100644 index 0000000..1247f86 --- /dev/null +++ b/neural_network.py @@ -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() \ No newline at end of file