Ich versuche zu lernen, wie man RNN für Spracherkennung mit TensorFlow baut. Am Anfang wollte ich einige Beispielmodelle ausprobieren, die auf der TensorFlow-Seite TF-RNN
Wie bereits erwähnt, hatte ich mir etwas Zeit genommen, um zu verstehen, wie Wort-IDs in eine dichte Repräsentation (Vektorrepräsentation) eingebettet werden, indem die Basisversion des word2vec-Modellcodes durcharbeitet wird. Ich hatte ein Verständnis dafür, was %code% tatsächlich tut, bis ich tatsächlich die gleiche Funktion wie in einem zweidimensionalen Array in TF-RNN %code% , wenn es keinen Sinn mehr macht.
Bei einem 2-d-Array %code% und einem 1-d-Array %code% ruft die Funktion %code% Zeilen von params ab, die den in %code% angegebenen Indizes entsprechen. Dies gilt für die Dimension output it kommt zurück.
Wenn es mit denselben Parametern und dem 2-d-Array %code% versucht wird, gibt %code% das 3-d-Array anstelle von 2-d zurück, was ich nicht verstehe.
Ich habe das Handbuch nach Einbettung nachschlagen gesucht, aber ich finde es immer noch schwierig zu verstehen, wie die Partitionierung funktioniert und welches Ergebnis zurückgegeben wird. Ich habe vor kurzem ein einfaches Beispiel mit %code% versucht und es scheint, dass es jedes Mal unterschiedliche Werte zurückgibt. Liegt dieses Verhalten an der Zufälligkeit der Partitionierung?
Bitte helfen Sie mir zu verstehen, wie %code% funktioniert, und warum wird in %code% und %code% verwendet, d. h. was ist der Zweck, sie sogar zu verwenden?
Es gibt bereits eine Antwort darauf, was %code% hier
Wenn es mit denselben Parametern und 2D-Array-IDs versucht wird, gibt tf.nn.embedding_lookup das 3-d-Array statt 2-d zurück, was ich nicht verstehe.
Wenn Sie eine 1-D-Liste der IDs %code% hatten, würde die Funktion eine Liste der Einbettungen ausgeben %code% , wobei %code% ein Array mit der Form %code% ist. Zum Beispiel könnte die Liste von IDs ein Stapel von Wörtern sein.
Nun haben Sie eine Matrix mit IDs oder eine Liste von IDs. Zum Beispiel haben Sie jetzt einen Stapel von Sätzen , d. H. Einen Stapel von Wortlisten, d. H. Eine Liste von Wortlisten.
Wenn Ihre Satzliste lautet: %code% (Satz 1 ist %code% , Satz 2 ist %code% ) berechnet die Funktion eine Matrix von Einbettungen, die die Form %code% haben und wie folgt aussehen :
%Vor%Was das Argument %code% betrifft, müssen Sie sich nicht darum kümmern. Im Grunde erlaubt es Ihnen, eine Liste von Einbettungsmatrizen als %code% anstelle von 1 Matrix anzugeben, wenn Sie Einschränkungen bei der Berechnung haben.
Sie können also Ihre Einbettungsmatrix der Form %code% in zehn Matrizen der Form %code% aufteilen und diese Liste der Variablen als %code% übergeben. Das Argument %code% behandelt die Verteilung des Vokabulars (die 1000 Wörter) unter den 10 Matrizen.