1、tf.nn.depthwise_conv2d(input,filter,strides,padding,rate=None,name=None,data_format=None):深度可分离卷积
参数:
input: 指需要做卷积的输入图像,要求是一个4维Tensor,具有[batch, height, width, in_channels]这样的shape,具体含义是[训练时一个batch的图片数量, 图片高度, 图片宽度, 图像通道数]
filter: 相当于CNN中的卷积核,要求是一个4维Tensor,具有[filter_height, filter_width, in_channels, channel_multiplier]这样的shape,具体含义是[卷积核的高度,卷积核的宽度,输入通道数,输出卷积乘子],同理这里第三维in_channels,就是参数value的第四维
strides: 卷积的滑动步长。
padding: string类型的量,只能是”SAME”,”VALID”其中之一,这个值决定了不同边缘填充方式。
rate: 这里的rate和空洞卷积中的rate作用相同
给定4D输入张量('NHWC'或'NCHW'数据格式)和形状为[filter_height,filter_width,in_channels,channel_multiplier]的卷积核(卷积核包含in_channels个深度为1的卷积核),depthwise_conv2d对每个输入通道应用不同的卷积核(对于每个通道卷积后的结果,从1个通道扩展到channel_multiplier个通道,然后将结果连接在一起。输出具有in_channels * channel_multiplier通道。
2、tf.nn.separable_conv2d(input,depthwise_filter,pointwise_filter,strides,padding,rate=None,name=None,data_format=None)
可以看做,深度卷积tf.nn.depthwise_conv2d的扩展,除去