Was bedeuten die Zahlen bei der Modelvorhersage (Neuronale Netze, pyTorch)?
Hallo,
ich wollte fragen, was bei pyTorch diese Zahlen bedeuten. Also jede Zahl gehört zu einer Kategorie und sagt aus wie wahrscheinlich es ist, dass das Bild zu der Kategorie gehört. Aber was bedeutet es, wenn eine Zahl hoch oder niedrig oder negativ ist?
print(model.predict(img))
[[-4.743594 5.958418 9.830989 -6.877739 2.5480802]]
Liebe Grüße
2 Antworten
wenn eine Zahl negativ ist, ist “Ja” für die zugehörige Klasse unwahrscheinlich, wenn positiv ist Ja wahrscheinlich. Um diese Zahlen in wahrscheinlichkeitequivalente Zahlen umzuwandeln musst du eine sigmoid funktion benytzen
keine Ahnung was der fehler ist hier, aber checke mal wenn du Binary cross entropy benutzt ob deine loss function “from_logits” true hat. Wenn du sigmoid activation hast solllte es from_logits=false sein.
Habs mal zu softmax verändert, hilft aber auch nicht.
Es erkennt alle Bilder als zugehörig zu einer und derselben Klasse...
Kann es was damit zu tun haben, dass der Datensatz unausgewogen ist?
softmax muss du benutzen wenn jedes sample nur zu einer Klasse gehören kann. Zb “Hund” oder “Katze” -nicht aber “Auto” und “Katze”.
nein, wenn der Datensatz unausgewogen ist, wird meistens nur diese eine Klasse vorhergesagt und der loss würde auch kleiner werden.
Sparse categorical accuracy kenne ich nicht als loss function
Warte mal, du schreibst PyTorch oben und unten verwendest du Keras? Die Zahlen sagen nur aus, wie sicher dein Model vermutlicht bei der Prediction ist. Also brauchst du argmax(output) um die Klasse rauszufinden. Kannst deine Prediction auch durch ne softmax output Funktion laufen lassen, um richtige Wahrscheinlichkeiten zu erhalten. Du wirst dann sehen, dass 9.8 die höchste Wahrscheinlichkeit hat. D.h. das Bild wird vermutlich zur dritten Kategorie gehören.
Danke :) ja, ich hab mich da vertan, ich wechsel leider momentan ständig zwischen den beiden Bibliotheken.
Danke :D Nun trainiert es aber leider nicht mehr :/
model = tf.keras.Sequential([
tf.keras.layers.experimental.preprocessing.Rescaling(1./255),
tf.keras.layers.Conv2D(32, 3, activation='relu'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Conv2D(32, 3, activation='relu'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Conv2D(32, 3, activation='relu'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(num_classes, activation='sigmoid')
])