>>> import mnist_loader
>>> training_data, validation_data, test_data = \
>>> import network2
>>> net = network2.network([784, 30, 10])
>>> net.sgd(training_data, 30, 10, 0.1, lmbda=5.0,
... evaluation_data=validation_data, monitor_evaluation_accuracy=true)
結果: 96.48%
加入乙個隱藏層:
>>> net = network2.network([784, 30, 30, 10])
>>> net.sgd(training_data, 30, 10, 0.1, lmbda=5.0,
... evaluation_data=validation_data, monitor_evaluation_accuracy=true)
結果: 96.9%
再加入乙個隱藏層:
>>> net = network2.network([784, 30, 30, 30, 10])
>>> net.sgd(training_data, 30, 10, 0.1, lmbda=5.0,
... evaluation_data=validation_data, monitor_evaluation_accuracy=true)
結果: 96.57%
為什麼加入一層反而降低了準確率?
條形區域長度代表∂c/∂b, cost對於bias的變化率(這個地方的推導沒怎麼看懂)
再增加一層:
可以看出, 第乙個隱藏層比第四個幾乎要慢100
這種現象普遍存在於神經網路之中, 叫做: vanishing gradient problem
另外一種情況是內層的梯度被外層大很多, 叫做exploding gradient problem
所以說神經網路演算法用gradient之類的演算法學習存在不穩定性
訓練深度神經網路, 需要解決vanishing gradient problem
每層的學習速率會由於乙個固定的比值越來越大或越來越小,但是為什麼會造成vanishing gradient problem(估計就是這樣定義的)
深度神經網路
關於卷積神經網路cnn,網路和文獻中有非常多的資料,我在工作 研究中也用了好一段時間各種常見的model了,就想著簡單整理一下,以備查閱之需。如果讀者是初接觸cnn,建議可以先看一看 deep learning 深度學習 學習筆記整理系列 中關於cnn的介紹 1 是介紹我們常說的lenet為例,相信...
機器學習,深度學習,神經網路,深度神經網路
先來說一下這幾者之間的關係 人工智慧包含機器學習,機器學習包含深度學習 是其中比較重要的分支 深度學習源自於人工神經網路的研究,但是並不完全等於傳統神經網路。所以深度學習可以說是在傳統神經網路基礎上的公升級。神經網路一般有輸入層 隱藏層 輸出層,一般來說隱藏層大於2的神經網路就叫做深度神經網路,深度...
如何除錯神經網路(深度神經網路)?
神經網路的除錯基本上難於絕大多數的程式,因為大部分的神經網路的錯誤不會以型別錯誤或執行時錯誤顯現,他們只是使得網路難以收斂。如果你是乙個新人,這可能會讓你非常沮喪。乙個有經驗的網路訓練者可以系統的克服這些困難,儘管存在著大量似是而非的錯誤資訊,比如 你的網路訓練的不太好。對缺少經驗的人來說,這個資訊...