簡體   English   中英

在卷積神經網絡中初始化權重的方法 - Python/TensorFlow

[英]Methods of initializing weights in Convolutional Neural Networks - Python/TensorFlow

我最初將我的權重設置如下:

def new_weights(shape):
    return tf.Variable(tf.truncated_normal(shape, stddev=0.05))

但我意識到我的權重為 -0,如下圖所示:

圖 1

然后我決定這樣定義它,對我來說權重更容易接受:

def new_weights(shape):
    return tf.Variable(tf.zeros(shape))

圖2

我想知道使用 tf.truncated_normal 的含義是什么以及 -zeros 是什么意思? 如果您在像這樣初始化它們時遇到任何問題。

在我介紹的兩者之間,初始化權重的最佳方法是什么?

tf.truncated_normal從截斷的正態分布中輸出隨機值。 因此,在 DNN 中具有良好的收斂性。 下圖是 CNN 在 MNIST 數據集上的驗證損失(左)和驗證准確度(右)。 使用的權重初始化如下,

  1. 零:當所有權重都設置為 0 時
  2. 隨機:當權重完全隨機設置時
  3. -1 到 +1 之間的隨機:-1 到 +1 范圍內的隨機權重
  4. Xavier-Glorot 初始化

在此處輸入圖片說明

如您所見,-1 到 +1 范圍內的隨機權重顯示出良好的結果。 因此,它是 DNN 中最常用的權重初始化方法。

參考資料, https://medium.com/@amarbudhiraja/towards-weight-initialization-in-deep-neural-networks-908d3d9f1e02

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM