2016-11-13 53 views
1

我想確保我使用的是正確的術語。下面的圖顯示了MNIST例如這個神經網絡中有多少層?

X is 784 row vector 
W is 784X10 matrix 
b is a 10 row vector 
The out of the linear box is fead into softmax 
The output of softmax is fed into the distance function cross-entropy 

enter image description here

多少層都在這個NN?那個例子中的inputhidden層是什麼?

同樣,有多少層在this answer如果我的理解是正確的,那麼3層?

編輯

@lejlot是否低於表示3層狀NN與1隱藏層?

enter image description here

+0

你在混淆符號。輸入層是放置輸入數據的向量x。然後操作 - > * w - > + b - > f() - >是第一層和第二層之間的並存。第二層是存儲結果z = f(x * w1 + b1)的向量,則softmax(z * w2 + b2)是第二層和第三層之間的並集。第三層是存儲最終結果y = softmax(z * w2 + b2)的向量y。交叉熵不是一個層次是培養你的神經網絡的成本函數。 – Rob

回答

2

看看這張照片:

http://cs231n.github.io/assets/nn1/neural_net.jpeg

在你的第一張圖片,你只有兩層:

  • 輸入層 - > 784元
  • 輸出層 - > 10個神經元

您的模型太簡單了(w包含輸入和輸出之間的直接連接,b包含偏置項)。

沒有隱藏層,您正在獲取線性分類器,因爲線性組合的線性組合是線性組合。隱藏層是包含非線性變換的模型。

在你的第二圖片你有3層,但你感到困惑的符號:

  • 輸入層是向量x,其中放置一個輸入數據。
  • 然後,操作 - > w - > + b - > f() - >是第一層和第二層之間的共存。
  • 第二層是存儲結果的向量z = f(xw1 + b1)
  • 然後softmax(zw2 + b2)是第二層和第三層之間的並行。
  • 第三層是存儲最終結果y = softmax(zw2 + b2)的向量y。
  • 交叉熵不是一個層次是培養你的神經網絡的成本函數。

編輯:

還有一件事,如果你想獲得一個非線性的分類,你必須在每個隱藏層增加一個非線性變換,在本例中,我描述的那樣,如果f()是非線性函數(例如sigmoid,softsign,...): z = f(xw1 + b1)

如果只在輸出層(最後有softmax函數)中添加非線性變換,則輸出仍爲線性分類器。

+0

我認爲你的原始答案是正確的。非線性與隱藏無關。添加了偏倚項後,在S形上拍打,而且是非線性的。 –

+0

其實Rob是正確的,這裏沒有隱藏層,雖然圖像有點棘手/非標準。而@Aske建議(在偏差之後放置sigmoid)無關緊要,模型仍然是線性的。 – lejlot

+0

@lejlot我想我明白你的觀點。你能評論我編輯的 –

0

有1個隱藏層。

您鏈接到的答案,我會打電話給一個2隱藏層NN。

您的輸入圖層是X向量。 您的圖層Wx + b是隱藏層,又名。在你的照片中的框。 輸出層是Soft-max。 交叉熵是你的損失/成本函數,而不是一層。

+1

我覺得他沒有隱藏層。 NN具有784個神經元的輸入層和10個神經元的輸出層(是10類分類問題)。使用矩陣,他直接將輸入重定向到輸出。 – Rob

+0

我看到它有一個輸入層和一個輸出層。數據放入的位置,以及預測出的位置。這些之間的一切都是隱藏層。 –

+1

沒有隱藏層。 Softmax幾乎不是一個標準化因素,通常它甚至在損失本身。 「圖層」通常是參數化變換,並且softmax不是參數化的(在softmax中沒有什麼可學習的),因此它可以安全地放入損失本身。 – lejlot