code: def test_trainable_parameters(self):
      ident = IdentityLayer()
      emb = torch.nn.Embedding(32, 8)  # 32 * 8 = 256
      emb2 = torch.nn.Embedding(32, 16)  # 32 * 16 = 128
      emb2.weight.requires_grad = False
      assert trainable_parameters(emb) == 256
      assert trainable_parameters(ident) == 0
      assert trainable_parameters(emb2) == 0
      assert (
          trainable_parameters(torch.nn.ModuleList([ident, emb, emb2]))
          == 256
      )
  
imports: import torch
  import numpy
  import unittest
  from parlai.utils.torch import padded_tensor, argsort, PipelineHelper, neginf, IdentityLayer, trainable_parameters, total_parameters
label_desc: Use image node_id 4 for calling the TestTorchUtils obj's underlying member method code with example usage: obj.test_trainable_parameters() without return types