class_docstr: Tests SignalConv against scipy.signal.
class_docstr_tok: ["Tests","SignalConv","against","scipy.signal","."]
docstr: Test 2D valid convolutions with multiple channels/filters.
code: def test_2d_valid_channels(self):
      """Test 2D valid convolutions with multiple channels/filters."""
      batch = 1
      padding = "valid"
      input_support = (8, 7)
      kernel_support = (3, 3)
      corr = False
      strides_down = (1, 1)
      extra_pad_end = False
      activation = None
      use_bias = False
      for channel_separable in [False, True]:
          for channels, filters in zip([1, 2], [2, 1]):
              for strides_up in [(1, 1), (2, 2)]:
                  for data_format in self.data_formats:
                      self.run_or_fail(
                          self.run_valid,
                          batch,
                          input_support,
                          channels,
                          filters,
                          kernel_support,
                          corr,
                          strides_down,
                          strides_up,
                          padding,
                          extra_pad_end,
                          channel_separable,
                          data_format,
                          activation,
                          use_bias,
                      )
  
imports: import os
  from absl.testing import parameterized
  import numpy
  import scipy.signal
  import tensorflow
  from tensorflow_compression.python.layers import initializers
  from tensorflow_compression.python.layers import parameters
  from tensorflow_compression.python.layers import signal_conv
label_desc: Use image node_id 14 for calling the ConvolutionsTest obj's underlying member method code with example usage: obj.test_2d_valid_channels() without return types