docstr: Check that `so3_log_map(so3_exp_map(log_rot))==log_rot` for
  a randomly generated batch of rotation matrix logarithms `log_rot`.
docstr_tok: ["Check","that","`","so3_log_map","(","so3_exp_map","(","log_rot",")",")","==log_rot","`","for","a","randomly","generated","batch","of","rotation","matrix","logarithms","`","log_rot","`","."]
code: def test_so3_log_to_exp_to_log(self, batch_size: int = 100):
      """
      Check that `so3_log_map(so3_exp_map(log_rot))==log_rot` for
      a randomly generated batch of rotation matrix logarithms `log_rot`.
      """
      log_rot = TestSO3.init_log_rot(batch_size=batch_size)
      # check also the singular cases where rot. angle = 0
      log_rot[:1] = 0
      log_rot_ = so3_log_map(so3_exp_map(log_rot))
      self.assertClose(log_rot, log_rot_, atol=1e-4)
  
imports: import math
  import unittest
  from distutils.version import LooseVersion
  import numpy
  import torch
  from pytorch3d.transforms.so3 import hat, so3_exp_map, so3_log_map, so3_relative_angle, so3_rotation_angle
  from .common_testing import TestCaseMixin
label_desc: Use image node_id 10 for calling the TestSO3 obj's underlying member method code with example usage: obj.test_so3_log_to_exp_to_log(batch_size) without return types