欢迎进入TensorFlow2.0入门到进阶的第二章内容,这一章将主要讲解利用tf.keras的实战部分。本节主要是对tf.keras的简要介绍。
相信很多小伙伴都听说过Keras,是一个单独的库,那么TensorFlow下面为什么还会有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/
综上所述:强烈推荐使用tf.keras!!!
分类问题是用于将事物打上一个标签,通常结果为离散值。例如判断一幅图片上的动物是一只猫还是一只狗,分类通常是建立在回归之上,分类的最后一层通常要使用softmax函数进行判断其所属类别。分类并没有逼近的概念,最终正确结果只有一个,错误的就是错误的,不会有相近的概念。最常见的分类方法是逻辑回归,或者叫逻辑分类。
回归问题通常是用来预测一个数值,如预测房价、未来的天气情况等等,例如一个产品的实际价格为500元,通过回归分析预测值为499元,我们认为这是一个比较好的回归分析。一个比较常见的回归算法是线性回归算法(LR)。另外,回归分析用在神经网络上,其最上层是不需要加上softmax函数的,而是直接对前一层累加即可。回归是对真实值的一种逼近预测。
损失函数(loss function):计算的是一个样本的误差。它是用来估量你模型的预测值 f(x)与真实值 Y的不一致程度,通常用 L(Y,f(x))来表示。
是整个训练集上所有样本误差的平均。本质上看,和损失函数是同一个东西。
顾名思义,就是想达到的目标,想达到的目标是什么,当然是准确实现分类或者回归了,这里通常是代价函数 + 正则化项。
详细解析:链接:https://www.zhihu.com/question/52398145
让我们来看一个经典的神经网络。这是一个包含三个层次的神经网络。红色的是输入层,绿色的是输出层,紫色的是中间层(也叫隐藏层)。输入层有3个输入单元,隐藏层有4个单元,输出层有2个单元。后文中,我们统一使用这种颜色来表达神经网络的结构。
详细介绍:https://www.cnblogs.com/subconscious/p/5058741.html
如下图,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数 Activation Function:
常用激活函数:https://www.cnblogs.com/weilonghu/p/11922739.html
归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。
一个最主要的原因就是,在使用梯度下降的方法求解最优化问题时, 归一化/标准化后可以加快梯度下降的求解速度,即提升模型的收敛速度。如下图所示。未归一化的数据如左图所示,归一化后的数据如右图所示,可以看出归一化后的数据明显易于优化。
详细介绍:https://www.jianshu.com/p/95a8f035c86c
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
实战部分当然不是一篇博客就能讲完的啦,本系列博客持续更新,本系列第二章将详细介绍keras的实战部分,会有原始代码和超详解析,欢迎关注!!!