在杭州想了解深度学习课程,有推荐的地方吗?

2020-07-17 11:47发布

在杭州想了解深度学习课程,有推荐的地方吗?

在杭州想了解深度学习课程,有推荐的地方吗?

1条回答
给你三个亿
2楼 · 2020-07-21 15:16










大家好,我是为人造的智能操碎了心的智能禅师。今天是918,一个对中国人来说非常特殊的日子。这一天,有些地方可能会拉响警笛,有的地方可能会有一些纪念活动。但如论如何,今天都是一个铭刻在国人心中,永远不会被遗忘的日子。全文大约1500字。读完可能需要下面这首歌的时间?无论是在机器学习还是深度学习中,Python已经成为主导性的编程语言。而且,现在许多主流的深度学习框架,例如PyTorch、TensorFlow也都是基于Python。这门课主要是围绕“理论+实战”同时进行的,所以本文,我将重点介绍深度学习中Python的必备知识点。为什么选择PythonPython是一种面向对象的解释型计算机程序设计语言,由荷兰人GuidovanRossum于1989年发明,第一个公开发行版发行于1991年。Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。为什么人工智能、深度学习会选择Python呢?一方面是因为Python作为一门解释型语言,入门简单、容易上手。另一方面是因为Python的开发效率高,Python有很多库很方便做人工智能,比如Numpy、Scipy做数值计算的,Sklearn做机器学习的,Matplotlib将数据可视化的,等等。总的来说,Python既容易上手,又是功能强大的编程语言。按照《Python学习手册》作者的说法,Python可以从支持航空航天器系统的开发到小游戏开发的几乎所有的领域。其实,人工智能的核心算法的底层还是由C/C++编写的,因为是计算密集型,需要非常精细的优化,还需要GPU、专用硬件之类的接口,这些都只有C/C++能做到。Python实际上是实现API调用的功能,例如所有的深度学习框架PyTorch、TensorFlow等,底层都是由C/C++编写的。由于Python是顶层高级语言,它的缺点就是运行速度慢,但是这丝毫不影响Python的普及。如今,在GPU加速的前提下,Python的运行速度已经很快了。在众多因素影响下,Python毫无疑问成为了人工智能的最主要的编程语言。下面这张图来自TIOBE编程社区Top10编程语言TIOBE指数走势(2002-2018):如今,Python排名已经仅次于Java、C、C++之后,排名第四,且呈逐年上升的趋势。而在人工智能领域,Python是当之无愧的第一。Python目前有两个版本:2和3。人工智能领域主要使用Python3,建议安装Python3版本。你也可以使用如下命令来查看当前安装的是哪个版本:函数Function与类ClassPython中的函数以关键字def来定义,例如:上面呢,就是定义一个sign函数,根据输入x与0的大小关系,返回positive、negative或zero。函数的形参也可以设置成默认值,例如:Python中的类的概念和其他语言相比没什么不同,例如:__init__ 函数是类的初始化函数,所有成员变量都是self的,所以初始化函数一般都包含self参数。name是类中函数将要调用的输入参数。Python中类的继承也非常简单,最基本的继承方式就是定义类的时候把父类往括号里一放就行了:向量化和矩阵深度学习神经网络模型包含了大量的矩阵相乘运算,如果使用for循环,运算速度会大大降低。Python中可以使用dot函数进行向量化矩阵运算,来提高网络运算效率。我们用一个例子来比较说明for循环和矩阵运算各自的时间差异性。输出结果为:显然,两个矩阵相乘,使用for循环需要大约100ms,而使用向量化矩阵运算仅仅需要大约1ms,效率得到了极大的提升。值得一提的是,神经网络模型有的矩阵维度非常大,这时候,使用矩阵直接相乘会更大程度地提高速度。所以,在构建神经网络模型时,我们应该尽量使用矩阵相乘运算,减少for循环的使用。顺便提一下,为了加快深度学习神经网络运算速度,可以使用比CPU运算能力更强大的GPU。事实上,GPU和CPU都有并行指令(ParallelizationInstructions),称为SingleInstructionMultipleData(SIMD)。SIMD是单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。SIMD能够大大提高程序运行速度,并行运算也就是向量化矩阵运算更快的原因。相比而言,GPU的SIMD要比CPU更强大。广播BroadcastingPython中的广播(Broadcasting)机制非常强大,在神经网络模型矩阵运算中非常有用。广播机制主要包括以下几个部分:让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐。输出数组的shape是输入数组shape的各个轴上的最大值。如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1时,这个数组能够用来计算,否则出错。当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值。如果觉得上面几条机制比较晦涩难懂,没关系。简而言之,就是Python中可以对不同维度的矩阵进行四则混合运算,但至少保证有一个维度是相同的。下面我举几个简单的例子,你就明白了。是不是觉得广播机制很方便?这也正是Python强大的地方,能够帮我们省很多事。值得一提的是,在Python程序中为了保证矩阵运算正确,可以使用reshape函数设定矩阵为所需的维度。这是一个很好且有用的习惯。例如:关于矩阵维度,还有一些需要注意的地方。例如,我们定义一个向量,可能会这样写:上面这条语句生成的向量维度既不是(6,1),也不是(1,6),而是(6,)。它既不是列向量也不是行向量,而是rank1array。rank1array的特点是它的转置还是它本身。这种定义实际应用中可能会带来一些问题,如果我们想要定义行向量或者列向量的话,最好这样写:另外,我们还可以使用assert语句对向量或者数组维度进行判断。如果与给定的维度不同,则程序在此处停止运行。assert的灵活使用可以帮助我们及时检查神经网络模型中参数的维度是否正确。Matplotlib绘图Matplotlib是Python一个强大的绘图库,下面我将简单介绍一下matplotlib.pyplot模块。plot是Matplotlib主要的2D绘图函数,举个简单的例子:我们也可以在一张图片中同时画多个曲线:最后介绍一下图片如何显示:总结本文主要介绍了一些Python的基础知识,包括为什么选择Python、函数和类、向量化和矩阵、广播、Matplotlib绘图等。Python的功能非常强大,其包含的内容也太多了,我们不可能在一篇文章里介绍所有的Python知识。我在本文介绍的几点内容是神经网络编程的必备知识点,这些内容都会在接下来的章节编程中用到。本文作者王柳,北京大学硕士毕业。擅长机器学习、深度学习算法理论,实战经验丰富。本文选自王柳的专家课程第二期。禅师这周会在杭州出没,将有机会采访到阿里负责人工智能的高层领导。我知道你们对阿里人工智能的现状、欲求、展望都有很多问题想说,那么留言吧!问题选中后,将会送上GitChat会员大礼包一份!



