Was ist das Interaktionsprinzip zwischen mehrdimensionalen Tensoren und linearen Schichten?

WBOY
Freigeben: 2024-01-22 23:21:15
nach vorne
965 Leute haben es durchsucht

Was ist das Interaktionsprinzip zwischen mehrdimensionalen Tensoren und linearen Schichten?

Die lineare Schicht ist eine der am häufigsten verwendeten Schichten beim Deep Learning und spielt eine wichtige Rolle in neuronalen Netzen. Es wird häufig für Aufgaben wie Bildklassifizierung, Objekterkennung und Spracherkennung verwendet. Dieser Artikel konzentriert sich auf die Rolle linearer Schichten bei mehrdimensionalen Tensoren.

Lassen Sie uns zunächst die Grundprinzipien linearer Ebenen überprüfen. Für einen Eingabetensor x lautet die Berechnungsformel der linearen Schicht wie folgt:

y=Wx+b

wobei W und b jeweils die Parameter der linearen Schicht sind und die Form von W ist (n_out, n_in), b Die Form ist (n_out,). n_in repräsentiert die Größe des Eingabetensors und n_out repräsentiert die Größe des Ausgabetensors. Angenommen, der Eingabetensor ist ein eindimensionaler Tensor x∈R^n_in und der Ausgabetensor ist ebenfalls ein eindimensionaler Tensor y∈R^n_out. In der linearen Schicht wird der Eingabetensor durch die Gewichtsmatrix W plus den Vorspannungsvektor b linear transformiert, um den Ausgabetensor y zu erhalten. Diese lineare Transformation kann als y = Wx + b ausgedrückt werden. Unter diesen stellt jede Zeile von W den Gewichtsvektor eines Ausgabeneurons der linearen Schicht dar, und jedes Element von b repräsentiert den Bias-Wert des entsprechenden Ausgabeneurons. Jedes Element des endgültigen Ausgabetensors y wird durch Berechnen eines Skalarprodukts aus dem Gewichtsvektor des entsprechenden Ausgabeneurons und des Eingabetensors plus dem entsprechenden Offsetwert erhalten.

Angenommen, wir haben einen mehrdimensionalen Tensor X mit der Form (n_1,n_2,…,n_k). Wir müssen es an eine lineare Ebene übergeben, um einen Ausgabetensor Y mit der Form (m_1,m_2,…,m_l) zu erzeugen. Was sollen wir zu diesem Zeitpunkt tun?

Zuerst müssen wir X zu einem eindimensionalen Tensor verflachen. Dieser Vorgang wird oft als „Flattening“-Vorgang bezeichnet und kann mithilfe der Ansichtsfunktion in PyTorch implementiert werden. Insbesondere können wir die Form von X in (n_1mal n_2mal...mal n_k,) ändern, dh die Elemente aller Dimensionen in einer Spalte anordnen. Auf diese Weise erhalten wir einen eindimensionalen Tensor x, dessen Größe n_{in}=n_1mal n_2mal...mal n_k ist.

Als nächstes können wir x an die lineare Ebene übergeben und den Ausgabetensor y erhalten. Insbesondere können wir die Berechnungsformel der linearen Schicht verwenden:

y=Wx+b

Hier ist die Form von W (m_{out},n_{in}) und die Form von b ist (m_{out},), m_{out} repräsentiert die Größe des Ausgabetensors. Das Ergebnis der Multiplikation Wx ist ein eindimensionaler Tensor mit der Form (m_{out},). Nach Addition des Offsets b wird der Ausgabetensor y mit der Form (m_{out},) erhalten.

Zuletzt müssen wir y wieder in die Form eines mehrdimensionalen Tensors umwandeln. Insbesondere können wir die Ansichtsfunktion in PyTorch verwenden, um die Form von y in (m_1, m_2,...,m_l) zu ändern. Auf diese Weise erhalten wir den endgültigen Ausgabetensor Y.

Es ist zu beachten, dass wir beim Abflachen eines mehrdimensionalen Tensors in einen eindimensionalen Tensor sicherstellen müssen, dass die Reihenfolge der Elemente im Tensor unverändert bleibt. Angenommen, wir haben einen zweidimensionalen Tensor X der Form (2,3):

Wenn wir view(-1) zur Implementierung verwenden, ist das Ergebnis:

x=[1,2,3,4,5,6]

Hier werden wir (1,2) und ( 4,5) Die Elemente dieser beiden Reihen werden zusammen angeordnet, wodurch sich die Reihenfolge ändert. Daher sollte die korrekte Operation darin bestehen, view(-1) zu verwenden, um den Tensor zu verflachen, und dann view(1,-1) zu verwenden, um ihn wieder in seine ursprüngliche Form umzuwandeln:

x=begin{bmatrix}1&2&3&4&5&6end{ bmatrix }

Es ist zu beachten, dass die Rolle einer linearen Schicht auf einem mehrdimensionalen Tensor als unabhängige lineare Transformation für jede Probe angesehen werden kann. Angenommen, wir haben einen vierdimensionalen Tensor X mit der Form (N, C, H, W), wobei N die Anzahl der Abtastwerte, C die Anzahl der Kanäle und H und W die Höhe bzw. Breite darstellen. Wir können expandieren Die lineare Schicht führt für jede Probe eine unabhängige lineare Transformation durch, um einen Ausgabetensor Y mit der Form (N, m_{out}) zu erhalten. Schließlich können wir Y entlang der ersten Dimension in seine ursprüngliche Form (N,m_1,m_2,…,m_l) zurückversetzen.

Kurz gesagt kann die Rolle einer linearen Schicht auf einem mehrdimensionalen Tensor als unabhängige lineare Transformation für jede Probe angesehen werden. In praktischen Anwendungen reduzieren wir normalerweise mehrdimensionale Tensoren zu eindimensionalen Tensoren und übergeben sie an lineare Schichten. Bei der Abflachungsoperation muss sichergestellt werden, dass die Reihenfolge der Elemente unverändert bleibt, andernfalls führt dies zu falschen Berechnungsergebnissen. Schließlich müssen wir den Ausgabetensor für den nächsten Berechnungsschritt wieder in seine ursprüngliche Form bringen.

Das obige ist der detaillierte Inhalt vonWas ist das Interaktionsprinzip zwischen mehrdimensionalen Tensoren und linearen Schichten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:163.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!