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循環,





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM