2017-05-16 7 views
3

Ich versuche, eine Bildklassifizierung Aufgabe mit einem vortrainierten VGG16-Modell in Keras durchzuführen. Der Code, den ich geschrieben habe, gemäß den Anweisungen in den Keras application page ist:Keras: Vgg16 - Fehler in `decode_predictions '

from keras.applications.vgg16 import VGG16 
from keras.preprocessing import image 
from keras.applications.vgg16 import preprocess_input, decode_predictions 
import numpy as np 

model = VGG16(weights='imagenet', include_top=True) 
img_path = './train/cat.1.jpg' 
img = image.load_img(img_path, target_size=(224, 224)) 
x = image.img_to_array(img) 
x = np.expand_dims(x, axis=0) 
x = preprocess_input(x) 

features = model.predict(x) 
(inID, label) = decode_predictions(features)[0] 

, die auf den Code ganz ähnlich in this question gezeigt schon im Forum gefragt. Aber trotz mit den include_top Parametern als Wahren, erhalte ich folgende Fehlermeldung:

Traceback (most recent call last): 
    File "vgg16-keras-classifier.py", line 14, in <module> 
    (inID, label) = decode_predictions(features)[0] 
ValueError: too many values to unpack 

Jede Hilfe wird sehr geschätzt werden! Vielen Dank!

Antwort

1

Es ist, weil (nach einer Funktionsdefinition, die here gefunden werden kann) eine Funktion decode_predictions eine dreifache (class_name, class_description, score) zurückgibt. Deshalb behauptet es, dass es zu viele Werte zum Auspacken gibt.

+1

Danke für die Antwort! Stellt man einfach 'result = decode_predictions (features)' ein, dann befindet sich die Ausgabe tatsächlich in einem anderen Array wie '[[(a1, b1, c1), ..., (a5, b5, c5)]]' . Um also das beste Ergebnis zu erhalten, muss man 'decode_predictions (features) [0] [0]' schreiben – Prabaha