code: def test_softsign(self):
      # Basic test for random values between 0 and 1
      x = np.random.uniform(0, 1, (2, 5))
      result = activations.softsign(x[np.newaxis, :])[0]
      expected = np.vectorize(_ref_softsign)(x)
      self.assertAllClose(result, expected, rtol=1e-05)
  
      # Test with 1D array
      x_1d = np.random.uniform(-10, 10, 5)
      result_1d = activations.softsign(x_1d)
      expected_1d = np.vectorize(_ref_softsign)(x_1d)
      self.assertAllClose(result_1d, expected_1d, rtol=1e-05)
  
      # Test with 3D array
      x_3d = np.random.uniform(-10, 10, (3, 3, 3))
      result_3d = activations.softsign(x_3d)
      expected_3d = np.vectorize(_ref_softsign)(x_3d)
      self.assertAllClose(result_3d, expected_3d, rtol=1e-05)
  
      # Test near zero values
      x_zero = np.random.uniform(-1e-7, 1e-7, (2, 5))
      result_zero = activations.softsign(x_zero)
      expected_zero = np.vectorize(_ref_softsign)(x_zero)
      self.assertAllClose(result_zero, expected_zero, rtol=1e-05)
  
      # Test large positive values
      x_large_positive = np.random.uniform(10, 100, (2, 5))
      result_large_positive = activations.softsign(x_large_positive)
      expected_large_positive = np.vectorize(_ref_softsign)(
          x_large_positive
      )
      self.assertAllClose(
          result_large_positive, expected_large_positive, rtol=1e-05
      )
  
      # Test large negative values
      x_large_negative = np.random.uniform(-100, -10, (2, 5))
      result_large_negative = activations.softsign(x_large_negative)
      expected_large_negative = np.vectorize(_ref_softsign)(
          x_large_negative
      )
      self.assertAllClose(
          result_large_negative, expected_large_negative, rtol=1e-05
      )
  
imports: import numpy
  from keras import activations
  from keras import backend
  from keras import testing
label_desc: Use image node_id 18 for calling the ActivationsTest obj's underlying member method code with example usage: obj.test_softsign() without return types