【问题标题】:Why is ValueError thrown by keras.models.model_from_config() in the Keras-to-Tensorflow exporting example?为什么在 Keras-to-Tensorflow 导出示例中 keras.models.model_from_config() 会抛出 ValueError?
【发布时间】:2018-01-03 06:56:52
【问题描述】:

Keras 网站上有关于将 Keras 模型导出到核心 Tensorflow 的 this article。但是步骤

new_model = model_from_config(config)

抛出错误:

Traceback (most recent call last):
  File "/home/hal9000/tf_serving_experiments/sndbx.py", line 38, in <module>
    new_model = model_from_config(config)
  File "/home/hal9000/keras2env/local/lib/python2.7/site-packages/keras/models.py", line 304, in model_from_config
    return layer_module.deserialize(config, custom_objects=custom_objects)
  File "/home/hal9000/keras2env/local/lib/python2.7/site-packages/keras/layers/__init__.py", line 54, in deserialize
    printable_module_name='layer')
  File "/home/hal9000/keras2env/local/lib/python2.7/site-packages/keras/utils/generic_utils.py", line 122, in deserialize_keras_object
    raise ValueError('Improper config format: ' + str(config))
ValueError: Improper config format: {'layers': [{'class_name': 'InputLayer', 'config': {...

自 v2 发布以来,人们提出在 Keras v1 模型中使用 model_from_config() 方法存在问题。但是,我已经尝试过使用来自不同版本的一系列模型,包括内置的 Keras ResNet50 和在该脚本中定义的简单单层 MLP。都抛出相同的错误。

keras.utils.generic_utils.deserialize_keras_object() 方法似乎想要在 config 字典 (see source) 中找到键 "class_name""config"。在检查get_config() 创建的config dict 后,没有这样的条目;取而代之的是钥匙:

  • "input_layers"
  • "layers"
  • "name"
  • "output_layers"

我还打开了一个问题 https://github.com/fchollet/keras/issues/7232 并创建了一个 Gist,您可以自己运行它并查看错误。 https://gist.github.com/9thDimension/e1cdb2cd11f11309bfaf297b276f7456

  • Keras 2.0.6
  • 张量流 1.1.0

【问题讨论】:

    标签: python tensorflow deep-learning keras


    【解决方案1】:

    keras.models.Model.get_config() 的倒数似乎是keras.models.Model.from_config(),而不是keras.models.model_from_config() https://keras.io/models/about-keras-models/。试试这个?

    【讨论】:

      【解决方案2】:

      无论出于何种原因,keras.models.Model.get_config() 返回的字典对象与 keras.models.model_from_config() 重新水化模型的方法不兼容。

      我将这些替换为对 keras.models.Model.model_to_json()keras.models.model_from_json() 的等效调用,并且能够成功进行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-22
        • 1970-01-01
        • 2019-01-05
        • 1970-01-01
        • 1970-01-01
        • 2022-07-15
        • 2019-10-13
        • 2020-09-24
        相关资源
        最近更新 更多