首页 > 解决方案 > Cropping2D 图层裁剪到错误的尺寸

问题描述

我有一个 1920×1153×3 的 keras 张量,需要裁剪为 1920×1080。但是,创建裁剪层并传递形状的差异会导致其尺寸错误。这种方法使张量的形状为 1920×1920。

代码:

        def crop(x, size):
            shape = K.int_shape(x)
            shape_diff = shape[1] - size[1], shape[2] - size[2]
            print(shape_diff)
            y = tf.keras.layers.Cropping2D(shape_diff)(x)
            return y

model.summary 和 shape_diff 的部分输出:

形状差异: (0,72)

模型总结:

conv2d_transpose_4 (Conv2DTr (None, 1920, 1152, 3)     195       
_________________________________________________________________
cropping2d (Cropping2D)      (None, 1920, 1008, 3)     0         
=================================================================

标签: pythonarraystensorflowkerascrop

解决方案


由于 Keras 文档状态,通过将边除以 2 解决了这个问题:

如果 2 个整数的元组:解释为高度和宽度的两个不同的对称裁剪值。


推荐阅读