tensorflow DepthwiseConv2D中的depth_multiplier是如何工作的?

inn6fuwd  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(75)

目前我正在学习计算机视觉,并学习深度卷积。(不是深度分离卷积!)
所以,我想知道的是**“depth_multiplier”参数是如何工作的。
首先,
不使用“depth_multiplier”而仅使用
DepthwiseConv 2D(kernel_size =(3,3))时,**内核形状为(3x 3x 3),输出形状为(32 x32 x3)

问题是

但是当我使用“depth_multiplier”时,

深度方向二维对流(内核大小=(3,3),深度乘数=4)

内核的形状是否变为(3x 3x 3)x4?-〉这意味着4个(3x 3x 3)内核
输出形状变为(32 x32 x3)x4?或输出形状变为(32 x32 x12)?
这对我很重要因为
在这一层之后,我将使用标准卷积。2它有128个内核,内核大小=(3,3)。3我想知道内核的形状是什么样的。4它是(3x 3x 3)x128吗?5还是其他形状?
培训准则有效,但想知道它实际上是如何工作的。

我还想知道(depth_multiplier=#)的实际工作原理。

谢谢你之前。

ig9co6j1

ig9co6j11#

是的,我知道
使用depth_multiplier=1

x = tf.keras.Input(shape=(32, 32, 3))
y = tf.keras.layers.DepthwiseConv2D(kernel_size = (3,3), padding='SAME')(x)
keras.Model(inputs=x, outputs=y).layers[-1].weights[0].shape

#outputs TensorShape([3, 3, 3, 1])

对于depth_multiplier=4

y = tf.keras.layers.DepthwiseConv2D(kernel_size = (3,3),depth_multiplier=4, padding='SAME')(x)
keras.Model(inputs=x, outputs=y).layers[-1].weights[0].shape

#outputs: TensorShape([3, 3, 3, 4])

相关问题