PyTorch学习笔记之基础函数篇(十三)
文章目录
- 7.7 torch.ceil() 函数
- 7.8 torch.floor() 函数
- 7.9 torch.clamp() 函数
- 7.10 torch.neg() 函数
- 7.11 torch.reciprocal() 函数
- 7.12 torch.rsqrt() 函数
- 7.13 torch.sqrt() 函数
7.7 torch.ceil() 函数
在PyTorch中,torch.ceil 函数用于对张量(tensor)中的每个元素向上取整,即对每个元素找到不小于它的最小整数。这个函数对于处理需要向上取整的数学运算或者对于需要将数据调整到特定范围的场景非常有用。
函数签名如下:
torch.ceil(input, *, out=None) → Tensor
参数解释:
- input (Tensor): 需要向上取整的输入张量。
- out (Tensor, optional): 输出张量。如果提供,则结果将写入这个张量中,并且函数将返回这个张量。
以下是一个使用 torch.ceil 的例子:
import torch
# 创建一个张量
x = torch.tensor([1.2, 2.7, -0.3, 3.8, -4.5])
# 对张量中的每个元素向上取整
y = torch.ceil(x)
# 打印结果
print(y)
输出将会是:
tensor([ 2., 3., -0., 4., -4.])
在这个例子中,torch.ceil 函数将张量 x 中的每个元素向上取整,并将结果存储在 y 中。可以看到,正数元素都被向上取整到了最近的整数,而负数元素也被向上取整到了不小于它们的最小整数(即向零方向取整)。
在神经网络和深度学习中,torch.ceil 函数可能不常用作激活函数,但它可以用于数据的预处理、后处理或者在某些特定的数学运算中。
7.8 torch.floor() 函数
在PyTorch中,torch.floor 函数用于对张量中的每个元素向下取整,即对每个元素找到不大于它的最大整数。这个函数在需要执行向下取整操作的场景中非常有用,例如,在图像处理、数据预处理或某些数学运算中。
函数签名如下:
torch.floor(input, *, out=None) → Tensor
参数解释:
- input (Tensor): 需要向下取整的输入张量。
- out (Tensor, optional): 输出张量。如果提供,则结果将写入这个张量中,并且函数将返回这个张量。
下面是一个使用 torch.floor 的例子:
import torch
# 创建一个张量
x = torch.tensor([1.2, 2.7, -0.3, 3.8, -4.5])
# 对张量中的每个元素向下取整
y = torch.floor(x)
# 打印结果
print(y)
输出将会是:
tensor([1., 2., -1., 3., -5.])
在这个例子中,torch.floor 函数将张量 x 中的每个元素向下取整,并将结果存储在 y 中。可以看到,正数元素都被向下取整到了最近的整数,而负数元素也被向下取整到了不大于它们的最大整数。
在深度学习和神经网络中,torch.floor 函数可能不常用作激活函数,但在数据预处理、后处理或某些特定的数学运算中可能会用到。
7.9 torch.clamp() 函数
在PyTorch中,torch.clamp 函数用于将张量(tensor)中的元素限制在一个指定的范围内。换句话说,它可以将张量中的每个元素限制在一个最小值和最大值之间。如果张量中的某个元素小于最小值,它将被设置为最小值;如果大于最大值,它将被设置为最大值;如果介于两者之间,则保持不变。
函数签名如下:
torch.clamp(input, min, max, out=None) → Tensor
参数解释:
- input (Tensor): 需要进行限制的输入张量。
- min (Number): 允许的最小值。
- max (Number): 允许的最大值。
- out (Tensor, optional): 输出张量。如果提供,则结果将写入这个张量中,并且函数将返回这个张量。
torch.clamp 是一种非常有用的函数,可以在数据预处理、后处理或神经网络中的任何需要限制数据范围的地方使用。
下面是一个使用 torch.clamp 的例子:
import torch
# 创建一个张量
x = torch.tensor([-1.0, 0.5, 2.0, 3.5, -4.0])
# 将张量中的元素限制在 [0, 2] 范围内
y = torch.clamp(x, min=0, max=2)
# 打印结果
print(y)
输出将会是:
tensor([0., 0.5000, 2.0000, 2.0000, 0.0000])
在这个例子中,torch.clamp 函数将张量 x 中的每个元素限制在了 [0, 2] 的范围内。所有小于 0 的元素都被设置为了 0,所有大于 2 的元素都被设置为了 2,而介于 0 和 2 之间的元素保持不变。
7.10 torch.neg() 函数
在PyTorch中,torch.neg 函数用于计算张量(tensor)中每个元素的相反数(即负数)1。
函数签名如下:
torch.neg(input, *, out=None) → Tensor
参数解释:
- input (Tensor):需要进行相反数计算的输入张量。
- out (Tensor, optional):输出张量。如果提供,则结果将写入这个张量中,并且函数将返回这个张量。
torch.neg 函数会返回一个新的张量,其中包含了输入张量中每个元素的相反数。
以下是一个使用 torch.neg 的例子:
import torch
# 创建一个张量
x = torch.tensor([1.0, -2.0, 3.0])
# 计算张量中每个元素的相反数
y = torch.neg(x)
# 打印结果
print(y)
输出将会是:
tensor([-1.0000, 2.0000, -3.0000])
在这个例子中,torch.neg 函数计算了张量 x 中每个元素的相反数,并将结果存储在 y 中。可以看到,y 中的每个元素都是 x 中对应元素的相反数
7.11 torch.reciprocal() 函数
在PyTorch中,torch.reciprocal 函数用于计算张量(tensor)中每个元素的倒数。
函数签名如下:
torch.reciprocal(input, *, out=None) → Tensor
参数解释:
- input (Tensor): 需要计算倒数的输入张量。
- out (Tensor, optional): 输出张量。如果提供,则结果将写入这个张量中,并且函数将返回这个张量。
torch.reciprocal 函数会返回一个新的张量,其中包含了输入张量中每个元素的倒数。与NumPy的倒数函数不同,torch.reciprocal 支持整数输入。如果输入张量中包含整数,那么它们的倒数将被自动提升为默认标量类型(通常是浮点数)。
以下是一个使用 torch.reciprocal 的例子:
import torch
# 创建一个张量
x = torch.tensor([1.0, 2.0, 3.0])
# 计算张量中每个元素的倒数
y = torch.reciprocal(x)
# 打印结果
print(y)
输出将会是:
tensor([1., 0.5000, 0.3333])
在这个例子中,torch.reciprocal 函数计算了张量 x 中每个元素的倒数,并将结果存储在 y 中。可以看到,y 中的每个元素都是 x 中对应元素的倒数。
7.12 torch.rsqrt() 函数
在PyTorch中,torch.rsqrt 函数用于计算张量(tensor)中每个元素的平方根的倒数(即1除以平方根)。这对于某些数学运算和机器学习算法(如梯度下降的优化步骤)中可能需要计算平方根倒数的情况非常有用。
函数签名如下:
torch.rsqrt(input, *, out=None) → Tensor
参数解释:
- input (Tensor): 需要计算平方根倒数的输入张量。
- out (Tensor, optional): 输出张量。如果提供,则结果将写入这个张量中,并且函数将返回这个张量。
torch.rsqrt 会返回一个新的张量,其中包含了输入张量中每个元素的平方根倒数。
下面是一个使用 torch.rsqrt 的例子:
import torch
# 创建一个张量
x = torch.tensor([1.0, 4.0, 9.0])
# 计算张量中每个元素的平方根倒数
y = torch.rsqrt(x)
# 打印结果
print(y)
输出将会是:
tensor([1.0000, 0.5000, 0.3333])
在这个例子中,torch.rsqrt 函数计算了张量 x 中每个元素的平方根倒数,并将结果存储在 y 中。可以看到,y 中的每个元素都是 x 中对应元素的平方根倒数。
注意:对于负数,torch.rsqrt 会返回 nan(不是一个数字),因为负数没有实数平方根。因此,在使用此函数之前,确保输入张量不包含负数,或者对负数进行适当处理。
7.13 torch.sqrt() 函数
在PyTorch中,torch.sqrt 函数用于计算张量(tensor)中每个元素的平方根。
函数签名如下:
torch.sqrt(input, *, out=None) → Tensor
参数解释:
- input (Tensor):需要进行平方根计算的输入张量。
- out (Tensor, optional):输出张量。如果提供,则结果将写入这个张量中,并且函数将返回这个张量。
torch.sqrt 函数会返回一个新的张量,其中包含了输入张量中每个元素的平方根。如果输入张量中包含负数元素,那么函数将返回NaN(不是一个数字)值,因为负数没有实数平方根。
以下是一个使用 torch.sqrt 的例子:
import torch
# 创建一个张量
x = torch.tensor([4.0, 9.0, 16.0])
# 计算张量中每个元素的平方根
y = torch.sqrt(x)
# 打印结果
print(y)
输出将会是:
tensor([2., 3., 4.])
在这个例子中,torch.sqrt 函数计算了张量 x 中每个元素的平方根,并将结果存储在 y 中。可以看到,y 中的每个元素都是 x 中对应元素的平方根。
注意:torch.sqrt 只支持非负数的平方根计算。如果输入包含负数,你需要先处理这些负数(例如,通过取绝对值或应用其他适当的转换),然后再调用 torch.sqrt。