0

Ich habe eine Frage in Bezug auf konvolutionelles neuronales Netzwerk (CNN) Training.Convolutional Neural Network Training

Ich habe es geschafft, ein Netzwerk unter Verwendung tensorflow zu trainieren, die ein Eingabebild (1600 Pixel) nimmt und eine von drei Klassen ausgibt, die es entsprechen.

Das Testen des Netzwerks mit Variationen der trainierten Klassen liefert gute Ergebnisse. Jedoch; Wenn ich ein anderes -viertes Bild gebe (enthält keines der trainierten 3 Bilder), gibt es immer eine zufällige Übereinstimmung an eine der Klassen zurück.

Meine Frage ist, wie kann ich ein Netzwerk trainieren, um zu klassifizieren, dass das Bild nicht zu einem der drei trainierten Bilder gehört? Ein ähnliches Beispiel, wenn ich ein Netzwerk gegen die mnist Datenbank trainierte und dann a das Zeichen "A" oder "B" gab. Gibt es eine Möglichkeit zu unterscheiden, dass die Eingabe keiner der Klassen angehört?

Danke

Antwort

0

Faltungs Neural Network (CNN) nach dem Training das Ergebnis aus den definierten Klassen prognostiziert. CNN kehren immer von einer der Klassen unabhängig von der Genauigkeit zurück. Ich habe ein ähnliches Problem konfrontiert, was Sie tun können, ist auf Genauigkeit Wert zu überprüfen. Wenn die Genauigkeit unter einem Schwellenwert liegt, gehört es keiner Kategorie an. Hoffe das hilft.

+0

Dies wird höchstwahrscheinlich nicht funktionieren. Wenn Ihr CNN-Klassifikator eine Eingabe erhält, an der er nicht trainiert wird, stellt sich oft heraus, dass es sehr sicher ist, dass es eine bestimmte Klasse ist, die er kennt. Sie benötigen eine separate Klasse mit zufälligen Bildern, die nicht für Ihre Trainingsklassen stehen. CNNs "kehren nicht immer von einer der Klassen zurück". Sie können sehr wohl Rückschritte auf CNNS machen. – Jodo

0

Ihr Modell wird immer Vorhersagen wie Ihre Beschriftungen treffen. Wenn Sie also beispielsweise Ihr Modell mit MNIST-Daten trainieren, wird die Vorhersage immer wie bei MNIST-Beschriftungen immer 0-9 sein.

Sie können ein anderes Modell zuerst mit 2 Klassen trainieren, in denen Sie vorhersagen, ob ein Bild zu Datensatz A oder B gehört. E.x. Für MNIST-Daten bezeichnen Sie alle Daten als 1 und fügen Daten aus anderen Quellen (nicht 0-9) hinzu und benennen sie als 0. Dann trainieren Sie ein Modell, um herauszufinden, ob das Bild zu MNIST gehört oder nicht.

+0

Vielen Dank für Ihre Antwort. Ich habe darüber nachgedacht, aber wenn ich ein anderes Modell habe, bedeutet das, dass ich es auf alles andere trainieren muss (was irgendwie unmöglich ist). Ich dachte über eine andere Lösung nach, wenn ich das Bild in 4 oder 5 Segmente beschnitt und sie dann für verschiedene Klassen trainierte (z. B. Segment # 1 wird an Ausgabeknoten # 1 angepasst und so weiter). Ich denke, das kann es schwieriger machen, die genaue Übereinstimmung in jedem Segment zu finden, wenn ein anderes Bild präsentiert wird. – fidz81

0

Sie haben wahrscheinlich drei Ausgangsknoten und wählen den Maximalwert (One-Hot-Encoding). Das ist ein bisschen unglücklich, da es eine geringe Anzahl von Ausgaben ist. Nicht erkannte Eingaben neigen dazu, ziemlich zufällige Ausgaben zu verursachen.

Jetzt, mit 3 Ausgaben, grob gesprochen können Sie 7 Ergebnisse erhalten. Sie können einen einzelnen hohen Wert (3 Möglichkeiten) erhalten, aber ein nicht erkannter Eingang kann auch 2 hohe Ausgänge (auch 3 Möglichkeiten) oder ungefähr gleiche Leistung (auch 3 Möglichkeiten) verursachen. Es gibt also eine gute Chance (~ 3/7) zufällige Eingaben, die ein Muster auf den Ausgabeknoten erzeugen, das Sie nur für eine erkannte Eingabe erwarten würden.

Wenn Sie nun 15 Klassen und somit 15 Ausgabeknoten hätten, würden Sie ungefähr 32767 mögliche Ergebnisse für nicht erkannte Eingaben betrachten, von denen nur 15 erwarteten erwarteten Ergebnissen entsprechen.

Dies ist ein Mangel an Trainingsdaten. Wenn dein Trainingssatz Beispiele außerhalb der 3 Klassen hat, kannst du es einfach in eine vierte "andere" Kategorie werfen und damit trainieren. Dies ist an sich kein zuverlässiger Hinweis, da normalerweise der theoretische "andere" Satz riesig ist, aber Sie haben jetzt zwei komplementäre Wege, andere Eingaben zu erkennen: entweder durch den "anderen" Ausgangsknoten oder durch einen der 11 mehrdeutigen Ausgänge.

Verwandte Themen