研一在读,代码完全不会,怎么入门深度学习?

前言

总结一下问题:编程基础薄弱,需要学习PyTorch以完成目标检测相关的任务。已尝试看视频、复现经典工作来学习,但收效甚微。

我将先讲一下学习深度学习的思路,再逐条给出学习的建议。

深度学习的知识范围

虽然深度学习和计算机专业看上去很相关,但实际上这完全是两个领域。二者的交集只有[向量化计算]、自动求导等少数技术。

深度学习本身的知识,小半部分是从论文、教程中学习到的数学原理、[网络架构]等理论知识,大半部分是靠亲手实践踩坑获取的实践经验。

在这里插入图片描述

因此,

  1. 不用太担心深度学习的编程难度。由于现在编程框架已经十分成熟了,哪怕是之前完全没有编程基础的人,也可以快速上手深度学习编程。
  2. 深度学习本身的知识更多要靠读论文、学理论、花大量时间做实验才能学会。

不过,即使如此,学习编程对于深度学习来说还是很有必要的。对于初学者来说,运行自己编写的程序,才是近距离感受深度学习的最佳方式。等编程技术成熟了,才可以完全抛开编程,把精力专注于看最新的论文上。

入门深度学习

在代码基础薄弱的前提下,想入门深度学习,最好不要去一上来就学高度封装的[编程框架],看最新的论文,复现较新的代码。基础没打好就去学一些较难的东西,就像搭建空中楼阁一般,学习效率极低。我建议按照如下步骤从浅至深地学习:

  1. 如果几乎之前没有编程经验,最好先通过学习Python,学会编程的基本思想,掌握变量、函数、运算、类等基本知识。如果有其他编程语言的学习经验,随便看看Python的语法即可。
  2. 能掌握Python的基本用法后,去选择一部带编程指导的教材(文字或视频)。学完了理论知识后,一定要去动手实践。写代码时,不管是用NumPy,还是用TensorFlow、PyTorch,一定不要去用高度封装的函数,而只用最基本的矩阵乘法、向量化计算。反向传播、梯度下降、归一化、mini-batch、优化器、CNN、RNN……这些知识只要动手写一遍,一下就学会了。
  3. 等基础知识掌握得差不多,最基本的编程水平也有了后,再开始学习深度学习编程框架。有了之前从零实现的经验,学编程框架的难度就像学完了C++去学Python一样简单。学编程框架时,一方面从官方教程的Hello World项目入手,学习框架高度封装的函数的基本用法;另一方面,去看一些经典工作(比如几乎全任务通用的ResNet)用编程框架实现的源码,从实践与示例中学习。
  4. 学到这里,你差不多就已经有了十分扎实的深度学习功底,可以去看较新的论文了。怎么看论文学最新的知识就是另一个话题了。一个指导原则是:先看综述,同时参考一些代码质量较高的开源工作(很多[开源代码]的质量一塌糊涂,绝对不能成为初学者的学习对象)。

学习资源

上一节只讨论了入门深度学习的步骤,这里我再给出每步的一些学习资源。

Python

如果有编程基础的话,去搜索引擎上随手一搜“Python 教程”,就可以找到许多合适的资料。比如说:

文末我给大家提供了学习资料

如果编程经验不是难么丰富的话,除了参考上述简洁的资料之外,可以看讲解得更细致的视频、文字教程。从零学Python算是另一个话题了,可以去专门搜索一下这方面的学习路线。

深度学习基础

对于初学者,选深度学习的教材时,最重要的其中的编程教学。优质的入门教材很多,比较出名的有:

  • 吴恩达的《深度学习专项》(Deep Learning Specialization)。网上有免费的视频教程,如果想写课后作业拿证书需要在Coursera上付费。这门课会先使用NumPy[复现神经网络]的基础构件,之后用TensorFlow学习更复杂一点的CNN、RNN的知识。
  • [李沐]在B站上的免费视频教程《动手学深度学习》。这门课也是基于PyTorch框架,先只用底层函数实现基础功能,再用框架的高级功能去学习更复杂的知识。

