Керас: общий размер нового массива должен быть неизменным - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь построить CRNN, но в настоящее время я сталкиваюсь с ошибкой в ​​функции Reshape (), в которой говорится, что размер моего исходного массива должен быть неизменным

def CRNN(blockSize, blockCount, inputShape, trainGen, testGen, epochs):

model = Sequential()

# Conv Layer
channels = 32
for i in range(blockCount):
    for j in range(blockSize):
        if (i, j) == (0, 0):
            conv = Conv2D(channels, kernel_size=(5, 5),
                          input_shape=inputShape, padding='same')
        else:
            conv = Conv2D(channels, kernel_size=(5, 5), padding='same')
        model.add(conv)
        model.add(BatchNormalization())
        model.add(Activation('relu'))
        model.add(Dropout(0.15))
        if j == blockSize - 2:
            channels += 32
    model.add(MaxPooling2D(pool_size=(2, 2), padding='same'))
    model.add(Dropout(0.15))

# Feature aggregation across time
model.add(Reshape((9, 960)))

# LSTM layer
model.add(Bidirectional(LSTM(200), merge_mode='ave'))
model.add(Dropout(0.5))

# Linear classifier
model.add(Dense(4, activation='softmax'))


model.compile(loss=keras.losses.categorical_crossentropy,
              optimizer=keras.optimizers.Adam(),
              metrics=['accuracy']) # F1?


model.fit_generator(trainGen,
                    validation_data=testGen, steps_per_epoch = trainGen.x.size // 20,
                    validation_steps = testGen.x.size // 20,
                    epochs=epochs, verbose=1)
return model

Я вызываю функцию с помощью:

model = CRNN(4, 6, (285, 33, 1), trainGen, testGen, 1)

Таким образом, моя форма ввода (285,33,1).

Получена техническая ошибка:

ValueError: общий размер нового массива долженбыть неизменным.

Есть ли способ получить значение динамически или просто найти правильную форму?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...