如何操作 Keras 层? : 立体视觉成本量

How can I manipulate the Keras Layer ? : Stereo vision cost volume

我想制作一个连接 Keras 层的函数,如下所示:

假设我们有两个大小相同的层 ( h x w x f )

我想要做的是,通过以下步骤制作特征体积(w x h x w x f):

我无法通过任意number/axis找到shift/cut层的正确方法。

有哪位大侠能指教一下,万分感谢

您可以执行以下操作。我们基本上是按照您所显示的方式获取切片,然后将 0 填充到末尾,使其与用于堆叠的蓝色输入具有相同的大小。请注意,在这里,我正在对高度尺寸(即不是宽度)进行更改,因此需要稍作修改(主要是改组)以对宽度进行更改。

import tensorflow as tf
import tensorflow.keras.layers as layers

inp = layers.Input(shape=(64,64,3))

out1 = layers.Conv2D(16, (3,3), activation='relu', padding='same')(inp)
out2 = layers.Conv2D(16, (3,3), activation='relu', padding='same')(inp)

out3 = layers.Lambda(lambda x: tf.stack(
    [x[0]]+[
        tf.pad(x[1][:,:-i,:,:],[[0,0], [0,i],[0,0],[0,0]]) for i in range(1,x[1].shape[1])
    ], 
    axis=1))([out1, out2])

print(out3.shape)

最终输出的大小为,

(None, 64, 64, 64, 16)