DL之NN/CNN:NN算法进阶优化(本地数据集50000张训练集图片),六种不同优化算法实现手写数字图片识别逐步提高99.6%准确率
生活随笔
收集整理的這篇文章主要介紹了
DL之NN/CNN:NN算法进阶优化(本地数据集50000张训练集图片),六种不同优化算法实现手写数字图片识别逐步提高99.6%准确率
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
DL之NN/CNN:NN算法進階優化(本地數據集50000張訓練集圖片),六種不同優化算法實現手寫數字圖片識別逐步提高99.6%準確率
?
目錄
設計思路
設計代碼
?
?
?
設計思路
?
設計代碼
import mnist_loader from network3 import Network from network3 import ConvPoolLayer, FullyConnectedLayer, SoftmaxLayer training_data, validation_data, test_data = mnist_loader.load_data_wrapper() mini_batch_size = 10 #NN算法:sigmoid函數;準確率97% net = Network([ FullyConnectedLayer(n_in=784, n_out=100), SoftmaxLayer(n_in=100, n_out=10)], mini_batch_size) net.SGD(training_data, 60, mini_batch_size, 0.1, validation_data, test_data) #CNN算法:1層Convolution+sigmoid函數;準確率98.78% net = Network([ ConvPoolLayer(image_shape=(mini_batch_size, 1, 28, 28), filter_shape=(20, 1, 5, 5), poolsize=(2, 2)), FullyConnectedLayer(n_in=20*12*12, n_out=100), SoftmaxLayer(n_in=100, n_out=10)], mini_batch_size) #CNN算法:2層Convolution+sigmoid函數;準確率99.06%。層數過多并不會使準確率大幅度提高,有可能overfit,合適的層數需要通過實驗驗證出來,并不是越多越好 net = Network([ConvPoolLayer(image_shape=(mini_batch_size, 1, 28, 28), filter_shape=(20, 1, 5, 5), poolsize=(2, 2)),ConvPoolLayer(image_shape=(mini_batch_size, 20, 12, 12), filter_shape=(40, 20, 5, 5), poolsize=(2, 2)),FullyConnectedLayer(n_in=40*4*4, n_out=100),SoftmaxLayer(n_in=100, n_out=10)], mini_batch_size)#CNN算法:用Rectified Linear Units即f(z) = max(0, z),代替sigmoid函數;準確率99.23% net = Network([ConvPoolLayer(image_shape=(mini_batch_size, 1, 28, 28), filter_shape=(20, 1, 5, 5), poolsize=(2, 2), activation_fn=ReLU), #激活函數采用ReLU函數ConvPoolLayer(image_shape=(mini_batch_size, 20, 12, 12), filter_shape=(40, 20, 5, 5), poolsize=(2, 2), activation_fn=ReLU),FullyConnectedLayer(n_in=40*4*4, n_out=100, activation_fn=ReLU),SoftmaxLayer(n_in=100, n_out=10)], mini_batch_size)#CNN算法:用ReLU函數+增大訓練集25萬(原先50000*5,只需將每個像素向上下左右移動一個像素);準確率99.37% $ python expand_mnist.py #將圖片像素向上下左右移動 expanded_training_data, _, _ = network3.load_data_shared("../data/mnist_expanded.pkl.gz") net = Network([ConvPoolLayer(image_shape=(mini_batch_size, 1, 28, 28), filter_shape=(20, 1, 5, 5), poolsize=(2, 2), activation_fn=ReLU),ConvPoolLayer(image_shape=(mini_batch_size, 20, 12, 12), filter_shape=(40, 20, 5, 5), poolsize=(2, 2), activation_fn=ReLU),FullyConnectedLayer(n_in=40*4*4, n_out=100, activation_fn=ReLU),SoftmaxLayer(n_in=100, n_out=10)], mini_batch_size) net.SGD(expanded_training_data, 60, mini_batch_size, 0.03,validation_data, test_data, lmbda=0.1)#CNN算法:用ReLU函數+增大訓練集25萬+dropout(隨機選取一半神經元)用在最后的FullyConnected層;準確率99.60% expanded_training_data, _, _ = network3.load_data_shared("../data/mnist_expanded.pkl.gz") net = Network([ConvPoolLayer(image_shape=(mini_batch_size, 1, 28, 28), filter_shape=(20, 1, 5, 5), poolsize=(2, 2), activation_fn=ReLU),ConvPoolLayer(image_shape=(mini_batch_size, 20, 12, 12), filter_shape=(40, 20, 5, 5), poolsize=(2, 2), activation_fn=ReLU),FullyConnectedLayer(n_in=40*4*4, n_out=1000, activation_fn=ReLU, p_dropout=0.5),FullyConnectedLayer(n_in=1000, n_out=1000, activation_fn=ReLU, p_dropout=0.5),SoftmaxLayer(n_in=1000, n_out=10, p_dropout=0.5)], mini_batch_size) net.SGD(expanded_training_data, 40, mini_batch_size, 0.03,validation_data, test_data)?
相關文章
DL之NN/CNN:NN算法進階優化(本地數據集50000張訓練集圖片),六種不同優化算法實現手寫數字識別逐步提高,應用案例自動駕駛之識別周圍車牌號
總結
以上是生活随笔為你收集整理的DL之NN/CNN:NN算法进阶优化(本地数据集50000张训练集图片),六种不同优化算法实现手写数字图片识别逐步提高99.6%准确率的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DL之NN:NN算法(本地数据集5000
- 下一篇: Dataset之MNIST:MNIST(