Nlp 如何在Keras上的seq2seq模型中添加注意层
根据这篇文章,我写了这个模型:Nlp 如何在Keras上的seq2seq模型中添加注意层,nlp,deep-learning,keras,lstm,attention-model,Nlp,Deep Learning,Keras,Lstm,Attention Model,根据这篇文章,我写了这个模型: enc_in=Input(shape=(None,in_alphabet_len)) lstm=LSTM(lstm_dim,return_sequences=True,return_state=True,use_bias=False) enc_out,h,c=lstm(enc_in) dec_in=Input(shape=(None,in_alphabet_len)) decoder,_,_=LSTM(decoder_dim,return_sequences=Tr
enc_in=Input(shape=(None,in_alphabet_len))
lstm=LSTM(lstm_dim,return_sequences=True,return_state=True,use_bias=False)
enc_out,h,c=lstm(enc_in)
dec_in=Input(shape=(None,in_alphabet_len))
decoder,_,_=LSTM(decoder_dim,return_sequences=True,return_state=True)(dec_in,initial_state=[h,c])
decoder=Dense(units=in_alphabet_len,activation='softmax')(decoder)
model=Model([enc_in,dec_in],decoder)
如何在解码器之前向该模型添加注意层?您可以使用
pip安装keras self-attention
,导入SeqSelfAttention
- 如果要使用tf.keras而不是keras,请在导入之前添加以下内容
- 确保您正在使用keras忽略上一个标志,因为它会导致不一致
enc_out, h, c = lstm()(enc_in)
att = SeqSelfAttention()(enc_out)
dec_in = Input(shape=(None, in_alphabet_len))(att)
我希望这能回答你的问题,以及未来的读者这是自我关注。然而,对于seq2seq,您通常希望在编码器和解码器状态之间引起注意。那么,您有什么建议?我不知道Bahdanau或Luong attention是否有Keras包装器,但是有一个简洁的TensorFlow 2.0教程,用于seq2seq的翻译。这里有一个简单的方法来增加注意力: