TensorFlow BP神经网络:训练集、验证集与测试集实践

一.全连接的BP神经网络

1.BP(back propagation反传播)神经网络

bp神经网络的基本思想是梯度下降法,利用梯度搜索技术,以期使网络的实际输出值和期望输出值的误差均方差为最小。基本BP算法包括信号的前向传播和误差的反向传播两个过程。即计算误差输出时按从输入到输出的方向进行,而调整权值和阈值则从输出到输入的方向进行。正向传播时,输入信号通过隐含层作用于输出节点,经过非线性变换,产生输出信号,若实际输出与期望输出不相符,则转入误差的反向传播过程。

2.全连接神经网络

连接神经网络(Fully Connection Neural Network)是CNN、RNN、LSTM等各种神经网络的基础。

全连接神经网络示意图如下:

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_全连接

2.1 全连接神经网络的原理

全连接神经网络是深度学习的基础。

2.1.1内部运算逻辑

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_全连接_02

上面的网络结构总共有三层,输入层,隐藏层和输出层,每一级都是利用前一级的输出作为输入,再经过圆圈内的计算,输出到下一级。它们在“圆圈”内的计算都是以下的计算组合:

                                                           

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_全连接_03

2.1.2.反向传播

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_全连接_04

反向传播:神经网络反向回去才能得到一个训练,以此来更新整个神经元的权重。反向传播的内容是什么?神经网络的训练是一个有监督的学校,也就是输入X有着与之对应的真实值Y,神经网络的输出Y与真实值Y之间的损失Loss就是网络反向传播的东西。整个网络的训练过程就是不断缩小损失Loss的过程。
tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_深度学习_05

最后一步化简是将常数用A、B、C、D、E、F表示,经过化简,我们可以看到未知数只剩下了w和b,为了让Loss最小,我们要求解出最佳的w和b。

2.1.3 为了让Loss最小,求解出最佳的w和b

以下我们将其放置于不同维度,

如果这是一个二维空间,则相当于我们要找一条曲线,让它和坐标轴上的样本点距离最小。

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_全连接_06

同理,我们可以将Loss方程转化为一个三维图像来求解w,b最优解。

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_深度学习_07

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_全连接_08



多维空间求解w,b最优解。

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_深度学习_09

3.学习率

为什么要有学习率?如何选择学习率?

学习率就像下坡的加速度,如果学习率太大,你可能就会越过谷底,直接摔到对面的小山坡上,如果学习率太小,学习就会非常缓慢,并且可能你遇到一个小坑你就会认为它是谷底。

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_全连接_10



一般来说,学习率越大,神经网络学习速度越快。如果学习率太小,网络可能会陷入局部最优;但是太大,超过了极值,损失就会停止下降,在某一位置反复震荡。总的来说学习率是试出来的,看哪个学习率能让Loss收敛的更快,让Loss最小,就选哪个。

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_神经网络_11

二.深度神经网络

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_深度学习_12

1.卷积神经网络CNN


1.1卷积神经网络LeNet

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_深度学习_13


核心是卷积,池化

针对此图:

C1,C3,C5三个卷积层:卷积核与不同的卷积层进行计算,提取图像特征。

S2,S4两个池化层:可以降低图像的过拟合程度,强化图像的显著特性。

最后还用了两个连接层进行连接。



 1.2.AlexNet

是最早的现代神经网络,证明了CNN在复杂模型下的有效性,并且使用GPU训练,在可接受的时间范围内得到比较好的结果。推动了有监督深度学习。其本质上就是将LeNet的深度进行了扩展,并且运用了ReLU的激活函数,以及Dropout防止过拟合的技术。

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_神经网络_14

包含5个卷积层和三个最大化池化层,可以分为上下两个完全相同的分支,并且在第三个卷积层和全连接可以相互交换信息。



1.3.VGG Net

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_神经网络_15

有5个卷积层组,两个全连接层是用来提取图像特征,一个全连接层是用来分类特征。

5个卷积层组中,每个卷积层数是从8到16递增的。

1.4.Google Net

使用了inception结构,使整个网络的宽度和深度扩大,得到更好的性能提升。

2.深度学习技术存在的问题:

面向任务单一,依赖于大规模有标签数据–几乎是个黑箱模型,可解释性不强......

无监督的深度学习、迁移学习、深度强化学习和贝叶斯深度学习等受关注深度学习具有很好的可推广性和应用性,但不是人工智能的全部,未来人工智能需要有更多类似技术深度学习,仍在发展中......



二.深度学习框架


1.Theano

开发始于2007,Theano 是深度学习开发与研究的行业标准Theano 是一个比较低层的库,适合数值计算优化。


2.Caffe and Caffe2

2013 年就已问世,老牌的框架之一,全称是“Convolution Architecture For Feature Extraction”,意为“用于特征提取的卷积架构”,它的设计初衷是计算机视觉存在灵活性不足的问题。

Caffe2 是在2017年4月Facebook 发布,可以看作是Caffe 更细粒度的重构,在实用的基础上,增加了扩展性和灵活性


3.PyTorch

Torch 是一个非主流,开发语言:基于1990 年代诞生的Lua,Facebook 的人工智能研究所用的框架是Torch。

Torch 非常适用于卷积神经网络Torch 的灵活度更高,因为它是命令式的,支持动态图模型。

PyTorch可以说是Torch的Python版。


4.MXNet

MXNet是亚马逊AWS 选择支持的深度学习框架,MXNet尝试将两种模式无缝的结合起来:在命令式编程上MXNet提供张量运算,而声明式编程中MXNet支持符号表达式。


5.CNTK


6.Keras

Keras是一个非常高层的库,可以工作在Theano 、TensorFlow和CNTK之上Keras强调极简主义——你只需几行代码就能构建一个神经网络,Keras为支持快速实验而生,能够把你的idea迅速转换为结果。


7.DL4J

DL4J是基于JVM、聚焦行业应用且提供商业支持的分布式深度学习框架,其宗旨是在合理的时间内解决各类涉及大量数据的问题。Java可以与Hadoop和Spark集成,可使用任意数量的GPU或CPU运行,


8.Chaine

Chainer是一个专门为高效研究和开发深度学习算法而设计的,支持动态图模型。


9.PaddlePaddle

PaddlePaddle,百度旗下深度学习开源平台。

10.TensorFlow(重点)

从底层易控制到高层易用,可供灵活选择。

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_深度学习_16

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_深度学习_17

 

10.1TensorFlow的概念

10.1.1 计算图(数据流图)的概念

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_神经网络_18

10.1.2 计算图的实例

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_深度学习_19

10.2 Tensor张量

10.2.1张量的概念

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_深度学习_20

10.2.2张量的属性

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_神经网络_21

10.2.3张量的形状

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_全连接_22

例1:tens1是一个三维数组(最左侧有三个左括号)

shape的格式:tens1是三维数组,因此shape括号中有是三个元素。

其中第一个元素代表最外围的数组由几个构成(4个二维数组)。

第二个参数:代表倒数第二维中由几个元素构成,本例为2,,每个二维数组由两个一维数组构成。

第三个参数:再针对每个具体的一维数组里面有三个元素。

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_全连接_23

例2:

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_深度学习_24

10.2.4 获取张量中的元素(下标以0开始)

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_神经网络_25

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_神经网络_26

10.2.5张量的类型

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_全连接_27

10.3 操作

tensorflow的bp神经网络如何实现训练集验证集和测试集 tensorflow bp神经网络_深度学习_28


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空