本节课中,我们将学习如何利用Python的矢量化来实现神经网络。

根本上讲,矢量化的目的是为了提高计算的效率,加快计算速度。

矢量化

深度学习想要发挥其优势,一个最重要的前提条件是有足够大量的数据。

而面对足够大量的数据时,代码的运算速度就非常重要了。

以Logistic回归为例,前向计算公式如下:

其中,w和b都是nx维的向量。

此时,对于一个非矢量的实现方式大致如下:z = 0

for i in range(n_x):

z += w[i] * x[i]

z += b

而在Python中的矢量运算方式如下:import numpy as np

z = np.dot(w, x) + b

而实际运行过程中,矢量的运算方式运算速度要快很多。

我们使用jupyter notebook来进行一下验证:

从上图可以看出,使用矢量的计算方法,运行时间可以降低250倍左右。

目前,很多深度学习的计算都是在GPU上实现的。

对在使用Python的Numpy库时,你可以不用考虑这一点差异。

Numpy自身会根据你的机器配置,选择最合适的并行方式进行计算,充分利用机器的并行能力。

接下来,我们用实例来描述一个矩阵和向量相乘的矢量化运算。

假设我们的需要是向量A和矢量v相乘,即

此时,非矢量化的Python代码版本如下:

而此时,矢量化的版本仅需要如下即可:

下一个例子,假设有一个向量v,你希望对向量v中的每一个元素进行矢量运算,那么实现方式如下:

此时,同样可以使用矢量化的操作:import numpy as np

u = np.exp(v)

同理,此类的函数还包含如下:np.log()

np.abs()

np.maximum(v, 0)

v ** 2

1 / v

经验:在编程实现神经网络时,尽可能的避免使用for循环。

Logistic回归中的矢量化表示

接下来,我们来看如何针对Logistic回归进行矢量化的实现:

原始的实现方式如下:

其中,里面包含了两部分循环:

第一部分:训练样本的循环,for i = 1 to m。

第二部分:nx维度的循环:

首先,我们来对第二部分进行矢量化。

Step1:我们需要调整dw的初始化方式:dw = np.zeros((n_x, 1))

Step2:调整dw的计算方式:dw += x_i * dz_i

Step3:调整求每个dw的平均值方式:dw /= m

接下来,我们来对训练集部分进行矢量化。

原始针对多个训练集的方法需要依次对每一个训练样本进行循环计算:

然而,为了进行食量还,我们可以把所有训练样本(列向量)组合成一个矩阵。

其中,X的维度是nx*m。

此时,z的计算方式变为如下方法:

即可以可以用Python代码表示如下:Z = np.dot(w.T, X) + b

Ps:此时,Z是一个1*m的向量,np.dot(w.T, X)也是一个1*m的向量,而b是一个标量。

之所以能够标量和矢量相加,是利用到了numpy中的广播功能,该功能会在后续内容中详细进行描述。

当我们得到Z后,可以很方便的利用np提供的函数来计算A。

dz的计算方式如下:

而进行矢量化的表示后,dZ,A和Y的表示如下:

此时,dZ的计算方式如下:dZ = A - Y

接下来,dw和db的原始计算方式如下:

将其进行矢量化可以得到如下结果:

最终,得到的完整的Logistic矢量表示如下:

广播

广播是numpy实现的一个特殊的功能,接下来,我们将通过一些示例来了解广播的使用。

假设下表是不同食物每100g包含的碳水化合物,蛋白质和脂肪的量。

我们希望计算出每种食物中碳水化合物,蛋白质和脂肪分别占有的比例。

那么,如果不使用显示循环,我们该如何计算呢?

Step1:假设A是一个三行四列的矩阵。首先需要对矩阵A进行按列求和:

Step2:接下来,用每个元素除以该列的和即可:

此时,矩阵A的维度为3*4,而cal.reshape(1, 4)的维度为1*4。

这就是一个典型的Python的广播示例。

那么3*4的矩阵是如何与1*4的矩阵相除么?

首先,numpy会向1*4的矩阵进行按行复制得到3*4的矩阵,然后进行元素进行相除。

所有的广播实现的机制都与此类似。

一个通用的原则可以总结如下:

