1.前言

这篇文章是我通过学习黄文坚、唐源所著的《TensorFlow实战》之后的简单总结,通过这本书我对深度学习更加了解,现整理出一部分分享给大家,错误之处可以在评论区指出,以便我加以改正,谢谢!

2.模型特点

LeNet5诞生于1994年,由Yann LeCun提出,充分考虑图像的相关性。当时结构的特点如下:
1)每个卷积层包含三个部分:卷积(Conv)、池化(ave-pooling)、非线性激活函数(sigmoid)
2)MLP作为最终的分类器
3)层与层之间稀疏连接减少计算复杂度

3.结构模型

4.网络层介绍

Input Layer:1*32*32图像
Conv1 Layer:包含6个卷积核,kernal size:5*5,parameters:(5*5+1)*6=156个
Subsampling Layer:average pooling,size:2*2
Activation Function:sigmoid
Conv3 Layer:包含16个卷积核,kernal size:5*5  ->16个Feature Map
Subsampling Layer:average pooling,size:2*2
Conv5 Layer:包含120个卷积核,kernal size:5*5
Fully Connected Layer:Activation Function:sigmoid
Output Layer:Gaussian connection

5.代码实现

说明一下,原本应该放LeNet5的TensorFlow实现代码,发现LeNet5的模型在现在使用过程中好多地方进行了更改,比如激励函数换做ReLU,采用max pooling等等,因此,我只是简单地进行了一个CNN的TensorFlow代码实现,用的MNIST数据集,代码如下:
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("MNIST_data/",one_hot = True)
sess = tf.InteractiveSession()def weight_variable(shape):initial = tf.truncated_normal(shape,stddev=0.1)return tf.Variable(initial)def bias_variable(shape):initial = tf.constant(0.1,shape = shape)return tf.Variable(initial)def conv2d(x,W):return tf.nn.conv2d(x,W,strides=[1,1,1,1],padding='SAME')def max_pool_2x2(x):return tf.nn.max_pool(x,ksize=[1,2,2,1],strides=[1,2,2,1],padding='SAME')x = tf.placeholder(tf.float32,[None,784])
y_ = tf.placeholder(tf.float32,[None,10])
x_image = tf.reshape(x,[-1,28,28,1])# Conv1 Layer
W_conv1 = weight_variable([5,5,1,32])
b_conv1 = bias_variable([32])
h_conv1 = tf.nn.relu(conv2d(x_image,W_conv1) + b_conv1)
h_pool1 = max_pool_2x2(h_conv1)# Conv2 Layer
W_conv2 = weight_variable([5,5,32,64])
b_conv2 = bias_variable([64])
h_conv2 = tf.nn.relu(conv2d(h_pool1,W_conv2) + b_conv2)
h_pool2 = max_pool_2x2(h_conv2)W_fc1 = weight_variable([7*7*64,1024])
b_fc1 = bias_variable([1024])
h_pool2_flat = tf.reshape(h_pool2,[-1,7*7*64])
h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat,W_fc1) + b_fc1)keep_prob = tf.placeholder(tf.float32)
h_fc1_drop = tf.nn.dropout(h_fc1,keep_prob)W_fc2 = weight_variable([1024,10])
b_fc2 = bias_variable([10])
y_conv = tf.nn.softmax(tf.matmul(h_fc1_drop,W_fc2) + b_fc2)cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y_conv),reduction_indices=[1]))
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)correct_prediction = tf.equal(tf.argmax(y_conv,1),tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))tf.global_variables_initializer().run()
for i in range(20000):batch = mnist.train.next_batch(50)if i % 1000 == 0:train_accuracy = accuracy.eval(feed_dict={x:batch[0],y_:batch[1],keep_prob:1.0})print("step %d, training accuracy %g"%(i,train_accuracy))train_step.run(feed_dict={x:batch[0],y_:batch[1],keep_prob:0.5})print("test accuracy %g"%accuracy.eval(feed_dict={x:mnist.test.images,y_:mnist.test.labels,keep_prob:1.0}))

在GPU上面训练,大概不到两分钟,准确率99.11%

注:系统环境:ubuntu、Python3.5.2、TensorFlow1.2.0

