mirror of
https://github.com/pytorch/pytorch.git
synced 2025-11-05 08:24:57 +08:00
[numpy] torch.{all/any} : output dtype is always bool (#47878)
Summary: BC-breaking note: This PR changes the behavior of the any and all functions to always return a bool tensor. Previously these functions were only defined on bool and uint8 tensors, and when called on uint8 tensors they would also return a uint8 tensor. (When called on a bool tensor they would return a bool tensor.) PR summary: https://github.com/pytorch/pytorch/pull/44790#issuecomment-725596687 Fixes 2 and 3 Also Fixes https://github.com/pytorch/pytorch/issues/48352 Changes * Output dtype is always `bool` (consistent with numpy) **BC Breaking (Previously used to match the input dtype**) * Uses vectorized version for all dtypes on CPU * Enables test for complex * Update doc for `torch.all` and `torch.any` TODO * [x] Update docs * [x] Benchmark * [x] Raise issue on XLA Pull Request resolved: https://github.com/pytorch/pytorch/pull/47878 Reviewed By: albanD Differential Revision: D25714324 Pulled By: mruberry fbshipit-source-id: a87345f725297524242d69402dfe53060521ea5d
This commit is contained in:
committed by
Facebook GitHub Bot
parent
a4f30d48d8
commit
5d45140d68
@ -432,45 +432,9 @@ Examples::
|
||||
|
||||
add_docstr_all('all',
|
||||
r"""
|
||||
.. function:: all() -> bool
|
||||
all(dim=None, keepdim=False) -> Tensor
|
||||
|
||||
Returns True if all elements in the tensor are True, False otherwise.
|
||||
|
||||
Example::
|
||||
|
||||
>>> a = torch.rand(1, 2).bool()
|
||||
>>> a
|
||||
tensor([[False, True]], dtype=torch.bool)
|
||||
>>> a.all()
|
||||
tensor(False, dtype=torch.bool)
|
||||
|
||||
.. function:: all(dim, keepdim=False, out=None) -> Tensor
|
||||
|
||||
Returns True if all elements in each row of the tensor in the given
|
||||
dimension :attr:`dim` are True, False otherwise.
|
||||
|
||||
If :attr:`keepdim` is ``True``, the output tensor is of the same size as
|
||||
:attr:`input` except in the dimension :attr:`dim` where it is of size 1.
|
||||
Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting
|
||||
in the output tensor having 1 fewer dimension than :attr:`input`.
|
||||
|
||||
Args:
|
||||
dim (int): the dimension to reduce
|
||||
keepdim (bool): whether the output tensor has :attr:`dim` retained or not
|
||||
out (Tensor, optional): the output tensor
|
||||
|
||||
Example::
|
||||
|
||||
>>> a = torch.rand(4, 2).bool()
|
||||
>>> a
|
||||
tensor([[True, True],
|
||||
[True, False],
|
||||
[True, True],
|
||||
[True, True]], dtype=torch.bool)
|
||||
>>> a.all(dim=1)
|
||||
tensor([ True, False, True, True], dtype=torch.bool)
|
||||
>>> a.all(dim=0)
|
||||
tensor([ True, False], dtype=torch.bool)
|
||||
See :func:`torch.all`
|
||||
""")
|
||||
|
||||
add_docstr_all('allclose',
|
||||
@ -489,45 +453,9 @@ See :func:`torch.angle`
|
||||
|
||||
add_docstr_all('any',
|
||||
r"""
|
||||
.. function:: any() -> bool
|
||||
any(dim=None, keepdim=False) -> Tensor
|
||||
|
||||
Returns True if any elements in the tensor are True, False otherwise.
|
||||
|
||||
Example::
|
||||
|
||||
>>> a = torch.rand(1, 2).bool()
|
||||
>>> a
|
||||
tensor([[False, True]], dtype=torch.bool)
|
||||
>>> a.any()
|
||||
tensor(True, dtype=torch.bool)
|
||||
|
||||
.. function:: any(dim, keepdim=False, out=None) -> Tensor
|
||||
|
||||
Returns True if any elements in each row of the tensor in the given
|
||||
dimension :attr:`dim` are True, False otherwise.
|
||||
|
||||
If :attr:`keepdim` is ``True``, the output tensor is of the same size as
|
||||
:attr:`input` except in the dimension :attr:`dim` where it is of size 1.
|
||||
Otherwise, :attr:`dim` is squeezed (see :func:`torch.squeeze`), resulting
|
||||
in the output tensor having 1 fewer dimension than :attr:`input`.
|
||||
|
||||
Args:
|
||||
dim (int): the dimension to reduce
|
||||
keepdim (bool): whether the output tensor has :attr:`dim` retained or not
|
||||
out (Tensor, optional): the output tensor
|
||||
|
||||
Example::
|
||||
|
||||
>>> a = torch.randn(4, 2) < 0
|
||||
>>> a
|
||||
tensor([[ True, True],
|
||||
[False, True],
|
||||
[ True, True],
|
||||
[False, False]])
|
||||
>>> a.any(1)
|
||||
tensor([ True, True, True, False])
|
||||
>>> a.any(0)
|
||||
tensor([True, True])
|
||||
See :func:`torch.any`
|
||||
""")
|
||||
|
||||
add_docstr_all('apply_',
|
||||
|
||||
Reference in New Issue
Block a user