From 6f9206cf5509cc44cbc56631defbbd1f4d84704c Mon Sep 17 00:00:00 2001 From: Daria Vodzinska Date: Mon, 8 Jun 2020 12:01:09 +0000 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82=D1=8C=20's?= =?UTF-8?q?ieci.md'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sieci.md | 89 -------------------------------------------------------- 1 file changed, 89 deletions(-) delete mode 100644 sieci.md diff --git a/sieci.md b/sieci.md deleted file mode 100644 index 5445256..0000000 --- a/sieci.md +++ /dev/null @@ -1,89 +0,0 @@ -# Temat podptojektu: -Stworzenie sieci neuronowej, która rozpoznaje odręcznie napisaną na paczce liczbę, która oznacza producenta paczki. - -# Uczenie modelu -## Dane wejściowe: -### Pakiet Keras MNIST: -- dwa pliki: - - Plik z obrazkami - - Plik z poprawnymi odpowiedziami -### Format obrazków: -- rozmiar 28x28 -- odcienie szarości (0-biały, 255- czarny) -- obrazki w postaci binarnej są zapisane w jeden plik -## Praca z pakietem: -1. Zdefiniowano dane treningowe: tensory wejściowe i tensory wartości docelowych. -2. Zdefiniowano warstwy sieci (lub modelu) przypisującej dane wejściowe do docelowych wartości. -3. Skonfigurowano proces uczenia, wybierając funkcję straty, optymalizator i monitorowane metryki. -4. Wykonano iteracje procesu uczenia na danych treningowych, wywołując metodę -fit() zdefiniowanego modelu - -# Proces uczenia --ustawiam seed, aby powtarzać wyniki --pobieram dane -- konwertuję wymiary obrazu -- normalizuję dane -- konwertuję etykiety w kategorie -## Inicjalizuję sieć neuronową (sieć sekwencyjna). - model = Sequential() - model.add(Conv2D(75, kernel_size=(5, 5), - activation='relu', - input_shape=input_shape)) - model.add(MaxPooling2D(pool_size=(2, 2))) - model.add(Dropout(0.2)) - model.add(Conv2D(100, (5, 5), activation='relu')) - model.add(MaxPooling2D(pool_size=(2, 2))) - model.add(Dropout(0.2)) - model.add(Flatten()) - model.add(Dense(500, activation='relu')) - model.add(Dropout(0.5)) - model.add(Dense(10, activation='softmax')) -### Dołączam kolejno warstwy: -- Conv2D - mnoży obrazek przez macierz 2x2 -- activation='relu' - zeruje negatywne wyniki (funkcja aktuwacji) -- MaxPooling2D - zmienia rozdzielczość zdjęcia -- Droupout - ogranicza nadmierne dopasowanie -- Flatten - spłaszcza macierz do wektora -- Dense(10) - decyduje o przynależności zdjęcia do kategorii (cyfry od 0 do 9) -Activation='soft-max' - zwraca rozkład prawdopodobieństwa 10 różnych klas - -## Kompilacja modelu: - model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"]) -Funkcja straty - "catecorical_crossentropy" -Optymalizator - "Adam" -Monitorowanie dokładności - "accuracy" - -## Trenowanie modelu: - model.fit(X_train, Y_train, batch_size=200, epochs=10, validation_split=0.2, verbose=1) -trenuję model za pomocą funkcji fit() -### Pokazuję dokładność pracy na testowanych rannych - scores = model.evaluate(X_test, Y_test, verbose=0) - print("Dokadnosc na testowanych dannych: %.2f%%" % (scores[1]*100)) - -# Integracja z projektem -Tworzę model i ładuję wagi nauczonego modelu. - - image_cl = Sequential() - ImageClass(image_cl) - image_cl.load_weights('model_weights.h5') - -Po podniesieniu paczki odpalana jest funkcja imgSkan(), która z czytuje ręcznie napisaną cyfrę i wpisuje nr producenta paczki. - - def imgSkan(): - img = files.upload() - !ls - img_path = '2.png' - img = image.load_img(img_path, target_size=(28, 28), color_mode = "grayscale") - plt.imshow(img.convert('RGBA')) - plt.show() - x = image.img_to_array(img) - x = np.expand_dims(x, axis=0) - x = 255 - x - x /= 255 - prediction = model.predict(x) - prediction = np.argmax(prediction) - print("Cyfra:", prediction) - - - -