0

Ich habe zwei mögliche Lösung der Handhabung mit variabler Größe Eingabesequenzen für RNN in Keras gefunden. Die Lösung ein:Keras: Variable Eingabesequenz: Polsterung vs Form Keine?

input = Input(shape=(None, num_classes)) 

dann kann ich als eine Eingabe sowohl eine beliebige Folge Größe setzen für die Ausbildung und Validierung.

Die Lösung zwei:

input = Input(shape=(max_seq_length, num_classes)) 
... 
pad_sequences(input_data, maxlen=max_seq_length, padding='post') 

Welche Lösung zu empfehlen?

Ich betrachte Vorteile dieser beiden. Was ich in der zweiten Lösung sehen kann, ist eine Art Validierung der Eingabegröße. Die Eingabe kann nicht größer als max_seq_size sein, außerdem kann ich den Typ der Auffüllung (pre/post) und das gleiche für das Timing einer zu großen Sequenz bestimmen.

Welche Art von Polsterung und Trimmen wird mit der Lösung durchgeführt? Standardparameter von pad_sequence?

Ich habe die Zeit des Trainingsmodells für beide Lösungen und es ist ungefähr die gleiche Zeit. Ich schätze, unter der Haube ist es genauso, wie die max_seq_length aus der maximalen Länge der Trainingssequenz berechnet wird, habe ich recht?

Vielen Dank für eine Klarstellung!

Antwort

0

Es gibt einfach keine Polsterung oder Trimmen in Lösung eins. Es nimmt die Sequenz wie sie ist und verarbeitet sie. Das Modell ist völlig unabhängig von der Sequenzlänge.

In Lösung zwei, fügen Sie am besten eine Masking Schicht hinzu. Die Verarbeitung der gepolsterten Werte wird einfach übersprungen.