code: def create_rotated_embedding(self):
      out_dim = self.N_freqs * 2 * 3
      bvals = 2.0 ** np.linspace(
          self.min_freq, self.max_freq, num=self.N_freqs
      )
      bvals = np.reshape(
          np.eye(3) * bvals[:, None, None], [len(bvals) * 3, 3]
      )
      rot = np.array(
          [
              [(2**0.5) / 2, -(2**0.5) / 2, 0],
              [(2**0.5) / 2, (2**0.5) / 2, 0],
              [0, 0, 1],
          ]
      )
      bvals = bvals @ rot.T
      rot = np.array(
          [
              [1, 0, 0],
              [0, (2**0.5) / 2, -(2**0.5) / 2],
              [0, (2**0.5) / 2, (2**0.5) / 2],
          ]
      )
      bvals = bvals @ rot.T
      try:
          self.bvals = torch.from_numpy(bvals).float().cuda()
      except:
          self.bvals = torch.from_numpy(bvals).float()
      if self.include_input:
          out_dim += 3
      self.out_dim = out_dim
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  import numpy
label_desc: Use image node_id 2 for calling the Embedder obj's underlying member method code with example usage: obj.create_rotated_embedding() without return types