TensorFlow2.0入门到进阶2.1 —— 一文轻松搞懂Keras神经网络(理论+实战)

欢迎进入TensorFlow2.0入门到进阶的第二章内容,这一章将主要讲解利用tf.keras的实战部分。本节主要是对tf.keras的简要介绍。

文章目录

  • 1、理论部分
    • 1.1 TensorFlow-Keras简介
      • 1.1.1 Keras
      • 1.1.2 tf-keras和keras相同点
      • 1.1.3 tf-keras和keras不同点
    • 1.2 分类问题、回归
      • 1.2.1 分类
      • 1.2.2 回归:
    • 1.3 目标函数、损失函数、代价函数
      • 1.3.1 损失函数
      • 1.3.2 代价函数
      • 1.3.3 目标函数
    • 1.4 神经网络
    • 1.5 激活函数
    • 1.5 归一化与批归一化
      • 1.5.1 归一化
      • 1.5.2 批归一化
  • 2、实战部分

1、理论部分

1.1 TensorFlow-Keras简介

相信很多小伙伴都听说过Keras,是一个单独的库,那么TensorFlow下面为什么还会有Keras呢?他们有什么联系和区别呢?下面将详细介绍。

1.1.1 Keras

Keras API的实现意味着它是TensorFlow的高级API。

Keras是用Python编写的高级神经网络API,能够在TensorFlow,CNTK或Theano之上运行。它的开发着眼于实现快速实验。能够以最小的延迟将想法付诸实践是进行良好研究的关键。

Keras默认的后端为tensorflow,如果想要使用theano可以自行更改。tensorflow和theano都可以使用GPU进行硬件加速,往往可以比CPU运算快很多倍。因此如果你的显卡支持cuda的话,建议尽可能利用cuda加速模型训练。(当机器上有可用的GPU时,代码会自动调用GPU 进行并行计算。)目前Keras已经被TensorFlow收录,添加到TensorFlow 中,成为其默认的框架,成为TensorFlow官方的高级API。

官方手册:https://keras.io/

1.1.2 tf-keras和keras相同点

  • 1、基于同一套API。keras程序可以通过改导入方式轻松转为tf.keras程序,反之可能不成立,因为tf.keras有其他特性。
  • 2、相同的JSON和HDF5模型序列化格式和语义

1.1.3 tf-keras和keras不同点

TensorFlow2.0入门到进阶2.1 —— 一文轻松搞懂Keras神经网络(理论+实战)_第1张图片

综上所述:强烈推荐使用tf.keras!!!

1.2 分类问题、回归

1.2.1 分类

分类问题是用于将事物打上一个标签,通常结果为离散值。例如判断一幅图片上的动物是一只猫还是一只狗,分类通常是建立在回归之上,分类的最后一层通常要使用softmax函数进行判断其所属类别。分类并没有逼近的概念,最终正确结果只有一个,错误的就是错误的,不会有相近的概念。最常见的分类方法是逻辑回归,或者叫逻辑分类。

1.2.2 回归:

回归问题通常是用来预测一个数值,如预测房价、未来的天气情况等等,例如一个产品的实际价格为500元,通过回归分析预测值为499元,我们认为这是一个比较好的回归分析。一个比较常见的回归算法是线性回归算法(LR)。另外,回归分析用在神经网络上,其最上层是不需要加上softmax函数的,而是直接对前一层累加即可。回归是对真实值的一种逼近预测。

1.3 目标函数、损失函数、代价函数

1.3.1 损失函数

损失函数(loss function):计算的是一个样本的误差。它是用来估量你模型的预测值 f(x)与真实值 Y的不一致程度,通常用 L(Y,f(x))来表示。

1.3.2 代价函数

是整个训练集上所有样本误差的平均。本质上看,和损失函数是同一个东西。

1.3.3 目标函数

顾名思义,就是想达到的目标,想达到的目标是什么,当然是准确实现分类或者回归了,这里通常是代价函数 + 正则化项。

详细解析:链接:https://www.zhihu.com/question/52398145

1.4 神经网络

让我们来看一个经典的神经网络。这是一个包含三个层次的神经网络。红色的是输入层,绿色的是输出层,紫色的是中间层(也叫隐藏层)。输入层有3个输入单元,隐藏层有4个单元,输出层有2个单元。后文中,我们统一使用这种颜色来表达神经网络的结构。
TensorFlow2.0入门到进阶2.1 —— 一文轻松搞懂Keras神经网络(理论+实战)_第2张图片
详细介绍:https://www.cnblogs.com/subconscious/p/5058741.html

1.5 激活函数

如下图,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数 Activation Function:
TensorFlow2.0入门到进阶2.1 —— 一文轻松搞懂Keras神经网络(理论+实战)_第3张图片
常用激活函数:https://www.cnblogs.com/weilonghu/p/11922739.html

1.5 归一化与批归一化

1.5.1 归一化

  • 1、把数据变成(0,1)或者(1,1)之间的小数。主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。
  • 2、把有量纲表达式变成无量纲表达式,便于不同单位或量级的指标能够进行比较和加权。

归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。

一个最主要的原因就是,在使用梯度下降的方法求解最优化问题时, 归一化/标准化后可以加快梯度下降的求解速度,即提升模型的收敛速度。如下图所示。未归一化的数据如左图所示,归一化后的数据如右图所示,可以看出归一化后的数据明显易于优化。TensorFlow2.0入门到进阶2.1 —— 一文轻松搞懂Keras神经网络(理论+实战)_第4张图片
详细介绍:https://www.jianshu.com/p/95a8f035c86c

1.5.2 批归一化

BN是由Google于2015年提出,这是一个深度神经网络训练的技巧,它不仅可以加快了模型的收敛速度,而且更重要的是在一定程度缓解了深层网络中“梯度弥散”的问题,从而使得训练深层网络模型更加容易和稳定。所以目前BN已经成为几乎所有卷积神经网络的标配技巧了。

从字面意思看来Batch Normalization(简称BN)就是对每一批数据进行归一化,确实如此,对于训练中某一个batch的数据{x1,x2,…,xn},注意这个数据是可以输入也可以是网络中间的某一层输出。在BN出现之前,我们的归一化操作一般都在数据输入层,对输入的数据进行求均值以及求方差做归一化,但是BN的出现打破了这一个规定,我们可以在网络中任意一层进行归一化处理,因为我们现在所用的优化方法大多都是min-batch SGD,所以我们的归一化操作就成为Batch Normalization。

详细解析:https://www.cnblogs.com/skyfsm/p/8453498.html

2、实战部分

实战部分当然不是一篇博客就能讲完的啦,本系列博客持续更新,本系列第二章将详细介绍keras的实战部分,会有原始代码和超详解析,欢迎关注!!!
TensorFlow2.0入门到进阶2.1 —— 一文轻松搞懂Keras神经网络(理论+实战)_第5张图片

你可能感兴趣的:(TensorFlow2.0入门到进阶2.1 —— 一文轻松搞懂Keras神经网络(理论+实战))