1 2 3 使用向量化進行加速計算

2021-08-16 17:06:34 字數 1215 閱讀 8179

向量化通常是消除你**中顯式for迴圈語句的藝術。那麼具體什麼是向量化呢?

我們以`z=

wtx+

b 為例,在這個例子中,如果有很多的資料,那麼w和x以及b都是n維列向量。

如所示,左側是用非向量化的陣列來實現的,它的計算效率很慢。而右側是用了numpy,直接是向量化的去實現,計算效率就快很多。實際上numpy比單純的用for快很大一部分原因就是numpy內建了並行處理模組,會自動進行並行處理運算。

關於程式設計我們的經驗是,當你編寫新的網路時,或者你做的只是回歸的話,那麼一定要盡量避免使用for迴圈。能不用就不用。如果你能用乙個內建函式,或者找出其他的什麼辦法來計算迴圈,通會比使用for更快。

我們來看看如何在梯度下降法裡面去掉for迴圈。

如圖所示,這是一般的需要用兩個顯式的for實現的例子。

我們之前討論過向量化如何顯著地加速**執行,這裡我們將會談及向量化如何實現logistic回歸。這樣,我們就可以加速大量的資料。

我們先來介紹正向傳播的部分:

如圖所示,對於每乙個變數,我們可以寫成向量的形式,這樣,用乙個語句就可以進行計算了。

下面我們來介紹一下反向傳播的過程:

如圖所示,是整個反向傳播過程的實現。左側是一步步的流程,右側是整個用向量化表示後的方法和**。

如圖所示,這是整個計算過程示意圖,左側是傳統的for計算方法,而右側我們使用向量化表示之後,便可以避免使用for語句。這樣就既實現了正向傳播也實現了反向傳播。

對於為什麼是a-y是因為之前我們在反向傳播用鏈式法則求導數的時候已經算完化簡過了,最後的結果就是a-y。

值得注意的是,對於一次的梯度向量,我們可以通過向量化處理,避免使用for語句,但是對於多次梯度下降,不可避免的會用到for進行迭代。

使用pandas對向量化資料進行替換處理

使用pandas 處理向量化的資料,進行資料的替換時不僅僅能夠進行字串的替換也能夠處理數字。做簡單的示例如下 in 4 data series range 5 in 5 data out 5 0 0 1 1 2 2 3 3 4 4 dtype int64 in 6 data.replace 3,33...

Numpy基礎 陣列與向量化計算

一 多維陣列 1 生成ndarray array函式 1 np.array import numpy as np data1 6,7.5,8,0,1 建立簡單的列表 print data1 arr1 np.array data1 將列表轉化為陣列 print arr1 2 ndarry的資料型別 1...

R語言 向量化計算(apply族函式)

獲取內建資料 data print data mpg cyl disp hp drat mazda rx4 21.0 6 160 110 3.90 mazda rx4 wag 21.0 6 160 110 3.90 datsun 710 22.8 4 108 93 3.85 hornet 4 dri...