Hands-on Machine Learning with Scikit-Learn and TensorFlow(中文版)和深度学习原理与TensorFlow实践-学习笔记

监督学习:添加标签。学习的目标是求出输入与输出之间的关系函数y=f(x)。朴素贝叶斯、逻辑回归和神经网络等都属于监督学习的方法。

监督学习主要解决两类核心问题,即回归和分类。

回归和分类的区别在于强调一个是连续的,一个是离散的。

非监督学习:不添加标签。学习目标是为了探索样本数据之间是否有隐含的不易被发现的关系。

半监督学习:通常是大量不带标签数据加上小部分带标签数据

批量学习:系统不能进行持续学习,也称离线学习

在线学习:通常还是离线完成的,但是是持续学习

这种从数据中学习规律的过程也叫作模式识别

特征工程目的是:目的是最大限度地从原始数据中提取特征以供算法和模型使用

图像在计算机中最基本的便是是一组像素值大集合,从像素到物体的映射关系需要经过一个很长的过程,从像素组成细小的编,由边组成基础的纹理基元,纹理基元组合而成图形,图形构成物体的各种组成部分,最后组成物体的整体。深度学习模型的结构设计遵循了这种死,具体做法是将一系列相对简单的非线性映射操作构建成一个多层玩过,每一层都完成一次特征变换。

包含三个以上隐层的神经网络就可以说是一种深度学习模型。只有两个隐层的神经网络就不能算是有深度打的结构,因为它并没有能力分级提取特征。

理论上来说,只有神经元足够多,构成一个很“宽”的网络,它可以拟合任意的函数,那为什么还要更“深”?原因在于:在神经元数量相同的情况下,深层网络结构具有更大的容量,分层组合带来的是指数级的表达空间,能够组合成更多不同类型的子结构,这样可以更容易地学习和表示各种特征。并且,隐层增加则意味着由激活函数带来的非线性变换嵌套层数更多,就能构造更复杂的映射关系。

对于深度学习来说,人类赋予其最重要的一个先验经验就是:分层组成的表示方式更能准确地描述我们所在世界的规则。

tensorflow的计算图是一个有向图,图中的节点嗲表数字计算操作的算子,节点之间连接的边代表参与计算的高位数组数据,叫做tensor。

tensor代表多为数组,对应神经玩过计算中的高位举证。tnesor可以有任意纬度,米格纬度也可以有任意长度特别来说,一位tensor就是向量,是普通的一位数组;二维tensor是矩阵。tensorflow中一般使用4位tensor表示一个mini-batch的图片,四个纬度分别是鼻大小、像素行数、相熟列数,通道数,即【batch,height,width,channels】。tensor中的元素可以使任意内置类型,常用额有:int32,int64,float32float64,等等。对于神经网络来说,单精度float32应该是最常用的数据类型。

 对于神经网络等算法来说,又想吐可以表示模型的结构,,但是图中编的全职参数并不是固定不变的,而是通过训练过程不断调整更新的。所谓图的状态,就是图中所有参数的组合,宰tensorflow中,已变量来村准参数值,变量可以与tensor一样参与各种运算,区别在于tensor的值宰每次计算图执行完成之后立即被丢弃,二变量的值宰通过反向传播计算更新后会保留下来,带入到下一轮训练迭代。

泰坦尼克问题中的正规化主要有三个方面,意识将字符串字段转换为数值化的表达方式,比如讲性别字段原本取值‘make’和‘female’分别转换为0和1,这样才能作为分类器的输入;而是可以将数值都归一化到【0,1】的取值范围内,比如年龄字段原本的至于是【0,100),归一化过程可以使将每个值都除以100;三十不起确实数据。

逻辑回归:通过logistic回归分析,可以得到自变量的权重,从而可以大致了解到底哪些因素是胃癌的危险因素。同时根据该权值可以根据危险因素预测一个人患癌症的可能性

泰坦尼克问题代码步骤:数据读入及预处理,构建计算图,构建训练迭代过程,执行训练、储存模型,预测测试数据结果。

为了防止训练过拟合,我们将仅有的标记数据分成训练数据集和验证数据集两类。

权重矩阵W和偏置向量b是模型中的参数,也就是要通过训练来求得的部分。

使用tensorFlow构建计算过程是十分简单的:

1.使用placeholder申明输入占位符

2.申明参数变量

3.构造前向传播计算图

4.声明代价函数

 

 5.加入优化算法

Session.run()执行完计算后,会返回计算节点的结果。若节点为算子,则没有返回值,若节点是tensor,则返回当前的值。

%04d 表示:在输出整数x的时候 按照4个位子的空间左对齐 多余的位子用0代替
(例如:x=3 --> 输出:0003 x=33 --> 输出:0033)

%.9f保留小数点后9位

我们可以根据训练图,对学习情况进行评估,比如我们看损失训练图,可以看到现在是一条慢慢减小的曲线,最后的值趋近趋近于0(这里趋近于0是由于我选的模型太容易训练了,误差可以逼近0,同时又能很好的表征系统的模型,在现实情况,往往都有误差,趋近于0反而是过拟合),这符合本意,就是要最小化loss,如果loss的曲线最后没有平滑趋近一个数,则说明训练的力度还不够,还有加大次数,如果loss还很大,说明学习算法不太理想,需改变当前的算法,去实现更小的loss,另外两幅图与loss类似,最后都是要趋近一个数的,没有趋近和上下浮动都是有问题的。

猜你喜欢

转载自blog.csdn.net/qq_31293575/article/details/83143518