Python PyTorch clamp()方法

2025年3月5日 | 阅读 3 分钟

要将每个分量裁剪到范围 [min, max],请调用 torch.clamp()。需要三个边界:数据张量、基数和最大值。小于 min 的值将被替换为 min,大于 maximum 的值将被替换为 maximum。

如果未给出 min,则没有下限。如果省略了 Max,则不会有上限。假设 min 和 max 分别设置为 -0.5 和 0.4,则小于 -0.5 或大于 0.4 的值将被替换。这些值之间的区域没有变化。它只接受具有实际值的输入。

语法

参数

参数

  • input - 输入张量。
  • min - 下界;它可以是数字或张量。
  • max - 上界;它可以是数字或张量。

在所有输入项都被裁剪到 [min, max] 范围后,将返回一个新的张量。

步骤:

  • 导入必要的库。以下所有示例所需的 Python 模块是 torch。请检查您是否已安装。
  • 创建一个输入张量,然后打印它。
  • 裁剪输入张量的元素。这里,我们使用 min=-0.5,max=0.5。
  • 张量被裁剪后,打印它。

示例 1

下面的 Python 程序裁剪了 1D 输入张量的分量。当 min 或 max 为 None 时,请注意 clamp() 函数如何工作。

输出

 
input tensor: tensor([ 0.7300,  0.3500, -0.3900, -1.5300])
clamp the tensor:
into range [-0.5, 0.5]:
tensor([ 0.5000,  0.3500, -0.3900, -0.5000])
if min is None:
tensor([ 0.5000,  0.3500, -0.3900, -1.5300])
if max is None:
tensor([0.7300, 0.5000, 0.5000, 0.5000])
if min is greater than max:
tensor([0.5000, 0.5000, 0.5000, 0.5000])   

说明

此 Python 代码说明了如何使用 PyTorch 的 torch.clamp() 方法将张量值限制在特定约束范围内。在生成 1D 张量 a 后,torch.clamp() 用于将值裁剪到 [-0.5, 0.5] 区间。演示了几个示例,包括处理 min 大于 max 的情况,以及使用 min 和 max 边界、仅 max 边界和仅 min 边界进行裁剪。显示了每种情况对应的输出,展示了张量值如何响应给定的限制而变化。

示例 2

下面的 Python 程序裁剪了 2D 输入张量的分量。当 min 或 max 为 None 时,请注意 clamp() 函数如何工作。

输出

 
input tensor: tensor([[-0.7272, -1.4916, -0.0681, -0.6933],
        [-0.3091, -1.3365,  1.6109, -0.8578],
        [ 0.7421,  0.6433,  1.6438,  2.3845]])
clamp the tensor:
into range [-0.6, 0.4]:
tensor([[-0.6000, -0.6000, -0.0681, -0.6000],
        [-0.3091, -0.6000,  0.4000, -0.6000],
        [ 0.4000,  0.4000,  0.4000,  0.4000]])
if min is None (max=0.4):
tensor([[-0.7272, -1.4916, -0.0681, -0.6933],
        [-0.3091, -1.3365,  0.4000, -0.8578],
        [ 0.4000,  0.4000,  0.4000,  0.4000]])
if max is None (min=-0.6):
tensor([[-0.6000, -0.6000, -0.0681, -0.6000],
        [-0.3091, -0.6000,  1.6109, -0.6000],
        [ 0.7421,  0.6433,  1.6438,  2.3845]])
if min is greater than max (min=0.6, max=0.4):
tensor([[0.4000, 0.4000, 0.4000, 0.4000],
        [0.4000, 0.4000, 0.4000, 0.4000],
        [0.4000, 0.4000, 0.4000, 0.4000]])   

说明

此 Python 脚本展示了如何使用 PyTorch 的 torch.clamp() 函数将张量数据约束在特定边界内。为了演示具有最小和最大限制、仅最大限制、仅最小限制的情况,以及处理最小限制超过最大限制的情况,它构建了一个 2D 张量并使用 torch.clamp() 将值限制在 -0.6 和 0.4 之间。结果显示了张量值的适当调整。