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?