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中os.path用法分析
Jan 15 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
Aug 30 Python
Python最火、R极具潜力 2017机器学习调查报告
Dec 11 Python
python3利用Dlib19.7实现人脸68个特征点标定
Feb 26 Python
python利用高阶函数实现剪枝函数
Mar 20 Python
python使用webdriver爬取微信公众号
Aug 31 Python
在python中pandas的series合并方法
Nov 12 Python
python中使用while循环的实例
Aug 05 Python
Python约瑟夫生者死者小游戏实例讲解
Jan 04 Python
基于python实现银行管理系统
Apr 20 Python
OpenCV-Python直方图均衡化实现图像去雾
Jun 07 Python
Python多线程 Queue 模块常见用法
Jul 04 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的ob_start();控制您的浏览器cache!
2006/11/25 PHP
实用PHP会员权限控制实现原理分析
2011/05/29 PHP
PHP详解ASCII码对照表与字符转换
2011/12/05 PHP
PHP 观察者模式的实现代码
2013/05/10 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
2016/10/17 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
2016/10/28 PHP
csdn 博客的css样式 v3
2009/02/24 Javascript
利用BootStrap弹出二级对话框的简单实现方法
2016/09/21 Javascript
轻松理解JavaScript之AJAX
2017/03/15 Javascript
深入Vue-Router路由嵌套理解
2018/08/13 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
Vue.js原理分析之nextTick实现详解
2020/09/07 Javascript
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
跟老齐学Python之总结参数的传递
2014/10/10 Python
Python字典循环添加一键多值的用法实例
2019/01/20 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
六种酷炫Python运行进度条效果的实现代码
2020/07/17 Python
HTML5 Blob 实现文件下载功能的示例代码
2019/11/29 HTML / CSS
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
巴西手表购物网站:eclock
2019/03/19 全球购物
Linux如何为某个操作添加别名
2015/02/05 面试题
行政部工作岗位职责范本
2014/03/05 职场文书
网络工程专业自荐信范文
2014/03/16 职场文书
企业职业病防治方案
2014/05/29 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
2014超市双十一活动策划方案
2014/09/29 职场文书
培训后的感想
2015/08/07 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书
Nginx服务器如何设置url链接
2021/03/31 Servers
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle
Python实现自动玩连连看的脚本分享
2022/04/04 Python
Java中的Kotlin 内部类原理
2022/06/16 Java/Android