我想计算神经网络模型的确定性/置信度(见What my deep model doesn't know) - 当NN告诉我的形象代表“8”,我想知道它是如何确定的。我的模型99%确定它是“8”还是51%是“8”,但它也可以是“6”?有些数字相当模糊,我想知道模型只是“翻转硬币”的图像。如何使用Keras计算预测不确定性?
我发现一些有关此理论著作,但我有麻烦把这个代码。如果我理解正确,我应该多次评估测试图像,同时“杀死”不同的神经元(使用丢失),然后......?
上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,))
问:我应该怎么用这个模型预测,使我得到了肯定的预测大概过?我会感激一些实际的例子(最好在凯拉斯,但任何会做)。为了澄清,我正在寻找如何使用Yurin Gal概述的方法(或解释为什么其他方法产生更好的结果)得到确定性的例子。
这看起来像我正在寻找的!不幸的是,当我离开时赏金过期了),所以我会开始并奖励另一个。谢谢! (编辑:但当然,我只能奖励双倍,并且只能在24小时后...直到明天它才是......) – johndodo