Die offizielle Dokumentation für tf.contrib.legacy_seq2seq.embedding_rnn_seq2seq
hat die folgende Erklärung für das Argument output_projection:
tf.contrib.legacy_seq2seq.embedding_rnn_seq2seq Ausgabeprojektion
output_projection
: Keine oder ein Paar (W, B) des Ausgangsprojektions Gewichte und Vorspannungen; W hat die Form [Ausgabegröße x Zahl_Decodersymbole] und B hat die Form [Num_decoder_symbols]; Wenn angegeben und feed_previous = True, wird jede vorhergehende Ausgabe zuerst mit W multipliziert und mit B ergänzt.
Ich verstehe nicht, warum das B-Argument die Größe [num_decoder_symbols]
haben sollte? Da die Ausgabe zuerst mit W multipliziert wird und dann die Verzerrungen addiert werden, sollte es nicht [output_size]
sein?
Dies kann daran liegen, dass Tensorflussvektoren (in diesem Fall B) normalerweise Zeilenvektoren sind, so dass die Multiplikation als (uW + B) erfolgt, wobei u und B beide Zeilenvektoren sind. –
Oh nein! Ich habe gerade versucht, den Code für die ouput_projection einzurichten, und es stellt sich heraus, egal welche output_size Sie geben, die endgültige Dimension wird immer gleich der output_size des num_proj Arguments der lstm-Zelle. Was den ursprünglichen Zweifel immer noch nicht beantwortet: (Warum sind Vorurteile num_decoder_symbol?) –