Recientemente miré la fusión modal y usé la función concatenar () en keras. Antes no entendía lo que significaba el parámetro del eje . Después de investigar un poco, finalmente lo descubrí.
Mira el código primero
import numpy as np
import keras.backend as K
import tensorflow as tf
a = K.variable(np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]))
b = K.variable(np.array([[[9, 10], [11, 12]], [[13, 14], [15, 16]]]))
c1 = K.concatenate([a, b], axis=0)
c2 = K.concatenate([a, b], axis=1)
c3 = K.concatenate([a, b], axis=2)
#试试默认的参数,其实就是从倒数第一个维度进行融合的。
c4 = K.concatenate([a, b])
c5 = K.concatenate([a, b],axis=-1)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
print('***************')
print(a.shape,b.shape)
print('***************')
print('*****C1******',c1.shape)
print(sess.run(c1))
print()
print('*****C2******',c2.shape)
print(sess.run(c2))
print()
print('*****C3******',c3.shape)
print(sess.run(c3))
print()
print('*****C4******',c4.shape)
print(sess.run(c4))
print('*****C5******',c5.shape)
print(sess.run(c5))
Mira el efecto de salida:
axis = n significa empalme desde la dimensión n. Para una matriz tridimensional, el valor del eje puede ser [-3, -2, -1, 0, 1, 2].
eje = -2, lo que significa empalmar desde la penúltima dimensión. Para una matriz tridimensional, esto equivale a eje = 1.
eje = -1, lo que significa empalmar desde la penúltima dimensión. Para una matriz tridimensional, esto equivale a eje = 2.
Simplemente entienda:
Puede ser más complicado de entender a partir de la imagen, pero si es muy simple desde un punto de vista matemático, como el ejemplo anterior
Se fusionan dos (2,2,2) (2,2,2) matrices,
- La fusión de la primera dimensión es (4,2,2), es decir, eje = 0
- La fusión de la segunda dimensión es (2,4,2), es decir, eje = 1
- La fusión de la tercera dimensión es (2,2,4), es decir, eje = 2
referencias
[1] https://blog.csdn.net/leviopku/article/details/82380710
[2] https://zhuanlan.zhihu.com/p/58672698