機器學習 向量化

2021-08-29 22:45:55 字數 1488 閱讀 3845

向量化 - 傳統累加運算 - **實現:

import time

import numpy as np

# 定義兩組向量

vector1 = np.random.rand(

100000

)vector2 = np.random.rand(

100000

)# 使用向量化

start_time = time.time(

)# 開始時間

res = np.dot(vector1, vector2)

# 向量直接相乘得到最終結果

end_time = time.time(

)# 結束時間

print

("vectorized: "

+str

((end_time - start_time)

*1000)+

"ms"

+" res ="

+str

(res)

)# 使用for迴圈

res =

0start_time = time.time(

)# 開始時間

for i in

range

(100000):

# 傳統的累加運算,需要累加100000次

res += vector1[i]

* vector2[i]

end_time = time.time(

)# 結束時間

print

("for loop: "

+str

((end_time - start_time)

*1000)+

"ms"

+" res ="

+str

(res)

)

結果對比:
vectorized :

1.0001659393310547ms res =

24969.775960643143

for loop:

79.94818687438965ms res =

24969.775960642968

​ 從執行結果來看向量化的運算速度要比非向量化的運算快了近80倍,而這個對比結果還會隨著運算集的數目增加而增加。

為什麼:

​ cpu 與 gpu 都能夠使用 simd 指令進行並行化操作,即以同步方式,在同一時間內執行同一條指令。一般來講可擴充套件的深度學習都在 gpu 上做,但其實 cpu 也不是太差,只是沒有 gpu 擅長。

​ 而 python 的 numpy 的一些內建函式能夠充分利用並行化來加速運算,比如 np.dot,因此,不到逼不得已,還是不要使用 for 迴圈吧

ps:​ gpu - 圖形處理器也,叫做影象處理單元,顯示卡的處理器。與 cpu 類似,只不過 gpu 是專為執行複雜的數學和幾何計算而設計的,這些計算是圖形渲染所必需的。

​ simd - 單指令多資料流,以同步方式,在同一時間內執行同一條指令。

機器學習 numpy向量化程式設計

numpy 提供了專門的矩陣資料結構和線性代數庫,完全實現了向量化程式設計 import numpy as np from numpy import mylist 1,2,3,4,5 a 10 mymatrix np.mat mylist print a mymatrix 輸出結果為 10 20 3...

文字向量化

table of contents概述 word2vec nnlm c wcbow and skip gram doc2vec str2vec 文字表示是自然語言處理中的基礎工作,文字表示的好壞直接影響到整個自然語言處理系統的效能。文字向量化就是將文字表示成一系列能夠表達文字語義的向量,是文字表示的...

文字向量化

文字向量化,就是把文字轉化為向量形式。這裡用兩種方式實現本文向量,一種是tf方式,一種是tf idf方式,且這裡向量的長度就是字典的長度。計算兩個向量余弦相似度import math defcount cos similarity vec 1,vec 2 if len vec 1 len vec 2...