Files
pytorch/torch/nn/functional.pyi.in
2025-08-13 09:01:52 +00:00

860 lines
19 KiB
Python

# ${generated_comment}
# mypy: allow-untyped-defs
from collections.abc import Sequence
from typing import Any, Callable, Literal, overload
from typing_extensions import TypeAlias
from torch import Tensor
from torch.types import _dtype, _int, _size
from .common_types import (
_ratio_any_t,
_size_1_t,
_size_2_opt_t,
_size_2_t,
_size_3_opt_t,
_size_3_t,
_size_any_t,
)
__all__ = [
"GRID_SAMPLE_INTERPOLATION_MODES",
"GRID_SAMPLE_PADDING_MODES",
]
# 'TypedDict' is a new accepted type that represents a dictionary with a fixed set of allowed keys.
# It is standards-track but not in `typing` yet. We leave this hear to be uncommented once the feature
# is wide-spread.
# from mypy_extensions import TypedDict
# GRID_SAMPLE_INTERPOLATION_MODES = TypedDict('GRID_SAMPLE_INTERPOLATION_MODES', {'bilinear': int, 'nearest': int})
# GRID_SAMPLE_PADDING_MODES = TypedDict('GRID_SAMPLE_PADDING_MODES', {'zeros': int, 'border': int, 'reflection': int})
GRID_SAMPLE_INTERPOLATION_MODES: TypeAlias = dict[str, int]
GRID_SAMPLE_PADDING_MODES: TypeAlias = dict[str, int]
# These stubs were generated by running stubgen (`stubgen --parse-only functional.py`), followed by manual cleaning.
#
# The 'BroadcastingList{1,2,3}' types were replaced by `_size` or _output_ratio, as appropriate.
# This was necessary since the JIT uses BroadcastingList* types but static checking with mypy etc requires a `Sequence`
# type. There is no way to express the expected lengths of these lists in the current Python typing system.
#
# Functions created via `_add_docstr` in `functional.py` where merely typed as `Any` by `stubgen`, so those were
# deleted from the stub and replaced by generated declarations. See `gen_pyi` for the implementation of the code
# generation logic for those functions. In the future, it might be worth looking into using the mypy plugin system
# to encode the type semantics of `_add_docstr`, should that system ever become widespread.
def _canonical_mask(
mask: Tensor | None,
mask_name: str,
other_type: _dtype | None,
other_name: str,
target_type: _dtype,
check_other: bool = True,
) -> Tensor | None: ...
__all__ += ["_canonical_mask"]
def _none_or_dtype(input: Tensor | None) -> _dtype | None: ...
__all__ += ["_none_or_dtype"]
def adaptive_avg_pool2d(input: Tensor, output_size: _size_2_opt_t) -> Tensor: ...
__all__ += ["adaptive_avg_pool2d"]
def adaptive_avg_pool3d(input: Tensor, output_size: _size_3_opt_t) -> Tensor: ...
__all__ += ["adaptive_avg_pool3d"]
def adaptive_max_pool1d_with_indices(
input: Tensor,
output_size: _size,
return_indices: bool = ...,
) -> tuple[Tensor, Tensor]: ...
__all__ += ["adaptive_max_pool1d_with_indices"]
def adaptive_max_pool2d_with_indices(
input: Tensor,
output_size: _size_2_opt_t,
return_indices: bool = ...,
) -> tuple[Tensor, Tensor]: ...
__all__ += ["adaptive_max_pool2d_with_indices"]
def adaptive_max_pool3d_with_indices(
input: Tensor,
output_size: _size_3_opt_t,
return_indices: bool = ...,
) -> tuple[Tensor, Tensor]: ...
__all__ += ["adaptive_max_pool3d_with_indices"]
def affine_grid(
theta: Tensor,
size: list[int],
align_corners: Any | None = ...,
) -> Tensor: ...
__all__ += ["affine_grid"]
def alpha_dropout(
input: Tensor,
p: float = ...,
training: bool = ...,
inplace: bool = ...,
) -> Tensor: ...
__all__ += ["alpha_dropout"]
def assert_int_or_pair(arg: Any, arg_name: Any, message: Any) -> None: ...
__all__ += ["assert_int_or_pair"]
def batch_norm(
input: Tensor,
running_mean: Tensor | None,
running_var: Tensor | None,
weight: Tensor | None = ...,
bias: Tensor | None = ...,
training: bool = ...,
momentum: float = ...,
eps: float = ...,
) -> Tensor: ...
__all__ += ["batch_norm"]
def binary_cross_entropy_with_logits(
input: Tensor,
target: Tensor,
weight: Tensor | None = ...,
size_average: bool | None = ...,
reduce: bool | None = ...,
reduction: str = ...,
pos_weight: Tensor | None = ...,
) -> Tensor: ...
__all__ += ["binary_cross_entropy_with_logits"]
def binary_cross_entropy(
input: Tensor,
target: Tensor,
weight: Tensor | None = ...,
size_average: bool | None = ...,
reduce: bool | None = ...,
reduction: str = ...,
) -> Tensor: ...
__all__ += ["binary_cross_entropy"]
def celu(input: Tensor, alpha: float = ..., inplace: bool = ...) -> Tensor: ...
__all__ += ["celu"]
def cosine_embedding_loss(
input1: Tensor,
input2: Tensor,
target: Tensor,
margin: float = ...,
size_average: bool | None = ...,
reduce: bool | None = ...,
reduction: str = ...,
) -> Tensor: ...
__all__ += ["cosine_embedding_loss"]
def cross_entropy(
input: Tensor,
target: Tensor,
weight: Tensor | None = ...,
size_average: bool | None = ...,
ignore_index: int = ...,
reduce: bool | None = ...,
reduction: str = ...,
label_smoothing: float = ...,
) -> Tensor: ...
__all__ += ["cross_entropy"]
def ctc_loss(
log_probs: Tensor,
targets: Tensor,
input_lengths: Tensor,
target_lengths: Tensor,
blank: int = ...,
reduction: str = ...,
zero_infinity: bool = ...,
) -> Tensor: ...
__all__ += ["ctc_loss"]
def dropout(
input: Tensor,
p: float = ...,
training: bool = ...,
inplace: bool = ...,
) -> Tensor: ...
__all__ += ["dropout"]
def dropout1d(
input: Tensor,
p: float = ...,
training: bool = ...,
inplace: bool = ...,
) -> Tensor: ...
__all__ += ["dropout1d"]
def dropout2d(
input: Tensor,
p: float = ...,
training: bool = ...,
inplace: bool = ...,
) -> Tensor: ...
__all__ += ["dropout2d"]
def dropout3d(
input: Tensor,
p: float = ...,
training: bool = ...,
inplace: bool = ...,
) -> Tensor: ...
__all__ += ["dropout3d"]
def elu(input: Tensor, alpha: float = ..., inplace: bool = ...) -> Tensor: ...
__all__ += ["elu"]
def embedding_bag(
input: Tensor,
weight: Tensor,
offsets: Tensor | None = ...,
max_norm: float | None = ...,
norm_type: float = ...,
scale_grad_by_freq: bool = ...,
mode: str = ...,
sparse: bool = ...,
per_sample_weights: Tensor | None = ...,
include_last_offset: bool = ...,
padding_idx: int | None = ...,
) -> Tensor: ...
__all__ += ["embedding_bag"]
def embedding(
input: Tensor,
weight: Tensor,
padding_idx: int | None = ...,
max_norm: float | None = ...,
norm_type: float = ...,
scale_grad_by_freq: bool = ...,
sparse: bool = ...,
) -> Tensor: ...
__all__ += ["embedding"]
def feature_alpha_dropout(
input: Tensor,
p: float = ...,
training: bool = ...,
inplace: bool = ...,
) -> Tensor: ...
__all__ += ["feature_alpha_dropout"]
def fold(
input: Tensor,
output_size: _size_any_t,
kernel_size: _size_any_t,
dilation: _size_any_t = ...,
padding: _size_any_t = ...,
stride: _size_any_t = ...,
) -> Tensor: ...
__all__ += ["fold"]
def fractional_max_pool2d_with_indices(
input: Tensor,
kernel_size: _size,
output_size: _size | None = ...,
output_ratio: _ratio_any_t | None = ...,
return_indices: bool = ...,
_random_samples: Tensor | None = ...,
) -> tuple[Tensor, Tensor]: ...
__all__ += ["fractional_max_pool2d_with_indices"]
def fractional_max_pool3d_with_indices(
input: Tensor,
kernel_size: _size,
output_size: _size | None = ...,
output_ratio: _ratio_any_t | None = ...,
return_indices: bool = ...,
_random_samples: Tensor | None = ...,
) -> tuple[Tensor, Tensor]: ...
__all__ += ["fractional_max_pool3d_with_indices"]
def gaussian_nll_loss(
input: Tensor,
target: Tensor,
var: Tensor | float,
full: bool | None = ...,
eps: float | None = ...,
reduction: str | None = ...,
) -> Tensor: ...
__all__ += ["gaussian_nll_loss"]
def glu(input: Tensor, dim: int = ...) -> Tensor: ...
__all__ += ["glu"]
def grid_sample(
input: Tensor,
grid: Tensor,
mode: str = ...,
padding_mode: str = ...,
align_corners: Any | None = ...,
) -> Tensor: ...
__all__ += ["grid_sample"]
def group_norm(
input: Tensor,
num_groups: int,
weight: Tensor | None = ...,
bias: Tensor | None = ...,
eps: float = ...,
) -> Tensor: ...
__all__ += ["group_norm"]
def gumbel_softmax(
logits: Tensor,
tau: float = ...,
hard: bool = ...,
eps: float = ...,
dim: int = ...,
) -> Tensor: ...
__all__ += ["gumbel_softmax"]
def hardsigmoid(input: Tensor, inplace: bool = False) -> Tensor: ...
__all__ += ["hardsigmoid"]
def hardswish(input: Tensor, inplace: bool = False) -> Tensor: ...
__all__ += ["hardswish"]
def hardtanh(
input: Tensor,
min_val: float = ...,
max_val: float = ...,
inplace: bool = ...,
) -> Tensor: ...
__all__ += ["hardtanh"]
def hinge_embedding_loss(
input: Tensor,
target: Tensor,
margin: float = ...,
size_average: bool | None = ...,
reduce: bool | None = ...,
reduction: str = ...,
) -> Tensor: ...
__all__ += ["hinge_embedding_loss"]
def huber_loss(
input: Tensor,
target: Tensor,
reduction: str = ...,
delta: float = ...,
) -> Tensor: ...
__all__ += ["huber_loss"]
def instance_norm(
input: Tensor,
running_mean: Tensor | None = ...,
running_var: Tensor | None = ...,
weight: Tensor | None = ...,
bias: Tensor | None = ...,
use_input_stats: bool = ...,
momentum: float = ...,
eps: float = ...,
) -> Tensor: ...
__all__ += ["instance_norm"]
def interpolate(
input: Tensor,
size: int | Sequence[int] | None = ...,
scale_factor: float | Sequence[float] | None = ...,
mode: str = ...,
align_corners: bool | None = ...,
recompute_scale_factor: bool | None = ...,
antialias: bool = ...,
) -> Tensor: ...
__all__ += ["interpolate"]
def kl_div(
input: Tensor,
target: Tensor,
size_average: bool | None = ...,
reduce: bool | None = ...,
reduction: str = ...,
log_target: bool = ...,
) -> Tensor: ...
__all__ += ["kl_div"]
def l1_loss(
input: Tensor,
target: Tensor,
size_average: bool | None = ...,
reduce: bool | None = ...,
reduction: str = ...,
) -> Tensor: ...
__all__ += ["l1_loss"]
def layer_norm(
input: Tensor,
normalized_shape: Sequence[int],
weight: Tensor | None = ...,
bias: Tensor | None = ...,
eps: float = ...,
) -> Tensor: ...
__all__ += ["layer_norm"]
def leaky_relu(
input: Tensor,
negative_slope: float = ...,
inplace: bool = ...,
) -> Tensor: ...
__all__ += ["leaky_relu"]
def local_response_norm(
input: Tensor,
size: int,
alpha: float = ...,
beta: float = ...,
k: float = ...,
) -> Tensor: ...
__all__ += ["local_response_norm"]
def log_softmax(
input: Tensor,
dim: int | None = ...,
_stacklevel: int = ...,
dtype: _dtype | None = ...,
) -> Tensor: ...
__all__ += ["log_softmax"]
def lp_pool1d(
input: Tensor,
norm_type: float,
kernel_size: _size_1_t,
stride: _size | None | int = ...,
ceil_mode: bool = ...,
) -> Tensor: ...
__all__ += ["lp_pool1d"]
def lp_pool2d(
input: Tensor,
norm_type: float,
kernel_size: _size_2_t,
stride: _size | None | int = ...,
ceil_mode: bool = ...,
) -> Tensor: ...
__all__ += ["lp_pool2d"]
def lp_pool3d(
input: Tensor,
norm_type: float,
kernel_size: _size_3_t,
stride: _size | None | int = ...,
ceil_mode: bool = ...,
) -> Tensor: ...
__all__ += ["lp_pool3d"]
def margin_ranking_loss(
input1: Tensor,
input2: Tensor,
target: Tensor,
margin: float = ...,
size_average: bool | None = ...,
reduce: bool | None = ...,
reduction: str = ...,
) -> Tensor: ...
__all__ += ["margin_ranking_loss"]
def max_pool1d_with_indices(
input: Tensor,
kernel_size: _size,
stride: _size | None = ...,
padding: _size = ...,
dilation: _size = ...,
ceil_mode: bool = ...,
return_indices: bool = ...,
) -> tuple[Tensor, Tensor]: ...
__all__ += ["max_pool1d_with_indices"]
def max_pool2d_with_indices(
input: Tensor,
kernel_size: _size,
stride: _size | None = ...,
padding: _size = ...,
dilation: _size = ...,
ceil_mode: bool = ...,
return_indices: bool = ...,
) -> tuple[Tensor, Tensor]: ...
__all__ += ["max_pool2d_with_indices"]
def max_pool3d_with_indices(
input: Tensor,
kernel_size: _size,
stride: _size | None = ...,
padding: _size = ...,
dilation: _size = ...,
ceil_mode: bool = ...,
return_indices: bool = ...,
) -> tuple[Tensor, Tensor]: ...
__all__ += ["max_pool3d_with_indices"]
def max_unpool1d(
input: Tensor,
indices: Tensor,
kernel_size: _size,
stride: _size | None = ...,
padding: _size = ...,
output_size: _size | None = ...,
) -> Tensor: ...
__all__ += ["max_unpool1d"]
def max_unpool2d(
input: Tensor,
indices: Tensor,
kernel_size: _size,
stride: _size | None = ...,
padding: _size = ...,
output_size: _size | None = ...,
) -> Tensor: ...
__all__ += ["max_unpool2d"]
def max_unpool3d(
input: Tensor,
indices: Tensor,
kernel_size: _size,
stride: _size | None = ...,
padding: _size = ...,
output_size: _size | None = ...,
) -> Tensor: ...
__all__ += ["max_unpool3d"]
def mish(input: Tensor, inplace: bool = False) -> Tensor: ...
__all__ += ["mish"]
def mse_loss(
input: Tensor,
target: Tensor,
size_average: bool | None = ...,
reduce: bool | None = ...,
reduction: str = ...,
) -> Tensor: ...
__all__ += ["mse_loss"]
def multi_head_attention_forward(
query: Tensor,
key: Tensor,
value: Tensor,
embed_dim_to_check: int,
num_heads: int,
in_proj_weight: Tensor | None,
in_proj_bias: Tensor | None,
bias_k: Tensor | None,
bias_v: Tensor | None,
add_zero_attn: bool,
dropout_p: float,
out_proj_weight: Tensor,
out_proj_bias: Tensor | None,
training: bool = True,
key_padding_mask: Tensor | None = None,
need_weights: bool = True,
attn_mask: Tensor | None = None,
use_separate_proj_weight: bool = False,
q_proj_weight: Tensor | None = None,
k_proj_weight: Tensor | None = None,
v_proj_weight: Tensor | None = None,
static_k: Tensor | None = None,
static_v: Tensor | None = None,
average_attn_weights: bool = True,
is_causal: bool = False,
) -> tuple[Tensor, Tensor | None]: ...
__all__ += ["multi_head_attention_forward"]
def multi_margin_loss(
input: Tensor,
target: Tensor,
p: int = ...,
margin: float = ...,
weight: Tensor | None = ...,
size_average: bool | None = ...,
reduce: bool | None = ...,
reduction: str = ...,
) -> Tensor: ...
__all__ += ["multi_margin_loss"]
def multilabel_margin_loss(
input: Tensor,
target: Tensor,
size_average: bool | None = ...,
reduce: bool | None = ...,
reduction: str = ...,
) -> Tensor: ...
__all__ += ["multilabel_margin_loss"]
def multilabel_soft_margin_loss(
input: Tensor,
target: Tensor,
weight: Tensor | None = ...,
size_average: bool | None = ...,
reduce: bool | None = ...,
reduction: str = ...,
) -> Tensor: ...
__all__ += ["multilabel_soft_margin_loss"]
def nll_loss(
input: Tensor,
target: Tensor,
weight: Tensor | None = ...,
size_average: bool | None = ...,
ignore_index: int = ...,
reduce: bool | None = ...,
reduction: str = ...,
) -> Tensor: ...
__all__ += ["nll_loss"]
def normalize(
input: Tensor,
p: float = ...,
dim: int = ...,
eps: float = ...,
out: Tensor | None = ...,
) -> Tensor: ...
__all__ += ["normalize"]
def poisson_nll_loss(
input: Tensor,
target: Tensor,
log_input: bool = ...,
full: bool = ...,
size_average: bool | None = ...,
eps: float = ...,
reduce: bool | None = ...,
reduction: str = ...,
) -> Tensor: ...
__all__ += ["poisson_nll_loss"]
def relu(input: Tensor, inplace: bool = ...) -> Tensor: ...
__all__ += ["relu"]
def relu6(input: Tensor, inplace: bool = ...) -> Tensor: ...
__all__ += ["relu6"]
def rms_norm(
input: Tensor,
normalized_shape: Sequence[int],
weight: Tensor | None = ...,
eps: float | None = ...,
) -> Tensor: ...
__all__ += ["rms_norm"]
def rrelu(
input: Tensor,
lower: float = ...,
upper: float = ...,
training: bool = ...,
inplace: bool = ...,
) -> Tensor: ...
__all__ += ["rrelu"]
def selu(input: Tensor, inplace: bool = ...) -> Tensor: ...
__all__ += ["selu"]
def sigmoid(input: Any) -> Tensor: ...
__all__ += ["sigmoid"]
def silu(input: Tensor, inplace: bool = False) -> Tensor: ...
__all__ += ["silu"]
def smooth_l1_loss(
input: Tensor,
target: Tensor,
size_average: bool | None = ...,
reduce: bool | None = ...,
reduction: str = ...,
beta: float = ...,
) -> Tensor: ...
__all__ += ["smooth_l1_loss"]
def soft_margin_loss(
input: Tensor,
target: Tensor,
size_average: bool | None = ...,
reduce: bool | None = ...,
reduction: str = ...,
) -> Tensor: ...
__all__ += ["soft_margin_loss"]
def softmax(
input: Tensor,
dim: int | None = ...,
_stacklevel: int = ...,
dtype: _dtype | None = ...,
) -> Tensor: ...
__all__ += ["softmax"]
def softmin(
input: Tensor,
dim: int | None = ...,
_stacklevel: int = ...,
dtype: _dtype | None = ...,
) -> Tensor: ...
__all__ += ["softmin"]
def softsign(input: Any): ...
__all__ += ["softsign"]
def tanh(input: Any): ...
__all__ += ["tanh"]
def tanhshrink(input: Any): ...
__all__ += ["tanhshrink"]
def threshold(
input: Tensor,
threshold: float,
value: float,
inplace: bool = ...,
) -> Tensor: ...
__all__ += ["threshold"]
def triplet_margin_loss(
anchor: Tensor,
positive: Tensor,
negative: Tensor,
margin: float = ...,
p: float = ...,
eps: float = ...,
swap: bool = ...,
size_average: bool | None = ...,
reduce: bool | None = ...,
reduction: str = ...,
) -> Tensor: ...
__all__ += ["triplet_margin_loss"]
def triplet_margin_with_distance_loss(
anchor: Tensor,
positive: Tensor,
negative: Tensor,
*,
distance_function: Callable[[Tensor, Tensor], Tensor] | None = ...,
margin: float = ...,
swap: bool = ...,
reduction: str = ...,
) -> Tensor: ...
__all__ += ["triplet_margin_with_distance_loss"]
def unfold(
input: Tensor,
kernel_size: _size_any_t,
dilation: _size_any_t = ...,
padding: _size_any_t = ...,
stride: _size_any_t = ...,
) -> Tensor: ...
__all__ += ["unfold"]
def upsample_bilinear(
input: Any,
size: Any | None = ...,
scale_factor: Any | None = ...,
): ...
__all__ += ["upsample_bilinear"]
def upsample_nearest(
input: Any,
size: Any | None = ...,
scale_factor: Any | None = ...,
): ...
__all__ += ["upsample_nearest"]
def upsample(
input: Any,
size: Any | None = ...,
scale_factor: Any | None = ...,
mode: str = ...,
align_corners: Any | None = ...,
): ...
__all__ += ["upsample"]
${imported_hints}
${dispatched_hints}
${extra_nn_functional___all__}