【发布时间】:2017-09-17 16:50:56
【问题描述】:
我想计算 NN 模型的确定性/置信度(请参阅 What my deep model doesn't know) - 当 NN 告诉我图像代表“8”时,我想知道它有多确定。我的模型 99% 确定它是“8”还是 51% 确定它是“8”,但也可能是“6”?有些数字很模糊,我想知道模型只是“抛硬币”。
我找到了一些关于此的理论著作,但我无法将其放入代码中。如果我理解正确,我应该多次评估测试图像,同时“杀死”不同的神经元(使用 dropout)然后......?
在 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 中,但任何人都可以)。
为了澄清,我正在寻找一个如何使用the method outlined by Yurin Gal 获得确定性的示例(或解释为什么其他一些方法会产生更好的结果)。
【问题讨论】:
标签: machine-learning neural-network deep-learning keras uncertainty