如何比较两个Keras模型的相似度?

7
我使用函数式API构建了一个Keras模型,并使用model_from_json()函数创建了第二个模型。 我想查看这两个模型的模型层(而不是权重)是否完全相同。
我该如何比较这两个Keras模型?
编辑:
根据下面的评论,我可以可能比较每个层。像下面这样做是否有意义:
for l1, l2 in zip(mdl.layers, mdl2.layers):
    print (l1.get_config() == l2.get_config())

1
你想通过程序比较它们还是仅凭眼睛?model.summary() 对你来说足够或有用吗? - today
我是指以编程方式实现。我想检查它们是否具有相同的形状、正则化等。 - Stergios
也许你可以迭代模型的层并逐一比较,因为你不关心权重或者模型是如何编译和优化的。 - Abdulrahman Bres
@AbdulrahmanBres:好的,那么我该如何比较两个Keras层? - Stergios
2个回答

3

更新: 你的方法是正确的。

你可以迭代两个模型层并逐一比较(因为你不关心权重或模型如何编译和优化)。

你可以这样做:

for l1, l2 in zip(mdl.layers, mdl2.layers):
    print(l1.get_config() == l2.get_config())

或者只需:
print(mdl.get_config() == mdl2.get_config())

zip会取两者中的较短者。 - o17t H1H' S'k

-1

你可以使用ROC曲线来比较分类器。

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


2
Vincent,我不想比较这两个模型的统计性能。我只想确保这两个模型在架构上相似。 - Stergios

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接