其他分享
首页 > 其他分享> > Keras 1 和 Keras 2 模型结构不兼容ValueError Improper config format {'l2' 9

Keras 1 和 Keras 2 模型结构不兼容ValueError Improper config format {'l2' 9

作者:互联网

Keras 1 和 Keras 2 模型结构不兼容:ValueError: Improper config format: {‘l2’: 9.999999747378752e-06, ‘name’: ‘L1L2Regularizer’, ‘l1’: 0.0}

这个问题在keras上有一个issue: 当用keras 2来读取keras 1保存的预训练模型时,不能够读取,会报如下错误

ValueError: Improper config format: {‘l2’: 9.999999747378752e-06, ‘name’: ‘L1L2Regularizer’, ‘l1’: 0.0}

如果我们需要使用的预训练模型只有用keras 1训练的,而我们需要用keras 2来读取这个模型该如何解决呢?

使用keras 1来读取不就行了! 是个很好的办法没错.

我现在非要用keras 2来读取这个模型,怎么的?

这是由于keras 2将模型保存在json文件时, L1/L2 regularizer的语法发送了变化. 你可以用keras2.2.4生成一个模型json保存格观察一下"kernel_regularizer",以及keras 1的模型保存格式"W_regularizer",你就会发现语法发送了变化,同样的还有"activity_regularizer".

所以我们只需要把keras 1保存的模型json文件中的

"W_regularizer": {"l2": 9.999999747378752e-06, "name": "L1L2Regularizer", "l1": 0.0}, "trainable": false, "subsample_length": 1, "bias": true, "name": "convolution1d_2"}, "name": "convolution1d_2"}

替换成keras 2 的语法:

"kernel_regularizer": {"class_name": "L1L2", "config": {"l1": 0.0, "l2": 9.999999747378752e-06}

如果是"activity_regulatizer"使用了,也按同样的办法替换.

标签:name,keras,模型,format,regularizer,Improper,l2,Keras,读取
来源: https://blog.csdn.net/Alen_1996/article/details/101221944