def METHOD_NAME(self, weight: Tensor, u: Tensor) -> Tensor:
    """
    Adapted from https://github.com/apache/incubator-
    mxnet/blob/master/example/gluon/sn_gan/model.py.
    """
    w = weight
    w_mat = nd.reshape(w, [w.shape[0], -1])
    _u = u
    _v = None
    for _ in range(self._num_power_iter):
        _v = nd.L2Normalization(nd.dot(_u, w_mat))
        _u = nd.L2Normalization(nd.dot(_v, w_mat.T))
    sigma = nd.sum(nd.dot(_u, w_mat) * _v)
    # this is different from standard spectral normalization
    sigma = nd.maximum(nd.ones(1, ctx=self._ctx), sigma / self._coeff)
    if sigma == 0.0:
        sigma = EPSILON
    with autograd.pause():
        self._u.set_data(_u)
    return w / sigma