python实现神经网络_3. Python矢量化实现神经网络相关推荐

  1. python运算符讲解_3.Python运算符详解

    1.算数运算符 符号:+   -   *   /   %(取余.取模)   //(取整)   **(开方) 2.比较运算符 符号:>   >= 特点:比较运算的结果一定是布尔值(True/ ...

  2. python 搜寻蓝牙_3 Python Web搜寻器和搜寻器

    python 搜寻蓝牙 在理想环境中,您需要的所有数据都将以开放且有据可查的格式清晰呈现,您可以轻松下载并使用它们以实现所需的目的. 在现实世界中,数据是混乱的,很少按照您的需要打包,并且经常是过时的 ...

  3. Python中将数据矢量化运算所带来的时间加快

    ➤01 矢量化运算 在<PaddlePaddle深度学习实战>一书中,介绍了在Python中利用Numpy中的矩阵(矢量)运算所带来的速度增加. ▲ PaddlePaddle深度学习实战 ...

  4. GDAL+Python实现栅格影像处理之栅格矢量化及矢量栅格化

    GDAL+Python实现栅格影像处理之栅格矢量化及矢量栅格化 相关概念 使用方法 效果展示 相关概念 栅格矢量化:将栅格数据生成矢量数据. 矢量栅格化:将矢量数据生成栅格数据. 使用方法 栅格矢量化 ...

  5. 对比python字符串函数,学习pandas的str矢量化字符串函数

    1.概述 python字符串应该是python里面最重要的数据类型了,因此学会怎么处理各种各样的字符串,显得尤为重要. 我们不仅要学会怎么处理单个字符串,这个就需要学习"python字符串函 ...

  6. python把文字矢量化_如何将点阵汉字矢量化 | indienova

    那么是不是点阵汉字就已经退出历史舞台了呢?并没有.现在街上能常常见到的简易 LED 屏,很多都还是用的点阵汉字.很多工控或者简易屏幕上,也都还在使用点阵汉字,这是因为同矢量字体相比,点阵汉字占用的空间 ...

  7. python numpy逆_python-具有numpy的N * M * M张量的矢量化(部分)逆

    所以我有一个张量的索引为a [n,i,j]的维度为(N,M,M)的张量,我想为N中的每个n求M * M方阵部分的值. 例如,假设我有 In [1]: a = np.arange(12) a.shape ...

  8. python数据统计 矢量图_用python中的矢量化解决方案计算max draw down

    Maximum Drawdown是量化金融中常用的一种风险度量,用于评估所经历的最大负收益. 最近,我变得不耐烦的时间来计算最大下降使用我的循环方法.def max_dd_loop(returns): ...

  9. Python之数据分析(案例:净额成交量、矢量化、数据曲线平滑)

    文章目录 一.净额成交量 二.标量函数矢量化 三.数据曲线平滑 一.净额成交量 1.案例分析 符号数组a: [10 -20 30 40 -50] 用法:numpy.sign(a) 结果是[1 -1 1 ...

最新文章

  1. 满足实时人工智能的计算需求
  2. 9种不同的方法帮助你提高国内访问Github的速度!
  3. ggplot2包绘基因差异表达点图
  4. 学python用什么系统好-Python用什么系统环境好?老男孩Python
  5. 组件生命周期管理和通信方案
  6. 深度学习之循环神经网络(6)梯度弥散和梯度爆炸
  7. 升级.Net Core RC1的类库项目
  8. 【毕业答辩】学位论文答辩ppt指南!
  9. 如何证明永动机不可能制造出来
  10. PDF文件怎么才能编辑里面的内容
  11. 【单片机基础篇】51单片机流水灯
  12. linux更换浏览器,ubuntu 默认浏览器换Chrome 是正确的选择
  13. 频数直方图的步骤_绘制频数直方图步骤
  14. 修改Cisco交换机ntp服务器,Cisco交换机NTP的配置
  15. FT60F011A包含1Krom+EEPROM+Flash单片机IC方案开发
  16. U盘文件变成快捷方式的解决方案
  17. 《计算机网络(谢希仁6版)》学习笔记(word导入)[待补全]
  18. 自己的JS框架--Amy框架。
  19. 同事说聊天没有表情,我在内网搭了一个表情包网站
  20. 使用map方式获取iris请求中的json请求数据

热门文章

  1. 源码编译安装PostgresSQL(11.5)
  2. 1000行MySQL学习笔记,人手一份,建议收藏!
  3. 400+节点的Elasticsearch集群运维
  4. 带你掌握Vue过滤器filters及时间戳转换
  5. 我用MRS-ClickHouse构建的用户画像系统,让老板拍手称赞
  6. 华为云数据安全中心正式公测,8大核心数据安全能力守护你的数据
  7. 华为云专家带你解读文本情感分析任务
  8. Android手机打造你的PythonJava开发工具!
  9. AI的下一拐点,图网络何以炙手可热?
  10. c语言中因式分解的题目,因式分解相关练习题