class_docstr: The elastic net attack of Pin-Yu Chen et al. (2018).
  
  | Paper link: https://arxiv.org/abs/1709.04114
docstr: Applies a square-root decay to the learning rate.
  
  :param global_step: Global step to use for the decay computation.
  :param end_learning_rate: The minimal end learning rate.
  :param decay_steps: Number of decayed steps.
  :return: The decayed learning rate
docstr_tok: ["Applies","a","square-root","decay","to","the","learning","rate",".",":","param","global_step",":","Global","step","to","use","for","the","decay","computation",".",":","param","end_learning_rate",":","The","minimal","end","learning","rate",".",":","param","decay_steps",":","Number","of","decayed","steps",".",":","return",":","The","decayed","learning","rate"]
code: def _decay_learning_rate(
      self, global_step: int, end_learning_rate: float, decay_steps: int
  ) -> float:
      """
      Applies a square-root decay to the learning rate.
  
      :param global_step: Global step to use for the decay computation.
      :param end_learning_rate: The minimal end learning rate.
      :param decay_steps: Number of decayed steps.
      :return: The decayed learning rate
      """
      learn_rate = self.learning_rate - end_learning_rate
      decayed_learning_rate = (
          learn_rate * (1 - global_step / decay_steps) ** 0.5
          + end_learning_rate
      )
  
      return decayed_learning_rate
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  from typing import Optional, Tuple, TYPE_CHECKING
  import numpy
  import six
  from tqdm.auto import trange
  from art.config import ART_NUMPY_DTYPE
  from art.attacks.attack import EvasionAttack
  from art.estimators.estimator import BaseEstimator
  from art.estimators.classification.classifier import ClassGradientsMixin
  from art.utils import compute_success, get_labels_np_array, check_and_transform_label_format
label_desc: Use image node_id 4 for calling the ElasticNet obj's underlying member method code with example usage: obj._decay_learning_rate(global_step, end_learning_rate, decay_steps) and returns: decayed_learning_rate