【问题标题】:load_model error with "function=preprocess_input" in lambda layer (Keras)lambda 层 (Keras) 中带有“function=preprocess_input”的 load_model 错误
【发布时间】:2018-03-30 05:19:22
【问题描述】:

keras 2.1.5 / TF 后端

我尝试使用 lambda 层进行图像预处理(通过函数)

型号:

from keras.applications.resnet50 import preprocess_input

base_model = keras.applications.resnet50.ResNet50(include_top=False, input_shape=(224, 224, 3))

model = Sequential()
model.add(Lambda(preprocess_input, name='Input_Image', input_shape=(224, 224, 3))
model.add(base_model)
model.add(GlobalAveragePooling2D())
model.add(Dense(len(classes), activation="softmax"))

我用“custom_objects”调用了 load_model

from keras.models import load_model
model = load_model(h5_weights, custom_objects={'preprocess_input': preprocess_input})

然后得到错误

File "/usr/local/lib/python2.7/dist-packages/keras/layers/core.py", line 663, in call
return self.function(inputs, **arguments)
File "/usr/local/lib/python2.7/dist-packages/keras/applications/imagenet_utils.py", line 177, in preprocess_input
return _preprocess_symbolic_input(x, data_format=data_format,
NameError: global name '_preprocess_symbolic_input' is not defined

未定义的函数:

_preprocess_symbolic_input

File "/usr/local/lib/python2.7/dist-packages/keras/applications/imagenet_utils.py"

有什么建议吗?

【问题讨论】:

    标签: keras keras-layer keras-2


    【解决方案1】:

    _preprocess_symbolic_input 也放入custom_objects

    custom_objects = {
        'preprocess_input': preprocess_input,
        '_preprocess_symbolic_input': keras.applications.imagenet_utils._preprocess_symbolic_input
    }
    model = load_model(h5_weights, custom_objects=custom_objects)
    

    【讨论】:

    • 如果没有找到keras.applications.imagenet_utils._preprocess_symbolic_input,请将keras.applications更改为keras_applications
    猜你喜欢
    • 2019-03-21
    • 2021-05-25
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    相关资源
    最近更新 更多