Spaces:
Sleeping
Sleeping
# Copyright (c) Meta Platforms, Inc. and affiliates. | |
# | |
# This source code is licensed under the Apache License, Version 2.0 | |
# found in the LICENSE file in the root directory of this source tree. | |
import warnings | |
import torch.nn.functional as F | |
def resize(input, size=None, scale_factor=None, mode="nearest", align_corners=None, warning=False): | |
if warning: | |
if size is not None and align_corners: | |
input_h, input_w = tuple(int(x) for x in input.shape[2:]) | |
output_h, output_w = tuple(int(x) for x in size) | |
if output_h > input_h or output_w > output_h: | |
if ( | |
(output_h > 1 and output_w > 1 and input_h > 1 and input_w > 1) | |
and (output_h - 1) % (input_h - 1) | |
and (output_w - 1) % (input_w - 1) | |
): | |
warnings.warn( | |
f"When align_corners={align_corners}, " | |
"the output would more aligned if " | |
f"input size {(input_h, input_w)} is `x+1` and " | |
f"out size {(output_h, output_w)} is `nx+1`" | |
) | |
return F.interpolate(input, size, scale_factor, mode, align_corners) | |