Wenn Sie Keras 'F. Chollet-Buch lesen, gibt es einen Teil, der die verkettete Ebene erklärt. Es ist im Bild unten dargestellt, aber es war eine erfrischende Vorstellung davon, welche Art von Berechnung dabei durchgeführt wurde.
Übrigens, da die Verkettungsschicht eine wichtige Rolle in U-NET, Resnet usw. spielt, ist es nicht gut, sie zu verlassen, ohne die Verkettungsschicht mehr zu verstehen. Verwenden Sie also einen einfachen Tensor und verwenden Sie die Verkettungsschicht. Ich beschloss, das Verhalten zu überprüfen.
Abbildung U-Net-Architektur Abbildung ResNet-Block
In Excel habe ich beim Verketten von Zeichenfolgen die Funktion Verketten verwendet, sodass ich ein Bild von ** Anhängen mehrerer Arrays ohne Operation ** hatte, aber von [Teratail](https: /) /teratail.com/questions/163385) hat ein leicht verständliches Diagramm, daher werde ich es hier vorstellen.
Hier gibt es zwei Matrizen, blau und grün. Diese Matrizen sind zweidimensionale (2D) Tensoren, und die Form dieser Matrizen ist (3,3). Achse bezieht sich auf die Abmessung des Tensors. [Tensor verstehen (2): Form]![Image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208980/9c722160-613a- 1df8-6773-ad133d433db8.png)
Achse bezieht sich auch auf die Achse der Tensordimension. (Es kann gut sein, an den Vektor zu denken, wenn man den Moment in der Physik ausdrückt.)
Bei einem zweidimensionalen Tensor bedeutet Achse = 0 die vertikale Richtung und Achse = 1 die horizontale Richtung.
Wenn jedoch Achse = -1 ist, bedeutet dies die letzte Achse. Betrachten Sie einen Ausschnitt aus einer Python-Liste.
Zum Zeitpunkt der Verkettungsebene ist es dann möglich, die Verbindungsrichtung anzugeben.
** (1) Wenn Achse = 0, vertikal verbinden. ** ** **
** (2) Wenn Achse = 1, horizontal verbinden. (Im Fall von 2D hat Achse = -1 jedoch dieselbe Bedeutung) **
python
import tensorflow as tf
import numpy as np
#Vorbereitung für 2D-Tensor
x1 = np.array([[1,3,3],
[5,2,1],
[0,9,5]])
x2 = np.array([[3,2,3],
[8,7,4],
[0,1,1]])
print('x1=',x1)
print('x2=',x2)
Concatenate Layer
#Concantenate Layer
# axis = 0,Vertikale Kupplung
y1 = tf.keras.layers.Concatenate(axis=0)([x1,x2])
print('y1=',y1)
Vertikales Verknüpfungsergebnis
y1= tf.Tensor(
[[1 3 3]
[5 2 1]
[0 9 5]
[3 2 3]
[8 7 4]
[0 1 1]], shape=(6, 3), dtype=int32)
# axis = 1 (or axis = -1)Horizontale Kupplung
y2 = tf.keras.layers.Concatenate(axis=-1)([x1,x2])
print('y2=',y2)
Ergebnis der horizontalen Verbindung
y2= tf.Tensor(
[[1 3 3 3 2 3]
[5 2 1 8 7 4]
[0 9 5 0 1 1]], shape=(3, 6), dtype=int32)
Endlich habe ich die Funktionsweise von Concatenate Layer verstanden. (Ich fühle.) Die Schreibweise von Concatenate fällt jedoch schwer ein. (Tränen)