Lenet 神经网络结构为:
①输入为 32*32*1 的图片大小,为单通道的输入;
②进行卷积,卷积核大小为 5*5*1,个数为 6,步长为 1,非全零填充模式;
③将卷积结果通过非线性激活函数;
④进行池化,池化大小为 2*2,步长为 1,全零填充模式;
⑤进行卷积,卷积核大小为 5*5*6,个数为 16,步长为 1,非全零填充模式;
⑥将卷积结果通过非线性激活函数;
⑦进行池化,池化大小为 2*2,步长为 1,全零填充模式;
⑧全连接层进行 10 分类。
Lenet 神经网络的结构图及特征提取过程如下所示:

Lenet 神经网络的输入是 32*32*1,经过 5*5*1 的卷积核,卷积核个数为 6 个,采用非全零填充方式,步长为 1,根据非全零填充计算公式:输出尺寸=(输入尺寸-卷积核尺寸+1)/步长=(32-5+1)/1=28.

故经过卷积后输出为 28*28*6。

经过第一层池化层,池化大小为 2*2,全零填充,步长为 2,由全零填充计算公式:输出尺寸=输入尺寸/步长=28/2=14,池化层不改变深度,深度仍为 6。

用同样计算方法,得到第二层池化后的输出为 5*5*16。

将第二池化层后的输出拉直送入全连接层。

根据 Lenet 神经网络的结构可得,Lenet 神经网络具有如下特点:
①卷积(Conv)、池化(ave-pooling)、非线性激活函数(sigmoid)相互交替;
②层与层之间稀疏连接,减少计算复杂度。

对 Lenet 神经网络进行微调,使其适应 Mnist 数据集:
由于 Mnist 数据集中图片大小为 28*28*1 的灰度图片,而 Lenet 神经网络的输入为 32*32*1,故需要对 Lenet 神经网络进行微调。(微调是如何进行调整?整个网络的对接是如何进行?后面博客继续学习)
①输入为 28*28*1 的图片大小,为单通道的输入;
②进行卷积,卷积核大小为 5*5*1,个数为 32,步长为 1,全零填充模式;
③将卷积结果通过非线性激活函数;
④进行池化,池化大小为 2*2,步长为 2,全零填充模式;
⑤进行卷积,卷积核大小为 5*5*32,个数为 64,步长为 1,全零填充模式;
⑥将卷积结果通过非线性激活函数;
⑦进行池化,池化大小为 2*2,步长为 2,全零填充模式;
⑧全连接层,进行 10 分类。
Lenet 进行微调后的结构如下所示:

前面第五、六讲中,输入mnist数据集是28*28像素,输出是长度为10的一维数组;

现在运用Lennet神经网络

图片大小即每张图片分辨率为 28*28,故 IMAGE_SIZE 取值为 28;

Mnist 数据集为灰度图,故输入图片通道数 NUM_CHANNELS 取值为 1;

第一层卷积核大小为 5,卷积核个数为 32,故 CONV1_SIZE 取值为 5,CONV1_KERNEL_NUM 取值为 32;

第二层卷积核大小为 5,卷积核个数为 64,故 CONV2_SIZE 取值为 5, CONV2_KERNEL_NUM为 64;

全连接层第一层为 512 个神经元,FC_SIZE 取值为 512,

全连接层第二层为 10 个神经元,OUTPUT_NODE 取值为 10,实现 10 分类输出。

注:本文章通过观看北京大学曹健老师的Tensorflow视频,笔记总结而来的。

