class_docstr: Implementation of Query-Efficient Black-box Adversarial Examples. The attack approximates the gradient by
  maximizing the loss function over samples drawn from random Gaussian noise around the input.
  
  | Paper link: https://arxiv.org/abs/1712.07113
class_docstr_tok: ["Implementation","of","Query-Efficient","Black-box","Adversarial","Examples",".","The","attack","approximates","the","gradient","by","maximizing","the","loss","function","over","samples","drawn","from","random","Gaussian","noise","around","the","input",".","|","Paper","link",":","https",":","\/\/arxiv.org\/abs\/1712.07113"]
docstr: Return the output of the specified layer for input `x`. `layer` is specified by layer index (between 0 and
  `nb_layers - 1`) or by name. The number of layers can be determined by counting the results returned by
  calling `layer_names`.
  
  :param x: Input for computing the activations.
  :param layer: Layer for computing the activations.
  :param batch_size: Size of batches.
  :return: The output of `layer`, where the first dimension is the batch size corresponding to `x`.
docstr_tok: ["Return","the","output","of","the","specified","layer","for","input","`","x","`",".","`","layer","`","is","specified","by","layer","index","(","between","0","and","`","nb_layers","-","1","`",")","or","by","name",".","The","number","of","layers","can","be","determined","by","counting","the","results","returned","by","calling","`","layer_names","`",".",":","param","x",":","Input","for","computing","the","activations",".",":","param","layer",":","Layer","for","computing","the","activations",".",":","param","batch_size",":","Size","of","batches",".",":","return",":","The","output","of","`","layer","`",",","where","the","first","dimension","is","the","batch","size","corresponding","to","`","x","`","."]
code: def get_activations(
      self, x: np.ndarray, layer: Union[int, str], batch_size: int
  ) -> np.ndarray:
      """
      Return the output of the specified layer for input `x`. `layer` is specified by layer index (between 0 and
      `nb_layers - 1`) or by name. The number of layers can be determined by counting the results returned by
      calling `layer_names`.
  
      :param x: Input for computing the activations.
      :param layer: Layer for computing the activations.
      :param batch_size: Size of batches.
      :return: The output of `layer`, where the first dimension is the batch size corresponding to `x`.
      """
      raise NotImplementedError
  
imports: import logging
  from typing import List, Optional, Tuple, Union, TYPE_CHECKING
  import numpy
  from scipy.stats import entropy
  from art.estimators.estimator import BaseEstimator
  from art.estimators.classification.classifier import ClassifierMixin, ClassifierLossGradients
  from art.utils import clip_and_round
label_desc: Use image node_id 8 for calling the QueryEfficientGradientEstimationClassifier obj's underlying member method code with example usage: obj.get_activations(x, layer, batch_size) without return types