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

问题描述

我想创建一个将Keras图层连接起来的函数,如下所示:

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

我想做的是,按照以下步骤制作特征量(w xh x w x f):

enter image description here

我找不到通过任意数字/轴移动/切割图层的正确方法

如果有人可以教路,非常感谢。

解决方法

您可以执行以下操作。我们基本上是按照您所显示的那样切片,然后将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,padding='same')(inp)

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

print(out3.shape)

给出最终输出的大小,

(None,16)