英文版《Make Your Own Neural Network 》
目标:了解神经网络基础,Pyhton3.5实现,轻松动手实现。
最近的学习内容,全书200多页,英文版的非常容易读,作者的语言很幽默直白。了解神经网络的基础、并且用Python3实现。在MNIST手写数据集上进行训练测试。
概要
介绍神经网络的基础,以及用python3.5实现一个三层的网络,对于一个具体的手写数据集MNIST进行训练以及测试。其中包括网络节点数的设计、激活函数的选择等。对于网络达到的效果进行评价,创造了一个分类准确率。之后,对于网络的性能提升做出思考(改造网络的方式):1)调整学习率learning rate 2)增加训练次数epoch 3)改变网络的结构。对比了这三个参数的影响。
思考神经网络的问题:比如隐层神经元个数的确定、网络的层数等等,初始化权值矩阵的随机性等。明确整个网络的训练过程是随机的。
最后,探讨了网络内部的东西,反向运行网络,输出结果看到网络记住的是什么东西。直观上感受网络如何做到分类工作。
More Fun:对于数据集进行拓展,比如自己手写的数据集、添加噪声的数据集、以及旋转变化后的数据集,我们的神经网络也能达到很好的效果^-^
附录内容(选择性学习):A.关于微积分。求导、以及链式求导法则的理解。B.利用树莓派编程。
学习问题总结
【思考几个问题】
1.神经网络的基本内容:输入层、隐层、输出层。每一层中节点的个数->与输入的样本有什么样的关系?输入的数据量是否影响着隐层神经元的个数?事先如何确定隐层神经元的个数?