微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我无法通过 keras_bert 运行 Bert+CRF 模型

如何解决我无法通过 keras_bert 运行 Bert+CRF 模型

我想通过Bert+CRF解决中文分词,我的代码如下:

from keras.layers import *
from keras.models import *
from keras.optimizers import *
from keras_bert import load_trained_model_from_checkpoint
from keras_contrib.layers import CRF
from keras_contrib.losses import crf_loss
from keras_contrib.metrics import crf_accuracy
import numpy as np
import json
from param import  Parameters as pm

event_type="chineseSeg"

class BertBilstmCRF:
    def __init__(self,max_seq_length,lstm_dim):
        self.max_seq_length = max_seq_length
        self.lstmDim = lstm_dim
        self.label =pm.state_list

    # 模型
    def create_model(self):
        model_path = "../../bert/chinese_L-12_H-768_A-12/"
        bert = load_trained_model_from_checkpoint(
            model_path + "bert_config.json",model_path + "bert_model.ckpt",seq_len=self.max_seq_length
        )

        # make bert layer trainable
        for layer in bert.layers:
            layer.trainable = True
        x1 = Input(shape=(None,))
        x2 = Input(shape=(None,))
        bert_out = bert([x1,x2])
        crf_out = CRF(len(self.label),sparse_target=True)(bert_out)

        model = Model([x1,x2],crf_out)
        print(bert_out.shape) #(None,128,768)
        model.summary()
        model.compile(
            optimizer=Adam(1e-4),loss=crf_loss,metrics=[crf_accuracy]
        )
        return model

然后发生错误

    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras_contrib/layers/crf.py:292 call  *
        test_output = self.viterbi_decoding(X,mask)
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras_contrib/layers/crf.py:564 viterbi_decoding  *
        argmin_tables = self.recursion(input_energy,mask,return_logZ=False)
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras_contrib/layers/crf.py:521 _step  *
        return self.step(input_energy_i,states,return_logZ)
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/keras_contrib/layers/crf.py:463 step  *
        m = K.slice(states[3],[0,t],[-1,2])

    AttributeError: module 'keras.backend' has no attribute 'slice'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。