code: def test_actor_cant_update_conv_weights(self):
      network_def = continuous_networks.SACEncoderNetwork()
      params = network_def.init(self.key, self.example_input)
  
      def loss_fn(params):
          output = network_def.apply(params, self.example_input)
          return jnp.mean(output.actor_z)
  
      grad = jax.grad(loss_fn)(params)
  
      # This test only matters if the gradients are non-zero for the dense layer.
      # The actor's Dense layer is Dense_1.
      self.assertNotEqual(
          jnp.sum(jnp.abs(grad["params"]["Dense_1"]["kernel"])), 0.0
      )
  
      # It suffices to check that the final conv gradients are 0.
      self.assertEqual(
          jnp.sum(jnp.abs(grad["params"]["Conv_3"]["kernel"])), 0.0
      )
      self.assertEqual(
          jnp.sum(jnp.abs(grad["params"]["Conv_3"]["bias"])), 0.0
      )
  
file_path: dopamine/tests/dopamine/labs/sac_from_pixels/continuous_networks_test.py
imports: from absl.testing import absltest
  from dopamine.labs.sac_from_pixels import continuous_networks
  import jax
  from jax import numpy
label_desc: Use image node_id 4 for calling the SACEncoderNetworkTest obj's underlying member method code with example usage: obj.test_actor_cant_update_conv_weights() and returns: jnp