CNN Keras: ValueError: отрицательный размер измерения, вызванный вычитанием 3 из 2 для 'conv2d - PullRequest
1 голос
/ 17 апреля 2019

Я получил эту ошибку при использовании Keras: это потому, что input_size не больше, чем фильтр?

Если input_shape = (64,64,3))), ошибки не будет.

 ``ValueError: Negative dimension size caused by subtracting 3 from 2 for 
  'conv2d_24/convolution' (op: 'Conv2D') with input shapes: [?,2,2,128], 
  [3,3,128,128].

Мой код здесь:

from keras import layers
from keras import models
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu',                     
                                    input_shape=(32, 32, 3))) 
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))

1 Ответ

0 голосов
/ 18 апреля 2019

Заполнение слоя по умолчанию: valid, что означает отсутствие заполнения. Таким образом, размерность уменьшится с 32 не до 16, а до 15. Вместо этого вы можете использовать padding='same'. В этом случае длина вывода равна исходному значению.

from keras import layers
from keras import models
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu',padding='same',                     
                                    input_shape=(32, 32, 3))) 
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu',padding='same'))
model.add(layers.MaxPooling2D((2, 2),padding='same'))
model.add(layers.Conv2D(128, (3, 3), activation='relu',padding='same'))
model.add(layers.MaxPooling2D((2, 2),padding='same'))
model.add(layers.Conv2D(128, (3, 3), activation='relu',padding='same'))
model.add(layers.MaxPooling2D((2, 2),padding='same'))
model.add(layers.Flatten())
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...