CNN网络相关

概念定义:卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一 。卷积神经网络具有表征学习(representation learning)能力,能够按其阶层结构对输入信息进行平移不变分类(shift-invariant classification),因此也被称为“平移不变人工神经网络(Shift-Invariant Artificial Neural Networks, SIANN)”。
如下图所示,两张图片高度相似,不过是发生了旋转。对于判断这两张图片是否相似的问题,CNN可以 解决这个问题,他用类似视觉的方式保留了图像的特征,当图像做翻转,旋转或者变换位置时,它也能有效的识别出来是类似的图像。
在这里插入图片描述
在这里插入图片描述
结构:
下面是一张来自cs231n中一张识别汽车的图,使用的是CNN网络,里面包含了CNN网络的网络层:
在这里插入图片描述
CONV:卷积层,进行卷积计算然后求和,提取特征和映射特征。
Relu:激励层,对卷积层的输出进行非线性映射。
POOL:池化层,主要作用是大幅度降低数据的维度,常用的操作包括最大池化和平均池化。
FC:全连接层,通过前面得卷积、激励、池化操作,成功得将数据进行了降维,得到降维后的数据后,再将其放入全连接层中,就可以得到最终得结果。
在这里插入图片描述
实操部分:
1、

tf.nn.relu(features, name = None)

这个函数的作用是计算激活函数 relu,即 max(features, 0)。将大于0的保持不变,小于0的数置为0。
2、

tf.nn.max_pool(value, ksize, strides, padding, name=None)

第一个参数value:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch, height, width, channels]这样的shape。
第二个参数ksize:池化窗口的大小,取一个四维向量,一般是[1, height, width, 1],因为我们不想在batch和channels上做池化,所以这两个维度设为了1。
第三个参数strides:和卷积类似,窗口在每一个维度上滑动的步长,一般也是[1, stride,stride, 1]。
第四个参数padding:和卷积类似,可以取’VALID’ 或者’SAME’,返回一个Tensor,类型不变,shape仍然是[batch, height, width, channels]这种形式。
3、

tf.nn.dropout(incoming, keep_prob, noise_shape=None, name="Dropout") 

dropout函数会以一个概率为keep_prob来决定神经元是否被抑制。如果被抑制,该神经元输出为0,如果不被抑制则该神经元的输出为输入的1/keep_probbe倍。
4、

tf.nn.conv2d(input,filter,strides,padding,use_cudnn_on_gpu=None,name=None)

name:指定该操作的name
input:卷积输入图像,Tensor,[batch,height,width,in_channels],类型要 求:float32或float64。
filter:卷积核,要求是tensor,[height,width,in_channels,out_channels]类型要求:float32或float64。
strides:卷积在图像中的滑动步长,是tensor,[1,stride,stride,1]。
padding:类型是string,值=“SAME”或者“VALID”,“SAME”表示补偿后,输出图像尺寸是input_size/stride,不受filter影响。“VALID”表示不进行补偿。
use_cdnn_on_gpu:是bool类型,表示是否使用cudnn加速,默认为true。
返回Tensor及feature map。维度及尺寸是[batch,height,width,channels]。

(未完待续)

参考文献:
【1】卷积层是如何计算的?
https://zhuanlan.zhihu.com/p/137590913
【2】CNN各层作用解析
https://www.lagou.com/lgeduarticle/72386.html
【3】CNN概念
https://baike.baidu.com/item/%E5%8D%B7%E7%A7%AF%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/17541100?fr=aladdin
【4】tf.nn.max_pool(value, ksize, strides, padding, name=None)
https://blog.csdn.net/coder_xiaohui/article/details/78025379
【5】tf.nn.dropout(incoming, keep_prob, noise_shape=None, name=“Dropout”)
https://blog.csdn.net/qq_20412595/article/details/82824830
【6】tf.nn.conv2d函数
https://blog.csdn.net/weixin_44674677/article/details/90518062

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值