docstr: Tests whether `so3_exp_map` and `so3_log_map` correctly return
  a ValueError if called with an argument of incorrect shape or, in case
  of `so3_exp_map`, unexpected trace.
docstr_tok: ["Tests","whether","`","so3_exp_map","`","and","`","so3_log_map","`","correctly","return","a","ValueError","if","called","with","an","argument","of","incorrect","shape","or",",","in","case","of","`","so3_exp_map","`",",","unexpected","trace","."]
code: def test_bad_so3_input_value_err(self):
      """
      Tests whether `so3_exp_map` and `so3_log_map` correctly return
      a ValueError if called with an argument of incorrect shape or, in case
      of `so3_exp_map`, unexpected trace.
      """
      device = torch.device("cuda:0")
      log_rot = torch.randn(size=[5, 4], device=device)
      with self.assertRaises(ValueError) as err:
          so3_exp_map(log_rot)
      self.assertTrue(
          "Input tensor shape has to be Nx3." in str(err.exception)
      )
  
      rot = torch.randn(size=[5, 3, 5], device=device)
      with self.assertRaises(ValueError) as err:
          so3_log_map(rot)
      self.assertTrue(
          "Input has to be a batch of 3x3 Tensors."
          in str(err.exception)
      )
  
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 6 for calling the TestSO3 obj's underlying member method code with example usage: obj.test_bad_so3_input_value_err() without return types