Ich habe ein Problem zu verstehen, wie Back-Propagation in Encoder in Seq2seq-Modell funktioniert. Es gibt keine Beschriftungen, daher ist es nicht möglich, einen Fehler zu berechnen, der rückwärts propagiert wird, jedoch werden die Gewichte der LSTM-Schicht irgendwie aktualisiert.seq2seq - Encoder Backpropagation
l_enc_input = Input(batch_shape=(batch_size, None, embedding_size))
l_enc_lstm = LSTM(encoding_size, return_sequences=False, return_state=True, stateful=True, dropout=0.2)
l_dec_input = Input(batch_shape=(batch_size, None, embedding_size))
l_dec_lstm = LSTM(encoding_size, return_sequences=False, stateful=True, dropout=0.2)
l_dec_dense = Dense(embedding_size, activation="softmax")
t_enc_out = l_enc_lstm(l_enc_input)
state = t_enc_out[1:]
t_dec_out = l_dec_dense(l_dec_lstm(l_dec_input, initial_state=state))
model_train = Model(inputs=[l_enc_input, l_dec_input], outputs=[t_dec_out])
model_train.compile(optimizer="adam", loss="categorical_crossentropy")
Im Code ist ** der ** Ausgang ** des Encoders ** für den Decoder nicht vorgesehen **. Nur der interne Zustand ** der Codierer LSTM wird als Anfangszustand der Decodierer LSTM gesetzt. Deshalb bin ich verwirrt, wie Gewichte des Encoders aktualisiert werden. –