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的Django框架中的数据库配置指南
Jul 17 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
Apr 18 Python
Python中正则表达式的用法总结
Feb 22 Python
pyQT5 实现窗体之间传值的示例
Jun 20 Python
python数组循环处理方法
Aug 26 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
Feb 09 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 Python
Python+PyQt5+MySQL实现天气管理系统
Jun 16 Python
用python实现名片管理系统
Jun 18 Python
使用Keras构造简单的CNN网络实例
Jun 29 Python
利用python对mysql表做全局模糊搜索并分页实例
Jul 12 Python
Python如何解除一个装饰器
Aug 07 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
动态新闻发布的实现及其技巧
2006/10/09 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
PHP封装的字符串加密解密函数
2015/12/18 PHP
Adnroid 微信内置浏览器清除缓存
2016/07/11 PHP
php实现微信企业付款到个人零钱功能
2018/10/09 PHP
laravel 5.5 关闭token的3种实现方式
2019/10/24 PHP
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
2017/10/08 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
微信小程序的部署方法步骤
2018/09/04 Javascript
jQuery选择器之基本选择器用法实例分析
2019/02/19 jQuery
express框架下使用session的方法
2019/07/31 Javascript
如何使用webpack打包一个库library的方法步骤
2019/12/18 Javascript
微信小程序如何获取地址
2019/12/24 Javascript
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
进一步探究Python的装饰器的运用
2015/05/05 Python
python常见数制转换实例分析
2015/05/09 Python
Python学习pygal绘制线图代码分享
2017/12/09 Python
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
python实现大文本文件分割
2019/07/22 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
Python使用pyexecjs代码案例解析
2020/07/13 Python
教育科学研究生自荐信
2013/10/09 职场文书
求职信标题怎么写
2014/05/26 职场文书
推普周国旗下讲话稿
2014/09/21 职场文书
建筑工地文明标语
2014/10/09 职场文书
电工生产实习心得体会
2016/01/22 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书
解决Maven项目中 Invalid bound statement 无效的绑定问题
2021/06/15 Java/Android
《最终幻想14》6.01版本4月5日推出 追加新任务新道具
2022/04/03 其他游戏
JavaScript实现简单的音乐播放器
2022/08/14 Javascript