概述
conv1 = tf.nn.conv2d(input_tensor,conv1_weights,strides=[1,1,1,1],padding='SAME')
这是一个常见的卷积操作,其中strides=【1,1,1,1】表示滑动步长为1,padding=‘SAME’表示填0操作
当我们要设置步长为2时,strides=【1,2,2,1】,很多同学可能不理解了,这四个参数分别代表了什么,查了官方函数说明一样不明不白,今天我来解释一下。
strides在官方定义中是一个一维具有四个元素的张量,其规定前后必须为1,这点大家就别纠结了,所以我们可以改的是中间两个数,中间两个数分别代表了水平滑动和垂直滑动步长值,于是就很好理解了。
在卷积核移动逐渐扫描整体图时候,因为步长的设置问题,可能导致剩下未扫描的空间不足以提供给卷积核的,大小扫描 比如有图大小为5*5,卷积核为2*2,步长为2,卷积核扫描了两次后,剩下一个元素,不够卷积核扫描了,这个时候就在后面补零,补完后满足卷积核的扫描,这种方式就是same。如果说把刚才不足以扫描的元素位置抛弃掉,就是valid方式。
tf.nn.conv2d(x,kernel,strides=[1,1,1,1],padding='SAME')
# kernel[0,1]数表示卷积核的尺寸,
# kernel[2]表示channel数量,灰度图片是1,RGB图是3
# kernel[3]表示卷积核的数量
# padding='SAME'表示边界加上padding,使得卷积的输入和输出保持同样的尺寸。所加的padding为0,也就是边界补0
# padding='VALID'表示取样不超过边框,也就是 no padding
tf.nn.max_pool(x,ksize=[1,3,3,1],strides=[1,2,2,1],padding='SAME')
# 池化尺寸3*3,横竖步长为2*2
# padding='SAME'表示加边框,使池化层的输出输出保持同样的尺寸
# padding='VALID'表示取样不超过边框,
对参考的文稿表示感谢:
tensorflow: 花卉分类_qq_25987491的博客-程序员宅基地 - 程序员宅基地
【CNN】实现 - 极思路
https://www.shuzhiduo.com/A/ke5jj7kg5r/
TensorFlow Tutorial-1 | 朱思宇的博客
最后
以上就是风中大侠为你收集整理的tensorflow构建网络的基础的全部内容,希望文章能够帮你解决tensorflow构建网络的基础所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复