合并多个 keras 最大池化层
merge multiple keras max pooling layers
我是keras的新手。
我的目标是总共有 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: Dimension 1 in both shapes must be equal, but are 4 and 8 for 'merge_1/concat' (op: 'ConcatV2') with input shapes: [?,1,1,1], [?,2,1,1], [?,4,1,1], [?,8,1,1], [] and with computed input tensors: input[4] = <3>.
我该如何解决这个问题?在 keras 中合并是实现我的目标的正确方法吗?
对于串联,除串联维度本身外,所有维度都必须具有相同数量的元素。
如您所见,结果的形状为:
(?, 1, 1, 1)
(?, 2, 1, 1)
(?, 4, 1, 1)
(?, 8, 1, 1)
当然,连接它们的唯一可能方法是在第二个轴上(轴=1)
mrg = Concatenate(axis=1)([max1,max2,max3,max4])
但请注意(除非您有具体原因并且非常清楚自己在做什么)这将导致非常奇怪的图像,因为您是在空间维度而不是通道维度中串联。
我是keras的新手。
我的目标是总共有 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: Dimension 1 in both shapes must be equal, but are 4 and 8 for 'merge_1/concat' (op: 'ConcatV2') with input shapes: [?,1,1,1], [?,2,1,1], [?,4,1,1], [?,8,1,1], [] and with computed input tensors: input[4] = <3>.
我该如何解决这个问题?在 keras 中合并是实现我的目标的正确方法吗?
对于串联,除串联维度本身外,所有维度都必须具有相同数量的元素。
如您所见,结果的形状为:
(?, 1, 1, 1)
(?, 2, 1, 1)
(?, 4, 1, 1)
(?, 8, 1, 1)
当然,连接它们的唯一可能方法是在第二个轴上(轴=1)
mrg = Concatenate(axis=1)([max1,max2,max3,max4])
但请注意(除非您有具体原因并且非常清楚自己在做什么)这将导致非常奇怪的图像,因为您是在空间维度而不是通道维度中串联。