PyTorch中的函数(新手必看)
函数是数学中的一个核心概念,纵观300年来函数的发展,众多数学家从几何、代数、集合等角度不断赋予函数概念以新的思想,从而推动了整个数学的发展。本节介绍函数的基础知识和PyTorch中的主要函数及其案例。
通常,用大写拉丁字母 A、B、C、… 表示集合,用小写拉丁字母 a、b、c、… 表示集合中的元素,如果 a 是集合 A 中的元素,就说 a 属于 A,记作:a∈A。
在观察某一现象的过程中,常常会遇到各种不同的量,其中有的量在整个过程中保持不变,我们将这些量称为常量;而有的量在整个过程中会发生变化,也就是可以取不同的数值,则称之为变量。
如果变量的变化是连续的,则常用区间来表示其变化范围,在数轴上,区间是指介于某两点之间的线段上点的全体,其中区间的类型主要有如下 7 种类型:
y 是 x 的对应函数值,记为:
由函数定义可以看出,函数是一种对应规则,在函数 y=f(x) 中,f 表示对应规则,f(x) 是对应自变量 x 的函数值,但在研究函数时,这种对应关系总是通过函数值的形式表现出来的,所以习惯上把在 x 处的函数值 y 称为函数,并用 y=f(x)的形式表示 y 是 x 的函数,但是应正确理解,函数的本质是指对应规则 f。
函数 y=f(x) 的定义域 D 是自变量 x 的取值范围,而函数值 y 又是由对应规则 f 来确定的,所以函数实质上是由其定义域 D 和对应规则 f 所确定的,通常称函数的定义域和对应规则为函数的两个要素。也就是说,只要两个函数的定义域相同,对应规则也相同,就称这两个函数为相同的函数,与变量用什么符号表示无关,如 y=|x| 与
上面两个就是相同的函数。
掌握函数的基本性质对于解决相关问题很有帮助,函数通常具有奇偶性、单调性、有界性、周期性等特性。
偶函数的图形关于 y 轴对称,奇函数的图形关于原点对称。
单调增加函数和单调减少函数统称为单调函数。若函数 y=f(x) 是区间 (a,b) 上的单调函数,则称区间 (a,b) 为单调区间。
单调增加的函数图像表现为从左向右单调上升的曲线,单调下降的函数图像表现为从左向右单调下降的曲线。
例如,函数 sinx、cosx、arcsinx、arccosx、arctanx、arccotx 是常见的有界函数。
对于周期性函数,在每一个周期内的图像是相同的。
函数极限的运算规则,若已知 x→x0(或 x→∞)时,f(x)→A,g(x)→B,那么:
在计算复杂函数的极限时,可以利用上述运算规则把一个复杂的函数转换为若干简单的函数来求极限。
例如,如果:
当 x→x0 时,f(x) 是无穷小量。一般来说,无穷小表达的是变量的变化状态,而不是变量的大小,一个变量无论多么小,都不能是无穷小量,数值 0 是唯一可以作为无穷小量的常数。
在自变量的某个变化过程中,绝对值可以无限增大的变量称为这个变化过程中的无穷大量,简称无穷大,无穷大量是极限不存在的一种情形,例如,如果:
当 x→x0 时,f(x) 是无穷大量。
在自变量的变化过程中,无穷大量的倒数是无穷小量,不为零的无穷小量的倒数是无穷大量。
下面将以随机抽样函数为例进行介绍,在 PyTorch 中,共有 5 种随机抽样函数。
此函数没有参数。例如,生成一个 64 位的随机数,代码如下:
例如,为了确保生成的随机数都是固定的,可以使用 torch.manual_seed() 函数,代码如下:
例如,生成一个原始种子,代码如下:
例如,生成一个随机生成器状态,代码如下:
例如,设定一个随机生成器状态,代码如下:
PyTorch函数的基础知识
函数在数学中是两个不为空的集合间的一种对应关系,下面首先介绍一下集合的概念。1、集合
一般情况下,我们把研究对象统称为元素,把一些元素组成的总体叫集合(简称集),集合具有确定性(即给定集合的元素必须是确定的)和互异性(即给定集合中的元素是互不相同的)。例如“身高较高的人”不能构成集合,因为它的元素是不确定的。通常,用大写拉丁字母 A、B、C、… 表示集合,用小写拉丁字母 a、b、c、… 表示集合中的元素,如果 a 是集合 A 中的元素,就说 a 属于 A,记作:a∈A。
在观察某一现象的过程中,常常会遇到各种不同的量,其中有的量在整个过程中保持不变,我们将这些量称为常量;而有的量在整个过程中会发生变化,也就是可以取不同的数值,则称之为变量。
如果变量的变化是连续的,则常用区间来表示其变化范围,在数轴上,区间是指介于某两点之间的线段上点的全体,其中区间的类型主要有如下 7 种类型:
表示法 | 描述 |
---|---|
(a, b) | 大于 a,小于 b 的实数全体,也可记为:a<x<b。 |
[a, b) | 大于或等于 a,小于 b 的实数全体,也可记为:a≤x<b。 |
(a, b] | 大于 a,小于或等于 b 的实数全体,也可记为:a<x≤b。 |
[a, b] | 大于或等于 a,小于或等于 b 的实数全体,也可记为:a≤x≤b。 |
[a, +∞) | 不小于 a 的实数的全体,也可记为:a≤x<+∞。 |
(-∞, b) | 小于 b 的实数的全体,也可记为:-∞<x<b。 |
(-∞, b) | 表示小于b的实数的全体,也可记为:-∞<x<b。 |
(-∞, +∞) | 表示全体实数,也可记为:-∞<x<+∞。 |
2、函数
设 D 与 B 是两个非空实数集,如果存在一个对应规则 f,使得对于 D 中任何一个实数 x,在 B 中都有唯一确定的实数 y 与 x 对应,则对应规则 f 称为在 D 上的函数,记为:f:x→y 或 f:D→B
y 是 x 的对应函数值,记为:
y=f(x),x∈D
其中,x 称为自变量,y 称为因变量。由函数定义可以看出,函数是一种对应规则,在函数 y=f(x) 中,f 表示对应规则,f(x) 是对应自变量 x 的函数值,但在研究函数时,这种对应关系总是通过函数值的形式表现出来的,所以习惯上把在 x 处的函数值 y 称为函数,并用 y=f(x)的形式表示 y 是 x 的函数,但是应正确理解,函数的本质是指对应规则 f。
函数 y=f(x) 的定义域 D 是自变量 x 的取值范围,而函数值 y 又是由对应规则 f 来确定的,所以函数实质上是由其定义域 D 和对应规则 f 所确定的,通常称函数的定义域和对应规则为函数的两个要素。也就是说,只要两个函数的定义域相同,对应规则也相同,就称这两个函数为相同的函数,与变量用什么符号表示无关,如 y=|x| 与

