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实现获取磁盘剩余空间的2种方法
Jun 07 Python
Python简单定义与使用字典dict的方法示例
Jul 25 Python
Python查看微信撤回消息代码
Jun 07 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
Apr 04 Python
python机器人运动范围问题的解答
Apr 29 Python
详解Python绘图Turtle库
Oct 12 Python
python实现简单日志记录库glog的使用
Dec 13 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
Jan 03 Python
如何在VSCode下使用Jupyter的教程详解
Jul 13 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
在django中查询获取数据,get, filter,all(),values()操作
Aug 09 Python
Python - 10行代码集2000张美女图
May 23 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
CodeIgniter框架URL路由总结
2014/09/03 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
2016/11/10 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
2011/11/15 Javascript
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
Javascript判断文件是否存在(客户端/服务器端)
2014/09/16 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
javascript常用的方法分享
2015/07/01 Javascript
jQuery实现自定义checkbox和radio样式
2015/07/13 Javascript
JS判断元素是否在数组内的实现代码
2016/03/30 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
AngularJS入门示例之Hello World详解
2017/01/04 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
js单线程的本质 Event Loop解析
2019/10/29 Javascript
vue data引入本地图片的两种方式小结
2019/11/13 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
Python中Django发送带图片和附件的邮件
2017/03/31 Python
开源软件包和环境管理系统Anaconda的安装使用
2017/09/04 Python
详解tensorflow实现迁移学习实例
2018/02/10 Python
python中的二维列表实例详解
2018/06/19 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
Numpy与Pytorch 矩阵操作方式
2019/12/27 Python
农业大学毕业生的个人自我评价
2013/10/11 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
教师师德演讲稿
2014/05/06 职场文书
司机岗位职责说明书
2014/07/29 职场文书
庆祝国庆节标语
2014/10/09 职场文书
布达拉宫导游词
2015/02/02 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
详解Vue router路由
2021/11/20 Vue.js
Python闭包的定义和使用方法
2022/04/11 Python
关于MySQL中explain工具的使用
2023/05/08 MySQL