深度学习如何入门?

2020-07-16 16:39发布

2条回答
小红
2楼 · 2020-07-16 16:52






很早之前,红色石头就听过雷军说的一句话:“站在风口上,猪都可以飞起来”!这句话用来形容现在的深度学习非常贴切。是的,近几年来,深度学习的发展极其迅速。其影响力已经遍地开花,在医疗、自动驾驶、机器视觉、自然语言处理等各个方面大展身手。在深度学习这个世界大风口上,谁能抢先抢先进入深度学习领域,学会运用深度学习技术,谁就能真正地在AI时代“飞”起来。

对于每一个想要开始深度学习的大学生、IT程序员或者其他转行的人来说,最头疼也是最迫切的需求就是深度学习该如何入门呢?下面我来谈一谈我的看法。

  1. 放弃海量资料

  2. 没错,就是放弃海量资料!在我们想要入门深度学习的时候,往往会搜集很多资料,什么xx学院深度学习内部资源、深度学习从入门到进阶百G资源、xx人工智能教程,等等。很多时候我们拿着十几G、几百G的学习资源,然后踏踏实实地放到了某云盘里存着,等着日后慢慢学习。殊不知,有90%的人仅仅只是搜集资料、保存资料而已,放在云盘里一年半载也忘了打开学习。躺在云盘的资料很多时候只是大多数人“以后好好学习”的自我安慰和“自我”安全感而已。而且,面对海量的学习资料,很容易陷入到一种迷茫的状态,最直接的感觉就是:天啊,有这么多东西要学!天啊,还有这么多东西没学!简单来说,就是选择越多,越容易让人陷入无从选择的困境。

  3. 所以,第一步就是要放弃海量资料!而是选择一份真正适合自己的资料,好好研读下去、消化它!最终会发现,收获很大。

  4. 2.放弃从零起步

  5. 说到入门,很多人会想着那就要从最基础的知识开始学起!深度学习是一门融合概率论、线性代数、凸优化、计算机、神经科学等多方面的复杂技术。学好深度学习需要的理论知识很多,有些人可能基础不是特别扎实,就想着从最底层的知识开始学起,概率论、线性代数、机器学习凸优化公式推导,等等。但是这样做的坏处是比较耗时间,而且容易造成“懈怠学习”,打消学习的积极性。因为啃书本和推导公式相对来说是比较枯燥的,远不如自己搭建一个简单的神经网络更能激发自己的学习积极性。当然,不是说不需要钻研基础知识,基础理论知识非常重要!只是说,在入门的时候,最好先从顶层框架上有个系统的认识,然后再从实践到理论,有的放矢的查缺补漏机器学习知识点。从宏观到微观,从整体到细节,更有利于深度学习快速入门!而且从学习的积极性来说,也起到了“正反馈”的作用。

  6. 好了,谈完了深度学习入门的两个“放弃”之后,我们来看下一步深度学习究竟该如何快速入门?又该掌握哪些必备的知识?

  7. 1.选择一门合适的编程语言:Python

  8. 俗话说“工欲善其事,必先利其器”!学习深度学习,掌握一门合适的编程语言非常重要!最佳的选择就是Python。为什么人工智能、深度学习会选择Python呢?一方面是因为Python作为一门解释型语言,入门简单、容易上手。另一方面是因为Python的开发效率高,Python有很多库很方便做人工智能,比如Numpy、Scipy做数值计算的,Sklearn做机器学习的,Matplotlib将数据可视化的,等等。总的来说,Python既容易上手,又是功能强大的编程语言。可以毫不夸张地说,Python可以从支持航空航天器系统的开发到小游戏开发的几乎所有的领域。

  9. 也许有的人会说底层还所有的深度学习框架,例如PyTorch、TensorFlow等,虽然是Python语言,但是底层都是由C/C++编写的。Python实际上是实现API调用的功能,所以运行速度慢。事实上,这丝毫不影响Python的普及。如今,在GPU加速的前提下,Python的运行速度已经很快了。在众多因素影响下,Python毫无疑问成为了人工智能的最主要的编程语言。

  10. 2.选择一个最好的深度学习框架:PyTorchorTensorFlow?

  11. 如果说Python是我们手中的利器,那么一个好的深度学习框架就无疑给了我们更多的资源和工具,方便我们实现庞大、高级、优秀的深度学习项目。随着深度学习的研究热潮持续高涨,各种开源深度学习框架也层出不穷,包括TensorFlow、PyTorch、Caffe2、Keras、CNTK、MXNet、Paddle、DeepLearning4、Lasagne、Neon等等。其中,谷歌推出的TensorFlow无疑在关注度和用户数上都占据绝对优势,最为流行。但是作为入门推荐,我却选择了PyTorch。这是为什么呢?

  12. 首先,从难易程度上,PyTorch是Numpy的替代者,支持GPU,可以用来搭建和训练深度神经网络。熟悉Numpy、Python以及常见的深度学习概念(卷积层、循环层、SGD等),会非常容易上手PyTorch。而TensorFlow可以看成是一个嵌入Python的编程语言。你写的TensorFlow代码会被Python编译成一张图,然后由TensorFlow执行引擎运行。我见过好多新手,因为这个增加的间接层而困扰。也正是因为同样的原因,TensorFlow有一些额外的概念需要学习,例如会话、图、变量作用域(VariableScoping)、占位符等。另外还需要更多的样板代码才能让一个基本的模型运行。所以TensorFlow的上手时间,肯定要比PyTorch长。

  13. 其次,创建和运行计算图可能是两个框架最不同的地方。在PyTorch中,图结构是动态的,这意味着图在运行时构建。而在TensorFlow中,图结构是静态的,这意味着图先被“编译”然后再运行。PyTorch中简单的图结构更容易理解,更重要的是,还更容易调试。调试PyTorch代码就像调试Python代码一样。你可以在任何地方设置断点。调试TensorFlow代码可不容易。要么得从会话请求要检查的变量,要么学会使用TensorFlow的调试器。

  14. 总的来说,选择PyTorch的原因很简单,因为简单易懂。而且,它还弥补了Tensorflow静态构图的致命弱点。

  15. 3.夯实深度学习数学推导与理论

  16. 有人说深度学习就像一个黑匣子,完全不知道内部发生了什么。也有人说深度学习不需要数学理论,只要会调参数就行了。其实,这两种说法都有失偏颇。掌握基本的深度学习理论非常重要。神经网络是深度学习最重要的结构,关于神经网络包含了许多我们入门需要掌握的基本理论和数学推导。具体包括:


神经网络基础知识:感知机、梯度下降



神经网络的正向传播



神经网络的误差反向传播



防止过拟合技巧



神经网络梯度优化算法



网络初始化技巧与超参数调试



激活函数的选择与比较



卷积神经网络(CNN)



循环神经网络(RNN)



掌握深度学习基本的数学理论知识是非常重要的!只有对神经网络模型结构和推导过程有清晰的认识才能更好地建立模型优化直觉,构建性能良好的神经网络模型,而不是做只会使用框架和库,知其然不知其所以然的“调包侠”。

4.实践是最好的学习方式

纸上得来终觉浅,觉知此事要躬行!理论与模型的建立都是为了更好地实践,为了解决实际问题。深度学习也是这样,掌握每个理论知识后,更重要的是将理论用于实践。例如,使用深度学习模型解决图像识别、语音识别等,或者参加kaggle。通过实战,更能加深自己的理解,帮助自己更加熟练地掌握深度学习应用技巧。

而现在很多教程和课程往往忽视了实战的重要性,将大量的精力放在了理论介绍上。我们都知道纸上谈兵的典故,重理论,轻实战的做法是非常不可取的!就像我开头说的第2个“放弃”一样,在具备基本的理论知识之后,最好就去在实践、编写代码,解决实际问题。从学习的效率上讲,速度是最快的。

那么,针对以上关于深度学习入门的建议,有没有一份涵盖这些重点的完整的教程呢?答案是肯定的!针对这些建议,结合我自己在入坑深度学习的经验,我特此推出了一份写给所有想要入门深度学习的极简教程《深度学习Python入门与实战》。以上的经验分享,它全都包含!

这门课的知识体系完整,知识架构清晰。整体分为三个部分:

第一部分(第01-04课),主要介绍一些深度学习的预备知识,列举重要的Python基础知识,手把手教你搭建本课程需要的开发环境,使用Anaconda平台,重点介绍JupyterNotebook的使用以及知名的深度学习框架PyTorch。

第二部分(第05-14课),主要介绍神经网络的基础,以最简单的两层神经网络入手,详细推导正向传播与反向梯度的算法理论。然后,从简单网络推导至深度网络,并重点介绍神经网络优化算法及构建神经网络模型的实用建议。每一部分都会使用Python构建神经网络模型来解决实际问题。

第三部分(第15-18课),主要介绍卷积神经网络CNN和循环神经网络RNN,重点剖析两种模型的数学原理和推导过程。最后,利用越来越火的深度学习框架PyTorch分别构建CNN和RNN模型,解决实际项目问题。

本课程的独具特色包括:



内容深入浅出、理论推导详细。



理论结合实践,在代码实践中巩固知识。



知识体系完善,深度学习知识点各个击破



回到开头,虽然“站在风口上,猪都可以飞起来”成为了日后很多人引用的金句,但是在这句话的后面,“长出一个小翅膀,就能飞得更高”却鲜有人提及。归根结底,站在风口上固然重要,但是能否靠自己长出一双小翅膀才是能否取得成功的关键。不要犹豫,选择《深度学习Python入门与实战》,给自己的深度学习之路助力一把!

欢迎扫描二维码或点此试读购买!




老杜
3楼 · 2020-07-16 19:28

先取了解一下python,有一定的编程基础,知道什么是变量,什么是函数,怎么导入包。

然后有一些数学知识,微积分啊,线性代数啊

然后知道一些深度学习的基本算法,逻辑回归,svm等



相关问题推荐

  • 回答 3

    换行。比如,print hello\nworld效果就是helloworld\n就是一个换行符。\是转义的意思,'\n'是换行,'\t'是tab,'\\'是,\ 是在编写程序中句子太长百,人为换行后加上\但print出来是一整行。...

  • 回答 42

    十种常见排序算法一般分为以下几种:(1)非线性时间比较类排序:a. 交换类排序(快速排序、冒泡排序)b. 插入类排序(简单插入排序、希尔排序)c. 选择类排序(简单选择排序、堆排序)d. 归并排序(二路归并排序、多路归并排序)(2)线性时间非比较类排序:...

  • 回答 70
    已采纳

    前景很好,中国正在产业升级,工业机器人和人工智能方面都会是强烈的热点,而且正好是在3~5年以后的时间。难度,肯定高,要求你有创新的思维能力,高数中的微积分、数列等等必须得非常好,软件编程(基础的应用最广泛的语言:C/C++)必须得很好,微电子(数字电...

  • 回答 28

    迭代器与生成器的区别:(1)生成器:生成器本质上就是一个函数,它记住了上一次返回时在函数体中的位置。对生成器函数的第二次(或第n次)调用,跳转到函数上一次挂起的位置。而且记录了程序执行的上下文。生成器不仅记住了它的数据状态,生成器还记住了程序...

  • 回答 9

    python中title( )属于python中字符串函数,返回’标题化‘的字符串,就是单词的开头为大写,其余为小写

  • 回答 6

    第一种解释:代码中的cnt是count的简称,一种电脑计算机内部的数学函数的名字,在Excel办公软件中计算参数列表中的数字项的个数;在数据库( sq| server或者access )中可以用来统计符合条件的数据条数。函数COUNT在计数时,将把数值型的数字计算进去;但是...

  • 回答 1

    head是方法,所以需要取小括号,即dataset.head()显示的则是前5行。data[:, :-1]和data[:, -1]。另外,如果想通过位置取数据,请使用iloc,即dataset.iloc[:, :-1]和dataset.iloc[:, -1],前者表示的是取所有行,但不包括最后一列的数据,结果是个DataFrame。...

  • Python入门简单吗2021-09-23 13:21
    回答 45

    挺简单的,其实课程内容没有我们想象的那么难、像我之前同学,完全零基础,培训了半年,直接出来就工作了,人家还在北京大公司上班,一个月15k,实力老厉害了

  • 回答 4

    Python针对众多的类型,提供了众多的内建函数来处理(内建是相对于导入import来说的,后面学习到包package时,将会介绍),这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作;如果某种操作只对特殊的某一类对象可行,Pyt...

  • 回答 8

     相当于 ... 这里不是注释

  • 回答 4

    还有FIXME

  • 回答 3

    python的两个库:xlrd和xlutils。 xlrd打开excel,但是打开的excel并不能直接写入数据,需要用xlutils主要是复制一份出来,实现后续的写入功能。

  • 回答 8

    单行注释:Python中的单行注释一般是以#开头的,#右边的文字都会被当做解释说明的内容,不会被当做执行的程序。为了保证代码的可读性,一般会在#后面加一两个空格然后在编写解释内容。示例:#  单行注释print(hello world)注释可以放在代码上面也可以放在代...

  • 回答 2

    主要是按行读取,然后就是写出判断逻辑来勘测行是否为注视行,空行,编码行其他的:import linecachefile=open('3_2.txt','r')linecount=len(file.readlines())linecache.getline('3_2.txt',linecount)这样做的过程中发现一个问题,...

  • 回答 4

    或许是里面有没被注释的代码

  • 回答 26

    自学的话要看个人情况,可以先在B站找一下视频看一下

没有解决我的问题,去提问