说明:本文依据《Sklearn 与 TensorFlow 机器学习实用指南》完成,所有版权和解释权均归作者和翻译成员所有,我只是搬运和做注解。
进入第二部分深度学习
第九章启动并运行Tensorflow
Tensorflow是一款用于数值计算的强大的开源软件库,特别适用于大规模机器学习的微调。
它的基本原理很简单:首先在 Python 中定义要执行的计算图(例如图 9-1),然后 TensorFlow 使用该图并使用优化的 C++ 代码高效运行该图。
提供了一个非常简单Python API,名为 TF.Learn2(tensorflow.con trib.learn),与 Scikit-Learn 兼容。正如你将会看到的,你可以用几行代码来训练不同类型的神经网络。之前是一个名为 Scikit Flow(或 Skow)的独立项目。
提供了另一个简单的称为 TF-slim(tensorflow.contrib.slim)的 API 来简化构建,训练和求出神经网络。
其他几个高级 API 已经在 TensorFlow 之上独立构建,如 Keras 或 Pretty Tensor。
它的主要 Python API 提供了更多的灵活性(以更高复杂度为代价)来创建各种计算,包括任何你能想到的神经网络结构。
它提供了几个高级优化节点来搜索最小化损失函数的参数。由于 TensorFlow 自动处理计算您定义的函数的梯度,因此这些非常易于使用。这称为自动分解(或autodi)。
它还附带一个名为 TensorBoard 的强大可视化工具,可让您浏览计算图表,查看学习曲线等。
这一章主要是介绍TensorFlow基础知识,从安装到创建,运行,保存和可视化简单的计算图
我发现之前看的tf相关教程还是太零散了,当时应该直接跳到这里……
5.实现梯度下降
使用批量梯度下降。
使用 TensorFlow 的自动扩展功能来使 TensorFlow 自动计算梯度
使用几个 TensorFlow 的优化器
当使用梯度下降时,请记住,首先要对输入特征向量进行归一化,否则训练可能要慢得多。
注意在代码中应该引入一个归一化的方法,“from sklearn.preprocessing import scale”,教程中似乎忘了。
使用np.c_按照colunm来组合array,其实就是生成m个元素为1的list,然后和housing.data数据合并,在每个housing.data数组前加1
上面是手动撸的一个梯度下降,需要从代价函数(MSE)中利用数学公式推导梯度。
在线性回归的情况下,这是相当容易的,但是如果用深层神经网络来做这个事情,会很繁琐。 您可以使用符号求导来为您自动找到偏导数的方程式,但结果代码不一定非常有效。
Tensorflow提供了自动梯度计算的方法(反向传播),同时使用优化器,修改后的代码如下,结果一致。
6.将数据提供给训练算法
在这里其实就是实现小批量梯度下降mini batch。
在每次迭代时使用下一个下批量替换X和y,使用占位符placeholder节点。这部分在之前的教程中提到过,略过,看代码即可。
代码需要注意的是对之前代码的修改,如何实现小批量梯度下降的。
领取专属 10元无门槛券
私享最新 技术干货