keras print accurasy

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
toper
User
Beiträge: 74
Registriert: Freitag 13. April 2018, 14:37

Hallo zusammen,
ich habe ein Programm geschrieben das mit Hilfe von keras hunde und katzen unterscheidet.

Im ersten Programm wird die KI trainiert.
Im zweiten lasse ich es anhand eines Testbildes vorhersagen was es ist:

Code: Alles auswählen

import os
import numpy as np
from keras.models import Sequential
from keras.layers import Activation, Dropout, Flatten, Dense
from keras.preprocessing.image import ImageDataGenerator
from keras.layers import Convolution2D, MaxPooling2D, ZeroPadding2D
from keras import optimizers
from keras.preprocessing import image
try:
    img_width, img_height = 150, 150
    
    model = Sequential()
    model.add(Convolution2D(32, 3, 3, input_shape=(img_width, img_height,3)))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))

    model.add(Convolution2D(32, 3, 3))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))

    model.add(Convolution2D(64, 3, 3))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))

    model.add(Flatten())
    model.add(Dense(64))
    model.add(Activation('relu'))
    model.add(Dropout(0.5))
    model.add(Dense(1))
    model.add(Activation('sigmoid'))

    


    model.load_weights('C:/Users/Tobias_Arbeit/Desktop/test/test.h5')



    model.compile(loss='binary_crossentropy',
                  optimizer='rmsprop',
                  metrics=['accuracy'])

    


    img = image.load_img("C:/Users/Tobias_Arbeit/Desktop/79.jpg", target_size=(img_width,img_height))
    x = image.img_to_array(img)
    x = np.expand_dims(x, axis=0)

    images = np.vstack([x])
    prediction = model.predict_classes(images, batch_size=10)
    if(prediction==1):
        print("Hund")
    if(prediction==0):
        print("Katze")
    
    x = input("")

except Exception as e:
    print(e)
    x = input("ERRORRRRRRR")

Meine Frage:
Wie kann ich die genauigkeit, also accurasy, loss wert e.t.c anzeigen lassen?
Benutzeravatar
__blackjack__
User
Beiträge: 14050
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@toper: Allgemeine Anmerkungen zum Quelltext: Es wird einiges importiert was überhaupt nicht verwendet wird.

Um die Bedingung bei ``if`` gehören keine Klammern und man sollte es selbst in Fällen wo man Klammern braucht, so schreiben, dass es aussieht als wäre ``if`` eine Funktion.

`x` ist ein schlechter Name und wird für verschiedene Dinge verwendet. Wobei die sinnfreien `input()`-Aufrufe und die Ausnahmebehandlung die einfach nur die Fehlersuche erschwert, da sowieso nichts zu suchen haben.

Bei der Auswertung von `prediction` sollte das zweite ``if`` ein ``elif`` sein, denn `prediction` kann ja nicht gleichzeitig 0 und 1 sein.

Zwischenstand (ungetestet):

Code: Alles auswählen

#!/usr/bin/env python3

import numpy as np
from keras.layers import (
    Activation,
    Convolution2D,
    Dense,
    Dropout,
    Flatten,
    MaxPooling2D,
)
from keras.models import Sequential
from keras.preprocessing.image import img_to_array, load_img


def main():
    image_width, image_height = 150, 150

    model = Sequential()
    model.add(
        Convolution2D(32, 3, 3, input_shape=(image_width, image_height, 3))
    )
    model.add(Activation("relu"))
    model.add(MaxPooling2D(pool_size=(2, 2)))

    model.add(Convolution2D(32, 3, 3))
    model.add(Activation("relu"))
    model.add(MaxPooling2D(pool_size=(2, 2)))

    model.add(Convolution2D(64, 3, 3))
    model.add(Activation("relu"))
    model.add(MaxPooling2D(pool_size=(2, 2)))

    model.add(Flatten())
    model.add(Dense(64))
    model.add(Activation("relu"))
    model.add(Dropout(0.5))
    model.add(Dense(1))
    model.add(Activation("sigmoid"))

    model.load_weights("C:/Users/Tobias_Arbeit/Desktop/test/test.h5")

    model.compile(
        loss="binary_crossentropy", optimizer="rmsprop", metrics=["accuracy"]
    )

    image = load_img(
        "C:/Users/Tobias_Arbeit/Desktop/79.jpg",
        target_size=(image_width, image_height),
    )
    image_data = img_to_array(image)
    image_data = np.expand_dims(image_data, axis=0)
    images = np.vstack([image_data])
    
    prediction = model.predict_classes(images, batch_size=10)
    if prediction == 1:
        print("Hund")
    elif prediction == 0:
        print("Katze")


if __name__ == "__main__":
    main()
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten