Lenet 神经网络-实现篇(1)
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)的更多相关文章
- Lenet 神经网络-实现篇(2)
Lenet 神经网络在 Mnist 数据集上的实现,主要分为三个部分:前向传播过程(mnist_lenet5_forward.py).反向传播过程(mnist_lenet5_backword.py). ...
- Pytorch1.0入门实战一:LeNet神经网络实现 MNIST手写数字识别
记得第一次接触手写数字识别数据集还在学习TensorFlow,各种sess.run(),头都绕晕了.自从接触pytorch以来,一直想写点什么.曾经在2017年5月,Andrej Karpathy发表 ...
- 【原创 深度学习与TensorFlow 动手实践系列 - 4】第四课:卷积神经网络 - 高级篇
[原创 深度学习与TensorFlow 动手实践系列 - 4]第四课:卷积神经网络 - 高级篇 提纲: 1. AlexNet:现代神经网络起源 2. VGG:AlexNet增强版 3. GoogleN ...
- 【原创 深度学习与TensorFlow 动手实践系列 - 3】第三课:卷积神经网络 - 基础篇
[原创 深度学习与TensorFlow 动手实践系列 - 3]第三课:卷积神经网络 - 基础篇 提纲: 1. 链式反向梯度传到 2. 卷积神经网络 - 卷积层 3. 卷积神经网络 - 功能层 4. 实 ...
- TensorFlow 实战卷积神经网络之 LeNet
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! LeNet 项目简介 1994 年深度学习三巨头之一的 Yan L ...
- 单层感知机_线性神经网络_BP神经网络
单层感知机 单层感知机基础总结很详细的博客 关于单层感知机的视频 最终y=t,说明经过训练预测值和真实值一致.下面图是sign函数 根据感知机规则实现的上述题目的代码 import numpy as ...
- Paper/ Overview | CNN(未完待续)
目录 I. 基础知识 II. 早期尝试 1. Neocognitron, 1980 2. LeCun, 1989 A. 概况 B. Feature maps & Weight sharing ...
- 人工智能系统Google开源的TensorFlow官方文档中文版
人工智能系统Google开源的TensorFlow官方文档中文版 2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源,机器学习作为人工智能的一种类型,可以让软件根据大量的 ...
- Tensorflow高速入门2--实现手写数字识别
Tensorflow高速入门2–实现手写数字识别 环境: 虚拟机ubuntun16.0.4 Tensorflow 版本号:0.12.0(仅使用cpu下) Tensorflow安装见: http://b ...
随机推荐
- 使用xshell
将选定的文本自动复制到剪贴板 并且 鼠标向右按钮定义为粘贴剪贴板内容
- 【Unity|C#】基础篇(14)——预处理指令(#)
[学习资料] <C#图解教程>(第23章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu. ...
- Windows新建域时 administrator账户密码不符合要求解决办法~!
解决方法 在cmd 命令行中 输入 net user administrator /passwordreq:yes
- 从servlet向jsp中传数据用Java接收js调用
servlet: response.sendRedirect("showMessage.jsp?ValueA=1"); jsp: var a=<%=request.getPa ...
- phpstorm格式化数组
如果我们想要的这样的数组格式的话,可以设置 <?php $arr = array["a" => 0, "b" => 1, "c&qu ...
- nice-validator判断表单是否验证通过
$("#formSurvery").isValid(function(is){ if(is){ alert("通过!") } } 如果is为false则表示不通 ...
- Date/Math/String对象的函数
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- ECMAScript基本语法——③数据类型
Java内有两种 基本数据类型:4类八种 引用数据类型:对象 JavaScript也有两种 原始数据类型 其实是基本数据类型 number:数字.整数.小数.NaN(特殊的数字,not a numbe ...
- 为QT应用程序添加图标 转
第1,第2种方法经本人验证可行 1:通过qmake生成makefile实现过程: (1) 找到一张图片.ico,名字改为myappico.ico: (2) 创建一个新的文本文档,内部添加 IDI_I ...
- JUC-JUC强大的辅助类讲解(Semaphore、CyclicBarrier、CountDownLatch)
一.CountDownLatch 减少计数 1.原理 * CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这些线程会阻塞. * 其它线程调用countDown方法会将 ...