tensorflow2.0第2章 Tensorflow keras实战

本门课程的基础章节,详细介绍了如何使用tf.keras进行模型的搭建以及大量的深度学习的理论知识。理论知识包括分类问题、回归问题、损失函数、神经网络、激活函数、dropout、批归一化、深度神经网络、Wide&Deep模型、密集特征、稀疏特征、超参数搜索等及其在图像分类、房价预测上的实现。

课程代码的tensorflow版本:

大部分代码是tensorflow2.0的;

课程以tf.keras API为主,因为keras在1.3以后的版本就引入进来了,因而部分代码可以在tf1.3+运行;

另外有少量tensorflow1.*版本代码,这些版本的代码并不能在2.0上运行,因为很多API都已经过时了。

理论部分:

tensorflow-keras简介;

分类问题、回归问题、损失函数;

神经网络、激活函数、批归一化、Dropout;

wide&模型;

超参数搜索。

实战部分:

keras搭建分类模型;

keras回调函数;

keras搭建回归模型;

keras搭建深度神经网络;

keras实现wide&deep模型;

keras与scikit-learn实现超参数搜索。

tensorflow-keras简介

keras是什么:

基于python的高级神经网络API,它是一套API,而不是一个完整的库;

Francois Chollet(现在在Google,tf.keras由他来实现)于2014-2015年编写Keras;

keras只是神经网络的API,它不是一个完整的库,它如何去运行呢?他要设置后端,现在tensorflow支持三个后端,有了后端之后,keras才能去运行以Tensorflow、CNTK或者Theano为后端运行,keras必须有后端才可以运行,keras的后端是可以切换的,对于用户来说他只是使用了keras的API,他并不会用到后端里边的东西他不依赖于后端,对于用户来说切换后端对于他使用keras没有任何的影响,自从tensorflow支持了称为keras后端之后,现在大家一般使用以tensorflow为后端的keras;

由于keras它的抽象化做的比较好,所以极方便于快速实验,帮助用户以最少的时间验证自己的想法。

tensorflow-keras是什么:

是tensorflow内部对keras API规范的又给实现;

他和以tensorflow为后端的keras其实是两码事,因为这一套keras API规范的是直接是现在tensorflow上的,就是这套API和tensorflow结合更加的紧密;

实现在tf.keras空间下,所以说tensorflow keras和tf.keras是一个类似的概念。

tf-keras和keras联系:

基于同一套API,都是keras定义的那一套API,因为是同一套API,所以keras程序可以通过改导入方式轻松转为tf.keras程序,反之对于tf.keras的代码要想改成keras的代码可能不一定能够成立,因为tf.keras有一些其他的特性的东西,因为tf.keras种的keras和tensorflow结合的更加紧密,如果之前用过keras的话,可以很轻松的转到tensorflow-keras上来;

他们的规范是一样的,他们的模型导出的规范也是一样的,相同的JSON和HDF5模型序列化格式和语义。

tf-keras和keras区别:(就是tf-keras他和tensorflow的联系更加的紧密,具体紧密在以下方面)

tf-keras全面支持eager mode,只是用keras.Sequential和keras.Model时没影响,自定义Model内部运算逻辑的时候会有影响(Tf底层API可以使用keras的model.fit等抽象,更适用于研究人员尝试自己的想法);

Tf.keras支持基于tf.data做为数据的输入;

tf.keras支持TPU训练;

tf.keras支持tf.distribution中的分布式策略;

其他特性(tf.keras可以与tensorflow中的estimator预估器相集成,tf.keras可以保存为SavedModel,保存为tensorflow中的SavedModel之后呢就可以利用tensorflow的那种跨平台的优势可以把这个model部署到各种各样的平台上去,这是tf.keras的一些优势)。

是使用keras还是使用tf.keras,如何选择?

如果想用到tf.keras中的任何一个特性,那么选用tf.keras;

如果后端互换性很重要,那么选用keras;

如果都不重要,那随便。

分类与回归问题

本节课要解决的两个问题,分类问题与回归问题。

分类问题预测的是类别,模型输出是概率分布,三分类问题输出例子:[0.2, 0.7, 0.1]。

回归问题预测的是值,模型的输出是一个实数值。

为什么需要目标函数?

参数是逐步调整的;

目标可以帮助衡量模型的好坏。

分类问题的目标函数:

需要衡量目标类别与当前预测的差距(三分类问题输出例子[0.2, 0.7, 0.1],三分类真实类别2->one_hot->[0, 1, 1]);

one-hot编码,把正整数变为向量表达(生成一个长度小于正整数的向量,只有正整数的位置处为1,其余位置都为0);

平法差损失1/nΣ1/2(y-Model(x))2;

交叉熵损失1/nΣyln(Model(x))。

回归问题的目标函数(比分类问题简单,因为输出是一个值而非分布):

预测值与真实值的差距;

平方差损失;

绝对值损失。

有了目标函数之后,怎么求解模型?

模型的训练就是调整参数,使得目标函数逐渐变小的过程,这就是目标函数的一个作用。

实战:

keras搭建分类模型、keras回调函数、keras搭建回归模型。

使用keras搭建分类模型

数据读取与展示:

模型构建:

模型数据归一化:

实战回调函数

猜你喜欢

转载自www.cnblogs.com/wisir/p/12132134.html