Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 合并多个keras max池层_Python_Machine Learning_Keras_Max Pooling - Fatal编程技术网

Python 合并多个keras max池层

Python 合并多个keras max池层,python,machine-learning,keras,max-pooling,Python,Machine Learning,Keras,Max Pooling,我对凯拉斯不熟悉 我的目标是总共有4个最大池层。它们都采用相同的形状输入(N,256)。第一层执行全局最大池并提供1个输出。第二层具有N/2池大小和N/2步幅,提供2个输出。第三个给出4个输出,第四个给出8个输出。这是我的密码 test_x = np.random.rand(N, 256, 1) model = Sequential() input1 = Input(shape=test_x.shape, name='input1') input2 = Inp

我对凯拉斯不熟悉

我的目标是总共有4个最大池层。它们都采用相同的形状输入(N,256)。第一层执行全局最大池并提供1个输出。第二层具有N/2池大小和N/2步幅,提供2个输出。第三个给出4个输出,第四个给出8个输出。这是我的密码

    test_x = np.random.rand(N, 256, 1)

    model = Sequential()

    input1 = Input(shape=test_x.shape, name='input1')
    input2 = Input(shape=test_x.shape, name='input2')
    input3 = Input(shape=test_x.shape, name='input3')
    input4 = Input(shape=test_x.shape, name='input4')

    max1 = MaxPooling2D(pool_size=(N, 256), strides=N)(input1)
    max2 = MaxPooling2D(pool_size=(N / 2, 256), strides=N / 2)(input2)
    max3 = MaxPooling2D(pool_size=(N / 4, 256), strides=N / 4)(input3)
    max4 = MaxPooling2D(pool_size=(N / 8, 256), strides=N / 8)(input4)

    mrg = Merge(mode='concat')([max1, max2, max3, max4])
在创建了最多4个池层之后,我尝试将它们合并在一起,但是keras给出了这个错误

ValueError:两种形状中的尺寸1必须相等,但对于输入形状为[?,1,1,1],?,2,1,1],?,4,1,1],,?,8,1,1],]的“merge_1/concat”(op:“ConcatV2”)而言,尺寸1分别为4和8,并且具有计算输入张量:input[4]=


我如何解决这个问题?合并是实现我在keras中的目标的正确方法吗?

对于串联,除了concat维度本身之外,所有维度都必须具有相同数量的元素

如您所见,您的结果具有以下形状:

(?, 1, 1, 1)    
(?, 2, 1, 1)    
(?, 4, 1, 1)    
(?, 8, 1, 1)    
当然,连接它们的唯一可能方法是在第二个轴(轴=1)中


但是请注意(除非你有具体的原因并且清楚你在做什么),这会导致一个非常奇怪的图像,因为你是在空间维度而不是通道维度中连接的

谢谢你回答我的问题。还有一个问题,在模块下,有添加实例和连接实例。你能解释一下这两者的区别吗?
Add()
层将两个输入值相加。(两个输入在所有尺寸上必须完全相同)。它就像“result=input1+input2”,元素方面
Concatenate()
层将一个输入附加到另一个输入的末尾。没有计算,只是加入两个张量和一个更大的一个。如果你认为这回答你的问题,请把它标记为回答。
mrg = Concatenate(axis=1)([max1,max2,max3,max4])