min
小心
下面列举的三种功能参数输入方式 互斥,混用非公共的参数输入方法将会导致报错,请谨慎使用。
对整个 input tensor 求最小值,见 paddle.amin amin
备注
对输入有多个最小值的情况下,paddle.compat.min
的梯度表现与 paddle.amin
一致:会将梯度平均传回到最小值对应的位置。out
返回方法与静态图联合使用是被禁止的行为,静态图下将报错。
参数
x (Tensor)- Tensor,支持数据类型为 bfloat16、float16、float32、float64、int32、int64(CUDA GPU),而 uint8, int32, int64, float32, float64 在 CPU 设备上被支持。
out (Tensor,可选) - 用于引用式传入输出值,注意:动态图下 out 可以是任意 Tensor,默认值为 None。
返回
Tensor,最小值运算的 Tensor(0D),数据类型和输入数据类型一致。
备注
对输入有多个最小值的情况下,paddle.compat.min 将只返回梯度值给 indices
中选择的位置。out
返回方法与静态图联合使用是被禁止的行为,静态图下将报错。
参数
x (Tensor)- Tensor,支持数据类型为 bfloat16、float16、float32、float64、int32、int64(CUDA GPU),而 uint8, int32, int64, float32, float64 在 CPU 设备上被支持。
dim (list|tuple|int,可选)- 求最小值运算的维度。必须在 \([−x.ndim, x.ndim]\) 范围内。如果 \(dim[i] < 0\),则维度将变为 \(x.ndim+dim[i]\),默认值为 None。注意,手动传入
dim=None
是不允许的,dim
不可显式被指定为 None。如果需要对整个 tensor 求解全局最小值,请使用第一种参数写法。keepdim (bool,可选) - 是否在输出 Tensor 中保留输入的维度。除非 keepdim 为 True,否则输出 Tensor 的维度将比输入 Tensor 小一维,默认值为 False。注意,不传入
dim
时传入本参数是不允许的!out (tuple(Tensor, Tensor),可选) - 用于引用式传入输出值。
values
在前,indices
在后。注意:动态图下 out 可以是任意 Tensor,默认值为 None。
返回
MinMaxRetType(Tensor, Tensor),此处的 MinMaxRetType
是一个具名元组,含有 values
(在前)和 indices
(在后)两个域,用法与 tuple 一致。
与 other
Tensor 计算逐元素最小值。见 paddle.minimum minimum
备注
out
返回方法与静态图联合使用是被禁止的行为,静态图下将报错。
参数
x (Tensor)- Tensor,支持数据类型为 bfloat16、float16、float32、float64、int32、int64(CUDA GPU),而 uint8, int32, int64, float32, float64 在 CPU 设备上被支持。
other (Tensor)- Tensor,支持类型见
x
。注意,other
的 shape 必须可以被广播到x
的 shape。out (Tensor,可选) - 用于引用式传入输出值,注意:动态图下 out 可以是任意 Tensor,默认值为 None。
返回
Tensor,逐元素最小的结果,形状、数据类型与 place 与
x
一致。
代码示例
备注
以下示例为上述三种不同输入方法对应功能的示例。
>>> import paddle
>>> # data_x is a Tensor with shape [2, 4]
>>> # the axis is a int element
>>> x = paddle.to_tensor([[0.2, 0.3, 0.5, 0.9],
... [0.1, 0.2, 0.6, 0.7]],
... dtype='float64', stop_gradient=False)
>>> # Case 1: reduce over all dims
>>> result1 = paddle.compat.min(x)
>>> result1
Tensor(shape=[], dtype=float64, place=Place(gpu:0), stop_gradient=False,
0.10000000)
>>> # Case 2: reduce over specified dim
>>> x.clear_grad()
>>> result2 = paddle.compat.min(x, dim=1)
>>> result2
MinMaxRetType(values=Tensor(shape=[2], dtype=float64, place=Place(gpu:0), stop_gradient=False,
[0.20000000, 0.10000000]), indices=Tensor(shape=[2], dtype=int64, place=Place(gpu:0), stop_gradient=True,
[0, 0]))
>>> result2[0].backward()
>>> x.grad
Tensor(shape=[2, 4], dtype=float64, place=Place(gpu:0), stop_gradient=False,
[[1., 0., 0., 0.],
[1., 0., 0., 0.]])
>>> # Case 3: equivalent to `paddle.minimum`
>>> x.clear_grad()
>>> y = paddle.to_tensor([[0.5, 0.4, 0.1, 0.2],
... [0.3, 0.1, 0.6, 0.7]],
... dtype='float64', stop_gradient=False)
>>> result3 = paddle.compat.min(x, y)
>>> result3
Tensor(shape=[2, 4], dtype=float64, place=Place(gpu:0), stop_gradient=False,
[[0.20000000, 0.30000000, 0.10000000, 0.20000000],
[0.10000000, 0.10000000, 0.60000000, 0.70000000]])