在Python中调用错误的函数版本

时间:2017-12-13 04:06:22

标签: python tensorflow deep-learning keras

我正在检索Keras / Tensorflow中的Inception V3模型的顶层(在Jupyter Notebook中)。

我可以正确检索Inception V3模型及其权重。 现在,我正在尝试使用以下代码片段获得完全连接层(顶层)。

base_model = InceptionV3(weights=weights)
base_model.get_layer('flatten')

但是,功能失败了 “ValueError:没有这样的图层:展平”

当我查看stacktrace时,来自topology.py的get_layer()函数被调用,该函数位于'keras / engine'下。

而不是这个函数,应该直接在 keras 下的models.py中调用get_layer()函数。

可能是什么问题?如何强制Python调用正确的版本?或者还有其他方法可以从InceptionV3模型中获得权重吗?

只是尝试枚举base_model.layers列表内容,发现图层名称不同,找不到名为展平的图层。 所以我用最后一个名为' mixed10 '的FC层替换了flatten,代码运行完毕。

这是正确的做法吗?或者我做错了什么?

2 个答案:

答案 0 :(得分:0)

事实证明,这些图层的名称不断变化。因此,最好的方法是使用Model.layers[].nameModel.summary()枚举所有图层名称,并使用输出中列出的任何名称。

答案 1 :(得分:0)

InceptionV3模型没有'flatten'图层

获取顶部完全连接的图层,您可以使用

base_model = InceptionV3(weights=weights, include_top=False)