MNIST数据集深度学习实践汇总

Why MNIST

MNIST数据集对深度学习初学者来说应该是最友好的数据集了:

  1. 拿来即用,你只需要专注于模型搭建就好(数据处理真的很费时间);
  2. 数据集不大,很适合普通玩家,一般的PC都能跑的动,能快速的反馈结果;

近几个月通过MNIST尝试了一些算法模型,包括:

  • SoftMax回归
  • 卷积神经网络(CNN)
  • 循环神经网络(RNN)
  • 基于PyTorch的CNN&RNN
  • 生成对抗网络(GAN&CGAN)

代码都已上传到我的GitHub,后续也会继续更新,欢迎star⭐️⭐️⭐️


SoftMax回归🏎

严格来说,softmax回归应该不算深度学习,不过这是我用Tensorflow搭建的第一个模型,所以如果你之前没接触过Tensorflow,我觉得softmax作为入门的第一个项目是一个不错的选择。

  • 代码:softmax
  • 训练时长:1分钟
  • 测试集准确率:92%左右

CNN&RNN🚗

CNN是基于LeNet来搭建的,conv1->pool->conv2->pool2后接全连接,RNN是一个双GRU隐层的网络结构,当然你也可以选择使用LSTM,只需要修改74行代码,改成tf.nn.rnn_cell.LSTMCell即可。

  • 代码:CNN or RNN
  • 训练时长:1-2小时
  • 测试集准确率:99.2%左右

基于PyTorch的CNN&RNN🚕

执行效率没有去仔细比较,不过直观来说,差别不大。个人而言,我觉着PyTorch的代码更简洁易读,至于准确率都差不多,毕竟网络结构一样。


生成对抗网络(GAN)🚜

以上的模型目的都是去完成MNIST手写字分类,GAN网络可能刚好相反,它是根据一堆随机数组生成手写字图片。

  • 代码:GAN
  • 训练时长:30W次迭代,1小时
  • 实现效果:

  • 其实还尝试了一些其他的结构,包括AlexNet/ResNet等,不过好多被我改来改去,覆盖掉了😂😂😂,后续整理了再更新。
  • 各位如果觉得有帮助的,麻烦点个喜欢,GitHub也欢迎Star🌟