上面两个就是相同的函数。
掌握函数的基本性质对于解决相关问题很有帮助,函数通常具有奇偶性、单调性、有界性、周期性等特性。
1) 奇偶性
设函数 y=f(x) 的定义域 D 关于原点对称,若对任意 x∈D 满足 f(-x)=f(x),则称 f(x) 是 D 上的偶函数;若对任意 x∈D 满足 f(-x)=-f(x),则称 f(x) 是 D 上的奇函数。偶函数的图形关于 y 轴对称,奇函数的图形关于原点对称。
2) 单调性
若对任意 x1,x2∈(a,b):- 当 x1<x2 时,有 f(x1)<f(x2),则称函数 y=f(x) 是区间 (a,b) 上的单调增加函数;
- 当 x1<x2 时,有 f(x1)>f(x2),则称函数 y=f(x) 是区间 (a,b) 上的单调减少函数。
单调增加函数和单调减少函数统称为单调函数。若函数 y=f(x) 是区间 (a,b) 上的单调函数,则称区间 (a,b) 为单调区间。
单调增加的函数图像表现为从左向右单调上升的曲线,单调下降的函数图像表现为从左向右单调下降的曲线。
3) 有界性
如果存在 M>0,使对于任意 x∈D 满足 |f(x)|≤M,则称函数 y=f(x) 是有界的,图像在直线 y=-M 与 y=M 之间。例如,函数 sinx、cosx、arcsinx、arccosx、arctanx、arccotx 是常见的有界函数。
4) 周期性
如果存在常数 T,使对于任意 x∈D,x+T∈D,有 f(x+T)=f(x),则称函数 y=f(x) 是周期函数,通常所说的周期函数的周期是指它的最小周期。对于周期性函数,在每一个周期内的图像是相同的。
3、极限
当自变量无限增大或自变量无限接近某一定点时,函数值无限接近某一常数 A,这时就叫作函数存在极值。1) 自变量趋向无穷大时函数的极限
设函数 y=f(x),若对于任意给定的正数 ε(不论其多么小),总存在着正数 X,使得对于适合不等式 |x|>X 的一切 x,所对应的函数值 f(x) 都满足不等式 |f(x)-A|<ε,那么常数 A 就叫作函数 y=f(x),当 x→∞ 时的极限,记作:
函数极限的运算规则,若已知 x→x0(或 x→∞)时,f(x)→A,g(x)→B,那么:

