Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用tensorflow注意层?_Python_Tensorflow_Keras_Seq2seq - Fatal编程技术网

Python 如何使用tensorflow注意层?

Python 如何使用tensorflow注意层?,python,tensorflow,keras,seq2seq,Python,Tensorflow,Keras,Seq2seq,我正在试图了解如何使用这里显示的tf.keras.layers.Attention: 我试图使用它与编码器解码器seq2seq模型。下面是我的代码: encoder_inputs = Input(shape=(max_len_text,)) enc_emb = Embedding(x_voc_size, latent_dim,trainable=True)(encoder_inputs) encoder_lstm=LSTM(latent_dim, return_state=True, re

我正在试图了解如何使用这里显示的
tf.keras.layers.Attention

我试图使用它与编码器解码器seq2seq模型。下面是我的代码:

encoder_inputs = Input(shape=(max_len_text,)) 
enc_emb = Embedding(x_voc_size, latent_dim,trainable=True)(encoder_inputs) 
encoder_lstm=LSTM(latent_dim, return_state=True, return_sequences=True) 
encoder_outputs, state_h, state_c= encoder_lstm(enc_emb) 

decoder_inputs = Input(shape=(max_len_summary,)) 
dec_emb_layer = Embedding(y_voc_size, latent_dim,trainable=True) 
dec_emb = dec_emb_layer(decoder_inputs) 

decoder_lstm = LSTM(latent_dim, return_sequences=True, return_state=True) 
decoder_outputs,decoder_fwd_state, decoder_back_state = decoder_lstm(dec_emb,initial_state=[state_h, state_c]) 

我的问题是,如何在这个模型中使用keras中给定的注意层?我无法理解他们的文档。

如果您使用的是RNN,我不建议您使用上述类

在分析tf.keras.layers.Attention Github代码以更好地理解您的难题时,我能遇到的第一句话是:“这个类适用于密集网络或CNN网络,而不适用于RNN网络”

我建议您编写自己的seq-to-seq模型,只需不到十几行代码即可完成。例如:


要编写自己的自定义注意层(基于您是否喜欢Bahdanau、Luong、Raffel、Yang等),这篇概述基本要素的文章可能会有所帮助:

啊,这很有意义。我无法让这一层与LSTM网络一起工作。我认为,在这种情况下,您需要使用自定义的注意层编写自定义的训练循环。基本上,正如教程所说,您需要使用编码器序列一次迭代一个解码器,特别是如果您想要教师强制,通常您会这样做。看起来你不可能在这个问题上作弊,只需要输入完整的解码序列,但我认为这是有意义的,因为每个预测之后都需要传递状态,包括之前的上下文向量。