Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
作者:xf__mao 时间:2021-10-23 19:00:50
实验环境:tensorflow版本1.2.0,python2.7
介绍
depthwise_conv2d
来源于深度可分离卷积:
Xception: Deep Learning with Depthwise Separable Convolutions
tf.nn.depthwise_conv2d(input,filter,strides,padding,rate=None,name=None,data_format=None)
除去name
参数用以指定该操作的name,data_format
指定数据格式,与方法有关的一共五个参数:
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:
这个参数的详细解释见【Tensorflow】tf.nn.atrous_conv2d如何实现空洞卷积?
结果返回一个Tensor,shape为[batch, out_height, out_width, in_channels * channel_multiplier]
,注意这里输出通道变成了in_channels * channel_multiplier
实验
为了形象的展示depthwise_conv2d
,我们必须要建立自定义的输入图像和卷积核
img1 = tf.constant(value=[[[[1],[2],[3],[4]],[[1],[2],[3],[4]],[[1],[2],[3],[4]],[[1],[2],[3],[4]]]],dtype=tf.float32)
img2 = tf.constant(value=[[[[1],[1],[1],[1]],[[1],[1],[1],[1]],[[1],[1],[1],[1]],[[1],[1],[1],[1]]]],dtype=tf.float32)
img = tf.concat(values=[img1,img2],axis=3)
filter1 = tf.constant(value=0, shape=[3,3,1,1],dtype=tf.float32)
filter2 = tf.constant(value=1, shape=[3,3,1,1],dtype=tf.float32)
filter3 = tf.constant(value=2, shape=[3,3,1,1],dtype=tf.float32)
filter4 = tf.constant(value=3, shape=[3,3,1,1],dtype=tf.float32)
filter_out1 = tf.concat(values=[filter1,filter2],axis=2)
filter_out2 = tf.concat(values=[filter3,filter4],axis=2)
filter = tf.concat(values=[filter_out1,filter_out2],axis=3)
建立好了img和filter,就可以做卷积了
out_img = tf.nn.conv2d(input=img, filter=filter, strides=[1,1,1,1], padding='VALID')
来源:https://blog.csdn.net/mao_xiao_feng/article/details/78003476
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
python自动化unittest yaml使用过程解析
![](https://img.aspxhome.com/file/2023/8/75358_0s.png)
OpenCV图像分割之分水岭算法与图像金字塔算法详解
![](https://img.aspxhome.com/file/2023/0/97640_0s.jpg)
Go语言题解LeetCode1266访问所有点的最小时间示例
![](https://img.aspxhome.com/file/2023/1/99051_0s.jpg)
卸载VS2011 Developer Preview后Sql Server2008 R2建立数据库关系图报“找不到指定的模块”错误的解决方法
Python制作exe文件简单流程
![](https://img.aspxhome.com/file/2023/2/91852_0s.png)
TensorFlow实现模型评估
![](https://img.aspxhome.com/file/2023/6/124196_0s.jpg)
PHP面向对象程序设计之类与反射API详解
layer弹窗插件操作方法详解
Oracle中sys和system的区别小结
使用OpenCV校准鱼眼镜头的方法
![](https://img.aspxhome.com/file/2023/4/82704_0s.png)
Python实现读取文件的方法总结
![](https://img.aspxhome.com/file/2023/7/97037_0s.png)
基本的页面设计元素布局比例
详解Python中Pyyaml模块的使用
![](https://img.aspxhome.com/file/2023/0/99150_0s.png)
Python实现提取给定网页内的所有链接
![](https://img.aspxhome.com/file/2023/4/80814_0s.webp)
利用Python网络爬虫爬取各大音乐评论的代码
![](https://img.aspxhome.com/file/2023/6/95466_0s.png)
Python yield的使用详解
Python浅析多态与鸭子类型使用实例
python3使用smtplib实现发送邮件功能
![](https://img.aspxhome.com/file/2023/5/97095_0s.jpg)
详解django的serializer序列化model几种方法
Python对列表中的各项进行关联详解
![](https://img.aspxhome.com/file/2023/0/97250_0s.png)