如何操作 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)
我想制作一个连接 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)