Ошибка подгонки изображений в слой Conv2D в тензорном потоке Keras - PullRequest
0 голосов
/ 28 декабря 2018

Я создаю CNN в Керасе, и у меня проблемы с вводом моих данных.

Мои изображения в форме (-1, 40, 52, 1).Я попытался подогнать их через слой inputLayer (который также требует 4-х измерений, но в итоге получаю 5-слойный ввод для моего конвоя).

...
train_images.reshape(-1, 40, 52, 1)
test_images.reshape(-1, 40, 52, 1)

#Model
num_classes = 10
model = keras.Sequential()

model.add(keras.layers.InputLayer(input_shape=[1,40,52,1]))
model.add(keras.layers.Conv2D(filters = 32, kernel_size=5, strides=1, padding ='same', activation='relu'))
model.add(keras.layers.MaxPooling2D(pool_size=5, padding='same'))

model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(512, activation='relu'))
model.add(keras.layers.Dense(num_classes, activation='softmax'))
model.summary()


#Compile model
model.compile(optimizer=tf.train.AdamOptimizer(0.001),
          loss='categorical_crossentropy',
          metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=10, validation_data= 
(test_images, test_labels), verbose=1)

Я ищу способ подогнать мои изображения.Но когда я запускаю это, я получаю сообщение об ошибке:

ValueError: вход 0 слоя conv2d несовместим со слоем: ожидаемый ndim = 4, найденный ndim = 5. Получена полная форма: [None, 1, 40, 52, 1]

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Спасибо за ваш отзыв, но я остановился на альтернативном подходе.

1-D массив был разделен на 2 и превращен в 2D "изображение", вот так:

[[1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]]

Вместо:

[1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]

Это изменило мою базу данных с

-1, 40, 52, 1

Кому:

-1, 2, 26, 1

Итак, я просто исправил свой входной слой: model.add(keras.layers.InputLayer(input_shape=[2,26,1]))

0 голосов
/ 28 декабря 2018

Вам не нужно добавлять batch_size:

model.add(keras.layers.InputLayer(input_shape=[40,52,1]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...