Keras:是否可以仅在 Cropping2D 的一侧进行裁剪?
Keras: It is possible crop only on side with Cropping2D?
我正在尝试使用 MNIST 实现自定义模型以在英特尔 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。
可以这样做吗?
从此处的文档 (keras.io/layers/convolutional) 看来您可以输入要裁剪的 rows/cols 数量以及它是否来自 top/bottom left/right 使用裁剪您传递的元组,例如:"If tuple of 2 tuples of 2 ints: interpreted as ((top_crop, bottom_crop), (left_crop, right_crop))" 如果您只想裁剪图像的右侧,例如,传递 cropping=((0, 0), (0, 1))
我正在尝试使用 MNIST 实现自定义模型以在英特尔 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。
可以这样做吗?
从此处的文档 (keras.io/layers/convolutional) 看来您可以输入要裁剪的 rows/cols 数量以及它是否来自 top/bottom left/right 使用裁剪您传递的元组,例如:"If tuple of 2 tuples of 2 ints: interpreted as ((top_crop, bottom_crop), (left_crop, right_crop))" 如果您只想裁剪图像的右侧,例如,传递 cropping=((0, 0), (0, 1))