code: def test_weave():
      n_atom_input_feat = 75
      n_pair_input_feat = 14
      n_atom_output_feat = 50
      n_pair_output_feat = 50
      n_hidden_AA = 50
      n_hidden_PA = 50
      n_hidden_AP = 50
      n_hidden_PP = 50
      update_pair = True
      init = "glorot_uniform"
      activation = "relu"
      batch_normalize = True
      batch_normalize_kwargs = {"renorm": True}
  
      layer = dc.models.layers.WeaveLayer(
          n_atom_input_feat,
          n_pair_input_feat,
          n_atom_output_feat,
          n_pair_output_feat,
          n_hidden_AA,
          n_hidden_PA,
          n_hidden_AP,
          n_hidden_PP,
          update_pair,
          init,
          activation,
          batch_normalize,
          batch_normalize_kwargs,
      )
      config = layer.get_config()
      layer_copied = dc.models.layers.WeaveLayer.from_config(config)
  
      assert layer_copied.n_atom_input_feat == layer.n_atom_input_feat
      assert layer_copied.n_pair_input_feat == layer.n_pair_input_feat
      assert layer_copied.n_atom_output_feat == layer.n_atom_output_feat
      assert layer_copied.n_pair_output_feat == layer.n_pair_output_feat
      assert layer_copied.n_hidden_AA == layer.n_hidden_AA
      assert layer_copied.n_hidden_PA == layer.n_hidden_PA
      assert layer_copied.n_hidden_AP == layer.n_hidden_AP
      assert layer_copied.n_hidden_PP == layer.n_hidden_PP
      assert layer_copied.update_pair == layer.update_pair
      assert layer_copied.init == layer.init
      assert layer_copied.activation == layer.activation
      assert layer_copied.batch_normalize == layer.batch_normalize
      assert (
          layer_copied.batch_normalize_kwargs
          == layer.batch_normalize_kwargs
      )
  
imports: import deepchem
  import pytest
label_desc: Use image node_id 20 for calling a global function with example usage: test_weave() without return types