2016-10-16 5 views
1

Mit tflearn versuche ich Bilder zu klassifizieren.Unerwartete Vorhersagewerte, tflearn

Mein Code ist

import tflearn 
dataset_file = 'my_dataset.txt' 

X, Y = tflearn.data_utils.image_preloader(dataset_file, image_shape=(128, 128),categorical_labels=True, mode='file', grayscale=True, normalize=True) 

net = tflearn.input_data(shape=(128,128)) 
net = tflearn.fully_connected(net, 2, activation='linear') 
net = tflearn.regression(net, optimizer='adam', loss='categorical_crossentropy') 

model = tflearn.DNN(net, tensorboard_verbose=3) 
model.fit(X, Y) 

print(model.predict(X)) 

Dataset-Datei wie folgt:

1.jpg 1 
2.jpg 1 
3.jpg 1 
4.jpg 1 
5.jpg 0 
6.jpg 0 
7.jpg 0 

... wo 1 und 0 Klassen von Bildern sind.

Meine Prognosen sind nicht das, was ich erwarten würde, aber:

[[2.9711711406707764, -3.049826145172119], [9.435855865478516, -11.466367721557617], [-3.7774205207824707, -4.090094089508057], [-7.006657600402832, -3.4418578147888184], [-18.654706954956055, -0.9354709982872009], [-17.237045288085938, -3.1278553009033203], [-18.066274642944336, -1.6454157829284668]] 

Ich erwarte ein Spiel für Bildtyp 1 oder 0 nur ein Anfänger in tflearn zu sehen, nicht sicher, was zu tun ist .

+1

bemerken In 'tflearn.Regression' haben Sie versucht, Einstellung' to_one_hot = True, n_classes = 2'? –

+0

das gibt mir ValueError: Kann Wert der Form (7, 2) für Tensor nicht liefern 'TargetsData/Y: 0', die Form hat (?,) ' – kaboom

Antwort

1

Versuchen Sie fully_connected Schicht Ändern 'softmax' Aktivierung

net = tflearn.fully_connected(net, 2, activation='softmax') 

Nun zu verwenden, sollten Sie Ausgänge der Form bekommen:

predictions = [[0.999962568283081, 3.739727253559977e-05], 
       [0.999962568283081, 3.739727253559977e-05], 
       ...] 

Hier predictions[i][j] ist die Wahrscheinlichkeit, dass das ith Element im Test Set hat Klasse j. Sie werden für alle i 's sum(predictions[i]) == 1.0

+0

Summe der Vorhersagen [i] kann nicht 1 sein, da zuerst 2 i sind ungefähr 0,999. – kaboom

+0

'sum ([0.999962568283081, 3.739727253559977e-05]) ~ 1.0' ist was ich meinte. 'Vorhersagen [i]' ist die Liste der Wahrscheinlichkeiten für jede Klasse. –