keras 解决加载lstm+crf模型出错的问题


Posted in Python onJune 10, 2020

错误展示

new_model = load_model(“model.h5”)

报错:

1、keras load_model valueError: Unknown Layer :CRF

2、keras load_model valueError: Unknown loss function:crf_loss

错误修改

1、load_model修改源码:custom_objects = None 改为 def load_model(filepath, custom_objects, compile=True):

2、new_model = load_model(“model.h5”,custom_objects={‘CRF': CRF,‘crf_loss': crf_loss,‘crf_viterbi_accuracy': crf_viterbi_accuracy}

以上修改后,即可运行。

补充知识:用keras搭建bilstm crf

使用 https://github.com/keras-team/keras-contrib实现的crf layer,

安装 keras-contrib

pip install git+https://www.github.com/keras-team/keras-contrib.git

Code Example:

# coding: utf-8
from keras.models import Sequential
from keras.layers import Embedding
from keras.layers import LSTM
from keras.layers import Bidirectional
from keras.layers import Dense
from keras.layers import TimeDistributed
from keras.layers import Dropout
from keras_contrib.layers.crf import CRF
from keras_contrib.utils import save_load_utils

VOCAB_SIZE = 2500
EMBEDDING_OUT_DIM = 128
TIME_STAMPS = 100
HIDDEN_UNITS = 200
DROPOUT_RATE = 0.3
NUM_CLASS = 5

def build_embedding_bilstm2_crf_model():
 """
 带embedding的双向LSTM + crf
 """
 model = Sequential()
 model.add(Embedding(VOCAB_SIZE, output_dim=EMBEDDING_OUT_DIM, input_length=TIME_STAMPS))
 model.add(Bidirectional(LSTM(HIDDEN_UNITS, return_sequences=True)))
 model.add(Dropout(DROPOUT_RATE))
 model.add(Bidirectional(LSTM(HIDDEN_UNITS, return_sequences=True)))
 model.add(Dropout(DROPOUT_RATE))
 model.add(TimeDistributed(Dense(NUM_CLASS)))
 crf_layer = CRF(NUM_CLASS)
 model.add(crf_layer)
 model.compile('rmsprop', loss=crf_layer.loss_function, metrics=[crf_layer.accuracy])
 return model

def save_embedding_bilstm2_crf_model(model, filename):
 save_load_utils.save_all_weights(model,filename)

def load_embedding_bilstm2_crf_model(filename):
 model = build_embedding_bilstm2_crf_model()
 save_load_utils.load_all_weights(model, filename)
 return model

if __name__ == '__main__':
 model = build_embedding_bilstm2_crf_model()

注意:

如果执行build模型报错,则很可能是keras版本的问题。在keras-contrib==2.0.8且keras==2.0.8时,上面代码不会报错。

以上这篇keras 解决加载lstm+crf模型出错的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python解析模块(ConfigParser)使用方法
Dec 10 Python
在Python程序和Flask框架中使用SQLAlchemy的教程
Jun 06 Python
python递归打印某个目录的内容(实例讲解)
Aug 30 Python
python机器学习之神经网络(一)
Dec 20 Python
python 用lambda函数替换for循环的方法
Jun 09 Python
Django安装配置mysql的方法步骤
Oct 15 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
May 04 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
Dec 11 Python
Python requests模块安装及使用教程图解
Jun 30 Python
Manjaro、pip、conda更换国内源的方法
Nov 17 Python
python 如何在list中找Topk的数值和索引
May 20 Python
分析Python感知线程状态的解决方案之Event与信号量
Jun 16 Python
使用Keras加载含有自定义层或函数的模型操作
Jun 10 #Python
keras 获取某层的输入/输出 tensor 尺寸操作
Jun 10 #Python
Python 字典中的所有方法及用法
Jun 10 #Python
在keras 中获取张量 tensor 的维度大小实例
Jun 10 #Python
Keras—embedding嵌入层的用法详解
Jun 10 #Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
Jun 10 #Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
Jun 10 #Python
You might like
PHP树的代码,可以嵌套任意层
2006/10/09 PHP
php文件上传简单实现方法
2015/01/24 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
关于setInterval、setTimeout在jQuery中的使用注意事项
2011/09/28 Javascript
jQuery中校验时间格式的正则表达式小结
2013/09/22 Javascript
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
JS使用parseInt解析数字实现求和的方法
2015/08/05 Javascript
bootstrap模态框消失问题的解决方法
2016/12/02 Javascript
AngularJS实现表单验证功能
2017/01/09 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
vue中选项卡点击切换且能滑动切换功能的实现代码
2018/11/25 Javascript
12个提高JavaScript技能的概念(小结)
2019/05/09 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题
2020/11/05 Javascript
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python实现去除代码前行号的方法
2015/03/10 Python
window下eclipse安装python插件教程
2017/04/24 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
2019/01/08 Python
pandas实现将日期转换成timestamp
2019/12/07 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
2019/12/23 Python
Python模块zipfile原理及使用方法详解
2020/08/04 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
Laura Mercier官网:彩妆大师罗拉玛斯亚的化妆品牌
2018/01/04 全球购物
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
介绍一下MD5加密算法
2016/11/12 面试题
校园学雷锋活动月总结
2014/03/09 职场文书
青年文明号服务承诺
2014/03/31 职场文书
保证书范文大全
2014/04/28 职场文书
创新社会管理心得体会
2014/09/12 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
乡镇党建工作总结2015
2015/05/19 职场文书
小学生暑假安全公约
2015/07/14 职场文书
JavaScript的function函数详细介绍
2021/11/20 Javascript
德生2P3收音机开箱评测
2022/04/30 无线电