最近因为疫情被困在家,因而准备天天看点专业知识,准备写成博客,不按期发布。算法
博客大概会写5~7篇,主要是“解剖”一些深度学习的底层技术。关于深度学习,计算机专业的人多少都会了解,知道Conv\Pool的过程,也看过论文,作过实验或是解决方案。在写的各类卷积网路 时候,有没有问问本身:这些网络究竟是怎么“运做”起来的?若是本身要实现一个具有基本功能的神经网络应该怎么去实现?网络
知道事物的表面现象,不知事物的本质及其产生的缘由是一件很可悲的事情,正如鲁迅所说:What I cannot create, I do not understand. 只有亲自实践去创造一个东西,才算真正弄懂一个问题。函数
本着“知其然,知其因此然”的目的,会尽量的用Python库和基本的数学知识,建立经典的深度学习网络。学习
每篇的计划以下:测试
第一篇介绍numpy库和matplotlib库、读写二进制的方法、pkl等。这些知识会在后面用到,在本篇的最后会以mnist数据集为例,建立处理手写体图片的函数,供后使用。设计
第二篇介绍感知机。用感知机实现逻辑门、用多层感知机实现复杂逻辑门。orm
第三篇神经网络的设计与实现。分为上下两部分:图片
3.1篇增长神经网络的forward。实现激活函数、全链接层的计算、输出层。最后用mnist数据集测试forwarld是否正确;深度学习
3.2篇增长神经网络的backward。实现损失函数、梯度、学习算法。最后用mnist数据集测试神经网络的训练。博客
第四篇引入计算图的思想,用计算图的方式实现乘法层、加法层和激活层。最后用mnist数据集测试这些简单层。
第四篇添加optimization模块。设计实现SGD,momentum,学习率的衰减,adam。 最后用mnist数据集做对比。
第五篇增长一些处理过拟合的方法。实现droupout,权值衰减,。用mnist数据集测试效果
第六篇增长batch-normalization功能。用mnist数据集作测试效果;
第七篇增长conv和pool功能。实现一个lenet-5
前面七篇的代码和博客已经写完了,通过整理之后会陆续发布。就这样吧,加油!