計算機視覺 mini深度學習框架實現

2021-09-07 20:30:20 字數 1188 閱讀 5851

手動實現mini深度學習框架,主要精力不放在運算優化上,僅體會原理。

位址見:minideepframe

『tensorflow』卷積層、池化層詳解

『科學計算』全連線層、均方誤差、啟用函式實現

layer.py層 class,已實現:全連線層,卷積層,平均池化層

loss.py損失函式 class,已實現:均方誤差損失函式

activate.py啟用函式 class,已實現:sigmoid、tanh、relu

test.py訓練測試**

主流框架對於卷積相關層的實現都是基於矩陣乘法運算,而非這裡的多層for迴圈。由於計算機計算矩陣乘法速度非常快,所以這是乙個雖然提高記憶體消耗但是計算速度顯著上公升的方法,把feature map中的感受野(包含重疊的部分,所以會加大記憶體消耗)和卷積核全部拉伸成為向量,組成兩個矩陣相乘,再想辦法恢復為輸出的feature map。

我們此時不對層函式進行封裝,僅僅實現了最簡單的前向傳播、反向傳播、引數獲取幾個功能,利用這些功能,我們已經可以實現乙個最簡單的神經網路,

宣告並初始化各層class的例項,這會使得各個例項初始化可學習引數

(【注】一般的框架會在執行時,即第一次前向傳播時才初始化引數,本demo由於是動態的,所以沒必要這樣寫)

進入迴圈體:

獲取資料,向前傳播,計算損失函式&損失函式的梯度

向後傳播,獲取各個引數的梯度

對引數迴圈,利用引數梯度更新引數

實際執行test.py,會輸出loss函式結果,並繪製成圖,左圖展示了整個loss函式收斂過程,

實際訓練並檢視中間輸出可以看見,最開始幾次訓練的損失函式下降的極快,相應的梯度值如果新增了中間的輸出也會極大(10^3量級,對應的引數初始化為-1~1之間),於是下圖截掉了前四次迭代輸出的loss,能夠更好的展示後面的收斂過程:

計算機視覺 深度學習基礎

與神經網路的區別 傳統一般三層以內,深度可達上千層 傳統通常是全連線,深度形式多樣 共享權值,跨層的反饋等 目標函式 均方誤差 交叉熵 交叉熵能在深度學習模型下快速提高精度 為了避免交叉熵出現0,使用softmax層來突出最大值並轉換成概率 激勵函式 sigmoid relu 當神經元一層層疊加之後...

計算機視覺與深度學習公司

深度學習是大資料下最熱門的趨勢之一。上乙個十年是網際網路的時代,下乙個十年將是人工智慧的時代。國內已經產生大量的人工智慧公司,分布在不同的領域。2016年是人工智慧的元年,2017年將迎來 人工智慧 的春天。未來幾年也是人工智慧在金融 醫療 教育等大資料行業以及感知互動領域全面滲透的時期,我們正迎來...

深度學習用於計算機視覺

密集連線層 精度97.8 卷積神經網路 99.3 兩者的區別在於 dense層從特徵空間學到的是全域性模式,而卷積層學到時是區域性模式 1 卷積神經網路學到的模式具有平移不變性 視覺世界根本上來說就具有平移不變性 即在影象右下角學到某個模式後可以在任何地方識別這個模式。對於密集連線網路來說如果出現在...