函数是数学中重要的概念,纵观300年来函数的发展,众多数学家从几何、代数,直至对应、集合的角度不断赋予函数概念以新的思想,从而推动了整个数学的发展。本节介绍函数的基础知识和PyTorch中的主要函数及其案例。
函数在数学中是两个不为空的集合间的一种对应关系。下面首先介绍集合的概念。
一般我们把研究对象统称为元素,把一些元素组成的总体叫集合(简称集),集合具有确定性(即给定集合中的元素必须是确定的)和互异性(即给定集合中的元素是互不相同的)。例如“身材较高的人”不能构成集合,因为其元素不是确定的。
通常,用大字拉丁字母 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 。
● (-∞,+∞):表示全体实数,也可记为:-∞< x <+∞。
设 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 | 与z = ,就是相同的函数。
掌握函数的基本性质对于解决相关问题很有帮助,函数通常具有奇偶性、单调性、有界性、周期性等特性。
设函数 y = f ( x )的定义域 D 关于原点对称,若对任意 x∈D 满足 f (- x )= f ( x ),则称 f ( x )是 D 上的偶函数;若对任意 x ∈ D 满足 f (- x )=- f ( x ),则称 f ( x )是 D 上的奇函数。
偶函数的图形关于 y 轴对称,奇函数的图形关于原点对称。
若对任意 x 1 ,x 2 ∈( a , b ),当 x 1 < x 2 时,有 f ( x 1 )< f ( x 2 ),则称函数 y = f ( x )是区间( a , b )上的单调增加函数;当 x 1 < x 2 时,有 f ( x 1 )> f ( x 2 ),则称函数 y = f ( x )是区间( a , b )上的单调减少函数,单调增加函数和单调减少函数统称为单调函数。若函数 y = f ( x )是区间( a , b )上的单调函数,则称区间( a , b )为单调区间。
单调增加的函数图像表现为从左向右是单调上升的曲线,单调下降的函数图像表现为从左向右是单调下降的曲线。
如果存在 M > 0 ,使对于任意 x ∈ D 满足| f ( x ) |≤ M ,则称函数 y = f ( x )是有界的,图像在直线 y =- M 与 y = M 之间。
例如,函数sin x 、cos x 、arcsin x 、arccos x 、arctan x 、arccot x 等都是常见的有界函数。
如果存在常数 T ,使对于任意 x ∈ D , x + T ∈ D ,有 f ( x + T )= f ( x ),则称函数 y = f ( x )是周期函数,通常所说的周期函数的周期是指它的最小周期。
对于周期性函数,在每一个周期内的图像是相同的。
当自变量无限增大或自变量无限接近某一定点时,函数值无限接近某一常数A,这时就叫作函数存在极值。
设函数 y = f ( x ),若对于任意给定的正数 ε (不论其多么小),总存在着正数 X ,使得对于适合不等式| x |> X 的一切 x ,所对应的函数值 f ( x )都满足不等式| f ( x )- A |< ε ,那么常数 A 就叫作函数 y = f ( x )当 x →∞时的极限,记作: lim x →∞ f ( x )= A 。
函数极限的运算规则:若已知 x → x 0 (或 x →∞), f ( x )→ A , g ( x )→ B ,那么:
在计算复杂函数的极限时,可以利用上述的运算规则把一个复杂的函数转化为若干个简单的函数来求极限。
在自变量的某个变化过程中,以零为极限的变量称为该极限过程中的无穷小量,简称无穷小。例如,如果 ,当 x→x 0 时, f ( x )是无穷小量。一般说来,无穷小表达的是变量的变化状态,而不是变量的大小,一个变量无论多么小,都不能是无穷小量,数值0是唯一可以作为无穷小的常数。
在自变量的某个变化过程中,绝对值可以无限增大的变量称为这个变化过程中的无穷大量,简称无穷大,无穷大量是极限不存在的一种情形。例如,如果 ,当 x→x 0 时, f ( x )是无穷大量。
在自变量的变化过程中,无穷大量的倒数是无穷小量,不为零的无穷小量的倒数是无穷大量。
PyTorch中的常用函数有创建张量函数、随机抽样函数、索引函数、切片函数、连接函数、数学运算函数、逐点操作函数、比较操作函数等类型。
下面将以随机抽样函数为例进行介绍。在PyTorch中,共有5种随机抽样函数。
用于生成不确定的随机数,返回一个64位的数值。
参数:无。
例如,生成一个64位的随机数,代码如下:
torch.seed()
输出如下:
105502436695500
设定生成随机数的种子,并返回一个torch.Generator对象。
参数:种子seed为int类型或long类型。
例如,为了确保生成的随机数都是固定的,可以使用torch.manual_seed()函数,代码如下:
torch.manual_seed(1)
输出如下:
<torch._C.Generator at 0x179345f5bd0>
返回生成随机数的原始种子值。
例如,生成一个原始种子,代码如下:
torch.initial_seed()
输出如下:
12
返回随机生成器状态(Byte Tensor)。
例如,生成一个随机生成器状态,代码如下:
torch.get_rng_state()
输出如下:
tensor([12, 0, 0, ..., 0, 0, 0], dtype=torch.uint8)
设定随机生成器状态。
参数: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)