class_docstr: Rosenbrock function
  
  :param bounds: the box constraints to define the domain in which the function is optimized.
  :param sd: standard deviation, to generate noisy evaluations of the function.
class_docstr_tok: ["Rosenbrock","function",":","param","bounds",":","the","box","constraints","to","define","the","domain","in","which","the","function","is","optimized",".",":","param","sd",":","standard","deviation",",","to","generate","noisy","evaluations","of","the","function","."]
code: def f(self, X):
      X = reshape(X, self.input_dim)
      n = X.shape[0]
      if X.shape[1] != self.input_dim:
          return "Wrong input dimension"
      else:
          fval = (
              100 * (X[:, 1] - X[:, 0] ** 2) ** 2 + (X[:, 0] - 1) ** 2
          )
          if self.sd == 0:
              noise = np.zeros(n).reshape(n, 1)
          else:
              noise = np.random.normal(0, self.sd, n).reshape(n, 1)
          return fval.reshape(n, 1) + noise
  
imports: import numpy
  from ..util.general import reshape
label_desc: Use image node_id 2 for calling the rosenbrock obj's underlying member method code with example usage: obj.f(X) and returns: str, unknown