2017-03-27 2 views
0

Ich würde einen Tipp oder zwei von denen von Ihnen, die mit Keras erfahren sind. Dies ist mein erstes Rodeo, und der Bronco sträubt sich mächtig!Fehler in der Anpassung des Modells und input_shape mit keras ConvNet

Ich habe Lungenbilder vorverarbeitet und 48x48x48mm kubische Arrays extrahiert, die Pixel in Bereichen von Interesse darstellen (dtype = uint8). Ich habe diese 8504 Würfel in * .npy Dateien gespeichert.

Wenn ich eine Liste der Würfel auf das Modell als Trainingsdaten übergeben, in denen ich folgende Fehlermeldung:

„Fehler bei der Überprüfung Modelleingabe: Die Liste der Numpy Arrays, die Sie zu Ihrem Modell sind vorbei ist nicht die Größe, die das Modell erwartet. Es wird erwartet, dass 1 Arrays angezeigt werden, aber stattdessen die folgende Liste mit 8504-Arrays erhalten wird ".

Was könnte ich falsch machen?

Der entsprechende Code:

# input layer of model 
c3d_model.add(Convolution3D(64, 8,8,8, activation='relu', border_mode='same', 
       name='conv1', input_shape=(48, 48, 48, 1))) 
# other layers .... 

# get_data() 
cubes = [np.load(os.path.join(CUBES_DIR, cubefile)) for cubefile in cubefiles] # cubefiles is a list of 8504 filenames 

# shuffle data and labels to avoid skewing the training 
ix = [i for i in range(len(labels))] 
shuffle(ix) 
X_cubes = [cubes[i] for i in ix] 
Y_labels = [labels[i] for i in ix] 

# and here's where I run aground 
model.fit(cubes, Y_labels, validation_split=0.30, nb_epoch=1, batch_size=32, callbacks=[save_weights], verbose=2) 

Dank!

Antwort

1

Der Fehler sagt Keras erwartet ein Array, aber Sie geben ihm eine Liste von Arrays.

Nach schlurfenden, versuchen:

X_cubes = np.array(X_cubes) 
Y_labels = np.array(X_cubes) 

Beachten Sie auch, Sie schlurfen X und Y aber nur die neu gemischt Y zu Keras geben und die ungemischtenX. Ich nehme an, das ist nicht das, was Sie beabsichtigt haben.

+0

Hallo @vega, du hast mich über diesen Fehler, danke! Und ja, das X war ein Fehler. Aber jetzt sehe ich einen anderen Fehler nach X_cubes als numpy Array übergeben: _ValueError: Fehler beim Überprüfen der Modelleingabe: erwartet convolution3d_input_14 zu 5 Dimensionen haben, aber Array mit Form (8504, 1) ._ Irgendwelche Gedanken dazu? – ChrisFal

+0

Ja, Ihre Eingabe ist die falsche Form. Wenn Sie 'cubes [0] .shape 'eingeben, was sagt es? Wie werden die Daten in der Datei formatiert, aus der Sie laden? Sie müssen dies wissen, damit Sie wissen, wie Sie die Daten für das Netzwerk richtig gestalten. – vega

+0

Würfel [0] .shape == (48, 48, 48) - Schätzen Sie die Hilfe, @vega! – ChrisFal

Verwandte Themen