나는 keras를 처음 사용했습니다.여러 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.layers.merge] (https://keras.io/layers/merge/#concatenate) 모듈에 Add instance와 Concatenate 인스턴스가 있습니다. 그 둘의 차이점을 조금 설명 할 수 있습니까? –
'Add()'레이어는 문자 그대로 두 개의 풋에서 값을 더할 것입니다. (두 개의 입력은 모든 차원에서 정확히 같은 크기 여야합니다.) 그것은 "result = input1 + input2", elementwise와 같습니다. ---'Concatenate()'레이어는 하나의 입력을 다른 레이어의 끝에 추가합니다. 두 개의 텐서에 합류하고 더 큰 텐서를 만드는 계산은 포함되어 있지 않습니다. –
귀하의 질문에 대한 답변이 있다고 생각되면 답변으로 표시하십시오. –