12.20 向量化,簡單logistic梯度下降

import time
a = np.random.rand(100000)
b = np.random.rand(100000)
#記錄時間
tic = time.time()
# 進行矩陣運算,不使用for loop
c = np.dot(a,b)
#再次記錄時間
toc = time.time()
print("need time:" + str(1000*(toc-tic)) +"ms")

shift + enter 運行
numpy的函數:
np.log np.abs np.maximum 并行化計算
這個網站列舉了函數:https://www.cnblogs.com/TensorSense/p/6795995.html

我們來寫一個簡單的梯度下降logistic回歸

#簡單一點,我們設置一個只有兩個特征x1,x2,并且只有兩組的數據。
x = np.random.rand(2,2)
y = [1,0]
#初始化參數w和b
w = np.zeros(2)
b = 0
#計算linear總和
for i in range(10):
    z = np.dot(w.T,x)+b
#sigmoid函數,a就是預測值
    a = 1/(1+np.exp(-z))
    print(a)#我們看一看它是如何變化的
#計算導數
    dz = a-y
    dw = np.dot(x,dz.T)/2
    db = np.sum(dz)/2
#調整參數w,b,這里的學習率是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]

可以感覺到變化趨勢。
這里的導數都是loss function對相應參數求導計算得到的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 從今天開始每天我都會在這里進行復盤。 這一階段為熟悉環境的日子 做事方法論 (1)每做一件事情的時候首先問背景-問...
    ViolaGuo閱讀 184評論 0 0
  • 太陽照在荷花盛開的水塘,紅花被綠葉陪襯的更紅。荷葉像一個個盤子,露珠像放在盤子里的珠子。微風吹來,荷葉搖動,盤子里...
    王鑫堯閱讀 944評論 0 0
  • 漫天皚皚,無邊無際的鵝毛大雪中。一個神秘的組織在怒號的寒風中傾巢出動。他們遍布在大街小巷胡同弄堂。該組織不僅窮盡手...
    解_放閱讀 349評論 1 4
  • 推杯換盞莫問酒 心上幾個秋 愁緒加身 一盞解脫 夫復何求 不住于心自有悟 何處又生愁 哀鴻聲斷 綺夢擱淺 獨自倚欄頭
    八巧閱讀 193評論 0 0
  • 人間四月芳菲盡,山里油菜香滿天; 抓緊時間來看看,要不得等下一年
    木子春閱讀 308評論 0 0