Я хотел бы рассчитать уверенность/уверенность модели NN (см. Что моя глубокая модель не знает) - когда NN говорит мне изображение представляет "8" , я хотел бы знать, насколько он определен. Является ли моя модель 99% уверенной, что она "8" , или это 51%, это "8" , но она также может быть "6"? Некоторые цифры довольно неоднозначны, и я хотел бы знать, для каких изображений модель просто "переворачивает монету".
Я нашел некоторые теоретические труды об этом, но мне трудно помещать это в код. Если я правильно понимаю, я должен несколько раз оценивать тестовое изображение, "убивая" разные нейроны (используя исключение), а затем...?
Работая с набором данных MNIST, я запускаю следующую модель:
from keras.models import Sequential
from keras.layers import Dense, Activation, Conv2D, Flatten, Dropout
model = Sequential()
model.add(Conv2D(128, kernel_size=(7, 7),
activation='relu',
input_shape=(28, 28, 1,)))
model.add(Dropout(0.20))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(Dropout(0.20))
model.add(Flatten())
model.add(Dense(units=64, activation='relu'))
model.add(Dropout(0.25))
model.add(Dense(units=10, activation='softmax'))
model.summary()
model.compile(loss='categorical_crossentropy',
optimizer='sgd',
metrics=['accuracy'])
model.fit(train_data, train_labels, batch_size=100, epochs=30, validation_data=(test_data, test_labels,))
Вопрос: как я должен прогнозировать с помощью этой модели, чтобы я также уверен в своих прогнозах? Я был бы признателен за некоторый практический пример (желательно в Keras, но любой будет делать).
РЕДАКТИРОВАТЬ: пояснить, я ищу пример, как получить определенность, используя метод, описанный Юрином Галом (или объяснение, почему другой метод дает лучшие результаты).