Ниже приведен фрагмент кода вызова decoder () без аргумента sequence_length. Другие коды для ясности опущены.
decoder_cell = keras.layers.LSTMCell(units)
output_layer = keras.layers.Dense(len(OUTPUT_CHARS) + 1)
decoder = tfa.seq2seq.basic_decoder.BasicDecoder(decoder_cell,
sampler,
output_layer=output_layer)
final_outputs, final_state, final_sequence_lengths = decoder(
decoder_embeddings,
initial_state=encoder_state) # NOTE: without sequence_lengths argument here!
Второй пример вызова декодера показан ниже из ответа в этом сообщении
final_outputs, final_state, final_sequence_lengths = decoder(
decoder_embeddings, initial_state=encoder_state,
sequence_length=sequence_lengths) # NOTE: it use sequence_lengths of input tensor
Не могли бы вы помочь проясните ниже недоразумения?
когда мы должны передать sequence_lengths
аргумент в decoder()
, а когда он не нужен?
BasicDecoder
наследует BaseDecoder
, у которого нет аргумента sequence_lengths
в его методе call
. Исходный код здесь Почему он работает, когда передается аргумент sequence_lengths
в decoder()
?
Большое спасибо!