import time
a = np.random.rand(100000)
b = np.random.rand(100000)
#記錄時(shí)間
tic = time.time()
# 進(jìn)行矩陣運(yùn)算,不使用for loop
c = np.dot(a,b)
#再次記錄時(shí)間
toc = time.time()
print("need time:" + str(1000*(toc-tic)) +"ms")
shift + enter 運(yùn)行
numpy的函數(shù):
np.log np.abs np.maximum 并行化計(jì)算
這個(gè)網(wǎng)站列舉了函數(shù):https://www.cnblogs.com/TensorSense/p/6795995.html
我們來寫一個(gè)簡(jiǎn)單的梯度下降logistic回歸
#簡(jiǎn)單一點(diǎn),我們?cè)O(shè)置一個(gè)只有兩個(gè)特征x1,x2尸饺,并且只有兩組的數(shù)據(jù)纯露。
x = np.random.rand(2,2)
y = [1,0]
#初始化參數(shù)w和b
w = np.zeros(2)
b = 0
#計(jì)算linear總和
for i in range(10):
z = np.dot(w.T,x)+b
#sigmoid函數(shù),a就是預(yù)測(cè)值
a = 1/(1+np.exp(-z))
print(a)#我們看一看它是如何變化的
#計(jì)算導(dǎo)數(shù)
dz = a-y
dw = np.dot(x,dz.T)/2
db = np.sum(dz)/2
#調(diào)整參數(shù)w覆旭,b,這里的學(xué)習(xí)率是0.2
w = w-0.2*dw
b = b-0.2*db
輸出如下:
[0.5 0.5]
[0.50805306 0.50055199]
[0.51560339 0.50073525]
[0.522694 0.50058677]
[0.52936473 0.50014016]
[0.53565232 0.49942591]
[0.54159047 0.49847166]
[0.54721005 0.49730245]
[0.5525392 0.49594098]
[0.55760359 0.49440778]
可以感覺到變化趨勢(shì)。
這里的導(dǎo)數(shù)都是loss function對(duì)相應(yīng)參數(shù)求導(dǎo)計(jì)算得到的岖妄。