gpt4 book ai didi

python - 保存并从磁盘重新加载后获取 Keras 模型的(输入)层

转载 作者:行者123 更新时间:2023-12-01 00:57:19 26 4
gpt4 key购买 nike

我已经通过 Keras 加载、扩展、训练了 VGG16 网络,然后将其保存到磁盘:

from keras.applications import VGG16
from keras import models

conv_base = VGG16(weights="imagenet", include_top=False)
model = models.Sequential()
model.add(conv_base)
...
model.compile(...)
model.fit(...)
model.save("saved_model.h5")

在另一个脚本中,我再次加载经过训练的模型:

from keras.models import load_model

model_vgg16 = load_model("saved_model.h5")
model_fails = model_vgg16.get_layer("vgg16")
model_fails.input

最后一行导致以下异常:

AttributeError: Layer vgg16 has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use `get_input_at(node_index)` instead.

但是,当我直接对 VGG16 网络执行相同操作时,效果很好:

from keras.applications import VGG16
from keras.models import load_model

model_works = VGG16(weights='imagenet', include_top=False)
model_works.input

最后一行不会导致错误。所以我的问题是:
如何访问保存并重新加载的 Keras 模型的(输入)层?

最佳答案

将 VGG16 模型添加到自定义模型后,它将有两个输入节点:一个是原始输入节点,可使用 conv_base.get_input_at(0) 访问,另一个输入节点是为自定义模型的输入创建,可使用 conv_base.get_input_at(1) 访问该模型(这实际上是模型的输入,相当于 model.input) 。 Keras 中节点和层的区别已在 this answer 中详细解释。 .

关于python - 保存并从磁盘重新加载后获取 Keras 模型的(输入)层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56147954/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com