当前位置:网站首页>深度学习-神经网络
深度学习-神经网络
2022-07-29 14:38:00 【皇儒无上】
(远古笔记了,搬运上来留个纪念,当年学习的时候看了很多大佬的博客)
前言:前段时间学习了各种神经网络,今天做个小总结。以便以后自己复习!
一.RNN-循环神经网络
1.原理:根据“人的认知是基于过往的经验和记忆”这一观点提出。RNN之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。如处理电影评论时,不能一次处理一条,而要将所有评论转化为一个大向量,再一次性处理。
2.结构:
每个方框可以看做是一个单元,每个单元做的事情也是一样的,用一句话解释RNN就是,一个单元结构重复使用。
3.应用:自然语言处理(NLP),文本生成(机器写小说),语言模型等。
4.简例:
(1)生成莎士比亚文集:我们利用RNN循环神经网络,生成新的文本。
代码如下:<1>定义模型参数
<2>恢复模型
<3>结果:
(2)识别mnist数据集:MNIST数据集是深度学习的经典入门demo,它是由6万张训练图片和1万张测试图片构成的,每张图片都是28*28大小(如下图),而且都是黑白色构成(这里的黑色是一个0-1的浮点数,黑色越深表示数值越靠近1),这些图片是采集的不同的人手写从0到9的数字。
在tensorflow中已经内嵌了mnist数据集,如下:代码如下:
结果有:
二.CNN-卷积神经网络
原理:在神经网络中,每一层的每个神经元都与下一层的每个神经元相连,这种连接关系叫全连接(Full Connected)。如果以图像识别为例,输入就是是每个像素点,那么每一个像素点两两之间的关系(无论相隔多远),都被下一层的神经元"计算"了。这种全连接的方法用在图像识别上面就显得太"笨"了,因为图像识别首先得找到图片中各个部分的"边缘"和"轮廓",而"边缘"和"轮廓"只与相邻近的像素们有关。这个时候卷积神经网络(CNN)就派上用场了,卷积神经网络可以简单地理解为,用滤波器(Filter)将相邻像素之间的"轮廓"过滤出来。
结构:
如图是一个完整的深度CNN模型,第一个方块是输入层,后边紧跟着就是卷积层和池化层,这两层是CNN所特有的。卷积层+池化层可以在隐藏层出现许多次,上图我们画出了两次。若干个卷积+池化后是全连接层。图片是卷积层工作原理:
实验一:
1.任务需求
mnist手写识别是经典的入门分类任务。给定28x28x1的输入图像,输出0-9共计十类的分类结果。本次实现分两部分:(1).用传统的全连接神经网络实现分类,(2)使用卷积神经网络(CNN)实现分类!
2.使用工具
Python,pycharm
Tensorflow 1.1.4
3.框架
(一)传统神经网络
输入层:拉伸的手写文字图像,维度为[-1,28x28]。
全连接层:500个结点,维度为[-1,500]。
输出层:分类输出,维度为[-1,10]。
(二)卷积神经网络
1.输入层:手写文字图像,维度为[-1,28,28,1]。
2.卷积层1:filter的shape为5x5x32,strides为1,padding为“SAME”。卷积后维度为[-1,28,28,32]。
3.池化层2:max-pooling,ksize为2x2,步长为2。池化后维度为[-1,14,14,32]。
4.卷积层3:filter的shape为5x5x64,strides为1,padding为“SAME”。卷积后维度为[-1,14,14,64]。
5.池化层4:max-pooling,ksize为2x2,步长为2。池化后维度为[-1,7,7,64]。
6.池化后结果展开:将池化层4 feature map展开,[-1,7,7,64] => [-1,3136]。
7.全连接层5:输入维度 [-1,3136],输出维度 [-1,512]。
8.全连接层6:输入维度 [-1,512],输出维度 [-1,10],经softmax后,得到分类结果。
4.代码:
(1)定义参数:
(2)定义初始化函数
(3)定义第一个卷积层+池化层:
(4)定义第二个卷积层+池化层:
池化结果展开:
(5)运行结果:
<1>传统神经网络
<2>卷积神经网络-CNN
可以看到CNN的训练结果,精确度更高。
实验二:
1.(1)概述:利用卷积网络完成一个图像分类的功能;
(2)训练完成后,模型保存在model中,可以进行线上分类;
(3)在cnn.py代码中包括了训练和测试两个功能,通过修改train=true或者是false来进行训练还是测试。
2.数据准备:
教程的图片从Cifar数据集中获取,download_cifar.py从Keras自带的Cifar数据集中获取了部分Cifar数据集,并将其转换为jpg图片。
默认从Cifar数据集中选取了3类图片,每类50张图,分别是
0 => 飞机
1 => 汽车
2 => 鸟
图片都放在data文件夹中,按照label_id.jpg进行命名,例如2_111.jpg代表图片类别为2(鸟),id为111。
3.代码及其注释:
(1)导入需要的库
(2)数据读取:
(3)定义placeholder(容器)
除了图像数据和Label,Dropout率也要放在placeholder中,因为在训练阶段和测试阶段需要设置不同的Dropout率
(4)定义卷积层:
(5)定义全连接层:
(5)定义损失函数和优化器:
(6)训练:
(7)测试:
(8)结果:

边栏推荐
- 兆骑科创海外高层次人才引进平台,企业项目对接,赛事活动路演
- I quit my job after cutting the brothers, and turned to do a small clerk
- Chinese Internet technology companies were besieged by wolves. Google finally suffered a severe setback and its profits fell sharply. It regretted promoting the development of Hongmeng...
- 自动化配置SSH免密登录和取消SSH免密配置脚本
- C语言 5:bool类型,关系表达式,逻辑表达式,分支语句,函数调用机制,break,continue,goto,return/exit跳转语句
- 工作效率-十五分钟让你快速学习Markdown语法到精通排版实践备忘
- Offensive EA&UML day arch - activity diagram: : Variable Actions (continue)
- 交叉编译工具链的安装和配置过程
- redis常见面试题(背诵篇)
- 这个 MySQL bug,99% 的人会踩坑!
猜你喜欢
随机推荐
云原生Meetup·广州站举行,共话云原生时代的企业数字化转型
AOP implementation enterprise API access interface monitoring (via Google Guava cache data)
面试官:生产环境中 CPU 利用率飙高怎么办?
Nacos基础教程
广州消防:高温天气火灾频发 消防安全不容忽视
《外太空的莫扎特》
arcpy脚本制作arcgis工具箱注意事项
协同多智能体学习的价值分解网络的原理与代码复现
CNCF Keith Chan:分布式云时代,云原生社区的发展与趋势
Domestic mobile phones turn users into their advertising broilers, no wonder consumers are buying iPhones
即刻体验 | 借助 CTS-D 进一步提升应用设备兼容性
深陷盈利困境,“寒冬”中也要二次递表,北森上市迫切
【C语言】AI三子棋的成长之路
【 LeetCode 】 88. Merging two orderly array
字典树笔记(自用)
基于SSM实现在线聊天系统
正斜杠 “/” 与反斜杠 “\”辨析
AQS源码阅读与强软弱虚4种引用以及ThreadLocal原理与源码
Pinia状态持久化
uni 的下拉式筛选菜单的功能/图片懒加载


