【DL笔记】LeNet5神经网络简介及TensorFlow实现相关推荐

  1. tensorflow没有这个参数_TensorFlow入门笔记(五) : 神经网络参数与TensorFlow变量

    神经网络参数简介 在TensorFlow中,变量(tf.Variable)的作用就是保存和更新神经网络中的参数.和其他编程语言类似,在TensorFlow中的变量也需要初始值.因为在TensorFlo ...

  2. TensorFlow学习--LeNet5神经网络

    LeNet5神经网络 简介 LeNet5由Yann LeCun于1994年提出,模型结构如图: 在模型中,每个卷积层包含三个部分:卷积/池化/非线性激活函数.并采用MLP作为分类器.同时层与层的稀疏连 ...

  3. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-04-基于Python的LeNet之MLP

    原文地址可以查看更多信息 本文主要参考于:Multilayer Perceptron  python源代码(github下载 CSDN免费下载) 本文主要介绍含有单隐层的MLP的建模及实现.建议在阅读 ...

  4. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-03-基于Python的LeNet之LR

    原地址可以查看更多信息 本文主要参考于:Classifying MNIST digits using Logistic Regression  python源代码(GitHub下载 CSDN免费下载) ...

  5. DL之LeNet-5:LeNet-5算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之LeNet-5:LeNet-5算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 LeNet-5算法的简介(论文介绍) LeNet-5算法的架构详解 1.LeNet-5 结构分 ...

  6. 《神经网络和深度学习 学习笔记》(二)人工神经网络简介

    文章目录 第10章 人工神经网络简介   1 从生物神经元到人工神经元      1.1 生物神经元      1.2 具有神经元的逻辑计算      1.3 感知器      1.4 多层感知器和反 ...

  7. TensorFlow学习笔记——深层神经网络

    引言 TensorFlow 版本1.15pip3 install tensorflow==1.15.0. 这是<TensorFlow实战Google深度学习框架(第2版)>的学习笔记,所有 ...

  8. DL:基于神经网络的深度学习模型的总概览简介(DNN/CNN/RNN等)、各种网络结构对比、案例应用对比之详细攻略

    DL:基于神经网络的深度学习模型的总概览简介(DNN/CNN/RNN等).各种网络结构对比.案例应用对比之详细攻略 目录 神经网络所有模型的简介(概览) DNN.CNN.RNN结构对比 相关文章 DL ...

  9. 《繁凡的深度学习笔记》前言、目录大纲 一文让你完全弄懂深度学习所有基础(DL笔记整理系列)

    <繁凡的深度学习笔记>前言.目录大纲 (DL笔记整理系列) 一文弄懂深度学习所有基础 ! 3043331995@qq.com https://fanfansann.blog.csdn.ne ...

最新文章

  1. 网络营销第三课:利用织梦搭建动态网站(2)
  2. 使用cloudera manager安装Hue服务【详细步骤】
  3. php传递数据给jquery,将值从php传递给jquery
  4. oracle如何设置备份计划任务,Oracle数据库设置任务计划备份一周的备份记录
  5. 计算机控制pid控制实验,计算机控制实验三数字PID调节器算法的研究
  6. __name__ == ‘__main__‘的原理
  7. ffmpeg解码H264缺少帧的解决办法
  8. 深度linux不能联网,Deepin Linux 无法上网
  9. placeholder和assign速度对比
  10. socket编程之回声服务器
  11. 2.ubuntu 配置目录
  12. Unity2D入门(一):编辑素材、绘制地图
  13. 分享几个设计精美电路图的工具
  14. 介绍 Jersey 依赖
  15. input 框换背景色
  16. 皮影机器人ppt_机器人皮影戏装置的制作方法
  17. Gunicorn、Supervisor
  18. CART分类回归树算法
  19. 如何让电脑带双显示屏,显示不同的内容
  20. 怎样使用计算机的桌面助手,360安全卫士如何整理电脑桌面?360桌面助手使用说明...

热门文章

  1. Protel99SE的使用
  2. linux tcptraceroute tcpping安装使用
  3. “沃派36元预付费终端合约产品包” 青少年是否买单?
  4. CTF.show:萌新专属红包题
  5. 【百行代码说游戏】ActionScript3.0 小游戏 【劲舞团】源码+演示
  6. 车辆租赁系统全局E-R图-结构图(仅当参考)
  7. 基于微信开发的十大火爆应用
  8. shader 玻璃效果
  9. 经常更换宽带账号时连接问题
  10. 在MATLAB 中st_1是变量名,在Delphi中,根据变量标识符命名规则,st80不能用一个变量命名。...