深度卷积的目的

时间:2018-06-23 04:42:56

标签: tensorflow

我很想知道为什么我们要进行深度卷积?我知道它不会混合不同的通道。但是,这还有其他优势吗?如果我在简单的conv2d上使用tf.nn.depthwise有什么好处?

input = tf.Variable(tf.random_normal([1,4,4,2]))
filter= tf.Variable(tf.random_normal([2,2,2,1]))
def depth_conv2d(input):
    return tf.nn.depthwise_conv2d(input,filter, strides=[1,2,2,1],padding= 'SAME')
depth_conv_out = depth_conv2d(input)

sess = tf. InteractiveSession()
sess.run(tf.initialize_all_variables())

print depth_conv_out.get_shape()

1 个答案:

答案 0 :(得分:0)

深度卷积的主要动机是使标准卷积“轻量级”,即,在产生相同数量的输出通道(请参见Mobilenet)时,所需的权重较小,乘法次数较少,而且精度降低的幅度很小。

此概念通过组卷积得到概括(例如,参见ShuffleNet),其中深度卷积的较小2D过滤器被3D过滤器替换,该3D过滤器将某些通道(在常规情况下与所有通道相对)卷积)。