code: def test_separable_conv2d_basic(
      self,
      depth_multiplier,
      filters,
      kernel_size,
      strides,
      padding,
      data_format,
      dilation_rate,
      input_shape,
      output_shape,
  ):
      self.run_layer_test(
          layers.SeparableConv2D,
          init_kwargs={
              "depth_multiplier": depth_multiplier,
              "filters": filters,
              "kernel_size": kernel_size,
              "strides": strides,
              "padding": padding,
              "data_format": data_format,
              "dilation_rate": dilation_rate,
          },
          input_shape=input_shape,
          expected_output_shape=output_shape,
          expected_num_trainable_weights=3,
          expected_num_non_trainable_weights=0,
          expected_num_losses=0,
          supports_masking=False,
      )
  
file_path: keras/keras/layers/convolutional/separable_conv_test.py
imports: import numpy
  import pytest
  from absl.testing import parameterized
  from keras import layers
  from keras import testing
  from keras.layers.convolutional.conv_test import np_conv1d
  from keras.layers.convolutional.conv_test import np_conv2d
  from keras.layers.convolutional.depthwise_conv_test import np_depthwise_conv1d
  from keras.layers.convolutional.depthwise_conv_test import np_depthwise_conv2d
label_desc: Use image node_id 2 for calling the SeparableConvBasicTest obj's underlying member method code with example usage: obj.test_separable_conv2d_basic(depth_multiplier, filters, kernel_size, strides, padding, data_format, dilation_rate, input_shape, output_shape) without return types