Neural network

Kersa mnist deep-leaning

Jeg har udforsket en del i maskine læring, og har lavet min egen maskine lærings model. Jeg brugte keras som er googles deep learning API til at lave en model som kan klassificere håndskrevne numre. Projektet er lavet i vs code og skrevet i python. Daten er importen fra keras.datasets.mnist og har over 10'000 billeder til at træne en model med.

Neural network

Preprocessing

Først skal billederne hentes fra serveren. Billederne er sort/hvis på en scala fra 0-255 og hver pixel i billedet er udskiftet med et tal.


            import keras
            import keras.datasets.mnist #import data
            import keras.layers
            
            #asign mnist data variable
            data = keras.datasets.mnist 
            (train_images, train_labels), 
            (test_images, test_labels) = data.load_data()s
            train_images = train_images/255.0
            train_images = train_images/255.0  
                
Neural network

Create and compile model

Jeg brugte keras. Sequential til at lave en model med 3 lag. Første lag er til inputs. der er 784 inputs (28*28). Det midterste lag (hidden layer) har 128 neuroner. Det sidste lag har 10 output neuroner. fra 0 til 9.


                  model = keras.Sequential([
                  # input layer 784/28*28 neurons
                  keras.layers.Flatten(input_shape=(28, 28)),
                  # hidden layer 128 neurons
                  keras.layers.Dense(128, activation=“relu”),
                  # output layer 10 neurons
                  keras.layers.Dense(10, activation=“softmax”) ])
                  # configures the model for training
                  model.compile(optimizer=“Adam”,
                                loss=“sparse_categorical_crossentropy”, metrics=[“accuracy”]) 
                      
Neural network

Train the model

Modellen skal nu tilpasse sig dataen. Flere tusinde billeder bliver vist til modellen sammen med resultatetat billedets Verdi. Det er også 15 epochs, hvilket vil sige at den ser alting 15 gange I tilfældig rækkefølge.


                  # train model
                  model.fit(train_images, train_labels, epochs=15)   
                  # evaluate model
                  test_loss, test_acc = model.evaluate(test_images, test_labels)      
                  # save model
                  model.save(“digit_classifier.h5”)
              
                  
Neural network

Use the model

Nu hvor modellen er gemt som en fil, er det nemt importere den I en ny fil, og bruge den til til at klassificere nye tal. Først importer jeg et billede af et tal. Billedet skal derefter gøres sort/hvis og eskaleres ned til en størrelse på 28 * 28 pixels. Jeg importere modellen som tidligere blev gemt og bruger den til at klassificere det nye billede.


                  import cv2
                  file = r"image.png"
                  image = cv2.imread(file, cv2.IMREAD_GRAYSCALE)
                  img_resized = cv2.resize(image, (28, 28), interpolation=cv2.INTER_LINEAR)
                  img_resized = cv2.bitwise_not(img_resized)
                  
                  model_digit = keras.models.load_model("digit_classifier.h5")
                  predection = model.predict(img_resized)
                  print(class_names[predection])