docstr: oscillator_bank supports variable dimension inputs on different device/dtypes
docstr_tok: ["oscillator_bank","supports","variable","dimension","inputs","on","different","device\/dtypes"]
code: def test_oscillator_bank_smoke_test(self, shape, reduction):
      """oscillator_bank supports variable dimension inputs on different device/dtypes"""
      sample_rate = 8000
  
      freqs = (
          sample_rate
          // 2
          * torch.rand(shape, dtype=self.dtype, device=self.device)
      )
      amps = torch.rand(shape, dtype=self.dtype, device=self.device)
  
      waveform = F.oscillator_bank(
          freqs, amps, sample_rate, reduction=reduction
      )
      expected_shape = shape if reduction == "none" else shape[:-1]
      assert waveform.shape == expected_shape
      assert waveform.dtype == self.dtype
      assert waveform.device == self.device
  
imports: import torch
  import torchaudio.prototype.functional
  from parameterized import param, parameterized
  from torchaudio_unittest.common_utils import nested_params, TestBaseMixin
  from .dsp_utils import exp_sigmoid, freq_ir, oscillator_bank, sinc_ir
label_desc: Use image node_id 1 for calling the FunctionalTestImpl obj's underlying member method code with example usage: obj.test_oscillator_bank_smoke_test(shape, reduction) without return types