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 相关文章推荐
wxPython 入门教程
Oct 07 Python
Python中动态检测编码chardet的使用教程
Jul 06 Python
使用Django Form解决表单数据无法动态刷新的两种方法
Jul 14 Python
python数据结构链表之单向链表(实例讲解)
Jul 25 Python
python取代netcat过程分析
Feb 10 Python
python实现猜数字小游戏
Mar 24 Python
浅谈python 读excel数值为浮点型的问题
Dec 25 Python
原生python实现knn分类算法
Oct 24 Python
python绘制动态曲线教程
Feb 24 Python
python+gdal+遥感图像拼接(mosaic)的实例
Mar 10 Python
python中remove函数的踩坑记录
Jan 04 Python
python tqdm用法及实例详解
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
Windows中安装Apache2和PHP4权威指南
2006/11/18 PHP
PHP中创建空文件的代码[file_put_contents vs touch]
2012/01/20 PHP
Yii2如何批量添加数据
2016/05/17 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
2019/05/21 PHP
laravel 解决路由除了根目录其他都404的问题
2019/10/18 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
2014/06/12 Javascript
封装了jQuery的Ajax请求全局配置
2015/02/05 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
JavaScript中循环遍历Array与Map的方法小结
2016/03/12 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
AngularJS实现的简单拖拽功能示例
2018/01/02 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
解决vue+elementui项目打包后样式变化问题
2020/08/03 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
如何使用python爬取csdn博客访问量
2016/02/14 Python
python开发之str.format()用法实例分析
2016/02/22 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
在java中如何定义一个抽象属性示例详解
2017/08/18 Python
Python3简单实例计算同花的概率代码
2017/12/06 Python
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
关于Assembly命名空间的三个面试题
2015/07/23 面试题
教育实习生的自我评价分享
2013/11/21 职场文书
趣味运动会策划方案
2014/06/02 职场文书
工地质量标语
2014/06/12 职场文书
2015年万圣节活动总结
2015/03/24 职场文书
教师研修随笔感言
2015/11/18 职场文书
七年级作文之冬景
2019/11/07 职场文书
Python中requests做接口测试的方法
2021/05/30 Python
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL