class_docstr: Binned univariate distribution designed as an nn.Module
  
  Arguments
  ----------
  bins_lower_bound: The lower bound of the bin edges
  bins_upper_bound: The upper bound of the bin edges
  nbins: The number of equidistance bins to allocate between `bins_lower_bound` and `bins_upper_bound`. Default value is 100.
  smoothing_indicator: The method of smoothing to perform on the bin probabilities
docstr: Log probability for a tensor of datapoints `x`.
docstr_tok: ["Log","probability","for","a","tensor","of","datapoints","`","x","`","."]
code: def log_prob(self, x):
      """
      Log probability for a tensor of datapoints `x`.
      """
      x = x.view(x.shape.numel())
      self.idx = 0
      if x.shape[0] == 1:
          self.idx = None
      lpx = self.log_p(x[0]).view(1)
  
      if x.shape.numel() == 1:
          return lpx
  
      for xx in x[1:]:
          self.idx += 1
          lpxx = self.log_p(xx).view(1)
          lpx = torch.cat((lpx, lpxx), 0)
  
      self.idx = None
      return lpx
  
imports: from typing import Optional
  import numpy
  import torch
  import torch.nn
  import torch.nn.functional
  import torch.optim
  from .genpareto import GenPareto
label_desc: Use image node_id 9 for calling the Binned obj's underlying member method code with example usage: obj.log_prob(x) and returns: lpx, lpx