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爬虫常用的模块分析
Aug 29 Python
python进阶教程之词典、字典、dict
Aug 29 Python
详解Python2.x中对Unicode编码的使用
Apr 03 Python
python实现根据用户输入从电影网站获取影片信息的方法
Apr 07 Python
Python使用folium excel绘制point
Jan 03 Python
python实现小球弹跳效果
May 10 Python
对PyQt5中树结构的实现方法详解
Jun 17 Python
Python简单处理坐标排序问题示例
Jul 11 Python
python openpyxl使用方法详解
Jul 18 Python
使用python绘制二维图形示例
Nov 22 Python
Django bulk_create()、update()与数据库事务的效率对比分析
May 15 Python
python GUI计算器的实现
Oct 09 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
新浪SAE云平台下使用codeigniter的数据库配置
2014/06/12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
2014/06/23 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
浅谈php的TS和NTS的区别
2019/03/13 PHP
用jQuery简化JavaScript开发分析
2009/02/19 Javascript
js自动闭合html标签(自动补全html标记)
2012/10/04 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
2014/01/26 Javascript
jQuery实现文本展开收缩特效
2015/06/03 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
js实现返回顶部效果
2017/03/10 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
vue-cli中使用高德地图的方法示例
2019/03/28 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
2019/05/12 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
2019/05/20 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
[02:37]2018DOTA2亚洲邀请赛赛前采访 VP.no[o]ne心中最强SOLO是谁
2018/04/04 DOTA
python实现百度关键词排名查询
2014/03/30 Python
详解Python的Flask框架中生成SECRET_KEY密钥的方法
2016/06/07 Python
Python数据分析之真实IP请求Pandas详解
2016/11/18 Python
解决pip install的时候报错timed out的问题
2018/06/12 Python
python顺序执行多个py文件的方法
2019/06/29 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
Pandas DataFrame中的tuple元素遍历的实现
2019/10/23 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
详解python内置常用高阶函数(列出了5个常用的)
2020/02/21 Python
Python列表切片常用操作实例解析
2020/03/10 Python
医院后勤自我鉴定
2013/10/13 职场文书
技术总监个人的自我评价范文
2013/12/18 职场文书
外企办公室竞聘演讲稿
2013/12/29 职场文书
货车司机岗位职责
2014/03/18 职场文书
义和团口号
2014/06/17 职场文书
重点工程汇报材料
2014/08/27 职场文书
承诺书模板大全
2015/05/04 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书
ant design charts 获取后端接口数据展示
2022/05/25 Javascript