DL之NN/CNN:NN算法进阶优化(本地数据集50000张训练集图片),六种不同优化算法实现手写数字图片识别逐步提高99.6%准确率

简介: DL之NN/CNN:NN算法进阶优化(本地数据集50000张训练集图片),六种不同优化算法实现手写数字图片识别逐步提高99.6%准确率

设计思路


image.png



设计代码


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)


相关文章
|
5月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
5月前
|
机器学习/深度学习 算法
采用蚁群算法对BP神经网络进行优化
使用蚁群算法来优化BP神经网络的权重和偏置,克服传统BP算法容易陷入局部极小值、收敛速度慢、对初始权重敏感等问题。
443 5
|
6月前
|
canal 算法 vr&ar
【图像处理】基于电磁学优化算法的多阈值分割算法研究(Matlab代码实现)
【图像处理】基于电磁学优化算法的多阈值分割算法研究(Matlab代码实现)
201 1
|
5月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
238 0
|
5月前
|
机器学习/深度学习 算法 物联网
基于遗传方法的动态多目标优化算法
基于遗传方法的动态多目标优化算法
|
6月前
|
机器学习/深度学习 存储 算法
【微电网调度】考虑需求响应的基于改进多目标灰狼算法的微电网优化调度研究(Matlab代码实现)
【微电网调度】考虑需求响应的基于改进多目标灰狼算法的微电网优化调度研究(Matlab代码实现)
274 0
|
6月前
|
机器学习/深度学习 传感器 数据采集
基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)
基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)
949 0
|
6月前
|
机器学习/深度学习 传感器 数据采集
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
419 0
|
7月前
|
机器学习/深度学习 数据采集 TensorFlow
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
386 0

热门文章

最新文章