国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

純用NumPy實現神經網絡的示例代碼

2020-02-15 23:21:23
字體:
來源:轉載
供稿:網友

摘要: 純NumPy代碼從頭實現簡單的神經網絡。

Keras、TensorFlow以及PyTorch都是高級別的深度學習框架,可用于快速構建復雜模型。前不久,我曾寫過一篇文章,對神經網絡是如何工作的進行了簡單的講解。該文章側重于對神經網絡中運用到的數學理論知識進行詳解。本文將利用NumPy實現簡單的神經網絡,在實戰中對其進行深層次剖析。最后,我們會利用分類問題對模型進行測試,并與Keras所構建的神經網絡模型進行性能的比較。

Note:源碼可在我的GitHub中查看。

在正式開始之前,需要先對所做實驗進行構思。我們想要編寫一個程序,使其能夠創建一個具有指定架構(層的數量、大小以及激活函數)的神經網絡,如圖一所示。總之,我們需要預先對網絡進行訓練,然后利用它進行預測。

上圖展示了神經網絡在被訓練時的工作流程。從中我們可以清楚的需要更新的參數數量以及單次迭代的不同狀態。構建并管理正確的數據架構是其中最困難的一環。由于時間限制,圖中所示的參數不會一一詳解,有興趣可點擊此處進行了解。

神經網絡層的初始化

首先,對每一層的權重矩陣W及偏置向量b進行初始化。在上圖中,上標[l]表示目前是第幾層(從1開始),n的值表示一層中的神經元數量。描述神經網絡架構的信息類似于Snippet 1中所列內容。每一項都描述了單層神經網絡的基本參數:input_dim,即輸入層神經元維度;output_dim,即輸出層神經元維度;activation,即使用的激活函數。

nn_architecture = [  {"input_dim": 2, "output_dim": 4, "activation": "relu"},  {"input_dim": 4, "output_dim": 6, "activation": "relu"},  {"input_dim": 6, "output_dim": 6, "activation": "relu"},  {"input_dim": 6, "output_dim": 4, "activation": "relu"},  {"input_dim": 4, "output_dim": 1, "activation": "sigmoid"},]

Snippet 1.

從Snippet 1可看出,每一層輸出神經元的維度等于下一層的輸入維度。對權重矩陣W及偏置向量b進行初始化的代碼如下:

def init_layers(nn_architecture, seed = 99):  np.random.seed(seed)  number_of_layers = len(nn_architecture)  params_values = {}  for idx, layer in enumerate(nn_architecture):    layer_idx = idx + 1    layer_input_size = layer["input_dim"]    layer_output_size = layer["output_dim"]    params_values['W' + str(layer_idx)] = np.random.randn(      layer_output_size, layer_input_size) * 0.1    params_values['b' + str(layer_idx)] = np.random.randn(      layer_output_size, 1) * 0.1  return params_values            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金川县| 乌审旗| 河源市| 准格尔旗| 聂拉木县| 永城市| 东莞市| 武乡县| 南木林县| 龙川县| 南靖县| 绥宁县| 红桥区| 肥乡县| 南康市| 会同县| 天水市| 大埔区| 房山区| 武隆县| 志丹县| 云南省| 维西| 罗田县| 河北省| 垣曲县| 广饶县| 南郑县| 康马县| 长白| 贵港市| 白朗县| 同德县| 房山区| 江源县| 偏关县| 闽清县| 缙云县| 辽宁省| 临沭县| 大英县|