code: def test_log_probability(X, probs):
      p = [[0.2, 0.8]]
      x = [[1], [0], [0], [1], [0]]
      y = numpy.log([0.8, 0.2, 0.2, 0.8, 0.2])
  
      x_torch = torch.tensor(numpy.array(x))
      p_torch = torch.tensor(numpy.array(p))
  
      d1 = Categorical(p)
      d2 = Categorical(numpy.array(p, dtype=numpy.float64))
      d3 = torch.distributions.Categorical(p_torch)
  
      _test_predictions(x, y, d1.log_probability(x), torch.float32)
      _test_predictions(x, y, d2.log_probability(x), torch.float64)
      _test_predictions(
          x,
          d3.log_prob(x_torch).sum(axis=1),
          d2.log_probability(x),
          torch.float64,
      )
  
      x = [[1, 2, 0]]
      y = [-3.170086]
  
      p_torch = torch.tensor(numpy.array(probs))
      x_torch = torch.tensor(numpy.array(x))
  
      d1 = Categorical(probs)
      d2 = Categorical(numpy.array(probs, dtype=numpy.float64))
      d3 = torch.distributions.Categorical(p_torch)
  
      _test_predictions(x, y, d1.log_probability(x), torch.float32)
      _test_predictions(x, y, d2.log_probability(x), torch.float64)
      _test_predictions(
          x,
          d3.log_prob(x_torch).sum(axis=1),
          d2.log_probability(x),
          torch.float64,
      )
  
      p_torch = torch.tensor(numpy.array(probs))
      x_torch = torch.tensor(numpy.array(X))
  
      y = [
          -3.170086,
          -4.892852,
          -6.907755,
          -5.809143,
          -4.961845,
          -6.907755,
          -4.268698,
      ]
  
      d1 = Categorical(probs)
      d2 = Categorical(numpy.array(probs, dtype=numpy.float64))
      d3 = torch.distributions.Categorical(p_torch)
  
      _test_predictions(X, y, d1.log_probability(X), torch.float32)
      _test_predictions(X, y, d2.log_probability(X), torch.float64)
      _test_predictions(
          X,
          d3.log_prob(x_torch).sum(axis=1),
          d2.log_probability(X),
          torch.float64,
      )
  
imports: import os
  import numpy
  import torch
  import pytest
  from pomegranate.distributions import Categorical
  from ._utils import _test_initialization_raises_one_parameter
  from ._utils import _test_predictions
  from ._utils import _test_raises
  from nose.tools import assert_raises
  from numpy.testing import assert_array_almost_equal
label_desc: Use image node_id 16 for calling a global function with example usage: test_log_probability(X, probs) without return types