激励函数

ML激活函数使用法则

≡放荡痞女 提交于 2020-03-06 00:13:42
以下仅为自己的整理记录,绝大部分参考来源: 莫烦Python ,建议去看原博客 一、处理结构 因为TensorFlow是采用数据流图( data flow graphs )来计算, 所以首先我们得创建一个数据流流图, 然后再将我们的数据( 数据以张量(tensor)的形式存在 )放在数据流图中计算. 节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组, 即张量(tensor). 训练模型时tensor会不断的从数据流图中的一个节点flow到另一节点, 这就是TensorFlow名字的由来. Tensor 张量意义 张量(Tensor) : 张量有多种. 零阶张量为 纯量或标量 (scalar) 也就是一个数值. 比如 [1] 一阶张量为 向量 (vector), 比如 一维的 [1, 2, 3] 二阶张量为 矩阵 (matrix), 比如 二维的 [[1, 2, 3],[4, 5, 6],[7, 8, 9]] 以此类推, 还有 三阶 三维的 … 二、使用Tensorflow创建一个线性回归的模型 创建数据 加载 tensorflow 和 numpy 两个模块, 并且使用 numpy 来创建我们的数据. import tensorflow as tf import numpy as np # create data x_data = np

深度学习:激活函数

送分小仙女□ 提交于 2020-02-08 12:34:46
原文地址 激活函数是推动深度学习发展的一个关键节点。 深度学习框架,尤其是基于 人工神经网络 的框架可以追溯到1980年福岛邦彦提出的新认知机[ 11] ,而人工神经网络的历史更为久远。1989年, 扬·勒丘恩 (Yann LeCun)等人开始将1974年提出的标准 反向传播算法 [ 12] 应用于深度神经网络,这一网络被用于手写邮政编码识别。尽管算法可以成功执行,但计算代价非常巨大,神经网路的训练时间达到了3天,因而无法投入实际使用[ 13] 。许多因素导致了这一缓慢的训练过程,其中一种是由 于尔根·施密德胡伯 的学生 赛普·霍克赖特 于1991年提出的 梯度消失问题 [ 14] [ 15] 。 引自 维基百科_深度学习 早期的网络都是直的,通过加权求和的方式进行层层运算。 这种网络也被成为多层感知机,后来它被证明不能解决非线性问题,这也成为当时制约深度学习发展的一个原因。 激活函数的出现改变了这种情况,激活函数的作用就是把直(线性)的掰成弯的(非线性)。 深度函数就是一个非线性函数,只不过它的输入不是原始的 x ,而是加权计算(直的过程)之后的结果,过程可以用下式表示 其中 f() 是一个非线性函数。 常用的激活函数 激活函数的选择 你甚至可以创造自己的激励函数来处理自己的问题, 不过要确保的是这些激励函数必须是可以微分的, 因为在 backpropagation

多项式回归

我是研究僧i 提交于 2020-01-31 10:59:19
在没有激励函数的情况下,输出和输入只是线性关系,甚至就算加上激励函数,那也是和整个输出的非线性关系. 当我感觉输出应该和某个特征为非线性关系时,该怎么办? 这里要用到一种叫多项式回归的办法: 其实也很简单,就是把原来的输入加一项,某个特征的幂次,质数,随便你. 假如原来的输入特征向量是: 现在我先对数据集进行一些处理,将其变为: 当然,我在吴恩达老师的课里还看到一种方法: 这两个方法的核心思想都是处理特征使模型更好. 总之不能无脑输入数据集,先有自己的一些判断和处理还是很重要的. 来源: CSDN 作者: oahuyil 链接: https://blog.csdn.net/realliyuhao/article/details/104121248

神经网络-激励函数

孤者浪人 提交于 2019-12-27 17:32:45
一、前言 激励函数在神经网络的作用通俗上讲就是讲多个线性输入转换为非线性的关系。 不使用激励函数的话,神经网络的每层都只是做线性变换,多层输入叠加后也还是线性变换。因为线性模型的表达能力不够,激励函数可以引入非线性因素。 1.1 单一的神经网络 如果没有激励函数,在单层神经网络中,我们的输入和输出关系如下图: 这是一个线性方程的直观表示,如果我们增加感知机,如下图: 其中结果输出就是右边的绿色区域,但是本质上还是各种线性方程的组合,对于非线性数据则无法很好的处理。如下数据: 上图数据你就没有办法画出一条直线来将数据区分开. 这时候有两个办法,第一个办法,是做线性变换(linear transformation),比如讲x,y变成x^2,y^2,这样可以画出圆形。如图所示: 如果将坐标轴从x,y变为以x^2,y^2为标准,你会发现数据经过变换后是线性可分的了。大致示意图如下: 1.2 含有激励函数的神经网络 加入非线性激励函数后,神经网络就有可能学习到平滑的曲线来分割平面,而不是用复杂的线性组合逼近平滑曲线来分割平面。 这就是为什么我们要有非线性的激活函数的原因。如下图所示说明加入非线性激活函数后的差异,上图为用线性组合逼近平滑曲线来分割平面,下图为平滑的曲线来分割平面: 二、激励函数 1、激活函数通常有如下一些性质: 非线性: 当激活函数是线性的时候

【pytorch】学习笔记-激励函数

笑着哭i 提交于 2019-12-03 04:56:50
【pytorch】学习笔记-激励函数 学习自: 莫烦python 什么是激励函数 一句话概括 Activation: 就是让神经网络可以描述非线性问题的步骤, 是神经网络变得更强大 1.激活函数是用来加入非线性因素的,解决线性模型所不能解决的问题。 2.激励函数要考虑到线性所收到的约束条件,也就是掰弯线性函数 3.它其实就是另外一个非线性函数. 比如说relu, sigmoid, tanh. 将这些掰弯利器嵌套在原有的结果之上, 强行把原有的线性结果给扭曲了. 使得输出结果 y 也有了非线性的特征. 常用的函数的使用 1.你的神经网络层只有两三层, 不是很多的时候, 对于隐藏层, 使用任意的激励函数, 随便掰弯是可以的, 不会有特别大的影响 2.当你使用特别多层的神经网络, 在掰弯的时候, 玩玩不得随意选择利器. 因为这会涉及到梯度爆炸, 梯度消失的问题. 激励函数的使用场景 1.在少量层结构中, 我们可以尝试很多种不同的激励函数 2.在卷积神经网络 Convolutional neural networks 的卷积层中, 推荐的激励函数是 relu 3.在循环神经网络中 recurrent neural networks, 推荐的是 tanh 或者是 relu 各种激励函数的'掰弯效果' import torch import torch.nn.functional as F #