神经网络与TensorFlow相关知识

目录

一.全连接的BP神经网络

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

 2.全连接神经网络

  2.1 全连接神经网络的原理

    2.1.1内部运算逻辑

    2.1.2.反向传播

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

3.学习率

二.深度神经网络

1.卷积神经网络CNN

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

二.深度学习框架

10.TensorFlow(重点)

  10.1TensorFlow的概念

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

   10.1.2 计算图的实例

  10.2 Tensor张量

    10.2.1张量的概念

    10.2.2张量的属性 

    10.2.3张量的形状

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

    10.2.5张量的类型

  10.3 操作


一.全连接的BP神经网络

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

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

 2.全连接神经网络

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

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

  2.1 全连接神经网络的原理

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

    2.1.1内部运算逻辑

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

                                                            

 

    2.1.2.反向传播

反向传播:神经网络反向回去才能得到一个训练,以此来更新整个神经元的权重。

反向传播的内容是什么?

神经网络的训练是一个有监督的学校,也就是输入X有着与之对应的真实值Y,神经网络的输出Y与真实值Y之间的损失Loss就是网络反向传播的东西。

整个网络的训练过程就是不断缩小损失Loss的过程。

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

 

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

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

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

 

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

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

3.学习率

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

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

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

 

二.深度神经网络

1.卷积神经网络CNN

  1.1卷积神经网络LeNet

核心是卷积,池化 

针对此图:

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

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

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

  1.2.AlexNet

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

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

  1.3.VGG Net

有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(重点)

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

 

  10.1TensorFlow的概念

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

   10.1.2 计算图的实例

  10.2 Tensor张量

    10.2.1张量的概念

    10.2.2张量的属性 

    10.2.3张量的形状

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

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

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

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

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

例2:

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

    10.2.5张量的类型

  10.3 操作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值