Путаница в использовании дополнений Tensorflow 2.0 на seq2seq BasicDecoder - PullRequest
0 голосов
/ 14 июля 2020

Ниже приведен фрагмент кода вызова 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

Не могли бы вы помочь проясните ниже недоразумения?

  1. когда мы должны передать sequence_lengths аргумент в decoder(), а когда он не нужен?

  2. BasicDecoder наследует BaseDecoder, у которого нет аргумента sequence_lengths в его методе call. Исходный код здесь Почему он работает, когда передается аргумент sequence_lengths в decoder()?

Большое спасибо!

1 Ответ

0 голосов
/ 16 июля 2020

Я нашел где-то в do c с аргументом sequence_length здесь https://www.tensorflow.org/addons/api_docs/python/tfa/seq2seq/BaseDecoder?hl=en#initialize

...