我是靠谱客的博主 风中大侠,最近开发中收集的这篇文章主要介绍tensorflow构建网络的基础,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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构建网络的基础所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部