sigmoid

logistic / sigmoid function implementation numerical precision

懵懂的女人 提交于 2019-12-05 01:37:36
in scipy.special.expit , logistic function is implemented like the following: if x < 0 a = exp(x) a / (1 + a) else 1 / (1 + exp(-x)) However, I have seen implementations in other languages/frameworks that simply do 1 / (1 + exp(-x)) I am wondering how much benefit the scipy version actually brings. For very small x , the result approaches to 0. It works even if exp(-x) overflows to Inf . Alex Riley It's really just for stability - putting in values that are very large in magnitude might return unexpected results otherwise. If expit was implemented just as 1 / (1 + exp(-x)) then putting a value

Andrew Ng机器学习 二: Logistic Regression

旧时模样 提交于 2019-12-04 20:46:50
一:逻辑回归(Logistic Regression)    背景:假设你是一所大学招生办的领导,你依据学生的成绩,给与他入学的资格。现在有这样一组以前的数据集ex2data1.txt,第一列表示第一次测验的分数,第二列表示第二次测验的分数,第三列1表示允许入学,0表示不允许入学。现在依据这些数据集,设计出一个模型,作为以后的入学标准。      我们通过可视化这些数据集,发现其与某条直线方程有关,而结果又只有两类,故我们接下来使用逻辑回归去拟合该数据集。      1,回归方程的脚本ex2.m: %% Machine Learning Online Class - Exercise 2: Logistic Regression % % Instructions % ------------ % % This file contains code that helps you get started on the logistic % regression exercise. You will need to complete the following functions % in this exericse: % % sigmoid.m % costFunction.m % predict.m % costFunctionReg.m % % For this exercise,

Keras retrieve value of node before activation function

