目前我一直在学习:
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adadelta(),
metrics=['accuracy'])
model.fit(x_train, y_train,
batch_size=batch_size,
epochs=epochs,
verbose=1,
shuffle='batch',
validation_data=(x_test, y_test),
callbacks=callbacks)
每个纪元都会输出这些指标,所以我知道它的表现如何:
from sklearn.metrics import confusion_matrix
predictions = model.predict(x_test)
y_test = np.argmax(y_test, axis=-1)
predictions = np.argmax(predictions, axis=-1)
c = confusion_matrix(y_test, predictions)
print('Confusion matrix:\n', c)
print('sensitivity', c[0, 0] / (c[0, 1] + c[0, 0]))
print('specificity', c[1, 1] / (c[1, 1] + c[1, 0]))
根据我的架构,我在93或155纪元获得了更好的结果;然后它变得更糟。很明显我的metrics
是错误的。
我如何从每个时代的敏感性和特异性结果中学习?
答案 0 :(得分:0)
要从灵敏度和特异性结果中学习,您可以编写自定义损失函数,其中根据您的混淆矩阵结果计算损失。或者,您可以尝试使用keras model.fit()中的class_weight
参数,并根据您的模型难以学习的内容为类指定不同的权重。