Recentemente, olhei para a fusão modal e usei a função concatenate () no keras. Eu não entendia o que o parâmetro do eixo significa antes. Depois de alguma pesquisa, eu finalmente descobri.
Olhe para o código primeiro
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))
Observe o efeito de saída:
eixo = n significa emenda da enésima dimensão. Para uma matriz tridimensional, o valor do eixo pode ser [-3, -2, -1, 0, 1, 2].
eixo = -2, o que significa emenda da penúltima dimensão. Para uma matriz tridimensional, isso é equivalente a eixo = 1.
eixo = -1, o que significa emenda da penúltima dimensão. Para uma matriz tridimensional, isso é equivalente a eixo = 2.
Simplesmente entenda:
Pode ser mais complicado de entender pela imagem, mas se for muito simples do ponto de vista matemático, como o exemplo acima
Duas (2,2,2) (2,2,2) matrizes são mescladas,
- A fusão da primeira dimensão é (4,2,2), ou seja, eixo = 0
- A fusão da segunda dimensão é (2,4,2), ou seja, eixo = 1
- A fusão da terceira dimensão é (2,2,4), ou seja, eixo = 2
referências
[1] https://blog.csdn.net/leviopku/article/details/82380710
[2] https://zhuanlan.zhihu.com/p/58672698