首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

机器学习100天-Day2102 Tensorflow实现梯度下降

说明:本文依据《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节点。这部分在之前的教程中提到过,略过,看代码即可。

代码需要注意的是对之前代码的修改,如何实现小批量梯度下降的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190203A0VS5700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券