Sta*_*low 8 machine-learning lstm keras tensorflow recurrent-neural-network
我似乎无法理解 keras GRU 层中返回状态和返回序列之间的差异。
由于 GRU 单元没有单元状态(它等于输出),返回状态与 keras GRU 层中的返回序列有何不同?
更具体地说,我构建了一个编码器-解码器 LSTM 模型,其中包含一个编码器层和一个解码器层。编码器层返回其状态(return_state = TRUE)
,解码器层使用这些状态作为初始状态(initial_state = encoder_states)
。
当尝试使用 GRU 层执行此操作时,我不明白在编码器和解码器层之间传递了什么状态。如果你能澄清这一点,请告诉我。提前致谢。
GRU 层的“状态”通常与“输出”相同。但是,如果你在传递return_state=True
和return_sequence=True
随后层的输出将所述序列的每个元素,但状态后的输出将仅在序列的最后一个元素被处理之后是的状态。
这是使用 GRU 层的 seq-2-seq 网络的编码器/解码器示例
#Create layers
encoder_input_layer = Input(shape=(None,))
encoder_embedding_layer = Embedding(len(vocab), THOUGHT_VECTOR_SIZE)
encoder_gru_layer = GRU(THOUGHT_VECTOR_SIZE, return_state=True)
decoder_input_layer = Input(shape=(None,))
decoder_embedding_layer = Embedding(len(vocab), THOUGHT_VECTOR_SIZE)
decoder_gru_layer = GRU(THOUGHT_VECTOR_SIZE, return_sequences=True)
decoder_dense_layer = Dense(len(vocab), activation='softmax')
#connect network
encoder = encoder_embedding_layer(encoder_input_layer)
encoder, encoder_state = encoder_gru_layer(encoder)
decoder = decoder_embedding_layer(decoder_input_layer)
decoder = decoder_gru_layer(decoder, initial_state=encoder_state)
decoder = decoder_dense_layer(decoder)
model = Model([encoder_input_layer, decoder_input_layer], decoder)
Run Code Online (Sandbox Code Playgroud)
但就您而言,return_state
这里并不需要使用,因为encoder_gru_layer 的输出和状态将是相同的。
归档时间: |
|
查看次数: |
2004 次 |
最近记录: |