Keras Bi-lstm 报错AttributeError:'Tensor' object has no attribute 'get_config' 如何用Keras实现双向LSTM

已知单向LSTM可以通过以下两行命令获取
x = Embedding(max_features, embedding_dims, input_length=maxlen)(input_layer)
​​​​​​​lstm_layer=LSTM(128)(x)
后想将lstm换成bi-lstm,也可直接调用下述包来实现:
from keras.layers import Bidirectional
我没有去查API而是在网上找了个demo。

图片来源:https://blog.youkuaiyun.com/fendouaini/article/details/80198994
就直接按照惯常思维带到自己代码中使用(我的代码中没有按照model.add()的形式来搭建模型),犯了下面的错误:
lstm_layer = Bidirectional(LSTM(128,return_sequences=True)(x),merge_mode='concat')
有了报错:AttributeError:'Tensor' object has no attribute 'get_config' 
查了查知道了正确的使用方式,两个Layer的函数,且两个函数嵌在一起,直接向外层的函数传入(x:上一layer)即可:
lstm_layer = Bidirectional(LSTM(128,return_sequences=True),merge_mode='concat')(x)

然后代码有了新的报错,是shape不匹配,我去查了下LSTM的API发现

return_sequences=True时每一时刻的state都会返回,此时shape为(batch_size,time_steps,hidden_size)

而return_sequences=False时只会返回最终state,shape为(batch_size,hidden_size)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值