2017-06-21 1 views
0

Mein Code ist wie folgt:MNIST Valueerror wenn in Keras Ziel Überprüfung

from keras.datasets import mnist 
from keras.utils import np_utils 
from keras.models import Sequential 
from keras.layers import Dense, Activation 

(x_train, y_train), (x_test, y_test) = mnist.load_data() 
y_train = np_utils.to_categorical(y_train, 10) 
y_test = np_utils.to_categorical(y_test, 10) 

model = Sequential() 

model.add(Dense(output_dim=500, input_shape=(28, 28))) 
model.add(Activation("tanh")) 
model.add(Dense(10)) 
model.add(Activation("softmax")) 

model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy']) 
model.fit(x_train, y_train, nb_epoch=50, batch_size=20) 

Dies wird die folgenden Fehler:

ValueError: Error when checking target: expected activation_2 to have 3 dimensions, but got array with shape (60000, 10) 

ich denke, die Form (60000, 10) ist die Form der y_train und dies hat 2 Dimensionen, während 3 Dimensionen irgendwo erwartet werden.

Wo soll ich bearbeiten?

Antwort

0

MNIST-Beispiele sind Bilder mit 28 x 28 Werten (Pixel). Sie möchten mit einem ANN klassifizieren, das nur ein 1-dimensionales Array von Zahlen einbezieht (stellen Sie sich die erste Schicht Ihres ANN als eine 500 lange Reihe von Neuronen vor, die nur eine 500 lange Reihe von Zahlen aber keine 28x28 Matrix verstehen).

Um dies zu beheben Ihre Fehler haben Sie Ihre Daten neu zu gestalten vorher:

(X_train, y_train), (X_test, y_test) = mnist.load_data() 

X_train = X_train.reshape(60000, 784) 
X_test = X_test.reshape(10000, 784) 
X_train = X_train.astype('float32') 
X_test = X_test.astype('float32') 

Y_train = np_utils.to_categorical(y_train, 10) 
Y_test = np_utils.to_categorical(y_test, 10) 

... 

model = Sequential() 
model.add(Dense(512, input_shape=(784,))) 

Wenn Sie in Ihren Daten in 2d einspeisen wollen mehr Genauigkeit zu erreichen, indem die räumliche Ordnung der Bilder zu bewahren, anstatt sie verflacht zu einer langen Liste von Zahlen, als Sie Ihre Modelle Architektur zu einem Convolutional Neural Network (viele Beispiel-Code online, vor allem für MNIST) ändern müssen.

Verwandte Themen