From 7551296681e6b150bd81749b0e6e41cca5e7e34c Mon Sep 17 00:00:00 2001 From: Aniela Date: Mon, 30 May 2022 17:56:30 +0200 Subject: [PATCH] Losowanie trzech liczb i tworzenie z nich liczby trzycyfrowej --- main.py | 3 ++- neural_network.py | 35 +++++++++++++++++++++++------------ 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/main.py b/main.py index b64e9bd..b2c72f4 100644 --- a/main.py +++ b/main.py @@ -125,6 +125,7 @@ def main(): if krata_magazynu.agent.cel is None: nadaj_cel_agentowi(krata_magazynu.agent) krata_magazynu.agent.idzDoCelu() + recognition() if flaga1 == 1: osoba.krata.krata[osoba.wiersz][osoba.kolumna] = ZawartoscPola.PUSTE @@ -146,7 +147,7 @@ def main(): pygame.time.wait(1500) flaga1 = 0 t = threading.Timer(5.0, zdarzenie_osoba).start() - recognition() + try: main() diff --git a/neural_network.py b/neural_network.py index 04e4860..5e49146 100644 --- a/neural_network.py +++ b/neural_network.py @@ -5,6 +5,7 @@ import matplotlib.pyplot as plt import tensorflow as tf import random + mnist = tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() @@ -12,32 +13,42 @@ 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.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.compile(optimizer ='adam', loss = 'sparse_categorical_crossentropy', metrics = ['accuracy']) -model.fit(x_train, y_train, epochs=3) +model.fit(x_train, y_train, epochs = 3) model.save('handwritten.model') model = tf.keras.models.load_model('handwritten.model') - +numery_paczek=[] def recognition(): - image_number = random.randint(1, 9) + digits=[] 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() + for i in range(0,3): + image_number = random.randint(1, 19) + 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)}") + digits.append(np.argmax(prediction)) + plt.imshow(img[0], cmap = plt.cm.binary) + plt.show() except: print("Error!") + liczba = int(str(digits[0]) + str(digits[1])+str(digits[2])) + if liczba in numery_paczek or liczba<100: + recognition() + else: + numery_paczek.append(liczba) + print(liczba) loss, accuracy = model.evaluate(x_test, y_test) - print(loss) print(accuracy) + print(numery_paczek) + return liczba recognition() \ No newline at end of file