自动比较keras中两个cnn模型的结果

时间:2018-03-02 03:57:13

标签: python keras

我关注此博文: https://yashk2810.github.io/Applying-Convolutional-Neural-Network-on-the-MNIST-dataset/
并使用该模型处理我的数据。

使用的keras模型是:

Agent

上面说的是模型A,具有批量标准化,模型B是模型A的副本但没有批量标准化。

我有15个测试文件,我可以计算精度回忆精度等 目前,我正在训练模型A记录终端上出现的结果,然后训练模型B并注意那些结果并进行比较。

有没有办法将两种模型的结果自动保存为表格格式,以便我可以轻松比较两种情况下各种指标的差异?

不是很重要但是, 我想到的结构类似于R数据帧

model = Sequential()

model.add(Conv2D(32, (3, 3), input_shape=(28,28,1)))
model.add(BatchNormalization(axis=-1))
model.add(Activation('relu'))
model.add(Conv2D(32, (3, 3)))
model.add(BatchNormalization(axis=-1))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Conv2D(64,(3, 3)))
model.add(BatchNormalization(axis=-1))
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3)))
model.add(BatchNormalization(axis=-1))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Flatten())

# Fully connected layer
model.add(Dense(512))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(10))

model.add(Activation('softmax'))  

谢谢。

PS:为了清楚,我知道我可以将每次运行的结果保存到列表/字典中,然后根据需要重新整形。

我的问题,如果我宣布3-4个型号,我该如何自动比较性能?

1 个答案:

答案 0 :(得分:1)

我实际上不知道如何自动比较模型,但通常使用ROC曲线来比较分类器。我建议你阅读Fawcett关于ROC分析的论文。您可以在ResearchGate上申请。

ROC Analysis

使用二元分类器,可以计算所有可能阈值的真阳性率和假阳性率,并绘制y轴上的第一个和x轴上的第二个。可以对每个分类器得到的曲线进行积分,得到的积分,即所谓的“曲线下面积”,等于分类器使随机选择的正样本高于随机选择的负样本的概率。此值可用于比较分类器,因为较高的值表示总体上比较低的值更好。 Fawcett还给出了一种将其应用于多类分类的方法。