How to get predicted values in Keras?

Viewed 35279

In Keras test sample evaluation is done like this

score = model.evaluate(testx, testy, verbose=1)

This does not return predicted values. There is a method predict which return predicted values

model.predict(testx, verbose=1)

returns

[ 
[.57 .21 .21]
[.19 .15 .64]
[.23 .16 .60] 
.....
]

testy is one hot encode and its values are like this

[
[1 0 0]
[0 0 1]
[0 0 1]
]

How can the predicted values like testy or how to convert the predicted values to one hot encoded?

note: my model looks like this

# setup the model, add layers
model = Sequential()
model.add(Conv2D(32, kernel_size=(3,3), activation='relu', input_shape=input_shape))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(classes, activation='softmax'))

# compile model
model.compile(loss=keras.losses.categorical_crossentropy, optimizer=keras.optimizers.Adadelta(), metrics=['accuracy'])

# fit the model
model.fit(trainx, trainy, batch_size=batch_size, epochs=iterations, verbose=1, validation_data=(testx, testy))
3 Answers

The function predict_classes() will be deprecated. Now in order to obtain the one hot encoding you will have only to do on softmax (model.predict(q) > 0.5).astype("int32").

Related