相关问题推荐

  • 回答 5

    python中单行注释采用 #开头示例:#this is a comment二、批量、多行注释符号多行注释是用三引号,例如:输入''' '''或者 ,将要注释的代码插在中间三、Windows下的IDLE的注释快捷键是Alt+3,取消注释是Alt+4四、python中文注释方法...

  • 回答 3

    apply

  • 回答 3

    标准库Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能。Python标准库的主要功能有:1.文本处理,包...

  • 回答 6

    Python Lambda函数是没有任何名称的函数。它们也称为匿名或无名功能。 lambda一词不是名称,而是关键字。此关键字指定后面的函数是匿名的。现在您已经知道这些匿名函数指的是什么,让我们进一步了解一下如何编写这些Python Lambda函数。...

  • 回答 18

    Linux操作系统是基于UNIX操作系统发展而来的一种克隆系统,它诞生于1991 年的 [Linux桌面] 10 月5 日(这是第一次正式向外公布的时间)。以后借助于Internet网络,并通过全世界各地计算机爱好者的共同努力,已成为今天世界上使用最多的一种UNIX 类操作系统,...

  • 回答 4

    深度学习工程师就业路径目前,成为深度学习工程师有两条路径:一是通过春秋两季的校园招聘,另一种是借助社会招聘跨行业转型。前述文章曾经将深度学习工程师分为算法工程师、后端工程师和前端工程师。综合目前市面上各大公司招聘和咨询报告结果,目前工作3-5...

  • 回答 19

    零基础学编程,用python入门是个不错的选择,虽然国内基本上还是以c语言作为入门开发语言,但在国外,已经有很多的学校使用python作为入门编程语言。此外,python在机器学习,人工智能领域也非常流行,算得上是算法工程师的标配编程语言。...

  • 回答 10

    包是一个有层次的文件目录结构,它定义了由n个模块或n个子包组成的python应用程序执行环境。通俗一点:包是一个包含__init__.py 文件的目录,该目录下一定得有这个__init__.py文件和其它模块或子包。python库是参考其它编程语言的说法,就是指python中的完成...

  • 回答 5

    1、len(mapping)        返回映射的长度(键-值对的个数)2、hash(obj)              返回obj的哈希值>>> myDict = {'name':'earth', 'port':'80'} >>> len(myDict) 2 >>> hash('name') 1...

  • 回答 7

    常用内建属性说明触发方式__init__构造初始化函数创建实例后,赋值时使用,在__new__后__new__生成实例所需属性创建实例时__class__实例所在的类实例.__class____str__实例字符串表示(可读性)print(类实例),如没实现则使用repr结果__repr__实例字符串表示...

  • 回答 4

    ‘‘‘关键字:False:bool数据类型True:bool数据类型None:表示数据的内容为空and:逻辑运算符:与or:逻辑运算符:或not:逻辑运算符:非in:身份运算符,判断变量是否在序列中is :成员运算符,判断变量是否为某个类的实例del:删除变量或序列的值assert:列...

  • 回答 8

    函数注释语法函数注释包括:参数注释:以冒号(:)标记返回值注释:以 -> 标记语法结构大体如下:1、def foo(a: expression, b: expression = 5) -> expression:2、 ...在伪语法中,参数看起来像:identifier [: expression] [= expression]。也就是说,参数...

  • 回答 6

    OpenDoor变量的命名: year_month_day = 2020-7-24 这样写以后都会写很多单词,比较麻烦,可以用ymd代替,然后在第一行或者句尾添加注释说明 a, b, c =1,2, 3 这样的赋值在python中也是可以用的

  • 回答 5

    Python 使用井号#作为单行注释的符号,语法格式为:# 注释内容从井号#开始,直到这行结束为止的所有内容都是注释。Python 解释器遇到#时,会忽略它后面的整行内容。说明多行代码的功能时一般将注释放在代码的上一行多行注释指的是一次性注释程序中多行的内容...

  • 回答 6

    在IDLE中,常用 Alt + 3 给当前行进行注释                           Alt + 4 取消当前行的注释在Pycharm中,常用 Ctrl + / 将所选部分快速注释,再按一次 Ctrl + / 可以将所选部分注释取消...

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