当前位置: 首页 > article >正文

【深度学习】向量化

1. 什么是向量化

        向量化通常是消除代码中显示for循环语句的技巧,在深度学习实际应用中,可能会遇到大量的训练数据,因为深度学习算法往往在这种情况下表现更好,所以代码的运行速度非常重要,否则如果它运行在一个大的数据集上面,代码可能花费很长时间去运行。

        什么是向量化?在logistic回归中,需要计算z=w^{T}x+b,w、x均为列向量。如果为非向量化实现

z=0
for i in range(n_x):
    z+=w[i]*x[i]
    z+=b

        如果为向量化实现,会直接计算w^{T}x,后面直接加上b:

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

         经过时间计算对比发现,非向量化的版本花费了300倍向量版本的时间:

         可扩展深度学习实现实在GPU上做的,GPU也叫做图像处理单元。而GPU和CPU都有并行化的指令,有时候叫做SIMD指令,意思是单指令流多数据流,意思是如果使用了这样的内置函数np.function或者其他能去掉for循环的函数,这样python的numpy能充分利用并行化更快地计算。GPU相比较于CPU更擅长SIMD计算。

2. 向量化的更多例子

例1:

当编写神经网络时,尽可能的避免for循环。若我们想要计算u=Av,即u_{i}=\sum_{i} \sum_{j}A_{ij}v_{j}

# 非向量化
for i in range (5)
    for j in range (5)
        u[i]+=A[i][j]*v[j]

# 向量化
u=np.dot(A,v)

例2:

假设已经有一个向量vv=[v_{1},v_{2},...,v_{n}]^{T},求u=[e^{v_{1}} , e^{v_{2}}, ..., e^{v_{n}}]^{T},非向量化计算方法:

u=np.zeros((n,1))
for i in range (n):
    u[i]=math.exp(v[i])

向量化计算方法:

import numpy as np
u=np.exp(v)

np.log(v)
np.abs(v)
np.maximux(v,0)

例3:

m个样本的梯度下降算法

 3. 向量化 logistic 回归(Vectorizing Logistic Regression)

        假设有m个样本,为了实现前向传播,需要计算出m个训练样本的预测结果。在下面的例子中,当加上一个常数b的时候,会将其自动拓展成一个1xm的向量,在python中也称为 “Broadcasting”。

 X=[x^{(1)},x^{(2)},...,x^{m}]

Z=[z^{(1)},z^{(2)},...,z^{m}]=w^{T}X+[b,b,b,...,b]_{1\cdot m}

A=[a^{(1)},...,a^{(m)}]=\sigma(z)

Z=np.dot(w.T,X)+b

 4. 向量化 logistic 回归的梯度输出

Z=np.dot(w.T,x)+b
A=σ(Z)
dZ=A-Y
dw=np.dot(X,dZ.T)/m
db=np.sum(dZ)/m
w:=w-a*dw
b:=w-a*dw

http://www.kler.cn/news/290830.html

相关文章:

  • 第 22 章 JavaScript DOM 元素尺寸和位置
  • Hadoop vs Spark
  • fpga图像处理实战-均值滤波
  • 从0开始学杂项 第八期:流量分析(2) 数据提取
  • Spring之整合Mybatis底层源码解析
  • 信息安全发展阶段与形式
  • 搜维尔科技:研究和使用Geomagic Touch X触觉反馈设备进行医疗模拟
  • 大数据Flink(一百一十二):Flink SQL作业快速入门
  • 【深度学习详解】Task3 实践方法论-分类任务实践 Datawhale X 李宏毅苹果书 AI夏令营
  • 第九届“创客中国”生成式人工智能中小企业创新创业大赛招商推介圆满落幕
  • Maven与Gradle差异
  • 突破教材,简单聊聊《文件系统》
  • 开源 AI 智能名片 O2O 商城小程序:引入淘汰机制,激发社交电商新活力
  • 电子设计-基础3-电感与二极管
  • 深入探讨MySQL的MVCC机制
  • QT5记录 QHBoxLayout ScrollArea导致QLabel重新计算位置导致内容显示不全
  • Hadoop 下载
  • ArcGIS展线/投线教程
  • 金仓 KES Plus 不充会员也好用
  • 探索C++编程技巧:计算两个字符串的最长公共子串
  • 计算机工具软件安装攻略:Visual Studio Code下载、安装和使用
  • yolo 3d车辆目标检测(教程+代码)
  • Elasticsearch 中的相关性和得分
  • 工厂模式和策略模式的区别
  • nanogpt怎么进行模型切片,以实现推理过程算力共享,切多头
  • Apache Ignite 在处理大规模数据时有哪些优势和局限性?
  • STM32(F103ZET6)第十九课:FreeRtos的移植和使用
  • 探索Ansible自动化运维:提高效率的关键工具
  • 13.4告警抑制实例
  • 前端相关笔记汇总