我正在检索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,代码运行完毕。
这是正确的做法吗?或者我做错了什么?
答案 0 :(得分:0)
事实证明,这些图层的名称不断变化。因此,最好的方法是使用Model.layers[].name
或Model.summary()
枚举所有图层名称,并使用输出中列出的任何名称。
答案 1 :(得分:0)
InceptionV3
模型没有'flatten'
图层
获取顶部完全连接的图层,您可以使用
base_model = InceptionV3(weights=weights, include_top=False)