keras 解决加载lstm+crf模型出错的问题
作者:qq_26235121 发布时间:2022-06-11 01:27:27
错误展示
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时,上面代码不会报错。
来源:https://blog.csdn.net/qq_26235121/article/details/86512563


猜你喜欢
- 爬虫简介 根据百度百科定义:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社
- Altova 公司的 XMLSPY 是个不可多得的好东西,它几乎可以开发所有的 XML 产品。最近用它来做 Schema
- 看例子: 数 据表 collect ( id, title ,info ,vtype) 就这4个字段,其中 title 用定长,info 用
- 前言:我们在做自动化测试的时候,大家都是希望自己写的代码越简洁越好,代码重复量越少越好。那么,我们可以考虑将request的请求类型(如:G
- 本文实例讲述了C#操作SQLite数据库之读写数据库的方法。分享给大家供大家参考,具体如下:这里演示读写数据库并在窗体(Form)中显示其数
- 概述我们在使用mysql的时候,尤其是在创建数据库的时候,我们需要选择当前数据库的字符集和排序规则,这样你库里面的创建数据表的时候默认的编码
- 除了3天就会失效的临时素材外,开发者有时需要永久保存一些素材,届时就可以通过本接口新增永久素材。最近更新,永久图片素材新增后,将带有URL返
- SQL Server 联机帮助给出了详细说明。 -->目录 -->SQL Server架构 --&
- 1、生成数据集(双月数据集)class moon_data_class(object): def __init__
- 目录一、问题具体描述:二、解决方法1、方法一:在PyCharm下载第三方库(即把之前下的库作废,这里重新再下一次……)2、方法二:坚持用pi
- 1、cURL请求的基本步骤:(1)初始化(2)设置选项,包括URL(3)执行并获取HTML文档内容(4)释放cURL句柄<?php&n
- 引言欢迎来到我们的系列博客《Python全景系列》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握
- Module Tabs(也称选项卡,后文中简称Tab,以便更符合中国设计师的日常叫法) 是一个常见的交互元素——将不同的内容重叠放置在某一布
- 最近碰到一个mysql5数据库的问题。就是一个标准的servlet/tomcat网络应用,后台使用mysql数据库。问题是待机一晚上后,第二
- 总结了一下使用Python对xml文件的解析,用到的模块儿如下:分别从xml字符串和xml文件转换为xml对象,然后解析xml内容,查询指定
- 目录初始化程序创建Surface对象事件监听游戏循环Pygame 作为一个入门级的游戏开发库,其实并不难学,只要掌握 Python 编程的相
- IE>6 及其它浏览器不在此文论述范围内。img 的 onload 事件,是当图片加载完成之后,就处触发。img.complete 这
- 本文主要分享的是一则关于Tornado高并发处理方法的实例,具体如下:#!/bin/env python# -*- coding:utf-8
- 本文实例讲述了Python实现的本地文件搜索功能。分享给大家供大家参考,具体如下:偶尔需要搜索指定文件,不想每次都在windows下面去搜索
- 最近项目需要,需要在表创建好之后,初始化一些数据。Django初始化数据的方法有很多,但都需要额外的手动操作,不智能。看网上有一种方法用po