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 相关文章推荐
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
Apr 23 Python
Django应用程序中如何发送电子邮件详解
Feb 04 Python
Python数据结构与算法之字典树实现方法示例
Dec 13 Python
Python复制Word内容并使用格式设字体与大小实例代码
Jan 22 Python
Python中常用信号signal类型实例
Jan 25 Python
Python 数据处理库 pandas进阶教程
Apr 21 Python
查看Django和flask版本的方法
May 14 Python
python接口调用已训练好的caffe模型测试分类方法
Aug 26 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
Feb 12 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
Feb 17 Python
使用darknet框架的imagenet数据分类预训练操作
Jul 07 Python
Python字典实现伪切片功能
Oct 28 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
在WINDOWS中设置计划任务执行PHP文件的方法
2011/12/19 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
很好用的js日历算法详细代码
2013/03/07 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
高效的获取当前元素是父元素的第几个子元素
2013/10/15 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
2014/04/22 Javascript
js改变css样式的三种方法推荐
2016/06/28 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
数组Array的排序sort方法
2017/02/17 Javascript
Vue 2.x教程之基础API
2017/03/06 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
angularjs封装$http为factory的方法
2017/05/18 Javascript
vue-resouce设置请求头的三种方法
2017/09/12 Javascript
vue的一个分页组件的示例代码
2017/12/25 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
利用jqgrid实现上移下移单元格功能
2018/11/07 Javascript
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
vue项目如何监听localStorage或sessionStorage的变化
2021/01/04 Vue.js
Python制作exe文件简单流程
2019/01/24 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
Python try except else使用详解
2021/01/12 Python
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
韩国保养品、日本药妆购物网:小三美日
2018/12/30 全球购物
厕所文明标语
2014/06/11 职场文书
goland 设置project gopath的操作
2021/05/06 Golang
解决golang 关于全局变量的坑
2021/05/06 Golang
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python