神經網路與深度學習 三 CPP神經網路庫

2021-08-01 05:20:51 字數 1899 閱讀 5807

簡單的介紹:

1.總體上的架構是,將全連線層,輸出層進行封裝,同時引入了connector的資料結構,用於連線兩層,使用了模板的專用化技術,可以連線特定型別的兩層,其中,在bp神經網路中,後一層要向connector提交閾值的修改權(指標),在反向傳播時還要提交反響傳播因子,前一層通過connector獲取傳播因子以及修改下一層的閾值

環境依賴:eigen3

下面細說一下

(1)神經元

所有神經元繼承於neutron

neutron的直接繼承者有三個,分別是unupdatablenwneutron(無權不可更新神經元)unupdatablewneutron(有權不可更新神經元)updatablewneutron(有權可更新神經元)

fullconectedneutron(全連線層神經元)

繼承自updatablewneutron(全連線層神經元)

getpthresold() 返回自身閾值指標

getbackforwardfactor() 返回反向傳播因子

update() 根據連線的connector的資料更新自身權值,修改下一層閾值

outputneutron(輸出層神經元)

繼承自unupdatablenwneutron(無權不可更新神經元)

initexpect(需要設定期望輸出)

(2)層

所有layer繼承自

template

class layer

{};----

template

class fullconectedlayher : public layer> 全連線層

繼承自 神經元型別是全連線神經元的 layer

每個connector必須呼叫_init(...)

使用者必須呼叫init(...)

通過陣列管理神經元fullconectedneutron*neutrons;

----

template

class outputlayer : public layer>  輸出層

繼承自 神經元型別是輸出層神經元 的layer

initexpects(...) 初始化預期輸出 提供 eigen3的介面

(3)function

提供函式的計算以及導數,目前支援 liner,sigmog, prelu

(4)connector

所有connector繼承自

template

class connector

{};通過模板的專用化指定connector所支援的層的連線,建立不支援的連線,將無法使用

template<>

class connector, outputlayer> (連線全連線層以及輸出層sigmod)

init(...) 使用者必須呼叫init()

forward() 前向

backforward() 反向傳播

template<>

class connector, outputlayer>(連線全連線層以及輸出層prelu)

template<>

class connector, fullconectedlayher>(連線全連線層以及全鏈結層sigmod)

template<>

class connector, fullconectedlayher>(連線全連線層以及全鏈結層prelu)

template<>

class connector, fullconectedlayher>(用於充當輸入層的全連線層 與 全連線層連線)

template<>

class connector, fullconectedlayher>

(4)net

詳見demo,形象來講就是通過connector控制layer的forward和backforward

機器學習,深度學習,神經網路,深度神經網路

先來說一下這幾者之間的關係 人工智慧包含機器學習,機器學習包含深度學習 是其中比較重要的分支 深度學習源自於人工神經網路的研究,但是並不完全等於傳統神經網路。所以深度學習可以說是在傳統神經網路基礎上的公升級。神經網路一般有輸入層 隱藏層 輸出層,一般來說隱藏層大於2的神經網路就叫做深度神經網路,深度...

神經網路和深度學習(三)深層神經網路

1 深層神經網路中的前向傳播 1 單資料情況 z 1 w 1 x b 1 a 1 g 1 z 1 z 2 w 2 a 1 b 2 a 2 g 2 z 2 z l w l a l 1 b l a l g l z l y 2 向量化情況 z 1 w 1 x b 1 a 1 g 1 z 1 z 2 w 2...

神經網路和深度學習 淺層神經網路

乙個淺層神經網路示意圖 如圖所示,表示乙個單隱層的網路結構。這裡主要需要注意的是,層與層之間引數矩陣的規格大小 隱藏層和輸出層之間 由上面我們可以總結出,在神經網路中,我們以相鄰兩層為觀測物件,前面一層作為輸入,後面一層作為輸出,兩層之間的w引數矩陣大小為 n out,nin b引數矩陣大小為 n ...