Lenet 神经网络-实现篇(1)的更多相关文章

  1. Lenet 神经网络-实现篇(2)

    Lenet 神经网络在 Mnist 数据集上的实现,主要分为三个部分:前向传播过程(mnist_lenet5_forward.py).反向传播过程(mnist_lenet5_backword.py). ...

  2. Pytorch1.0入门实战一:LeNet神经网络实现 MNIST手写数字识别

    记得第一次接触手写数字识别数据集还在学习TensorFlow,各种sess.run(),头都绕晕了.自从接触pytorch以来,一直想写点什么.曾经在2017年5月,Andrej Karpathy发表 ...

  3. 【原创 深度学习与TensorFlow 动手实践系列 - 4】第四课:卷积神经网络 - 高级篇

    [原创 深度学习与TensorFlow 动手实践系列 - 4]第四课:卷积神经网络 - 高级篇 提纲: 1. AlexNet:现代神经网络起源 2. VGG:AlexNet增强版 3. GoogleN ...

  4. 【原创 深度学习与TensorFlow 动手实践系列 - 3】第三课:卷积神经网络 - 基础篇

    [原创 深度学习与TensorFlow 动手实践系列 - 3]第三课:卷积神经网络 - 基础篇 提纲: 1. 链式反向梯度传到 2. 卷积神经网络 - 卷积层 3. 卷积神经网络 - 功能层 4. 实 ...

  5. TensorFlow 实战卷积神经网络之 LeNet

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! LeNet 项目简介 1994 年深度学习三巨头之一的 Yan L ...

  6. 单层感知机_线性神经网络_BP神经网络

    单层感知机 单层感知机基础总结很详细的博客 关于单层感知机的视频 最终y=t,说明经过训练预测值和真实值一致.下面图是sign函数 根据感知机规则实现的上述题目的代码 import numpy as ...

  7. Paper/ Overview | CNN(未完待续)

    目录 I. 基础知识 II. 早期尝试 1. Neocognitron, 1980 2. LeCun, 1989 A. 概况 B. Feature maps & Weight sharing ...

  8. 人工智能系统Google开源的TensorFlow官方文档中文版

    人工智能系统Google开源的TensorFlow官方文档中文版 2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源,机器学习作为人工智能的一种类型,可以让软件根据大量的 ...

  9. Tensorflow高速入门2--实现手写数字识别

    Tensorflow高速入门2–实现手写数字识别 环境: 虚拟机ubuntun16.0.4 Tensorflow 版本号:0.12.0(仅使用cpu下) Tensorflow安装见: http://b ...

随机推荐

  1. jQuery---width和height的方法

    width和height的方法 //获取div的宽度 $("div").css("width", "400px"); console.log ...

  2. 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(4.12-加-6.2-加-7.2.5.2)Fused_Operations

    4.12 Fused Operations 融合操作 融合操作通过“fusing”把两个简单的命令融合一起来支持一个更复杂的命令.协议规定这个特性是可选的:如果支持此特性,需要在Figure 247 ...

  3. Java-杨辉三角(YangHuiTriangle)

    杨辉三角,是二项式系数在三角形中的一种几何排列. 杨辉三角概述 ☃ 每行端点与结尾的数为1 ☃ 每个数等于它上方两数之和 ☃ 每行数字左右对称,由1开始逐渐变大 ☃ 第n行的数字有n项 ☃ 前n行共[ ...

  4. 解决Oracle ORA-01033: ORACLE initialization or shutdown in progress错误 和 ORA-01589错误 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

    要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项 SQL> startupORACLE 例程已经启动. Total System Global Area  13533 ...

  5. Python-selenium,使用SenKey模块时所碰到的坑

    一.SenKey模块(模拟鼠标键盘操作) :python3中没有该模块,使用PyUserInput模块代替 二.PyUserInput模块安装前需要安装:pywin32和pyHook模块,pywin3 ...

  6. OpenGL 编程指南 (3.2)

    1.帧缓冲对象 帧缓冲对象对于离屏渲染.纹理贴图更新.缓存乒乓技术(buffer ping-pongqing,GPGPU的一种数据传输方式)的实现意义非凡,它减少了大量的数据拷贝工作. 建立帧缓冲需要 ...

  7. kao shi di er ti(还没有订正)

    // 离散化点 思路应该是对的 吧 但没时间去检查编译上的错误 #include <bits/stdc++.h> using namespace std; ; #define ri reg ...

  8. Mybatis- 基础知识

        mybatis是一个java持久层框架,java中操作关系型 数据库用的是jdbc,mybatis是对jdbc的一个封装. 简介 iBATIS一词来源于"internet" ...

  9. 通过恢复目录(Catalogue)进行PDB级别的PITR恢复

    数据库版本:Oracle 12.2.0.1 本篇为<执行PDB的PITR恢复失败的说明 (文档 ID 2435452.1)>的证明篇,通过当前控制文件,无法在PDB级别进行PITR(Poi ...

  10. Python_初识函数

    为什么要用函数 现在python届发生了一个大事件,len方法突然不能直接用了... 然后现在有一个需求,让你计算'hello world'的长度,你怎么计算? 这个需求对于现在的你其实不难,我们一起 ...