我正在尝试创建一个类似于 Max Pooling 或可分离卷积的第一步的自定义层。
例如,对于一个 2-Tensor,我想在其中提取不重叠的 2x2 补丁:如果我有[4,4]
张量
[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9,10,11],
[12,13,14,15]]
我想结束以下[2,2,4
]张量
[[[ 0, 1, 4, 5],[ 2, 3, 6, 7]],
[[ 8, 9,12,13],[10,11,14,15]]]
对于 3-Tensor,我想要类似的东西,但也要分离出第三维。tf.extract_image_patches
几乎可以满足我的要求,但是它将“深度”维度折叠到每个补丁中。
理想情况下,如果我有一个形状为 [32,64,7] 的张量并想从中提取所有 [2,2] 块:我最终会得到一个 [16,32,7,4] 的形状
需要明确的是,我只想提取补丁,而不是实际进行最大池化或可分离卷积。
由于我实际上并没有增加数据,我怀疑你可以用一些tf.reshape
技巧来做到这一点......有没有什么好的方法可以在 tensorflow 中实现这一点而无需使用切片+拼接/for循环?
此外,此操作的正确术语是什么?开窗?平铺?