新旧名字的差别:
- 新的-xavier_normal_
- 旧的-xavier_normal
from torch.nn.init import xavier_normal_, xavier_normal
torch/nn/init.py
xavier_normal = _make_deprecate(xavier_normal_)
_make_deprecate
:对于使用 old_name 的情况给出 warnings :建议使用后面加下划线的方法,将old_name 函数重定向到 new_name 方法。
# for backward compatibility
def _make_deprecate(meth):
new_name = meth.__name__
old_name = new_name[:-1]
def deprecated_init(*args, **kwargs):
warnings.warn("nn.init.{} is now deprecated in favor of nn.init.{}."
.format(old_name, new_name), stacklevel=2)
return meth(*args, **kwargs)
deprecated_init.__doc__ = r"""
{old_name}(...)
.. warning::
This method is now deprecated in favor of :func:`torch.nn.init.{new_name}`.
See :func:`~torch.nn.init.{new_name}` for details.""".format(
old_name=old_name, new_name=new_name)
deprecated_init.__name__ = old_name
return deprecated_init