高中数学学过,函数在一阶导数为零的地方达到其最大值和最小值.梯度下降算法基于相同的原理,即调整系数(权重和偏置)使损失函数的梯度下降. 在回归中,使用梯度下降来优化损失函数并获得系数.本节将介绍如何使用 TensorFlow 的梯度下降优化器及其变体. 按照损失函数的负梯度成比例地对系数(W 和 b)进行更新.根据训练样本的大小,有三种梯度下降的变体: Vanilla 梯度下降:在 Vanilla 梯度下降(也称作批梯度下降)中,在每个循环中计算整个训练集的损失函数的梯度.该方法可能很慢并且难以…
Keras 是与 TensorFlow 一起使用的更高级别的作为后端的 API.添加层就像添加一行代码一样简单.在模型架构之后,使用一行代码,你可以编译和拟合模型.之后,它可以用于预测.变量声明.占位符甚至会话都由 API 管理. 具体做法 定义模型的类型.Keras 提供了两种类型的模型:序列和模型类 API.Keras 提供各种类型的神经网络层:   在 model.add() 的帮助下将层添加到模型中.依照 Keras 文档描述,Keras 提供全连接层的选项(针对密集连接的神经网络):…
Hornik 等人的工作(http://www.cs.cmu.edu/~bhiksha/courses/deeplearning/Fall.2016/notes/Sonia_Hornik.pdf)证明了一句话,“只有一个隐藏层的多层前馈网络足以逼近任何函数,同时还可以保证很高的精度和令人满意的效果.” 本节将展示如何使用多层感知机(MLP)进行函数逼近,具体来说,是预测波士顿的房价.第2章使用回归技术对房价进行预测,现在使用 MLP 完成相同的任务. 准备工作 对于函数逼近,这里的损失函数是 M…
反向传播(BPN)算法是神经网络中研究最多.使用最多的算法之一,它用于将输出层中的误差传播到隐藏层的神经元,然后用于更新权重. 学习 BPN 算法可以分成以下两个过程: 正向传播:输入被馈送到网络,信号从输入层通过隐藏层传播到输出层.在输出层,计算误差和损失函数. 反向传播:在反向传播中,首先计算输出层神经元损失函数的梯度,然后计算隐藏层神经元损失函数的梯度.接下来用梯度更新权重. 这两个过程重复迭代直到收敛. 前期准备 首先给网络提供 M 个训练对(X,Y),X 为输入,Y 为期望的输出.输入…
正如你目前所看到的,神经网络的性能非常依赖超参数.因此,了解这些参数如何影响网络变得至关重要. 常见的超参数是学习率.正则化器.正则化系数.隐藏层的维数.初始权重值,甚至选择什么样的优化器优化权重和偏置. 超参数调整过程 调整超参数的第一步是构建模型.与之前一样,在 TensorFlow 中构建模型. 添加一种方法将模型保存在 model_file 中.在 TensorFlow 中,可以使用 Saver 对象来完成.然后保存在会话中:   确定要调整的超参数,并为超参数选择可能的值.在这里,你可…
TensorFlow 支持自动求导,可以使用 TensorFlow 优化器来计算和使用梯度.它使用梯度自动更新用变量定义的张量.本节将使用 TensorFlow 优化器来训练网络. 前面章节中,我们定义了层.权重.损失.梯度以及通过梯度更新权重.用公式实现可以帮助我们更好地理解,但随着网络层数的增加,这可能非常麻烦. 本节将使用 TensorFlow 的一些强大功能,如 Contrib(层)来定义神经网络层及使用 TensorFlow 自带的优化器来计算和使用梯度. 通过前面的学习,我们已经知道…
简单感知机是一个单层神经网络.它使用阈值激活函数,正如 Marvin Minsky 在论文中所证明的,它只能解决线性可分的问题.虽然这限制了单层感知机只能应用于线性可分问题,但它具有学习能力已经很好了. 当感知机使用阈值激活函数时,不能使用 TensorFlow 优化器来更新权重.我们将不得不使用权重更新规则:   η 是学习率.为了简化编程,当输入固定为 +1 时,偏置可以作为一个额外的权重.那么,上面的公式可以用来同时更新权重和偏置. 下面讨论如何实现单层感知机: 导入所需的模块:   定义…
在 TensorFlow 实现简单线性回归的基础上,可通过在权重和占位符的声明中稍作修改来对相同的数据进行多元线性回归. 在多元线性回归的情况下,由于每个特征具有不同的值范围,归一化变得至关重要.这里是波士顿房价数据集的多重线性回归的代码,使用 13 个输入特征. 波士顿房价数据集可从http://lib.stat.cmu.edu/datasets/boston处获取. 多元线性回归的具体实现 导入需要的所有软件包:   因为各特征的数据范围不同,需要归一化特征数据.为此定义一个归一化函数.另外…
本节将针对波士顿房价数据集的房间数量(RM)采用简单线性回归,目标是预测在最后一列(MEDV)给出的房价. 波士顿房价数据集可从http://lib.stat.cmu.edu/datasets/boston处获取. 本小节直接从 TensorFlow contrib 数据集加载数据.使用随机梯度下降优化器优化单个训练样本的系数. 实现简单线性回归的具体做法 导入需要的所有软件包: 在神经网络中,所有的输入都线性增加.为了使训练有效,输入应该被归一化,所以这里定义一个函数来归一化输入数据: 现在使…
每个神经元都必须有激活函数.它们为神经元提供了模拟复杂非线性数据集所必需的非线性特性.该函数取所有输入的加权和,进而生成一个输出信号.你可以把它看作输入和输出之间的转换.使用适当的激活函数,可以将输出值限定在一个定义的范围内. 如果 xi 是第 j 个输入,Wj 是连接第 j 个输入到神经元的权重,b 是神经元的偏置,神经元的输出(在生物学术语中,神经元的激活)由激活函数决定,并且在数学上表示如下:   这里,g 表示激活函数.激活函数的参数 ΣWjxj​+b 被称为神经元的活动. 这里对给定输…
大多数人了解 Pandas 及其在处理大数据文件方面的实用性.TensorFlow 提供了读取这种文件的方法. 前面章节中,介绍了如何在 TensorFlow 中读取文件,本节将重点介绍如何从 CSV 文件中读取数据并在训练之前对数据进行预处理. 本节将采用哈里森和鲁宾菲尔德于 1978 年收集的波士顿房价数据集(http://lib.stat.cmu.edu/datasets/boston),该数据集包括 506 个样本场景,每个房屋含 14 个特征: CRIM:城镇人均犯罪率 ZN:占地 2…
本节基于回归学习对 MNIST 数据集进行处理,但将添加一些 TensorBoard 总结以便更好地理解 MNIST 数据集. MNIST由https://www.tensorflow.org/get_started/mnist/beginners提供. 大部分人已经对 MNIST 数据集很熟悉了,它是机器学习的基础,包含手写数字的图像及其标签来说明它是哪个数字. 对于逻辑回归,对输出 y 使用独热(one-hot)编码.因此,有 10 位表示输出,每位的值为 1 或 0,独热意味着对于每个图片…
正如前面所讨论的,在回归中定义了损失函数或目标函数,其目的是找到使损失最小化的系数.本节将介绍如何在 TensorFlow 中定义损失函数,并根据问题选择合适的损失函数. 声明一个损失函数需要将系数定义为变量,将数据集定义为占位符.可以有一个常学习率或变化的学习率和正则化常数. 在下面的代码中,设 m 是样本数量,n 是特征数量,P 是类别数量.这里应该在代码之前定义这些全局参数: 在标准线性回归的情况下,只有一个输入变量和一个输出变量: 在多元线性回归的情况下,输入变量不止一个,而输出变量仍为…
机器之心报道 作者:邱陆陆 8 月中旬,谷歌大脑成员 Martin Wicke 在一封公开邮件中宣布,新版本开源框架——TensorFlow 2.0 预览版将在年底之前正式发布.今日,在上海谷歌开发者大会上,机器之心独家了解到一个重大的改变将会把 Eager Execution 变为 TensorFlow 默认的执行模式.这意味着 TensorFlow 如同 PyTorch 那样,由编写静态计算图全面转向了动态计算图. 谷歌开发者大会 在谷歌开发者大会的第二天,主会场全天都将进行 TensorF…
优化器总结 机器学习中,有很多优化方法来试图寻找模型的最优解.比如神经网络中可以采取最基本的梯度下降法. 梯度下降法(Gradient Descent) 梯度下降法是最基本的一类优化器,目前主要分为三种梯度下降法:标准梯度下降法(GD, Gradient Descent),随机梯度下降法(SGD, Stochastic Gradient Descent)及批量梯度下降法(BGD, Batch Gradient Descent). 标准梯度下降法(GD) 假设要学习训练的模型参数为WW,代价函数为…
我们有时会遇到一些坑,要不填平,要不绕过.这里为大家介绍一个相关SQL Server优化器方面的特性导致内存授予的相关BUG,及相关解决方式,也顺便回答下邹建同学的相关疑问. 问题描述 一个简单的查询消耗了匪夷所思的内存.(邹建同学发现的) 原文链接 Code create table test_mem ( id ,) primary key, itemid int not null, date datetime not null, str1 varchar(max) null ) INSERT…
[源码解析] PyTorch分布式优化器(1)----基石篇 目录 [源码解析] PyTorch分布式优化器(1)----基石篇 0x00 摘要 0x01 从问题出发 1.1 示例 1.2 问题点 0x01 模型构造 1.1 Module 1.2 成员变量 1.3 _parameters 1.3.1 构建 1.3.2 归类 1.3.3 获取 1.4 Linear 1.4.1 使用 1.4.2 定义 1.4.3 解释 0x02 Optimizer 基类 2.1 初始化 2.2 添加待优化变量 2.…
前言 AI 人工智能包含了机器学习与深度学习,在前几篇文章曾经介绍过机器学习的基础知识,包括了监督学习和无监督学习,有兴趣的朋友可以阅读< Python 机器学习实战 >.而深度学习开始只是机器学习的一分支领域,它更强调从连续的层中进行学习,这种层级结构中的每一层代表不同程序的抽象,层级越高,抽象程度越大.这些层主要通过神经网络的模型学习得到的,最大的模型会有上百层之多.而最简单的神经网络分为输入层,中间层(中间层往往会包含多个隐藏层),输出层.下面几篇文章将分别从前馈神经网络 FNN.卷积神…
注:在很长一段时间,MNIST数据集都是机器学习界很多分类算法的benchmark.初学深度学习,在这个数据集上训练一个有效的卷积神经网络就相当于学习编程的时候打印出一行“Hello World!”.下面基于与MNIST数据集非常类似的另一个数据集Fashion-MNIST数据集来构建一个卷积神经网络. 0. Fashion-MNIST数据集 MNIST数据集在机器学习算法中被广泛使用,下面这句话能概况其重要性和地位: In fact, MNIST is often the first data…
摘自: https://www.kaggle.com/zoupet/neural-network-model-for-house-prices-tensorflow 一.实现功能简介: 本文摘自Kaggle的一篇房价预测题目,找了一篇比较全的,当作自己的Tensorflow入门. 数据和题目可以在文章开头的地址找的. 主要是给定了一个区域的房子价格以及房子特征,要预测一下房价. 二.挑选数据 # 为了使得代码在 python2 或者3下都运行,加的 __future__包.如果是python3,…
Tensorflow:1.6.0 优化器(reference:https://blog.csdn.net/weixin_40170902/article/details/80092628) I:  tf.train.GradientDescentOptimizer  Tensorflow中实现梯度下降算法的优化器. 梯度下降:(1)标准梯度下降GD(2)批量梯度下降BGD(3)随机梯度下降SGD (1)标准梯度下降:学习训练的模型参数为W,代价函数为J(W),则代价函数关于模型参数的偏导数即相关…
1.激活函数 激活函数(activation function)运行时激活神经网络中某一部分神经元,将激活信息向后传入下一层的神经网络.神经网络之所以能解决非线性问题(如语音.图像识别),本质上就是激活函数加入了非线性因素,弥补了线性模型的表达力,把“激活的神经元的特征”通过函数保留并映射到下一层. 因为神经网络的数学基础是处处可微的,所以选取的激活函数要能保证数据输入与输出也是可微的.那么激活函数在 TensorFlow 中是如何表达的呢? 激活函数不会更改输入数据的维度,也就是输入和输出的维…
本节详细说明一下深度学习环境配置,Ubuntu 16.04 + Nvidia GTX 1080 + Python 3.6 + CUDA 9.0 + cuDNN 7.1 + TensorFlow 1.6. Python 3.6 首先安装 Python 3.6,这里使用 Anaconda 3 来安装,下载地址:https://www.anaconda.com/download/#linux,点击 Download 按钮下载即可,这里下载的是 Anaconda 3-5.1 版本,如果下载速度过慢可以选…
一.TensorFlow中的优化器 tf.train.GradientDescentOptimizer:梯度下降算法 tf.train.AdadeltaOptimizer tf.train.AdagradOptimizer tf.train.MomentumOptimizer:动量梯度下降算法 tf.train.AdamOptimizer:自适应矩估计优化算法 tf.train.RMSPropOptimizer tf.train.AdagradDAOptimizer tf.train.FtrlO…
0. tf.train.Optimizer tensorflow 里提供了丰富的优化器,这些优化器都继承与 Optimizer 这个类.class Optimizer 有一些方法,这里简单介绍下: 0.1. minimize minimize( loss, global_step=None, var_list=None, gate_gradients=GATE_OP, aggregation_method=None, colocate_gradients_with_ops=False, name…
本节涉及的知识点: 1.在程序中查看变量的取值 2.张量 3.用张量重新组织输入数据 4.简化的神经网络模型 5.标量.多维数组 6.在TensorFlow中查看和设定张量的形态 7.用softmax函数规范可变参数 8.小结:线性问题 一.在程序中查看变量的取值 x = 1 y = 2.2 z = "adc" print("x is: %d" % x) print("y is: %f" % y) print("z is: %s&quo…
TensorFlow Hub 模型复用 TF Hub 网站 打开主页 https://tfhub.dev/ ,在左侧有 Text.Image.Video 和 Publishers 等选项,可以选取关注的类别,然后在顶部的搜索框输入关键字可以搜索模型. TF Hub 安装 是单独的一个库,需要单独安装,安装命令如下: pip install tensorflow-hub TF Hub 模型使用样例 import tensorflow_hub as hub hub_handle = 'https:/…
Effective TensorFlow 2.0 为使TensorFLow用户更高效,TensorFlow 2.0中进行了多出更改.TensorFlow 2.0删除了篇冗余API,使API更加一致(统一RNNs, 统一优化器),并通过Eager execution更好地与Python集成. 许多RFCs已经解释了TensorFlow 2.0带来的变化.本指南介绍了TensorFlow 2.0应该怎么进行开发.这假设您已对TensorFlow 1.x有一定了解. A brief summary o…
本文学习笔记参照来源:https://tf.wiki/zh/basic/basic.html 前文:三分钟快速上手TensorFlow 2.0 (上)——前置基础.模型建立与可视化 tf.train.Checkpoint :变量的保存与恢复 只保存模型的参数,不保存模型的计算过程 需要导出模型(无需源代码也能运行模型),请参考 SavedModel 可以使用其 save() 和 restore() 方法将 TensorFlow 中所有包含 Checkpointable State 的对象进行保存…
本文学习笔记参照来源:https://tf.wiki/zh/basic/basic.html 学习笔记类似提纲,具体细节参照上文链接 一些前置的基础 随机数 tf.random uniform(shape()) 两个元素零向量 tf.zeros(shape=(2)) 2x2常量 tf.constant([1,2],[3,4]) 查看形状.类型.值 A.shape A.dtype A.numpy() 矩阵相加 tf.add(A,B) 矩阵相乘 tf.matmul(A,B) 自动求导机制  tf.G…