在计算复杂函数的极限时,可以利用上述运算规则把一个复杂的函数转换为若干简单的函数来求极限。
2) 无穷小量与无穷大量
在自变量的某个变化过程中,以零为极限的变量称为该极限过程中的无穷小量,简称无穷小。例如,如果:

当 x→x0 时,f(x) 是无穷小量。一般来说,无穷小表达的是变量的变化状态,而不是变量的大小,一个变量无论多么小,都不能是无穷小量,数值 0 是唯一可以作为无穷小量的常数。
在自变量的某个变化过程中,绝对值可以无限增大的变量称为这个变化过程中的无穷大量,简称无穷大,无穷大量是极限不存在的一种情形,例如,如果:

当 x→x0 时,f(x) 是无穷大量。
在自变量的变化过程中,无穷大量的倒数是无穷小量,不为零的无穷小量的倒数是无穷大量。
PyTorch中的主要函数
PyTorch 中的常用函数有创建张量函数、随机抽样函数、索引函数、切片函数、连接函数、数学运算函数、逐点操作函数、比较操作函数等类型。下面将以随机抽样函数为例进行介绍,在 PyTorch 中,共有 5 种随机抽样函数。
1) torch.seed()
用于生成不确定的随机数,返回一个 64 位的数值。此函数没有参数。例如,生成一个 64 位的随机数,代码如下:
torch.seed()输出如下:
105502436695500
2) torch.manual_seed(seed)
设定生成随机数的种子,并返回一个 torch.Generator 对象。参数 seed 为 int 类型或 long 类型。例如,为了确保生成的随机数都是固定的,可以使用 torch.manual_seed() 函数,代码如下:
torch.manual_seed(12)输出如下:
<torch._C.Generator at 0x179345f5bd0>
3) torch.initial_seed()
返回生成随机数的原始种子值。例如,生成一个原始种子,代码如下:
torch.initial_seed()输出如下所示:
12
4) torch.get_rng_state()
返回随机生成器状态(Byte Tensor)。例如,生成一个随机生成器状态,代码如下:
torch.get_rng_state()输出如下:
tensor([12, 0, 0, ..., 0, 0, 0], dtype=torch.uint8)
5) torch.set_rng_state(new_state)
设定随机生成器状态。参数 new_state 是指期望的状态。例如,设定一个随机生成器状态,代码如下:
rng_state1 = torch.get_rng_state() print(rng_state1) torch.set_rng_state(rng_state1*2) rng_state2 = torch.get_rng_state() print(rng_state2)输出如下:
tensor([12, 0, 0, ..., 0, 0, 0], dtype=torch.uint8)
tensor([24, 0, 0, ..., 0, 0, 0], dtype=torch.uint8)