引入了一个新概念叫阶跃函数,阶跃函数以0为界,输出从0切换为1(或者从1切换为0),它的值呈阶梯式变化,所以称为阶跃函数。

它的图形代码就是:

import numpy as np
import matplotlib.pylab as pltdef step_function(x):return np.array(x > 0, dtype=np.int)x = np.arange(-5.0, 5.0, 0.1)
y = step_function(x)
plt.plot(x, y)
plt.ylim(-0.1, 1.1)    # 指定y轴的范围
plt.show()

np.arange(-5.0, 5.0, 0.1)在-5.0到5.0的范围内,以0.1为单位,生成NumPy数组([-5.0, -4.9, , 4.9])。step_function()以该NumPy数组为参数,对数组的各个元素执行阶跃函数运算,并以数组形式返回运算结果。np.int型,Python中将布尔型转换为int型后,True会转换为1,False会转换为0。对数组x、y进行绘图

在说sigmoid函数之前,先说一下NumPy 的广播功能,如果在标量和NumPy数组之间进行运算,则标量会和NumPy数组的各个元素进行运算。像乘法里的结合率一样,大概可以这么理解,例如:

>>> t = np.array([1.0, 2.0, 3.0])
>>> 1.0 + t
array([ 2., 3., 4.])>>> 1.0 / t
array([ 1. , 0.5 , 0.33333333])

用Python写出式表示的sigmoid函数:

def sigmoid(x):return 1 / (1 + np.exp(-x))

我们把sigmoid函数画在图上:

import numpy as np
import matplotlib.pylab as pltdef sigmoid(x):return 1 / (1 + np.exp(-x))
x = np.arange(-5.0, 5.0, 0.1)
y = sigmoid(x)
plt.plot(x, y)
plt.ylim(-0.1, 1.1) # 指定y轴的范围
plt.show()

Sigmoid函数和阶跃函数的不同是:

1.“平滑性”的不同。sigmoid函数是一条平滑的曲线,输出随着输入发生连续性的变化。而阶跃函数以0为界,输出发生急剧性的变化。

2.另一个不同点是,相对于阶跃函数只能返回0或1,sigmoid函数可以返回0.731 ...、0.880 …等实数。

在我理解,说了这么多就是说明了激活函数必须使用非线性函数。在这里有点跳,作者的本意是在上面介绍了Sigmoid函数和阶跃函数的非线性函数,说明了使用线性函数的话,会导致加深神经网络的层数就没有意义了。线性函数的问题在于,不管如何加深层数,总是存在与之等效的“无隐藏层的神经网络”。为了具体地(稍微直观地)理解这一点,我们来思考下面这个简单的例子。这里我们考虑把线性函数 h(x) = cx 作为激活函数,把y(x) = h(h(h(x)))的运算对应3层神经网络A。这个运算会进行y(x) = c × c × c × x的乘法运算,但是同样的处理可以由y(x) = ax(注意,a = c 的三次方)这一次乘法运算(即没有隐藏层的神经网络)来表示。如本例所示,使用线性函数时,无法发挥多层网络带来的优势。

注:以上的学习内容均来自《深度学习入门》[斋藤康毅]著

