Я пытаюсь создать нейронную сеть со входом (партия, каналы (3), 64, 32) В Керасе, но у меня есть ошибки, используя нормализацию партии (так как ошибка начинается с упомянутого слоя, я решил изолировать часть, котораявызывает ошибку) Модель запускается следующим образом:
input_imgC = Input(shape=(X.shape[1], X.shape[2], X.shape[3]))
x = Conv2D(32, (5, 5), activation='relu', padding='same', data_format="channels_first")(input_imgC)
out = BatchNormalization(axis=1)(x)
Я получаю следующее исключение:
Форма должна иметь ранг 1, но имеет ранг 0 для 'batch_normalization_1 / cond /Reshape_4 '(op:' Reshape ') с входными формами: [1,32,1,1], [].
Я думал, что данные были плохо преобразованы из сверточного слоя, и поэтомуЯ попробовал модель без пакетной нормализации.Модель:
input_imgC = Input(shape=(X.shape[1], X.shape[2], X.shape[3]))
out = Conv2D(32, (5, 5), activation='relu', padding='same', data_format="channels_first")(input_imgC)
Правильно получено следующее резюме:
Слой (тип) Выходной параметр Параметр #
=================================================================> input_1 (InputLayer) (Нет, 3, 64, 32) 0
conv2d_1 (Conv2D) (Нет, 32, 64, 32) 2432
================================================================= Всего параметров: 2432 Обучаемых параметров: 2432 Необучаемых параметров: 0
Я знаю, что могу использовать
out= BatchNormalization (axis = -1) (x)
с входом модели как (batch, 64, 32, channel (3)), и это будет работать (я уже пробовал), но мне нужноэта конфигурация каналов в начале, чтобы протестировать модель с пакетом, который показывает значимость объекта.
Есть ли у кого-нибудь идея, что здесь делать?