使用keras和flas加载模型时出错

2024-09-29 05:17:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用flask编写一个简单的应用程序。首先我试了一下:

def get_model():
    global model
    model = load_model('mobilenet.h5')
    print("** Model loaded!")

但我有个错误:

Traceback (most recent call last):
  File "C:\Users\Agnieszka\Anaconda4\Scripts\flask-script.py", line 10, in <module>
    sys.exit(main())
  File "C:\Users\Agnieszka\Anaconda4\lib\site-packages\flask\cli.py", line 894, in main
    cli.main(args=args, prog_name=name)
  File "C:\Users\Agnieszka\Anaconda4\lib\site-packages\flask\cli.py", line 557, in main
    return super(FlaskGroup, self).main(*args, **kwargs)
  File "C:\Users\Agnieszka\Anaconda4\lib\site-packages\click\core.py", line 697, in main
    rv = self.invoke(ctx)
  File "C:\Users\Agnieszka\Anaconda4\lib\site-packages\click\core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "C:\Users\Agnieszka\Anaconda4\lib\site-packages\click\core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Users\Agnieszka\Anaconda4\lib\site-packages\click\core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "C:\Users\Agnieszka\Anaconda4\lib\site-packages\click\decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args[1:], **kwargs)
  File "C:\Users\Agnieszka\Anaconda4\lib\site-packages\click\core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "C:\Users\Agnieszka\Anaconda4\lib\site-packages\flask\cli.py", line 767, in run_command
    app = DispatchingApp(info.load_app, use_eager_loading=eager_loading)
  File "C:\Users\Agnieszka\Anaconda4\lib\site-packages\flask\cli.py", line 293, in __init__
    self._load_unlocked()
  File "C:\Users\Agnieszka\Anaconda4\lib\site-packages\flask\cli.py", line 317, in _load_unlocked
    self._app = rv = self.loader()
  File "C:\Users\Agnieszka\Anaconda4\lib\site-packages\flask\cli.py", line 372, in load_app
    app = locate_app(self, import_name, name)
  File "C:\Users\Agnieszka\Anaconda4\lib\site-packages\flask\cli.py", line 235, in locate_app
    __import__(module_name)
  File "C:\Users\Agnieszka\Desktop\noc-naukowcow\flask_apps\predict.py", line 32, in <module>
    get_model()
  File "C:\Users\Agnieszka\Desktop\noc-naukowcow\flask_apps\predict.py", line 19, in get_model
    model = tf.keras.models.load_model('mobilenet.h5')
  File "C:\Users\Agnieszka\Anaconda4\lib\site-packages\tensorflow\python\keras\engine\saving.py", line 249, in load_model
    optimizer_config, custom_objects=custom_objects)
  File "C:\Users\Agnieszka\Anaconda4\lib\site-packages\tensorflow\python\keras\optimizers.py", line 838, in deserialize
    printable_module_name='optimizer')
  File "C:\Users\Agnieszka\Anaconda4\lib\site-packages\tensorflow\python\keras\utils\generic_utils.py", line 194, in deserialize_keras_object
    return cls.from_config(cls_config)
  File "C:\Users\Agnieszka\Anaconda4\lib\site-packages\tensorflow\python\keras\optimizers.py", line 159, in from_config
    return cls(**config)
  File "C:\Users\Agnieszka\Anaconda4\lib\site-packages\tensorflow\python\keras\optimizers.py", line 471, in __init__
    super(Adam, self).__init__(**kwargs)
  File "C:\Users\Agnieszka\Anaconda4\lib\site-packages\tensorflow\python\keras\optimizers.py", line 68, in __init__
    'passed to optimizer: ' + str(k))
TypeError: Unexpected keyword argument passed to optimizer: name

然后我用tf.keras.模型加载模型,但这没有帮助。你知道吗

该模型是使用keras2.2.4版本在实验室中构建的。我建立了如下模型:

from keras import backend as K

inputs = Input(shape=(96, 80, 3), name='input')


x = Conv2D(64, (3, 3), activation='relu')(inputs)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Dropout(0.25)(x)

x = Conv2D(128, (3, 3), activation='relu')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Dropout(0.25)(x)

x = Conv2D(256, (3, 3), activation='relu')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)
x = Dropout(0.25)(x)

x = Flatten()(x)
x = Dense(256, activation='relu')(x)
x = Dropout(0.5)(x)
x = Dense(35, activation='softmax')(x)

model = Model(inputs=inputs, outputs=x, name='CNN')



model.compile(optimizer=optimizer, loss=loss_fn, metrics=['acc'])

我想知道这个问题是不是因为我使用了optimaizer(它是adam)。你知道吗

有什么解决办法吗?你知道吗


Tags: nameinpyflaskmodelclilibpackages
1条回答
网友
1楼 · 发布于 2024-09-29 05:17:48

这个错误表明Unexpected keyword argument passed to optimizer: name。现在我们知道,参数name在TensorFlow模型中用于命名特定的操作或张量。TensorFlow包含了Keras,但Keras仍然作为一个独立的包存在。

也许您已经使用tf.keras创建了一个模型,但是您正在使用keras.models.load_model加载它。Keras包无法识别TF参数。你知道吗

也许您可以尝试使用tf.keras中的方法将整个过程引入TensorFlow。你知道吗

相关问题 更多 >