【TensorFlow-CNN】AlexNet-6神经网络简介附TensorFlow源代码实现

一、前沿
本文代码是我在学习TensorFlow时写的CNN方面的程序,主要是根据AlexNet模型编写,但是自距此模型问世以来,深度学习领域发生了很大变化,所以其中某些方法和参数已经有所改变,目前此模型通过在GPU上训练,精确度可以达到97%左右,下面我将详细介绍Tensorflow中的实现,本教程适合TensorFlow的初学者,主要有以下特点:
  • 使用Mnist数据集
  • 测试精度可达97%
  • 可视化输出
  • 兼具卷积层、pooling(池化)层、dropout层、全连接层、softmax layer
  • 提供实现此模型原始代码
代码实现:
代码地址: https://github.com/WzsGo/AlexNet_mnist_TensorFlow.git
基础版本,使用tf.nn.***函数实现,注重构造网络中的细节实现,容易理解CNN的运行原理,从细节理解CNN结构。
二、模型结构

 AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了很深很宽的网络中。AlexNet主要使用到的新技术点如下。
(1)成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题。虽然ReLU激活函数在很久之前就被提出了,但是直到AlexNet的出现才将其发扬光大。
(2)训练时使用Dropout随机忽略一部分神经元,以避免模型过拟合。Dropout虽有单独的论文论述,但是AlexNet将其实用化,通过实践证实了它的效果。在AlexNet中主要是最后几个全连接层使用了Dropout。
(3)在CNN中使用重叠的最大池化。此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果。并且AlexNet中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。
(4)提出了LRN层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。
三、代码实现简介
(1)定义的超参数:dropout层的保留概率/每次提取图片数目/迭代次数
train_keep_prop = 0.0045/batch_size = 128/epcoh = 1800
可以更改这些参数,以改善训练结果。
(2)模型结构
input - 输入数据:Mnist
数据集被分成两部分:60000 行的训练数据集(mnist.train)和10000行的测试数据集(mnist.test),每张图片是 28*28*1,经过reshape后,维度格式为:[28,28,1]
conv1 - 卷积层:
卷积层:kenel:3*3*64,strides = 1,padding = SAME -->> [28,28,64]
池化层:ksize: 2*2 ,strides = 2     -->> [14,14,64]
Normal:     -->> [14,14,64]
drop层:keep_prop = train_keep_prop -->> [14,14,64]
conv2 - 卷积层:
卷积层:kenel:3*3*128,strides = 1,padding = SAME -->> [14,14,128]
池化层:ksize: 2*2 ,strides = 2     -->> [7,7,128]
Normal:    -->> [7,7,128]
drop层:keep_prop = train_keep_prop -->> [7,7,128]
conv3 - 卷积层:
卷积层:kenel:3*3*256,strides = 1,padding = SAME -->> [7,7,256]
池化层:ksize: 2*2 ,strides = 2      -->> [4,4,256]
Normal:     -->> [4,4,256]
drop层:keep_prop = train_keep_prop -->> [4,4,256]
Flaten层:
将[4,4,256]矩阵形式 -->> [4*4*256]向量形式
Fucn1 - 全连接层:
权重:[4*4*256,1024]
Fucn2 - 全连接层:
权重:[1024,256]
Fucn3 - 全连接层:
权重:[256,10]
Softmax层:
输出one-hot向量,对应每一类的概率。
四、代码实现
代码地址: https://github.com/WzsGo/AlexNet_mnist_TensorFlow.git
  • AlexNet_mnist.py
基础版本,使用tf.nn.***函数实现,注重构造网络中的细节实现,容易理解CNN的运行原理,从细节理解CNN结构。
五、执行程序
执行命令: python AlexNet_mnist.py
六、训练结果







  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Faster R-CNN是一种用于目标检测的深度学习模型,它结合了区域建议网络(Region Proposal Network)和目标检测网络(Detection Network)。要在TensorFlow实现Faster R-CNN模型,首先需要编写区域建议网络和目标检测网络的代码。 在TensorFlow实现区域建议网络,可以使用卷积神经网络CNN)来提取特征,并结合锚框(anchor boxes)来生成候选区域。在目标检测网络的实现中,可以使用卷积神经网络和全连接层来对候选区域进行分类和边界框回归。 除了实现区域建议网络和目标检测网络的代码,还需要编写损失函数、优化器和训练过程的代码。损失函数通常包括目标检测网络的分类损失和边界框回归损失,优化器可以选择Adam或者SGD等算法,训练过程则是通过反向传播来更新模型参数。 在实现Faster R-CNN模型的过程中,还需要考虑如何处理数据集、如何进行模型评估和部署等问题。可以使用TensorFlow中的数据读取和预处理工具来处理数据集,同时可以使用评估指标来评估模型的性能,并通过TensorFlow Serving等工具将模型部署到生产环境中。 总之,要在TensorFlow实现Faster R-CNN模型,需要编写区域建议网络和目标检测网络的代码,并配合损失函数、优化器、训练过程等组件,同时还需要考虑数据处理、模型评估和部署等方面的问题。通过认真地实现这些部分,就可以在TensorFlow中成功实现Faster R-CNN模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值