python实现神经网络的优势_从零开始,用Python实现各种经典DNN神经网络(附代码)...

引言
这个系列供六篇文章, 将从最基础的全连接网络DNN开始, 从零开始用Python/Numpy实现包含CNN, RNN等在内的深度网络模型。
我们已经有了TensorFlow/PyTorch这样强大的深度学习计算框架,但从零开始自己实现基本的神经网络(特别是反向传播)仍然是必要的, 理由在于能够更清楚的理解网络结构和反向传播的原理。
了解各种网络的局限性和工程优化。
更加深刻的理解神经网络的演化和优化过程。
本文所介绍的所有模型, Trainer及应用等都附有完整的代码实现。对任何实现有疑问, 欢迎在本文后留言提问。
欢迎转载, 转载请注明出处及链接。
完整代码库请查看我的GithubRepo: .部分代码参考了Stanford CS231n 课程作业, 在此致谢。
PS 为什么要开设这个专栏
其实专栏中的很多文章都引自我的博客, 如果熟悉我的博客的同学, 应该没有什么新东西。 之所以开设这个专栏, 是希望,
1, 以合辑的形式, 重新整理一下散乱的博客文章
2, 能有一个场所供大家交流(毕竟我的博客迟迟没有上线留言功能, 哭~~)
3, 能让更多的同学看到这些文章
希望大家能在这个专栏里玩的开心~
文章汇总
本文由六篇文章组成。
第一篇, 介绍了神经网络的基础DNN各种基本结构的实现(包括方向传播), 并简要讨论了神经网络相比传统结构的优势。
链接:CNN卷积网络的Python实现(一):FCN全连接网络?fanding.xyz
第二篇, 重点介绍了DNN中的一个重要概念, 正则化(Regularization)的原理及实现, 以及两个重要的带有正则作用的拓扑结构: Batch Normalization 和 DropOut.
链接:
CNN卷积网络的Python实现(二):Regularization正则化实现 - Nick's Tech Blog?fanding.xyzpython实现神经网络的优势_从零开始,用Python实现各种经典DNN神经网络(附代码)...
文章图片

第三篇, 引入了CNN, 并简要介绍了CNN的原理及其优势(相比DNN), 并基于Python实现了CNN的卷积层(及反向传播)。
链接:CNN卷积网络的Python实现(三):卷积网络实现 - Nick's Tech Blog?fanding.xyzpython实现神经网络的优势_从零开始,用Python实现各种经典DNN神经网络(附代码)...
文章图片

第四篇, 重点介绍了CNN中的两个重要拓扑的原理和实现,包括 Pooling(池化)层及CNN针对 BatchNorm层的改进——Spatial BatchNorm.
链接:
CNN卷积网络的Python实现(四):池化和BN层的实现 - Nick's Tech Blog?fanding.xyzpython实现神经网络的优势_从零开始,用Python实现各种经典DNN神经网络(附代码)...
文章图片

第五篇, 重点介绍了DNN Trainer(/Solver)即基本训练框架的实现, 包括如何检验模型实现的正确性及超参调试等。
链接:CNN卷积网络的Python实现(五):卷积网络实现 - Nick's Tech Blog?fanding.xyzpython实现神经网络的优势_从零开始,用Python实现各种经典DNN神经网络(附代码)...
文章图片

第六篇, 这一篇我们将视角从CNN转到RNN, 介绍了RNN及LSTM的基本原理及其实现, 并利用RNN基于Microsoft COCO数据实现Image Captioning应用。
链接:
RNN, LSTM与ImageCaptioning原理及Python实现?fanding.xyzpython实现神经网络的优势_从零开始,用Python实现各种经典DNN神经网络(附代码)...
文章图片

结语
【python实现神经网络的优势_从零开始,用Python实现各种经典DNN神经网络(附代码)...】这六篇文章基本串起了深度学习中最重要的DNN, CNN和RNN模型拓扑, 原理及实现。 如果能够吃透这六篇文章中所提到的所有东西, 应该说对深度学习的基础有了较深刻的理解, 当然, 这些理论基础还需要通过大量的实战联系转化为经验, 在随后的博文中, 我会介绍一些基于CNN, RNN的有趣的小项目。 当然, 当你已经吃透了这些模型原理之后, 使用TF这样的框架无疑是事半功倍了。

    推荐阅读