深度学习是人工智能发展的核心支柱。依托深度学习,能够从海量复杂数据中挖掘隐藏规律,完成趋势预测、智能分析等任务。在能源低碳、大数据、数字经济领域拥有广阔落地场景,掌握相关技术,是大数据专业升学、就业的核心优势。
python是深度学习的重要工具。Python拥有丰富的AI开源库,语法简单易学习,全球科研与企业研发普遍使用。依托完整工具生态,可高效完成数据处理、深度学习模型搭建,成为深度学习研发最重要的工具。
了解Python的价值与应用场景后,本次Python升学入门课程正式开启!
本书由于只用到两个简单的库:Numpy和Matplotlib。可以直接安装Anaconda版本(已经包含数据科学领域常用的库),也可以下载IDE:Pycharm或者Vscode再安装Numpy和Matplotlib两个库,轻量化上阵。安装教程已很多。这里不再赘述,假设你已经成功安装Python!

1.1.1算术计算

1.1.2数据类型
数据类型表示数据的性质,有整数、小数、字符串等类型。Python中的type()函数可以用来查看数据类型。

1.1.3变量
可以使用x或y等字母定义变量(variable)。也可以使用变量进行计算,也可以对变量赋值。

1.1.4列表
除了单一的数值,还可以用列表(数组)汇总数据。

元素的访问是通过a[0]这样的方式访问的。[]中的数字成为索引(下标),索引从0开始(索引l0对应第一个元素)。此外Python的列表提供了切片(slicing)这一便捷的标记法。使用切片不仅可以访问某个值,还可以访问列表的子列表(部分列表)。

注意:索引-1对应最后一个元素,-2对应倒数第二个元素。没有-0,因为-0=0
1.1.5字典
列表根据索引,按照0,1,2...的顺序存储值,而字典则以键值对的形式存储数据。

1.1.6布尔型
Python中有bool型。bool型取True或False中的一个值。针对bool型的运算符包括and、or和not。


1.1.7 if语句
根据不同的条件选择不同的处理分支时可以选择if/else语句。

Python中空白字符有重要意义。上面的if语句中,if hungry:下面的语句开头有4个空白字符。它是缩进的意思,表示当前面的条件(ifhungry)成立时,此处的代码会被执行。这个缩进也可以用tab表示,Python中推荐使用空白字符。
1.1.8 for语句
进行循环处理时可以使用for语句。

使用for..in..语句结构,可以按顺序访问列表等数据集合中的各个元素。
1.1.9函数
可以将一连串的处理定义为函数(function)。

1.2 Python脚本文件
Pythone解析器能够以对话模式执行程序,非常便于进行简单的实验。但是想进行一连串的处理时,因为每次都需要输入程序,所以不太方便。这时可以将Python程序保存为文件,然后(集中地)运行这个文件。
1.2.1保存为文件
打开文本编辑器,新建一个hungry.py的文件。接着打开终端(Windows中的命令行窗口),移至hungry.py所在的位置。然后将hungry.py文件名作为参数,运行python命令。
cd~/.../...#移动目录
python hungry.py这样使用python hungry.py命令就可以执行这个Python程序了。
1.2.2类
Python中使用class关键字来定义类,类要遵循下述格式(模版)。class类名:
def__init__(self,参数,...):#构造函数
def 方法名1(self,参数,...):#方法1
def方法名2(self,参数,...):#方法2
这里有一个特殊的__init_方法,这是进行初始化的方法,也称为构造函数(constructor),只在生成类的实例时被调用一次。此外,在方法的第一个参数中明确地写入表示自身(自身的实例)的self是Python的一个特点(学过其他编程语言的人可能会觉得这种写self的方式有一点奇怪)。
下面我们通过一个简单的例子来创建一个类。这里将下面的程序保存为man.py.

1.3 NumPy
在深度学习的实现中,经常出现数组和矩阵的计算。NumPy的数组类中(numpy.array)中提供了很多便捷的方法。本节我们来简单介绍下后面会用到的NumPy.
1.3.1导入NumPy
NumPy是外部库。这里说的”外部”是指不包含在标准版Python中。因此,我们首先要导入NumPy库。

Python中使用imort语句来导入库。这里的import numpy as np,直译的话就是“将numpy作为np导入"的意思。通过写成这样的形式,之后NumPy相关的方法均可通过np来调用。
1.3.2生成NumPy数组
要生成NumPy数组,需要使用np.arrayO方法。np.arrayO接收Python列表作为参数,生成NumPy数组(numpy.ndarray)。

1.3.3NumPy的算数运算
下面是NumPy数组的算数运算的例子。

NumPy数组不进可以进行element-wise运算,也可以和单一的数值(标量)组合来进行运算。此时,需要在NumPy数组的各个元素和标量之间进行运算。这个功能也被称为广播

1.3.4 NumPy的N维数组
NumPy不仅可以生成一维数组(排成一列的数组),也可以生成多维数组。比如可以生成如下的二维数组(矩阵)。


和数组的算术运算一样,矩阵的算术运算也可以在相同形状的矩阵间以对应元素的方式进行。并且,也可以通过标量(单一数值)对矩阵进行算术运算。这也是基于广播的功能。

NumPy数组(np.array)可以生成N维数组,即可以生成一维数组、二维数组、三维数组等任意维数的数组。数学上将一维数组称为向量,将二维数组称为矩阵。另外,可以将一般化之后的向量或矩阵等统称为张量(tensor)。本书基本上将二维数组称为”矩阵”,将三维数组及三维以上的数组称为"张量”或”多维数组”。
1.3.5广播
NumPy中,形状不同的数组之间也可以进行运算。之前的例子中,在2x2的矩阵A和标量10之间进行了乘法运算。在这个过程中,标量10被扩展成了2x2的形状,然后再与矩阵A进行惩罚运算。这个巧妙的功能称为广播(broadcast)。


1.3.6访问元素
元素的索引从0开始。对各个元素的访问可按如下方式进行。



运用这个标记法,可以获取满足一定条件的元素。例如,要从X中抽取大于15的元素,可以写成如下形式。

对NumPy数组使用不等号运算符(上例中是X>15),结果会得到一个布尔型的数组。上例中就是使用这个布尔型数组取出了数组的各个元素(取出True对应的元素)。
1.4 Matplotlib
在深度学习的实验中,图形的绘制和数据的可视化非常重要。Matplotlib是用于绘制图形的库,使用Matplotlib可以轻松地绘制图形和实现数据的可视化。
1.4.1绘制简单图形
可以使用matplotlib的pyplot模块绘制图形。我们来看一个绘制sin函数曲线的例子。


1.4.2 pyplot 的功能
在刚才的sin函数图形中,我们尝试追加cos函数的图形,并尝试使用pyplot的添加标题和x轴标签名等其他功能。


1.4.3显示图像
pyplot中还提供了用于显示图像的方法imshowO)。另外,可以使用matplotlib.image模块的imread()方法读书图像。下面我们来看一个例子。

本章我们完成Python基础入门学习,掌握基础运算、数据类型、变量、列表、循环、函数等核心语法,了解脚本运行、NumPy数组与Matplotlib可视化工具。
通过搭建Python编程基础框架,我们夯实了开展深度学习研究必备的底层能力。
第二章,敬请期待!