class_docstr: Creates a banana-shaped distribution.
  
  This distribution was first described in [1]. The distribution is constructed
  by transforming a 2-D normal distribution with scale [10, 1] by shifting the
  second dimension by `curvature * (x0**2 - 100)` where `x0` is the value of
  the first dimension. If N > 2 dimensions are requested, the remaining
  dimensions are distributed as a standard normal.
  
  ```none
  x[0] ~ Normal(loc=0, scale=10)
  x[1] ~ Normal(loc=curvature * (x[0]**2 - 100), scale=1)
  for i in range(2, ndims):
    x[i] ~ Normal(loc=0, scale=1)
  ```
  
  This distribution is notable for having relatively narrow tails, while being
  derived from a simple, volume-preserving transformation of a normal
  distribution. Despite this simplicity, some inference algorithms have trouble
  sampling from this distribution.
  
  #### References
  
  1. Haario, H., Saksman, E., & Tamminen, J. (1999). Adaptive proposal
     distribution for random walk Metropolis algorithm. Computational
     Statistics, 14(3), 375-396.
docstr: Generate samples of the specified shape from the target distribution.
  
  The returned samples are exact (and independent) samples from the target
  distribution of this model.
  
  Args:
    sample_shape: 0D or 1D `int32` `Tensor`. Shape of the generated samples.
    seed: Python integer or `tfp.util.SeedStream` instance, for seeding PRNG.
    name: Name to give to the prefix the generated ops.
  
  Returns:
    samples: a `Tensor` with prepended dimensions `sample_shape`.
docstr_tok: ["Generate","samples","of","the","specified","shape","from","the","target","distribution",".","The","returned","samples","are","exact","(","and","independent",")","samples","from","the","target","distribution","of","this","model",".","Args",":","sample_shape",":","0D","or","1D","`","int32","`","`","Tensor","`",".","Shape","of","the","generated","samples",".","seed",":","Python","integer","or","`","tfp.util.SeedStream","`","instance",",","for","seeding","PRNG",".","name",":","Name","to","give","to","the","prefix","the","generated","ops",".","Returns",":","samples",":","a","`","Tensor","`","with","prepended","dimensions","`","sample_shape","`","."]
code: def sample(self, sample_shape=(), seed=None, name="sample"):
      """Generate samples of the specified shape from the target distribution.
  
      The returned samples are exact (and independent) samples from the target
      distribution of this model.
  
      Args:
        sample_shape: 0D or 1D `int32` `Tensor`. Shape of the generated samples.
        seed: Python integer or `tfp.util.SeedStream` instance, for seeding PRNG.
        name: Name to give to the prefix the generated ops.
  
      Returns:
        samples: a `Tensor` with prepended dimensions `sample_shape`.
      """
      return self._banana.sample(sample_shape, seed=seed, name=name)
  
file_path: probability/spinoffs/inference_gym/inference_gym/targets/banana.py
imports: import numpy
  import tensorflow.compat.v2
  import tensorflow_probability
  from tensorflow_probability.python.internal import prefer_static
  from inference_gym.targets import model
label_desc: Use image node_id 3 for calling the Banana obj's underlying member method code with example usage: obj.sample(sample_shape, seed, name) and returns: self