I have built the following model:
def create_model(conv_kernels = 32, dense_nodes = 512):
model_input=Input(shape=(img_channels, img_rows, img_cols))
x = Convolution2D(conv_kernels, (3, 3), padding ='same', kernel_initializer='he_normal')(model_input)
x = Activation('relu')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Convolution2D(conv_kernels, (3, 3), kernel_initializer='he_normal')(x)
x = Activation('relu')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Dropout(0.25)(x)
x = Flatten()(x)
conv_out = (Dense(dense_nodes, activation='relu', kernel_constraint=maxnorm(3)))(x)
x1 = Dense(nb_classes, activation='softmax')(conv_out)
x2 = Dense(nb_classes, activation='softmax')(conv_out)
x3 = Dense(nb_classes, activation='softmax')(conv_out)
x4 = Dense(nb_classes, activation='softmax')(conv_out)
lst = [x1, x2, x3, x4]
model = Model(inputs=model_input, outputs=lst)
sgd = SGD(lr=lrate, momentum=0.9, decay=lrate/nb_epoch, nesterov=False)
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
return model
When I do a prediction:
model.predict(X_test)
it works properly. However, when I want to get prediction probability like this:
model.predict_proba(X_test)
my model has no predict_proba function. Why not? Is it because of the multiple-output nature of the model?
predict
method returns exactly the probability of each class. Although the first link that I've provided has referred to that point, I add here an example that I just tried:import numpy as np model.predict(X_train[0:1])
and the output is:array([[ 0.24853359, 0.24976347, 0.25145116, 0.25025183]], dtype=float32)
. Moreover, about the predict_proba, I tried to call it but there was not such method apparently. In the first link there was not discussion about that. for documentation you have to refer to the original docs. The reason is that the github version may still be unstable. – Green Falcon Dec 20 '17 at 15:30