ぐ巨炮叔叔 提交于 2019-12-04 17:23:33
问题 Imagine a fully-connected neural network with its last two layers of the following structure: [Dense] units = 612 activation = softplus [Dense] units = 1 activation = sigmoid The output value of the net is 1, but I'd like to know what the input x to the sigmoidal function was (must be some high number, since sigm(x) is 1 here). Folllowing indraforyou's answer I managed to retrieve the output and weights of Keras layers: outputs = [layer.output for layer in model.layers[-2:]] functors = [K

网络权重初始化方法总结(上):梯度消失、梯度爆炸与不良的初始化

杀马特。学长 韩版系。学妹 提交于 2019-12-03 22:41:27
目录 前向传播与反向传播回顾 梯度消失与梯度爆炸 激活函数的影响 权重矩阵的影响 不良初始化 参考 博客: blog.shinelee.me | 博客园 | CSDN 前向传播与反向传播回顾 神经网络的训练过程可以简化成以下步骤, 输入预处理(feature scaling等) 初始化网络weight和bias 前向传播,得到网络输出 计算损失函数,得到当前损失 反向传播,根据链式法则,逐层回传得到损失函数对当前参数的偏导,根据梯度下降算法对当前参数进行更新 重复步骤3 4 5,直到损失不再减小,即收敛 一个简单的前向传播和反向传播的示意图如下,线性组合和非线性激活交替进行,线性组合层可以为全连接层或卷积层等,图片来自 链接 , 梯度下降算法的参数更新公式为, \[ W(t+1)=W(t)-\eta \frac{d C}{d W} \] 其中 \(C=J(W)\) 为损失函数,即通过参数的偏导对参数进行更新。反向传播时,由链式法则,偏导反向回传,逐层计算损失函数对当前参数的偏导。对某个参数的偏导为一串因子的乘积,因子依次为损失函数对网络输出的偏导、激活函数的偏导、线性组合的偏导、激活函数的偏导、线性组合的偏导……如下面所示(来自 链接 ),这里,损失为二分之LMS,用 \(C\) 表示, \(z\) 为线性组合的输出(激活层的输入), \(a\) 为激活层的输出(线性组合的输入),

动手深度学习9-多层感知机pytorch

人走茶凉 提交于 2019-12-03 21:13:42
多层感知机 隐藏层 激活函数 小结 多层感知机 之前已经介绍过了线性回归和softmax回归在内的单层神经网络,然后深度学习主要学习多层模型,后续将以多层感知机(multilayer percetron,MLP),介绍多层神经网络的概念。 隐藏层 多层感知机在单层神经网络的基础上引入了一到多个隐藏层(hidden layer)。隐藏层位于输入层和输出层质检。下图展示了一个多层感知机的神经网络,它含有一个隐藏层,该层中有5个隐藏单元。 输入和输出个数为别为4和3,中间隐藏层中包含了5个隐藏单元。由于输入层不涉及计算,多层感知机的层数为2。隐藏层中的神经元和输入层各输入完全连接,输出层中的神经元和隐藏层中的各神经元也完全连接。因此多层感知机中的隐藏层和输出层都是全连接。 具体来说,给定一个小批量样本 \(X∈R^{nxd}\) ,其批量大小为n,输入个数为d。假设多层感知机只有一个隐含层,其中隐层单元个数为h。记隐藏层的输出为H,有 \(H∈R^{nxh}\) ,因为隐藏层和输出层均为全连接层,可以设隐藏层的权重参数和偏差参数为别为 \(W_{h}∈R^{dxh} 和b_{h}∈R^{1xh}\) ,输出层的权重和偏差参数分别为$ W_{o}∈R^{hxq}和b_{o}∈R^{1xq}$ 我们先来看一种含单隐藏层的多层感知机的的设计,其输出 \(O∈R^{nxq}\) 的计算为 \[

深度学习基础模型算法原理及编程实现--04.改进神经网络的方法

≡放荡痞女 提交于 2019-12-03 18:45:43
文章列表 1. 深度学习基础模型算法原理及编程实现–01.感知机 . 2. 深度学习基础模型算法原理及编程实现–02.线性单元 . 3. 深度学习基础模型算法原理及编程实现–03.全链接 . 4. 深度学习基础模型算法原理及编程实现–04.改进神经网络的方法 . 5. 深度学习基础模型算法原理及编程实现–05.卷积神经网络 . 6. 深度学习基础模型算法原理及编程实现–06.循环神经网络 . 9. 深度学习基础模型算法原理及编程实现–09.自编码网络 . 9. 深度学习基础模型算法原理及编程实现–10.优化方法:从梯度下降到NAdam . … 深度学习基础模型算法原理及编程实现–04.改进神经网络的方法 4.1 基本激活函数认知 4.1.1 sigmoid 5.1.2 tf.tanh 5.1.3 ReLU 5.1.4 Leaky ReLU 5.1.5 Softplus 5.2 增加隐藏层数 5.3 提升学习速率 5.3.1 梯度下降改为随机梯度下降 5.3.2 输出层激活函数与目标函数的选择 5.3.2.1 激活函数为sigmoid函数、损失函数为交叉项 5.3.2.2 激活函数为线性函数且损失函数为平方损失函数 5.3.2.3 损失函数为交叉项的好处 5.3.2.4 柔性最大值(softmax函数) 5.3.2.5 Softmax-loss 5.3.3

一文理清深度学习前馈神经网络

杀马特。学长 韩版系。学妹 提交于 2019-12-03 15:15:08
🚙 Index 多层感知机(MLP)介绍 深度神经网络的激活函数 深度神经网络的损失函数 多层感知机的反向传播算法 神经网络的训练技巧 深度卷积神经网络 前馈神经网络(feedforward neural network)是一种最简单的 神经网络 ,各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出,并输出给下一层.各层间没有反馈。是目前应用最广泛、发展最迅速的 人工神经网络 之一。研究从20世纪60年代开始,目前理论研究和实际应用达到了很高的水平 ——百度百科 而深度学习模型,类似的模型统称是叫 深度前馈网络(Deep Feedforward Network) ,其目标是拟合某个函数f,由于从输入到输出的过程中不存在与模型自身的反馈连接,因此被称为“前馈”。常见的深度前馈网络有:多层感知机、自编码器、限制玻尔兹曼机、卷积神经网络等等。 01 多层感知机(MLP)介绍 说起 多层感知器(Multi-Later Perceptron) ,不得不先介绍下 单层感知器(Single Layer Perceptron) ,它是最简单的神经网络,包含了输入层和输出层,没有所谓的中间层(隐含层),可看下图: 也就是说,将输入向量赋予不同的权重向量,整合后加起来,并通过激活函数输出1或-1,一般单层感知机只能解决线性可分的问题,如下图: 我选择了0个隐含层

梯度弥散与梯度爆炸

匆匆过客 提交于 2019-12-03 10:35:59
问题描述 先来看看问题描述。 当我们使用sigmoid funciton 作为激活函数时,随着神经网络hidden layer层数的增加,训练误差反而加大了,如上图所示。 下面以2层隐藏层神经网络为例,进行说明。 结点中的柱状图表示每个神经元参数的更新速率(梯度)大小,有图中可以看出,layer2整体速度都要大于layer1. 我们又取每层layer中参数向量的长度来粗略的估计该层的更新速率,得到下图。 可以看出,layer2的速率都要大于layer1. 然后我们继续加深神经网络的层数。 可以得到下面的结论: 靠近输出层的hidden layer 梯度大,参数更新快,所以很快就会收敛; 而靠近输入层的hidden layer 梯度小,参数更新慢,几乎就和初始状态一样,随机分布。 在上面的四层隐藏层网络结构中,第一层比第四层慢了接近100倍!! 这种现象就是 梯度弥散(vanishing gradient problem) 。而在另一种情况中,前面layer的梯度通过训练变大,而后面layer的梯度指数级增大,这种现象又叫做 梯度爆炸(exploding gradient problem) 。 总的来说,就是在这个深度网络中, 梯度相当不稳定(unstable)。 直观说明 那么为何会出现这种情况呢? 现在我们来直观的说明一下。 在上面的升级网络中,我们随意更新一个参数,加上一个Δw

MobileNetV3 论文理解,以及tensorflow、pytorch相关代码

[亡魂溺海] 提交于 2019-12-03 10:09:39
MobileNetV3论文理解,以及tensorflow+pytorch代码 MobileNetV3相关 论文地址 Block结构变化 算法内部微结构变化 网络整体结构 网络性能 Tensorflow代码 Pytorch代码 总结 MobileNetV3相关 大家好! MobileNet系列 一直是我很感兴趣的轻量级神经网络系列,MobileNetV2曾帮我完美解决了嵌入式部署阶段算速过慢的问题。虽然现在工作中都是主用比较大型的神经网络,但一直没有放下关注MobileNet,在MobileNetV2论文发布时隔1年4个月后,最新的MobileNetV3现世了!这里就说一下MobileNetV3相对V2的改变,简单介绍一下这些 黑科技 算法细节 。 论文地址 MobileNetv1论文地址: https://arxiv.org/abs/1704.04861 MobileNetv2论文地址: https://arxiv.org/pdf/1801.04381.pdf MobileNetv3论文地址: https://arxiv.org/pdf/1905.02244v1.pdf 没有读过v1和v2论文的同学,请戳上面的论文地址,这里只介绍v3相较于v2的变化。 相对于v2,主要有3个变化: block结构发生改变,在v2的bottleneck block里加入了 Squeeze-and

神经网络和深度学习(一)神经网络基础

夙愿已清 提交于 2019-12-03 09:20:00
1、什么是神经网络? (1)房价预测模型Ⅰ: 神经网络:size x ——> O ——> price y ReLU函数(Rectified linear unit 修正线性单元):修改线性的函数,避免出现price未负数的情况. (2)房价预测模型Ⅱ: 即神经网络为: 2、Binary classification(二分分类): 以识别照片中的猫为例 ① 判定:若是猫,则 y = 1;若不是猫,则 y = 0. ② 图片规格:64*64,数字化表示:3个 64*64矩阵,分别表示Red Green Blue的强度值. ③ 样本x的向量长度:n x = 64*64*3 = 12288. ④ 训练集:{(x (1) , y (1) ), (x (2) , y (2) ), ..., (x (m) , y (m) )}. ⑤ 训练集数量:m train ,测试集数量:m test . ⑥ 矩阵X:有m列,每一列表示一个样本x (i) . ⑦ 向量Y:长度为m. 3、Logistic regression(逻辑回归): (1)问题定义: 给出 x,求 y^ = P(y = 1 | x),即在 x 的条件下,照片是猫的概率,y^ 的取值为[0, 1]. (2)解决思路: 给出参数 w(n x 长度向量),参数 b(常数). 输出 y^ = w T x + b( b 即 θ 0 ,w 即 θ