code: def setUp(self):
      super(FunctionGradientsTest, self).setUp()
      cpus = config.list_physical_devices("CPU")
      # Set 4 virtual CPUs
      config.set_logical_device_configuration(
          cpus[0],
          [
              context.LogicalDeviceConfiguration(),
              context.LogicalDeviceConfiguration(),
              context.LogicalDeviceConfiguration(),
              context.LogicalDeviceConfiguration(),
          ],
      )
  
imports: from absl.testing import parameterized
  from tensorflow.python.eager import backprop
  from tensorflow.python.eager import context
  from tensorflow.python.eager.polymorphic_function import polymorphic_function
  from tensorflow.python.framework import config
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import indexed_slices
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import tensor_shape
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import cond
  from tensorflow.python.ops import gradients_impl
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn_grad
  from tensorflow.python.ops import nn_ops
  from tensorflow.python.ops import resource_variable_ops
  from tensorflow.python.ops import variable_scope
  from tensorflow.python.ops import variables
  from tensorflow.python.ops import while_loop
  from tensorflow.python.platform import test
label_desc: Use image node_id 1 for calling the FunctionGradientsTest obj's underlying member method code with example usage: obj.setUp() without return types