MNIST为经典数字识别数据集,用它来入门计算机视觉以及深度学习再合适不过了
手动实现神经网络真的好麻烦啊!!!不过可以帮助我理解更多神经网络的细节,拓展思路
-
data/ 原始MNIST数据
-
train_images/ 训练集.jpg
-
test_images/ 测试集.jpg
-
DNN.py 模型主文件
-
dnn_utils.py relu sigmoid softmax之类的激活函数,及其反向函数
-
Loader.py 加载数据集文件
-
Save.py 用于将原始数据集转成JPG
图片大小28*28=784
训练集60000张
测试集10000张
使用Loader.py里的load_dataset()可以加载图片
- train_x (784,60000)
- test_y (1,60000)
- train_x (784,10000)
- test_y (1,10000)
- classes 10
10分类问题
图片要标准化成[0,1],所以需要除以255
先将y展开成one-hot形式
(3层神经网络)784-64-32-10(Softmax)
目前最好的实验结果是:
训练集99.11%
测试集97.43%
显然过拟合,不过没关系,就不正则化了
-
随机打乱数据集(防止分布出问题,到后期震荡太大)
-
HU(64,32)
-
mini-batch的batch_size,我设为了1000
-
学习率 0.15
-
迭代次数 80*60000/1000=4800
最好结果
不随机打乱,下面疯狂震荡,不过还好
学习率 0.3
train-99.83% / test-97.65%
学习率 0.0075
batch_size 10000
HU(32,16)
train-98.225% / test-96.73%
HU(128,64)
train-99.59% / test-97.83%
综上所述,batch_size和学习率还有HU比较有用吧可能,主要还是学习率