zoukankan      html  css  js  c++  java
  • 2.11 向量化

    1. http://mooc.study.163.com/learn/deeplearning_ai-2001281002?tid=2001392029#/learn/content?type=detail&id=2001701013&cid=2001694016
    2. 向量化是消除代码中显示for循环语句的艺术
    3. 在深度学习安全领域,深度学习、练习中,你经常发现在训练大数据集的时候,深度学习算法才会表现的更加优越,所以代码运行的非常快非常重要,否则,如果它运行在一个大的数据集上面,代码可能会话很长的时间来运行,需要等待非常长的时间才能得到结果,
      1. 所以在深度学习领域,可以去完成一个向量化以及变成一个关键的技巧



    1. 什么是向量化?
      1.  在logistic回归中,我们需要去计算,其中w是列向量,x也是列向量,如果有很多的特征,他们就是非常大的向量,所以w和x都是R内的nx维度的向量,
      2. 所以去计算w'x,
        1. 如果有一个非向量化的实现,
          1.  
          2. 这个计算结果将会非常的慢
        2. 作为对比,如果有一个向量化的实现,将会非常直接的计算w^TX
          1. 在python或者numpy中,需要使用命令z=np.dot(w,x),这是在计算w^T*X,后面直接加上b,我们将会发现这个计算将会非常的快,
          2.  
      3. 使用一个小的例子进行说明
        1.    向量化实现的矩阵计算
        2. for循环实现的矩阵计算
        3. 经过对比之后将会发现,向量化和非向量化之间会有非常大的区别(能接近300倍)
    2. 扩展深度学习实现是在GPU上做的,GPU也叫做图像处理单元,
      1.  CPU和GPU都有并行化的指令,有时候会叫做SIMD指令,意思就是单指令流多数据,
      2. 这句话的意思是如果你使用np.function(),它能让你去掉显式for循环的函数,这样numpy和python就能够充分利用并行化,去更快的计算
      3. 这一点对 CPU和GPU上面都是有效成立的,
      4. GPU更擅长SIMD计算,CPU事实上也不是很差,可能并没有GPU擅长,
    3. 我们知道了向量化能够加快代码的执行, 经验法则是,只要有其他可能,就不要使用显式for循环,




  • 相关阅读:
    MFC工作者线程
    【转】水煮TCPMP
    TCPMP的ARM编译器问题
    奇怪的链接警告-ole32.lib
    Stack overflow错误的一个原因
    旋转wince的桌面的函数
    ASNI to Unicode 转换与系统语言的问题
    WinCE 驱动开发问题精华集锦
    【转】OAL之系统时钟
    【转】蓝牙技术及其系统原理
  • 原文地址:https://www.cnblogs.com/yangzsnews/p/7496980.html
Copyright © 2011-2022 走看看