1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c
2.详细笔记网站(中文):http://www.ai-start.com/dl2017/
3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai
2.8 使用开源的实现方案 Using open-source implementations
你现在已经学过几个非常有效的NN和ConvNet(卷积神经网络)架构,在接下来的我想与你分享几条如何使用它们的实用性建议,首先从使用开放源码的实现开始。
事实证明很多NN复杂细致,因而难以复制,因为一些参数调整的细节问题,例如学习率衰减等等,会影响性能。所以我发现有些时候,甚至在顶尖大学学习AI或者DL的博士生也很难通过阅读别人的研究论文来复制他人的成果。
幸运的是有很多DL的研究者都习惯把自己的成果作为开发资源,放在像GitHub之类的网站上。当你自己编写代码时,我鼓励你考虑一下将你的代码贡献给开源社区。如果你看到一篇研究论文想应用它的成果,你应该考虑做一件事,我经常做的就是在网络上寻找一个开源的实现。因为你如果能得到作者的实现,通常要比你从头开始实现要快得多,虽然从零开始实现肯定可以是一个很好的锻炼。
如果你已经熟悉如何使用GitHub,这节课对你来说可能没什么必要或者没那么重要。但是如果你不习惯从GitHub下载开源代码,让我来演示一下。
假设你对残差网络感兴趣,那就让我们搜索GitHub上的ResNets,那么你可以在GitHub看到很多不同的ResNet的实现。例如:https://github.com/KaimingHe/deep-residual-networks
如上图,这是一个ResNets实现的GitHub资源库。在很多GitHub的网页上往下翻,你会看到一些描述,这个实现的文字说明。
这个GitHub资源库,实际上是由ResNet论文原作者上传的。
这些代码,这里有麻省理工学院的许可,你可以点击查看此许可的含义,MIT许可是比较开放的开源许可之一。
我将下载代码,点击这里的链接,它会给你一个URL,通过这个你可以下载这个代码。
让我们进入目录,让我们看一下,进入prototxt,我认为这就是存放这些网络文件的地方。让我们看一下这个文件。
因为这个文件很长,包含了ResNet里101层的详细配置。我记得,从这个网页上看到这个特殊实现使用了Caffe框架。
但如果你想通过其它编程框架来实现这一代码,你也可以尝试寻找一下。
如果你在开发一个计算机视觉应用,一个常见的工作流程是,先选择一个你喜欢的架构,或许是你在这门课中学习到的,或者是你从朋友那听说的,或者是从文献中看到的,接着寻找一个开源实现,从GitHub下载下来,以此基础开始构建。
这样做的优点在于,这些网络通常都需要很长的时间来训练,而或许有人已经使用多个GPU,通过庞大的数据集预先训练了这些网络,这样一来你就可以使用这些网络进行迁移学习,我们将在下一节课讨论这些内容。
当然,如果你是一名计算机视觉研究员,从零来实现这些,那么你的工作流程将会不同,如果你自己构建,那么希望你将工作成果贡献出来,放到开源社区。因为已经有如此多计算机视觉研究者为了实现这些架构做了如此之多的工作,我发现从开源项目上开始是一个更好的方法,它也确实是一个更快开展新项目的方法。