深度学习入门(三)------- 阶跃函数和Sigmoid函数相关推荐

  1. 深度学习入门(六)——softmax函数的改良

    输出层的设计 机器学习的问题大致可以分为分类问题和回归问题.分类问题是数据属于哪一个类别的问题.比如,区分图像中的人是男性还是女性的问题就是分类问题.而回归问题是根据某个输入预测一个(连续的)数值的问 ...

  2. 深度学习数学基础(三): 激活函数、正则化函数、损失函数、评价指标

    目录 1. 激活函数activation function 1.1 Sigmoid 1.2 tanh 1.3 ReLU 1.4 Leaky ReLU 1.5 softmax 1.6 Gelu 2. 归 ...

  3. 机器学习入门(03)— 激活函数分类(阶跃函数和 sigmoid 函数的理论、实现、显示以及区别、非线性函数、ReLU 函数、tanh 函数)

    各种激活函数介绍,请参考下面链接: https://en.wikipedia.org/wiki/Activation_function 1. 阶跃函数 1.1 理论 式(3.3)表示的激活函数以阈值为 ...

  4. 深度学习入门(三)——神经元激活值的计算方法

    深度学习入门(三)--神经元激活值的计算方法 1.隐含层神经元的意义 介绍完全连接神经网络的基本结构和工作流程,可能会有人疑问了,神经元中存放的激活值是如何确定的?在解答这个问题之前,小编需要首先介绍 ...

  5. 【深度学习入门:基于Python的理论与实现】书本学习笔记 第三章 神经网络

    文章目录 1. 阶跃函数的实现 2. 函数图形 2.1 阶跃函数 2.2 sigmoid 函数 2.3 ReLU 函数 3. 多维数组的运算 3.1 矩阵乘法 3.2 神经网络的内积 4. 三层神经网 ...

  6. 斋藤康毅-深度学习入门 学习笔记三

    ch03 神经网络 1. pkl文件的创建与导入 python官方文档对pickle模块的定义:pickle The pickle module implements binary protocols ...

  7. 深度学习入门(三十二)卷积神经网络——BN批量归一化

    深度学习入门(三十二)卷积神经网络--BN批量归一化 前言 批量归一化batch normalization 课件 批量归一化 批量归一化层 批量归一化在做什么? 总结 教材 1 训练深层网络 2 批 ...

  8. 深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening

     深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening 主成分分析与白化是在做深度学习训练时最常见的两种预处理的方法,主成分分析是一种我们用的很多的降维的一种手段,通 ...

  9. 深度学习入门笔记(三):求导和计算图

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

最新文章

  1. android专题-蓝牙扫描、连接、读写
  2. 李航等提出多粒度AMBERT模型,CLUE、GLUE上优于BERT,中文提升显著
  3. Django实战之增加链接
  4. 导出对象_从代数几何到导出代数几何:形变与逼近
  5. Codis安装与部署
  6. Oracle关联更新语法(T-SQL中的update...from)
  7. redis缓存实现原理php,分析redis原理及实现
  8. 对于 APM 用户的一次真实调查分析(下)
  9. asp.net core程序在k8s中基于rabbitmq队列消息数的HPA实践!
  10. 在Web浏览器中显示Spring应用程序启动的进度
  11. 个推应用统计产品(个数)Android集成实践
  12. MySQL深度剖析之事务隔离级别和锁机制(2021)
  13. 基于JAVA+SpringMVC+Mybatis+MYSQL的流浪宠物猫狗救助系统
  14. 《学习OpenCV3》第11章 常见的图像变换
  15. 5导出word_妙招技法 | 教你如何快速导出Word文档中的图片
  16. Linux内存使用消耗高
  17. 关注Linux防火墙之介绍iptables与ufw命令
  18. qt银行排队系统服务器代码,基于qt的银行排队系统
  19. 电脑显示器黑屏故障全解析
  20. matlab学习技巧之semilogx和semilogy函数

热门文章

  1. 支付宝、微信Android APP支付接入流程
  2. docker删除容器(步骤详解)
  3. 生物计算机要学什么,化学常识:生物计算机及其主要种类
  4. 用jQuery实现轮播图效果(自动播放,能手动切换)
  5. 面试题:支付功能怎么测试?如何回答?
  6. SDK和API的区别?
  7. 互联网大数据公司排名_互联网上最好的数据科学课程,按照您的评论排名
  8. 白噪声 java_白噪声 高斯白噪声
  9. 中英文说明书丨艾美捷MAPT单克隆抗体
  10. 中英文说明书丨艾美捷TRC 5-(2-氨基乙基)-2-(4-乙氧基苯基)