Seite 1 von 1

Decoder erstellen

Verfasst: Donnerstag 30. Juni 2022, 21:26
von nichtSoGuter
ich möchte eine Decoder mit der tensorflow klasse "tfa.seq2seq.BasicDecoder" schreiben. ich bin aber ein wenig am struggeln zu verstehen wie die Klasse funktioniert.
(siehe Code unten)
Frage 1: wieso hat die instanz "decoder" 3 outputs. Der "output_layer" ist doch ein Dense layer mit "output_vocab_size = 64" units.
Frage 2: ich verstehe die übergebenen Parameter "sequence_length" und "initial_state" für die "decoder" instanz nicht. Diese sind in der description in tensorflow nicht aufgeführt. Attribute sind das wohl nicht? was sind das aber dann für Parameter?

Vielen Dank im Voraus für Antworten!

Code: Alles auswählen

batch_size = 4
max_time = 7
hidden_size = 32
embedding_size = 48
input_vocab_size = 128
output_vocab_size = 64

embedding_layer = tf.keras.layers.Embedding(input_vocab_size, embedding_size)
input_ids = tf.random.uniform(
    [batch_size, max_time], maxval=input_vocab_size, dtype=tf.int64)

# inputs für die  initialisierung der tfa.seq2seq.BasicDecoder instanz wird erstellt
decoder_cell = tf.keras.layers.LSTMCell(hidden_size)
sampler = tfa.seq2seq.TrainingSampler()
output_layer = tf.keras.layers.Dense(output_vocab_size)

# instanz selbst wird erstellt
decoder = tfa.seq2seq.BasicDecoder(decoder_cell, sampler, output_layer) 

# zu übergebene Parameter für die instanz wird erstellt
input_lengths = tf.fill([batch_size], max_time)
input_tensors = embedding_layer(input_ids)
initial_state = decoder_cell.get_initial_state(input_tensors)

# FRAGE 1: wieso hat "decoder" 3 outputs
# FRAGE 2: übergebene Parameter "sequence_length" und "initial_state" für die "decoder" instanz in der description in tensorflow nicht aufgeführt. was sind das für Parameter? Attribute sind das wohl nicht? was sind diese Parameter aber dann?
output, state, lengths = decoder(
    input_tensors, sequence_length=input_lengths, initial_state=initial_state)