GitOrigin-RevId: 3b2f829cc5
tags/v1.3.0
@@ -12,6 +12,7 @@ from .elemwise import * | |||||
from .math import * | from .math import * | ||||
from .nn import * | from .nn import * | ||||
from .tensor import * | from .tensor import * | ||||
from .utils import * | |||||
from . import distributed # isort:skip | from . import distributed # isort:skip | ||||
@@ -19,6 +19,7 @@ from ..core.tensor.utils import astype | |||||
from ..device import get_default_device | from ..device import get_default_device | ||||
from ..jit.tracing import is_tracing | from ..jit.tracing import is_tracing | ||||
from ..tensor import Tensor | from ..tensor import Tensor | ||||
from ..utils.deprecation import deprecated_func | |||||
__all__ = [ | __all__ = [ | ||||
"abs", | "abs", | ||||
@@ -567,3 +568,10 @@ def clip(x: Tensor, lower=None, upper=None) -> Tensor: | |||||
return maximum(x, lower) | return maximum(x, lower) | ||||
else: | else: | ||||
return minimum(x, upper) | return minimum(x, upper) | ||||
sigmoid = deprecated_func("1.3", "megengine.functional.nn", "sigmoid", True) | |||||
hsigmoid = deprecated_func("1.3", "megengine.functional.nn", "hsigmoid", True) | |||||
relu = deprecated_func("1.3", "megengine.functional.nn", "relu", True) | |||||
relu6 = deprecated_func("1.3", "megengine.functional.nn", "relu6", True) | |||||
hswish = deprecated_func("1.3", "megengine.functional.nn", "hswish", True) |
@@ -22,10 +22,11 @@ from ..device import get_default_device | |||||
from ..distributed import WORLD, is_distributed | from ..distributed import WORLD, is_distributed | ||||
from ..random import uniform | from ..random import uniform | ||||
from ..tensor import Tensor | from ..tensor import Tensor | ||||
from ..utils.deprecation import deprecated_func | |||||
from ..utils.tuple_function import _pair, _pair_nonzero, _triple, _triple_nonzero | from ..utils.tuple_function import _pair, _pair_nonzero, _triple, _triple_nonzero | ||||
from .debug_param import get_execution_strategy | from .debug_param import get_execution_strategy | ||||
from .distributed import all_reduce_sum | from .distributed import all_reduce_sum | ||||
from .elemwise import exp, floor, log, log1p, maximum, minimum | |||||
from .elemwise import _elwise, exp, floor, log, log1p, maximum, minimum | |||||
from .math import argsort, matmul, max, prod, sum | from .math import argsort, matmul, max, prod, sum | ||||
from .tensor import ( | from .tensor import ( | ||||
broadcast_to, | broadcast_to, | ||||
@@ -70,6 +71,10 @@ __all__ = [ | |||||
"relu", | "relu", | ||||
"relu6", | "relu6", | ||||
"hswish", | "hswish", | ||||
"resize", | |||||
"remap", | |||||
"warp_affine", | |||||
"warp_perspective", | |||||
] | ] | ||||
@@ -1434,43 +1439,6 @@ def nvof(src: Tensor, precision: int = 1) -> Tensor: | |||||
return apply(op, src)[0] | return apply(op, src)[0] | ||||
def _elwise(*args, mode): | |||||
tensor_args = list(filter(lambda x: isinstance(x, (Tensor, VarNode)), args)) | |||||
if len(tensor_args) == 0: | |||||
dtype = utils.dtype_promotion(args) | |||||
first_arg = Tensor(args[0], dtype=dtype, device=get_default_device()) | |||||
args = utils.convert_inputs(first_arg, *args[1:]) | |||||
else: | |||||
args = utils.convert_inputs(*args) | |||||
if mode in ( | |||||
Elemwise.Mode.TRUE_DIV, | |||||
Elemwise.Mode.EXP, | |||||
Elemwise.Mode.POW, | |||||
Elemwise.Mode.LOG, | |||||
Elemwise.Mode.EXPM1, | |||||
Elemwise.Mode.LOG1P, | |||||
Elemwise.Mode.TANH, | |||||
Elemwise.Mode.ACOS, | |||||
Elemwise.Mode.ASIN, | |||||
Elemwise.Mode.ATAN2, | |||||
Elemwise.Mode.CEIL, | |||||
Elemwise.Mode.COS, | |||||
Elemwise.Mode.FLOOR, | |||||
Elemwise.Mode.H_SWISH, | |||||
Elemwise.Mode.ROUND, | |||||
Elemwise.Mode.SIGMOID, | |||||
Elemwise.Mode.SIN, | |||||
): | |||||
if mode in ( | |||||
Elemwise.Mode.CEIL, | |||||
Elemwise.Mode.FLOOR, | |||||
Elemwise.Mode.ROUND, | |||||
) and np.issubdtype(args[0].dtype, np.integer): | |||||
return args[0] | |||||
args = tuple(map(lambda x: astype(x, "float32"), args)) | |||||
return _elwise_apply(args, mode) | |||||
def hswish(x): | def hswish(x): | ||||
""" | """ | ||||
Element-wise `x * relu6(x + 3) / 6`. | Element-wise `x * relu6(x + 3) / 6`. | ||||
@@ -1518,5 +1486,16 @@ def relu6(x): | |||||
return minimum(maximum(x, 0), 6) | return minimum(maximum(x, 0), 6) | ||||
interpolate = deprecated_func("1.3", "megengine.functional.vision", "interpolate", True) | |||||
roi_pooling = deprecated_func("1.3", "megengine.functional.vision", "roi_pooling", True) | |||||
roi_align = deprecated_func("1.3", "megengine.functional.vision", "roi_align", True) | |||||
nms = deprecated_func("1.3", "megengine.functional.vision", "nms", True) | |||||
resize = deprecated_func("1.3", "megengine.functional.vision", "resize", True) | |||||
remap = deprecated_func("1.3", "megengine.functional.vision", "remap", True) | |||||
warp_affine = deprecated_func("1.3", "megengine.functional.vision", "warp_affine", True) | |||||
warp_perspective = deprecated_func( | |||||
"1.3", "megengine.functional.vision", "warp_perspective", True | |||||
) | |||||
from .loss import * # isort:skip | from .loss import * # isort:skip | ||||
from .quantized import conv_bias_activation # isort:skip | from .quantized import conv_bias_activation # isort:skip |
@@ -10,8 +10,11 @@ from ..core._imperative_rt.core2 import apply | |||||
from ..core._imperative_rt.core2 import sync as _sync | from ..core._imperative_rt.core2 import sync as _sync | ||||
from ..core.ops.builtin import AssertEqual | from ..core.ops.builtin import AssertEqual | ||||
from ..tensor import Tensor | from ..tensor import Tensor | ||||
from ..utils.deprecation import deprecated_func | |||||
from .elemwise import abs, maximum, minimum | from .elemwise import abs, maximum, minimum | ||||
__all__ = ["topk_accuracy"] | |||||
def _assert_equal( | def _assert_equal( | ||||
expect: Tensor, actual: Tensor, *, maxerr: float = 0.0001, verbose: bool = False | expect: Tensor, actual: Tensor, *, maxerr: float = 0.0001, verbose: bool = False | ||||
@@ -55,3 +58,9 @@ def _assert_equal( | |||||
result = apply(AssertEqual(maxerr=maxerr, verbose=verbose), expect, actual, err)[0] | result = apply(AssertEqual(maxerr=maxerr, verbose=verbose), expect, actual, err)[0] | ||||
_sync() # sync interpreter to get exception | _sync() # sync interpreter to get exception | ||||
return result | return result | ||||
topk_accuracy = deprecated_func( | |||||
"1.3", "megengine.functional.metric", "topk_accuracy", True | |||||
) | |||||
copy = deprecated_func("1.3", "megengine.functional.tensor", "copy", True) |
@@ -5,4 +5,36 @@ | |||||
# Unless required by applicable law or agreed to in writing, | # Unless required by applicable law or agreed to in writing, | ||||
# software distributed under the License is distributed on an | # software distributed under the License is distributed on an | ||||
# "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | # "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
import importlib | |||||
import warnings | |||||
from deprecated.sphinx import deprecated | from deprecated.sphinx import deprecated | ||||
def deprecated_func(version, origin, name, tbd): | |||||
""" | |||||
:param version: version to deprecate this function | |||||
:param origin: origin module path | |||||
:param name: function name | |||||
:param tbd: to be discussed, if true, ignore warnings | |||||
""" | |||||
should_warning = not tbd | |||||
def wrapper(*args, **kwargs): | |||||
nonlocal should_warning | |||||
module = importlib.import_module(origin) | |||||
func = module.__getattribute__(name) | |||||
if should_warning: | |||||
with warnings.catch_warnings(): | |||||
warnings.simplefilter(action="always") | |||||
warnings.warn( | |||||
"Call to deprecated function {}. (use {}.{} instead) -- Deprecated since version {}.".format( | |||||
name, origin, name, version | |||||
), | |||||
category=DeprecationWarning, | |||||
stacklevel=2, | |||||
) | |||||
should_warning = False | |||||
return func(*args, **kwargs) | |||||
return wrapper |