我想执行this paper。
为此,我希望将图像分成64x64的子正方形区域,如该图片所示。(例如,大小为256x256的图像将被分为16个大小为64x64的部分。)
我已经可以在预处理中做到这一点,但我希望在推断时完成这项工作。我已经进行了一些研究,似乎可以使用lambda层来进行此操作。但是,我仍然无法意识到这一点。我必须承认,我仍然无法理解所有这些工作原理。
您可以使用tf.image.extract_patches
功能执行此操作。
out = Lambda(
lambda x: tf.split(
tf.image.extract_patches(x, [1,16,16,1], [1,16,16,1], [1,1,1,1], padding="VALID"),
256, axis=3)
)(inp)
这将产生256
(即16 x 16
),[batch_size, 16, 16, 3]
补丁。
PS:但是,我认为您也可以使用数据处理管道来实现此目的。在推论过程中,应该没有什么阻止您使用推理过程中的数据处理管道。