深度学习实现

====================
更新了:
涉及的所有代码在GitHub上: https://github.com/Leezhen2014/python_deep_learning
下面说的博客文章在
深度学习入门-v3.pdf
每个章节的思维导图如下:

image.png

update 2020.0315
===================

简介

最近由于疫情被困在家,于是准备每天看点专业知识,准备写成博客,不定期发布。

博客大概会写5~7篇,主要是“解剖”一些深度学习的底层技术。关于深度学习,计算机专业的人多少都会了解,知道Conv\Pool的过程,也看过论文,做过实验或是解决方案。在写的各种卷积网络时候,有没有问问自己:这些网络到底是怎么“运行”起来的?如果自己要实现一个具备基本功能的神经网络应该怎么去实现?

知道事物的表面现象,不知事物的本质及其产生的原因是一件很可悲的事情,正如一个鲁迅所说:What I cannot create, I do not understand. 只有亲自实践去创造一个东西,才算真正弄懂一个问题。

本着“知其然,知其所以然” 的目的,去实现一个简单的深度学习框架,在实现过程中会对每个模块进行讲解,并采用迭代增量式开发的思路逐步的靠近我们的目标。

每一篇结尾有总结,每个模块有简单的测试。本着一切从简化的态度,测试所用的数据集为mnist数据集,开发语言为python3。

第一篇介绍numpy库和matplotlib库、读写二进制的方法、pkl等。这些知识会在后面用到,在本篇的最后会以mnist数据集为例,创建处理手写体图片的函数,供后使用。

第二篇介绍感知机。用感知机实现逻辑门、用多层感知机实现复杂逻辑门。

第三篇神经网络的设计与实现。分为上下两部分:

3.1篇增加神经网络的forward。实现激活函数、全连接层的计算、输出层。最后用mnist数据集测试forwarld是否正确;

3.2篇增加神经网络的backward。实现损失函数、梯度、学习算法。最后用mnist数据集测试神经网络的训练。

第四篇引入计算图的思想,用计算图的方式实现乘法层、加法层和激活层。最后用mnist数据集测试这些简单层。

第四篇添加optimization模块。设计实现SGD,momentum,学习率的衰减,adam。 最后用mnist数据集作对比。

第五篇增加一些处理过拟合的方法。实现droupout,权值衰减,。用mnist数据集测试效果

第六篇增加batch-normalization功能。用mnist数据集做测试效果;

第七篇增加conv和pool功能。实现一个lenet-5

前面七篇的代码和博客已经写完了,经过整理以后会陆续发布。就这样吧,加油!

by 2020年 2月11 01:28

推荐阅读更多精彩内容