keras_contrib crf AttributeError: ‘Tensor‘ object has no attribute ‘_keras_history‘

@创建于:2022.09.30
@修改于:2022.09.30

1、错误信息

我使用tensorflow==2.8.0 (keras==2.8.0),keras-contrib 2.0.8。keras_contrib的CRF 报错

crf, idx = y_pred._keras_history[:2]

    AttributeError: 'Tensor' object has no attribute '_keras_history'

在这里插入图片描述

2、解决办法 降低keras版本

这个问题的产生,不是因为输入数据是ndarray格式原因造成的,也没有必要强制把ndarray转成keras的tensor。

这是由于高版本的tensorflow(keras)不支持keras-contrib 造成的。因此降低版本号tensorflow==2.2.0,(keras==2.3.1)

keras_contrib是keras的一个高级网络实现模块,里面包含了用keras实现的CRF等高级网络层和相关算法。keras-contrib是2018年开发的,对TensorFlow新版本不兼容是可以理解。

我使用下面的安装包,再次运行通过。

# python 3.7.12
tensorflow==2.2.0
# numpy必须在1.20以下
numpy==1.19.2
pandas==1.0.5
scikit-learn==0.24.1
keras-contrib==2.0.8
# protobuf 必须3.20以下
protobuf==3.19.0

keras_contrib安装

pip install git+https://www.github.com/keras-team/keras-contrib.git

3、其他解决办法

@HGamalElDin, We do not need to downgrade any of the versions. Can utilize tensorflow-add to build CRF layer. Hope this helps :)

`
from tensorflow_addons.layers import CRF

x = ....
crf_layer = CRF(n_tags)
_, output_layer, _, _ = crf_layer(x)

model = Model(input_layer, output_layer)
mode.summary()

AttributeError: ‘Tensor’ object has no attribute ‘_keras_history’ #14464

我的疑问是tensorflow_addons里面的损失函数并没有crf_loss,crf_accuracy。用其他损失函数代替,合适吗?【求大佬赐教】

4、参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值