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 04 Python
Python数据分析之获取双色球历史信息的方法示例
Feb 03 Python
Python获取指定文件夹下的文件名的方法
Feb 06 Python
用Python识别人脸,人种等各种信息
Jul 15 Python
pandas 如何分割字符的实现方法
Jul 29 Python
Django2 连接MySQL及model测试实例分析
Dec 10 Python
pytorch的batch normalize使用详解
Jan 15 Python
判断Threading.start新线程是否执行完毕的实例
May 02 Python
基于Python下载网络图片方法汇总代码实例
Jun 24 Python
读取nii或nii.gz文件中的信息即输出图像操作
Jul 01 Python
python判断一个变量是否已经设置的方法
Aug 13 Python
PyTorch中Tensor的数据类型和运算的使用
Sep 03 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
咖啡的植物学知识
2021/03/03 咖啡文化
php empty函数判断mysql表单是否为空
2010/04/12 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
Laravel 在views中加载公共页面的实现代码
2019/10/22 PHP
PHP的重载使用魔术方法代码实例详解
2021/02/26 PHP
非常好的js代码
2006/06/27 Javascript
DIV菜单层实现代码
2010/11/19 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
2014/04/12 Javascript
使用JavaScript获取地址栏参数的方法
2014/12/19 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
2017/05/27 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
2018/12/24 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
python实现指定字符串补全空格的方法
2015/04/30 Python
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
Python3爬虫之自动查询天气并实现语音播报
2019/02/21 Python
Python 列表的清空方式
2020/01/13 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
在python中list作函数形参,防止被实参修改的实现方法
2020/06/05 Python
Python数据相关系数矩阵和热力图轻松实现教程
2020/06/16 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
iostream与iostream.h的区别
2015/01/16 面试题
信息专业学生学习的自我评价
2014/02/17 职场文书
合作投资意向书
2014/04/01 职场文书
食品采购员岗位职责
2014/04/14 职场文书
廉洁教育学习材料
2014/05/19 职场文书
创先争优个人承诺书
2014/08/30 职场文书
2015年乡镇信访工作总结
2015/04/07 职场文书
小学英语教学反思范文
2016/02/15 职场文书
Java中的继承、多态以及封装
2022/04/11 Java/Android