Si vous lisez le livre F. Chollet de Keras, il y a une partie qui explique Concatenate Layer. Il est représenté dans l'image ci-dessous, mais c'était une idée rafraîchissante du type de calcul effectué.
À propos, puisque Concatenate Layer joue un rôle important dans U-NET, Resnet, etc., il n'est pas bon de le laisser sans comprendre Concatenate Layer, alors utilisez un simple tenseur et utilisez Concatenate Layer. J'ai décidé de vérifier le comportement.
Figure Architecture U-Net Figure Bloc ResNet
Dans Excel, j'ai utilisé la fonction Concaténer lors de la concaténation de chaînes, donc j'avais une image de ** attacher plusieurs tableaux sans aucune opération **, mais [Teratail](https: /) /teratail.com/questions/163385) a un diagramme facile à comprendre, je vais donc le présenter ici.
Ici, il y a deux matrices, bleue et verte. Ces matrices sont des tenseurs bidimensionnels (2D), et la forme de ces matrices est (3,3). axe fait référence à la dimension du tenseur. [Comprendre Tensor (2): Shape]![Image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208980/9c722160-613a- 1df8-6773-ad133d433db8.png)
axis fait également référence à l'axe de la dimension du tenseur. (Il peut être bon de penser au vecteur lors de l'expression du moment en physique.)
Dans le cas d'un tenseur bidimensionnel, axis = 0 signifie la direction verticale et axis = 1 signifie la direction horizontale.
Cependant, lorsque axis = -1, cela signifie le dernier axe. Prenons une tranche d'une liste Python.
Ensuite, au moment de Concaténer la couche, il est possible de spécifier la direction de connexion.
** (1) Si axis = 0, joindre verticalement. ** **
** (2) Si axis = 1, joindre horizontalement. (Cependant, dans le cas de 2D, axis = -1 a la même signification) **
python
import tensorflow as tf
import numpy as np
#Préparation pour 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,Couplage vertical
y1 = tf.keras.layers.Concatenate(axis=0)([x1,x2])
print('y1=',y1)
Résultat de jointure verticale
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)Accouplement horizontal
y2 = tf.keras.layers.Concatenate(axis=-1)([x1,x2])
print('y2=',y2)
Résultat de la connexion horizontale
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)
J'ai enfin compris le fonctionnement de Concatenate Layer. (Je ressens.) Cependant, l'orthographe de Concatenate est difficile à penser. (Larmes)