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 相关文章推荐
仅用50行代码实现一个Python编写的计算器的教程
Apr 17 Python
Python的Django框架中的URL配置与松耦合
Jul 15 Python
通过Python 获取Android设备信息的轻量级框架
Dec 18 Python
TensorFlow实现创建分类器
Feb 06 Python
Python使用pickle模块实现序列化功能示例
Jul 13 Python
selenium+python实现自动化登录的方法
Sep 04 Python
Python3 安装PyQt5及exe打包图文教程
Jan 08 Python
教你如何编写、保存与运行Python程序的方法
Jul 12 Python
使用Windows批处理和WMI设置Python的环境变量方法
Aug 14 Python
DJANGO-URL反向解析REVERSE实例讲解
Oct 25 Python
详解python环境安装selenium和手动下载安装selenium的方法
Mar 17 Python
浅谈TensorFlow中读取图像数据的三种方式
Jun 30 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下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
比较全面的PHP数组的使用方法小结
2010/09/23 PHP
javascript 面向对象编程基础:封装
2009/08/21 Javascript
替代window.event.srcElement效果的可兼容性的函数
2009/12/18 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
自己编写的类似JS的trim方法
2013/10/09 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
批量修改标签css样式以input标签为例
2014/07/31 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
JavaScript通过prototype给对象定义属性用法实例
2015/03/23 Javascript
原生js实现图片层叠轮播切换效果
2016/02/02 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
js实现导航跟随效果
2018/11/17 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
[27:53]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS iG
2014/05/26 DOTA
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
python抓取某汽车网数据解析html存入excel示例
2013/12/04 Python
Django1.7+python 2.78+pycharm配置mysql数据库教程
2014/11/18 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
2016/09/15 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
PyTorch之图像和Tensor填充的实例
2019/08/18 Python
python字符串格式化方式解析
2019/10/19 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
Python爬取网页信息的示例
2020/09/24 Python
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
马来西亚与新加坡长途巴士售票网站:BusOnlineTicket.com
2018/11/05 全球购物
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
摄影实习自我鉴定
2013/09/20 职场文书
绿化先进工作者事迹材料
2014/01/30 职场文书
5s推行计划书
2014/05/06 职场文书
市场开发计划书
2014/05/07 职场文书
车间安全生产标语
2014/06/06 职场文书
社团活动总结格式
2014/08/29 职场文书
MySQL添加索引特点及优化问题
2022/07/23 MySQL