【问题标题】:Modify h5 file to fix error with Keras I/O修改 h5 文件以修复 Keras I/O 错误
【发布时间】:2017-05-15 23:15:30
【问题描述】:

几周前,我使用 Keras 和 Theano 后端训练了一个卷积神经网络 (CNN),并将其保存为 h5 文件。

但是今天当我试图打开它时,我从 Theano bn.py 文件中得到了 BatchNormalization 层的错误:

ValueError: epsilon 必须至少为 1e-5,得到 9.99999974738e-06

所以这是我的问题:

  1. 我可以用 Keras 做点什么来解决这个问题吗?
  2. 如果第一个问题没有答案,如何修改 h5 文件以手动修改此值?

【问题讨论】:

    标签: keras theano h5py


    【解决方案1】:

    这里是这个问题的临时解决方案。 Theano 文件 bn.py 自上一个版本以来有两个类似的测试(大约第 220 和 380 行),这些测试是导致问题的原因:

    if epsilon < 1e-5:
        raise ValueError("epsilon must be at least 1e-5, got %s" % str(epsilon))
    

    临时解决办法是用做作来代替加薪:

    if epsilon < 1e-5:
       epsilon = 1e-5
    

    这并不理想,但它允许读取旧文件。之后不要忘记撤消此修改。

    【讨论】:

      【解决方案2】:

      发布我的案例以供将来参考,因为 duckduckgo.com 将我带到这里。

      在我的情况下,我没有遇到与 OP 相同的错误,但我遇到了同样的问题,即有一个经过训练和保存但由于 keras issue 2814:TypeError: arg 5 (closure) must be tuple 而无法加载的 h5 文件。我最终临时修改了 lambda 反序列化函数 keras.layers.core.Lambda.from_config 中的 keras 代码,来自

          elif function_type == 'lambda':
              # Unsafe deserialization from bytecode
              function = func_load(config['function'], globs=globs)
      

          elif function_type == 'lambda':
              # Unsafe deserialization from bytecode
              if 'my_lambda_name' in config['function'][0]:
                print('bypassing lambda function')
                function = lambda x: x
              else:
                function = func_load(config['function'], globs=globs)
      

      这绕过了有问题的 lambda 函数。它对我有用,因为该特定 h5 中的特定 lambda 函数只是充当 lambda x: x,尽管它比这更复杂一些。

      然后我编写了一个小脚本来加载模型并将其保存在一个新文件中(带有绕过的 lambda 层)

      from keras.models import load_model
      print('fixing file')
      model = load_model('path/to/file.h5')
      model.save('path/to/file.fixed.h5')
      print('fixed')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-25
        相关资源
        最近更新 更多