文字教程也有很多,我所知道的只有

[前言 - 《动手学深度学习》 文档]

这份《动手学深度学习》的文档版。这份文字教程已经讲解得足够细致了。

对于大多数的教程,无论制作得多么优秀,都无法提供足够的编程指导。这是因为编程更多要靠实践来学习,而难以通过课堂上的讲解来学习。如果非想通过上课来学习编程,最好的方式找一个助教,自己写代码碰到了问题,立刻去问助教。

我写的笔记就是起到一个“助教”的作用。尤其是在代码实战的笔记中,我基于Python和NumPy的基础函数,从某种意义上复现了《深度学习专项》中课后习题(比如实现全连接网络、正则化、Adam[优化器])的题目和解答,并对所有代码都进行了细致的讲解。哪怕是零基础的人,也能够看懂我写的代码和讲解。我相信,我写的这份笔记能够帮助大家在学习深度学习时少走一些弯路,尽快地通过复现[底层构件]来高效入门深度学习。

另外,如果只想快速上手深度学习,就不要浪费时间去看传统机器学习的参考书了。

编程框架与现成代码

对于PyTorch来说,其实最有用的就是官方的“Hello World”项目:

[PyTorch Tutorials 1.11.0+cu102 documentation]

,看完了就基本知道PyTorch的主要用法了。

同样,官方网站上也收录了很多具体任务的代码实现教程。一边看着教程里的代码,一边参考API文档,学起来还是很快的。

另一方面,除了学习框架的基本知识外,还可以直接去看一些现成的PyTorch项目,通过示例来学习。

这里,我十分推荐基于PyTorch的[OpenMMLab项目],该开源项目复现了分类、检测、分割、生成等多个CV任务的前沿模型。这些PyTorch开源代码不见得是写得最好、最合理的,但起码是写得十分工整,读起来没什么问题的,可以作为初学者的学习对象。

以问题中的目标检测为例,可以去参考[MMDetection]。参考一下官方文档,把项目安装好,学习一下代码库的基本用法,就可以去读源码了。读源码时,最简单的方法是使用文字搜索,找到对应模块的实现代码,比如去MMDetection里搜索"FasterRCNN"。同时,跑新接触的[开源库]时,可以先随便运行一个Demo项目,使用单步调试功能,看看代码的运行逻辑是怎么样的,各个模块之间是怎么调用的。

读开源代码时,千万不要因开源项目的复杂度而产生恐惧。代码都是人写的,都是一点一点从一些很基础的功能开始写起来的。看这些源代码时,一方面要从学习的角度,看看你不会写的地方,别人是怎么写的;另一方面,要自信地带着批判性的眼光,看看别人写的东西让你来写,你会怎么写得更好。带着这样的态度,不要畏惧,一点一点看,学习开源代码的效率其实是十分高的。

总结

在编程基础较弱时上手深度学习,最重要的不是去看最新的内容,而是找一些对编程介绍得十分详细的深度学习教材。学完深度学习的基础知识后,再去专精PyTorch等编程框架。同时,随着编程知识、理论知识、对框架的熟悉度不断提升,可以慢慢开始接触最新的论文,并参考性地阅读新论文的开源代码。

读者福利:知道你可能对Python感兴趣,便准备了这套python学习资料

对于0基础小白入门:

如果你是零基础小白,想快速入门Python是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等学习教程。带你从零基础系统性的学好Python!

零基础Python学习资源介绍

👉Python学习路线汇总👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)

👉Python必备开发工具👈

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

👉实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉100道Python练习题👈

检查学习结果。

👉面试刷题👈

在这里插入图片描述

在这里插入图片描述

资料领取

上述这份完整版的Python全套学习资料已经上传网盘,朋友们如果需要可以微信扫描下方二维码输入“领取资料” 即可自动领取
或者

点此链接】领取

好文推荐

了解python的前景:https://blog.csdn.net/xiqng17111342931/article/details/127705925

了解python的副业:https://blog.csdn.net/xiqng17111342931/article/details/127872402

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值