Входная форма слоя Keras Convolution2d

я в основном пытаюсь построить глубокую модель, которая состоит из множества слоев convolution2d, за которыми следует maxpooling 2d следующим образом:

model.add(Convolution2D(128, 54, 7, input_shape=(1, 54, 180)))
model.add(MaxPooling2D(pool_size=(1, 3)))

model.add(Convolution2D(128, 1, 7))
model.add(MaxPooling2D(pool_size=(1, 3)))

Однако я получаю следующую ошибку:

Файл "/home/user/anaconda2/lib/python2.7/site-packages/keras/engine/training.py", строка 100, в standardize_input_data str(array.shape)) Исключение: ошибка при проверке ввода модели: ожидаемая свертка2d_input_1 иметь 4 измерения, но получил массив с формой (8000, 180, 54) Цитата

Но я следую норме (образцы, каналы, строки, столбцы). Почему это происходит ?


person meme mimis    schedule 10.01.2017    source источник


Ответы (1)


Кажется, что ваши входные данные имеют неправильную форму. Вы должны распечатать форму данных, которые вы вводите в сеть.

Кажется, что ваш массив - это серые входные изображения, и они обычно используют только 2 измерения, потому что у них есть только 1 канал. Поэтому массив np упорядочен без третьего измерения. Обычно вам нужно добавить это, используя np.reshape или выделив массив другим способом. Когда я получаю сообщение об ошибке, подобное вашему, я бы попробовал:

X # training data
X = np.transpose(X, (0, 2, 1))
X = np.reshape(X, (X.shape[0], 1, X.shape[1], X.shape[2]))
person Thomas Pinetz    schedule 10.01.2017
comment
Мои входные данные - это текст. спасибо за предложение, я собираюсь попробовать, чтобы увидеть, решит ли это проблему. - person meme mimis; 10.01.2017