初識神經網路----一

wjaning發表於2021-09-09

一、幾個np的常用函式

    ①np.sum:相比於簡單的相加,sum可以實現矩陣相加。應用於兩個list需要相加,可以用for迴圈逐個相加,亦可以sum

    ②np.dot/np.multiply:前者是真正意義上的矩陣乘法,後面的只是相應的位置相乘,從而得到一個結果

     ③np.float_,將正數轉換成float,很多結果需要小數形式表示

二、交叉熵

首先看一個圖,這個圖透過對四個點進行計算,得到其判斷的結果及相應的機率

圖片描述

有兩個判定結果,那麼我們怎麼判斷哪個2結果更好呢?

我們引入交叉熵的概念,交叉熵越小,表示結果越好

圖片描述

如圖所示,我們透過分類得到三個顏色對應有禮物的機率分別為0.8,0.7,0.1

那麼現實中哪種情況更有可能呢?

最右面一列,利用公式計算

為什麼用 ln() 函式 :約定俗稱 + 計算出的數值合理,得到一個最小的,即可以判斷我們最可能的情況

圖片描述

那麼這是有或者沒有,兩種情況,那麼對於三種情況呢?例如我們在影像識別,可能是鴨子,企鵝,大象

我們引入一個單熱點編碼,得到一個類似的二維矩陣,可以想象上面的是這個方程的 m = 2時候的形式

圖片描述

三、誤差函式

圖片描述

我們先來看一段程式碼


  1. def sigmoid(x):  

  2.     return 1 / (1 + np.exp(-x))  

  3.   

  4. def output_formula(features, weights, bias):  

  5.     return sigmoid(np.dot(features, weights) + bias)  

  6.   

  7. def error_formula(y, output):  

  8.     return - y*np.log(output) - (1 - y) * np.log(1-output)  

  9.   

  10. def update_weights(x, y, weights, bias, learnrate):  

  11.     output = output_formula(x, weights, bias)  

  12.     d_error = -(y - output)  

  13.     weights -= learnrate * d_error * x #//////////////  

  14.     bias -= learnrate * d_error   #############  

  15.     return weights, bias  

做標註的兩行進行了權值更新,即x - 學習率*x*(y-output)  //當然後面的 y-output不一定是這樣,對於不同的損失函式也不同


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2983/viewspace-2801121/,如需轉載,請註明出處,否則將追究法律責任。

相關文章