作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
tf.nn_conv2d
和 Tensorflow 中的 tf.nn.depthwise_conv2d
有什么区别?
最佳答案
我不是这方面的专家,但据我所知,区别在于:
假设您有一个长度为 100、宽度为 100 的输入彩色图像。因此尺寸为 100x100x3。对于这两个示例,我们使用相同的宽度和高度为 5 的过滤器。假设我们希望下一层的深度为 8。
在 tf.nn.conv2d 中,您将内核形状定义为 [width, height, in_channels, out_channels]。在我们的例子中,这意味着内核的形状为 [5,5,3,out_channels]。跨过图像的权重核具有 5x5x3 的形状,跨过整个图像 8 次以产生 8 个不同的特征图。
在 tf.nn.depthwise_conv2d 中,您将内核形状定义为 [width, height, in_channels, channel_multiplier]。现在产生的输出不同了。单独的 5x5x1 过滤器跨越输入图像的每个维度,每个维度一个过滤器,每个过滤器每个维度产生一个特征图。所以在这里,内核大小 [5,5,3,1] 会产生深度为 3 的输出。channel_multiplier 告诉您每个维度要应用多少个不同的过滤器。因此,对于 3 个输入维度,深度 8 的原始期望输出是不可能的。只能是 3 的倍数。
关于python - tf.nn_conv2d 和 tf.nn.depthwise_conv2d 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44226932/
我是一名优秀的程序员,十分优秀!