- 企業級AI技術內幕:深度學習框架開發+機器學習案例實戰+Alluxio解密
- 王家林 段智華編著
- 409字
- 2021-03-26 23:53:49
2.4 如何初始化神經網絡的權重
震撼人心的時刻到了,接下來講解本節中實現多層次神經網絡的最大難點:創建權重的值。
chapter2_Create_AI_Framework版本的NetworkConnection.py(v1)權重源代碼如下:

第44~45行代碼:設置區域最小值、區域最大值。
range_min=0
range_max=1
第47行代碼:設置ε的值,ε根據特征數決定,這里只有2個特征x1、x2,因此特征數為2,經過計算得到ε的值等于1.014 611 872 354 576 5。

第49行代碼:使用random方法獲取一個取值范圍在[0,1]的隨機數。
0≤random.random()<1
因為rand = range_min + (range_max – range_min) * random.random()
所以
0≤rand<1
-1≤2*rand-1<1
第50行代碼:因為rand = rand * (2 * init_epsilon) – init_epsilon=(2 * rand – 1) init_epsilon
所以隨機數rand的取值范圍為
-init_epsilon≤rand<init_epsilon
即
-ε≤and<ε
第52行代碼:通過weight.set_value(rand)代碼將隨機數rand賦值給權重值。權重值初始化的隨機取值范圍為[-ε,ε),即[-1.0146118723545765,1.0146118723545765)。
盤古人工智能框架使用rand設置隨機數,聽上去是隨機,其實并不隨機,因為這將影響訓練多少次及每次訓練的難度。我們設置最小值是-ε,最大值是ε,權重值取值范圍為[-ε,ε),對其進行處理使其更符合實際的情況,盡量可能使其隨機。這也是TensorFlow、PyTorch內部實現的核心。