2017-02-25 80 views
0

在Tensorflow例如「深MNIST專家」 https://www.tensorflow.org/get_started/mnist/pros功能號碼tf.nn.conv2d

我不清楚如何確定重激活功能的指定功能號碼。

例如:

現在,我們可以實現我們的第一層。它將包含卷積, ,然後是最大池。卷積將爲每個5x5修補程序計算32個功能 。

W_conv1 = weight_variable([5, 5, 1, 32]) 

32爲什麼這裏挑?

爲了建立一個深層網絡,我們堆疊了這個 類型的幾個層。第二層將爲每個5x5修補程序提供64個功能。

W_conv2 = weight_variable([5, 5, 32, 64]) 

再次,爲什麼64被拾取?

現在,圖像尺寸已經減小到7×7,我們添加一個 全連接層1024層的神經元以允許在 處理整個圖像。

W_fc1 = weight_variable([7 * 7 * 64, 1024]) 

爲什麼1024在這裏?

謝謝

+0

有關更多詳細信息,您還可以檢查[此答案](http://stackoverflow.com/a/34698115/3941813)和[此答案](http://stackoverflow.com/a/42451067/3941813)。 – jabalazs

回答

0

32和64是各層中的濾波器數量。 1024是完全連接層中輸出神經元的數量。 你的問題基本上是關於選擇這些超參數背後的原因。

這些具體選擇背後沒有數學或編程原因。這些在實驗後被提取出來,因爲它們在MNIST數據集上提供了很高的精度。 您可以更改這些數字,這是您可以修改模型的一種方式。 不幸的是,你還不能在TensorFlow或任何其他文獻資源中探索選擇這些參數的原因。

+0

只是想確保我正確理解它。這些功能號碼是由我們手動調整的,而不是從CNN自動獲悉的。 – derek

+0

是的。你說對了。 – Ujjwal

1

每個過濾器居然會做一些事情,比如檢查邊,檢查是否有變色,或右移,左拉屎的圖像,銳化,模糊等 每個過濾器實際上是努力尋找出通過銳化,增強,平滑,增強等形成的圖像的含義。

對於例如檢查此鏈接這也解釋了這些過濾器 http://setosa.io/ev/image-kernels/

因此,所有這些過濾器實際上是神經元,其中輸出將是最大池化,並最終送入一些激活後,FC層的含義。

如果您只是想了解過濾器,那是另一種方法。但是,如果你想了解如何轉化。體系結構能夠正常工作,但由於這些是對數據集進行過試驗和測試的過濾器,因此您現在只需要使用它。

這些過濾器也通過Backprop學習。