keras中 keras.layers merge is not callable (keras.layers.concatenate)
旧版本中:
from keras.layers import merge
merge6 = merge([layer1,layer2], mode = 'concat', concat_axis = 3)
新版本中:
from keras.layers.merge import concatenate
merge = concatenate([layer1, layer2], axis=3)
REF
https://blog.csdn.net/moshiyaofei/article/details/87888387
=====================================
指定拼接轴
默认情况下,Concatenate
层会沿着最后一个轴(通常是特征轴)拼接张量。但是,你也可以通过axis
参数来指定拼接的轴。
注意事项
- 所有要拼接的张量除了拼接轴之外,其他轴的大小必须相同。
- 拼接轴的大小会增加,等于所有输入张量在该轴上的大小之和。
Concatenate
层通常用于将来自不同分支的特征组合在一起,以便在后续层中进行进一步处理。
====================================
轴:0,1,2,3.。。。
concatenate
keras.layers.concatenate(inputs, axis=-1)
参数
inputs: 一个列表的输入张量(列表大小至少为 2)。
axis: 串联的轴
输出
一个张量,所有输入张量通过 axis 轴串联起来的输出张量。
如下程序段:
import numpy as np import cv2 import keras.backend as K import tensorflow as tf t1 = K.variable(np.array([[[1, 2], [2, 3]], [[4, 4], [5, 3]]])) t2 = K.variable(np.array([[[7, 4], [8, 4]], [[2, 10], [15, 11]]])) d0 = K.concatenate([t1 , t2] , axis=-2) d1 = K.concatenate([t1 , t2] , axis=1) d2 = K.concatenate([t1 , t2] , axis=-1) d3 = K.concatenate([t1 , t2] , axis=2) init = tf.global_variables_initializer() with tf.Session() as sess: sess.run(init) print(sess.run(d0)) print(sess.run(d1)) print(sess.run(d2)) print(sess.run(d3))
axis=-2,意思是从倒数第2个维度进行拼接,对于三维矩阵而言,这就等同于axis=1。
axis=-1,意思是从倒数第1个维度进行拼接,对于三维矩阵而言,这就等同于axis=2。
上述程序的输出如下:
t1:2-2-2
[
[[1, 2], [2, 3]],
[[4, 4], [5, 3]]
]
t2:2-2-2
[
[[7, 4], [8, 4]],
[[2, 10], [15, 11]]
]
d0: axis=-2
[[[ 1. 2.] [ 2. 3.] [ 7. 4.] [ 8. 4.]]
[[ 4. 4.] [ 5. 3.] [ 2. 10.] [ 15. 11.]]]
d1: axis=1
[[[ 1. 2.] [ 2. 3.] [ 7. 4.] [ 8. 4.]]
[[ 4. 4.] [ 5. 3.] [ 2. 10.] [ 15. 11.]]]
d2: axis=-1
[[[ 1. 2. 7. 4.] [ 2. 3. 8. 4.]]
[[ 4. 4. 2. 10.] [ 5. 3. 15. 11.]]]
d3: axis=2
[[[ 1. 2. 7. 4.] [ 2. 3. 8. 4.]]
[[ 4. 4. 2. 10.] [ 5. 3. 15. 11.]]]
来自:
https://blog.csdn.net/rocking_struggling/article/details/104234159
==============================