Керас: Можно обрезать только на бок с Cropping2D? - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь реализовать пользовательскую модель с MNIST для использования в Intel NCS2.

Мне нужно изменить размер третьего слоя с 11x11x32 на 10x10x32, чтобы выход следующего слоя был четным числом.

Я использую Crop2D, но он всегда обрезает как минимум две строки пикселей, но мне просто нужно обрезать линию.

Я уже пытался поместить только одно в пару значений обрезки, но не работает.

model = models.Sequential()
model.add(layers.Conv2D(16, 3, activation='relu', input_shape=(28, 28, 1)))
model.add(layers.MaxPool2D())
model.add(layers.Conv2D(32, 3, activation='relu'))
model.add(layers.Cropping2D(cropping=((1, 1), (1, 1))))
model.add(layers.MaxPool2D())
model.add(layers.Conv2D(64, 3, activation='relu'))
model.add(layers.MaxPool2D())
model.add(layers.Flatten())
model.add(layers.Dense(256, activation='relu'))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(10, activation='softmax'))

Я ожидал, что на выходе получится 10x10x32, но на выходе будет 9x9x32.

Возможно ли это сделать?

1 Ответ

1 голос
/ 02 апреля 2019

Из документов здесь ( keras.io / Layers / Convolutional ) похоже, что вы можете ввести, сколько строк / столбцов обрезать и будет ли это сверху / снизу слева / справа с помощью обрезкипередаваемый вами кортеж, например: «Если кортеж из 2 кортежей по 2 дюйма: интерпретируется как ((top_crop, bottom_crop), (left_crop, right_crop))» Если вы хотите обрезать только правое изображение, например, передайтеcropping=((0, 0), (0, 1))

...