第一次發文,很多編輯方法還沒弄明白,請諒解。最近剛開始學習機器學習,神經網路,發現文章和書本裡的東西離實際的工程實現還是有些距離的,雖然我現在還是ssd一員,但我希望我的一些經驗可以為ssd造福(雖然現在水平還遠遠不夠)。
我理解的bp網路就是乙個傳輸反饋的過程,乙個擬合的過程。訊號輸入,經過(有權重)神經到達神經元,神經元對訊號有一定的消耗(閾值),訊號經過一定的消耗後,激勵(激勵函式)神經元,最終輸出。主要引數:
(1) 輸入:x
(2) 輸出:y
(3) 隱含層權重:w1
(4) 隱含層閾值:γh
(5) 隱含層第h個神經元輸入:αh= ∑w1*x
(6) 隱含層第h個神經元輸出:bh = sigmoid(∑w1*x —γh)
(7) 輸出層權重:w2
(8) 輸出層閾值:θj
(9) 輸出層第j個神經元輸入:∑w2* bh
(10) 輸出層第j個神經元輸出:y=sigmoid(∑w2* bh—θj)
疑問:關於激勵函式,據說relu比sigmoid效果好,但是就目前跑程式的情況還沒有感受到,應用relu函式的話,max(x,0),如果x是較大的數時,是否需要進行歸一化或其他處理;
關於資料:實現調製識別,目前在少量資料時實現了識別,正在處理試驗資料。以後的訓練過程中,如果是**資料,是不是要把所有能涉及到的snr都遍歷到呢?
隱含層神經元個數:sqrt(輸入神經元個數+輸出神經元個數)+a,a~(1,10),文獻和是這麼寫的,但是大佬們說憑經驗,現在還在持續測試中。
學習率:有的書預設為0.01,有的書給出了範圍0.1—0.8,0.01~0.001,據老師說是憑經驗。
推導過程根據西瓜書內容。程式參考了下文
BP神經網路的學習
神經網路模型由輸入層 隱藏層和輸出層組成。每一層都能夠看作是上一層 如果有 的輸出層和下一層 如果有 的輸入層。先來介紹一下向前傳遞演算法。如圖1所示即為簡單的三層神經網路模型向前傳遞演算法的計算過程。我們可以a l 表示第l層單元的資料,與邏輯回歸類似,a l g z l 這樣可以很容易看出哪乙個...
bp神經網路學習
import numpy as np 使用邏輯回歸進行分類 defnonlin x,deriv false if deriv true return x 1 x return 1 1 np.exp x 待分類的資料 x np.array 0,0,1 0,1,1 1,0,1 1,1,1 print x...
BP網路的設計
翻了下以前的blog,08年12月寫過乙個感知器的程式。一下子已經2011年6月了。期間看過一些bp,cnn,svm的資料,大多是生吞活剝,不甚了了。雖然,現在的熱門似乎是貝葉斯,概率,svm。我始終對bp更感興趣。可能是bp足夠簡單吧。真的動手code,還有很長的一段路,走到 算 了。2011 6...