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生成随机数的方法
Jan 14 Python
python生成IP段的方法
Jul 07 Python
关于Python中浮点数精度处理的技巧总结
Aug 10 Python
python时间日期函数与利用pandas进行时间序列处理详解
Mar 13 Python
python删除不需要的python文件方法
Apr 24 Python
python清除函数占用的内存方法
Jun 25 Python
将Dataframe数据转化为ndarry数据的方法
Jun 28 Python
Python爬取视频(其实是一篇福利)过程解析
Aug 01 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
Oct 06 Python
Python守护进程实现过程详解
Feb 10 Python
python使用Geany编辑器配置方法
Feb 21 Python
python+selenium实现12306模拟登录的步骤
Jan 21 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 实现多服务器共享 SESSION 数据
2009/08/15 PHP
php表单提交问题的解决方法
2011/04/12 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
php简单实现无限分类树形列表的方法
2015/03/27 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
firefox浏览器下javascript 拖动层效果与原理分析代码
2007/12/04 Javascript
javascript 获取网页参数系统
2008/07/19 Javascript
理解Javascript_11_constructor实现原理
2010/10/18 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
2016/06/08 Javascript
js简单实现调整网页字体大小的方法
2016/07/23 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
为什么推荐使用JSX开发Vue3
2020/12/28 Vue.js
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
python+pyqt实现12306图片验证效果
2017/10/25 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
2019/10/18 Python
基于python修改srt字幕的时间轴
2020/02/03 Python
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
机械工程师的岗位职责
2013/11/17 职场文书
应届生简历中的自我评价
2014/01/13 职场文书
工程招投标邀请书
2014/01/26 职场文书
节约能源标语
2014/06/17 职场文书
单位接收函格式
2015/01/30 职场文书
环保宣传语大全
2015/07/13 职场文书
读完《骆驼祥子》的观后感!
2019/07/05 职场文书
Spring Boot 启动、停止、重启、状态脚本
2021/06/26 Java/Android