2017-01-10 6 views
1

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

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 ул (array.shape)) Исключение: Ошибка при проверке ввод модели: ожидается convolution2d_input_1 до имеют 4 размеры, но есть массив с формой (8000, 180, 54) BLOCKQUOTE

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

ответ

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])) 
+0

Мои данные ввода - текст. спасибо за предложение, я попытаюсь проверить, не решит ли он проблему. –