Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
Torchaudio
Commits
4d251485
Unverified
Commit
4d251485
authored
Oct 11, 2022
by
Caroline Chen
Committed by
GitHub
Oct 11, 2022
Browse files
[release 0.13] Remove prototype (#2749)
parent
84d8ced9
Changes
49
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
0 additions
and
802 deletions
+0
-802
test/torchaudio_unittest/example/emformer_rnnt/test_mustc_lightning.py
...io_unittest/example/emformer_rnnt/test_mustc_lightning.py
+0
-76
test/torchaudio_unittest/example/emformer_rnnt/test_tedlium3_lightning.py
...unittest/example/emformer_rnnt/test_tedlium3_lightning.py
+0
-79
test/torchaudio_unittest/prototype/__init__.py
test/torchaudio_unittest/prototype/__init__.py
+0
-0
test/torchaudio_unittest/prototype/conv_emformer_cpu_test.py
test/torchaudio_unittest/prototype/conv_emformer_cpu_test.py
+0
-13
test/torchaudio_unittest/prototype/conv_emformer_gpu_test.py
test/torchaudio_unittest/prototype/conv_emformer_gpu_test.py
+0
-15
test/torchaudio_unittest/prototype/conv_emformer_test_impl.py
.../torchaudio_unittest/prototype/conv_emformer_test_impl.py
+0
-27
test/torchaudio_unittest/prototype/functional/__init__.py
test/torchaudio_unittest/prototype/functional/__init__.py
+0
-0
test/torchaudio_unittest/prototype/functional/autograd_cpu_test.py
...haudio_unittest/prototype/functional/autograd_cpu_test.py
+0
-9
test/torchaudio_unittest/prototype/functional/autograd_cuda_test.py
...audio_unittest/prototype/functional/autograd_cuda_test.py
+0
-10
test/torchaudio_unittest/prototype/functional/autograd_test_impl.py
...audio_unittest/prototype/functional/autograd_test_impl.py
+0
-33
test/torchaudio_unittest/prototype/functional/batch_consistency_test.py
...o_unittest/prototype/functional/batch_consistency_test.py
+0
-43
test/torchaudio_unittest/prototype/functional/functional_cpu_test.py
...udio_unittest/prototype/functional/functional_cpu_test.py
+0
-14
test/torchaudio_unittest/prototype/functional/functional_cuda_test.py
...dio_unittest/prototype/functional/functional_cuda_test.py
+0
-16
test/torchaudio_unittest/prototype/functional/functional_test_impl.py
...dio_unittest/prototype/functional/functional_test_impl.py
+0
-109
test/torchaudio_unittest/prototype/functional/torchscript_consistency_cpu_test.py
.../prototype/functional/torchscript_consistency_cpu_test.py
+0
-14
test/torchaudio_unittest/prototype/functional/torchscript_consistency_cuda_test.py
...prototype/functional/torchscript_consistency_cuda_test.py
+0
-16
test/torchaudio_unittest/prototype/functional/torchscript_consistency_test_impl.py
...prototype/functional/torchscript_consistency_test_impl.py
+0
-50
test/torchaudio_unittest/prototype/rnnt_cpu_test.py
test/torchaudio_unittest/prototype/rnnt_cpu_test.py
+0
-13
test/torchaudio_unittest/prototype/rnnt_gpu_test.py
test/torchaudio_unittest/prototype/rnnt_gpu_test.py
+0
-15
test/torchaudio_unittest/prototype/rnnt_test_impl.py
test/torchaudio_unittest/prototype/rnnt_test_impl.py
+0
-250
No files found.
test/torchaudio_unittest/example/emformer_rnnt/test_mustc_lightning.py
deleted
100644 → 0
View file @
84d8ced9
from
contextlib
import
contextmanager
from
functools
import
partial
from
unittest.mock
import
patch
import
torch
from
parameterized
import
parameterized
from
torchaudio._internal.module_utils
import
is_module_available
from
torchaudio_unittest.common_utils
import
skipIfNoModule
,
TorchaudioTestCase
from
.utils
import
MockCustomDataset
,
MockDataloader
,
MockSentencePieceProcessor
if
is_module_available
(
"pytorch_lightning"
,
"sentencepiece"
):
from
asr.emformer_rnnt.mustc.lightning
import
MuSTCRNNTModule
class
MockMUSTC
:
def
__init__
(
self
,
*
args
,
**
kwargs
):
pass
def
__getitem__
(
self
,
n
:
int
):
return
(
torch
.
rand
(
1
,
32640
),
"sup"
,
)
def
__len__
(
self
):
return
10
@
contextmanager
def
get_lightning_module
():
with
patch
(
"sentencepiece.SentencePieceProcessor"
,
new
=
partial
(
MockSentencePieceProcessor
,
num_symbols
=
500
)),
patch
(
"asr.emformer_rnnt.mustc.lightning.GlobalStatsNormalization"
,
new
=
torch
.
nn
.
Identity
),
patch
(
"asr.emformer_rnnt.mustc.lightning.MUSTC"
,
new
=
MockMUSTC
),
patch
(
"asr.emformer_rnnt.mustc.lightning.CustomDataset"
,
new
=
MockCustomDataset
),
patch
(
"torch.utils.data.DataLoader"
,
new
=
MockDataloader
):
yield
MuSTCRNNTModule
(
mustc_path
=
"mustc_path"
,
sp_model_path
=
"sp_model_path"
,
global_stats_path
=
"global_stats_path"
,
)
@
skipIfNoModule
(
"pytorch_lightning"
)
@
skipIfNoModule
(
"sentencepiece"
)
class
TestMuSTCRNNTModule
(
TorchaudioTestCase
):
@
classmethod
def
setUpClass
(
cls
)
->
None
:
super
().
setUpClass
()
@
parameterized
.
expand
(
[
(
"training_step"
,
"train_dataloader"
),
(
"validation_step"
,
"val_dataloader"
),
(
"test_step"
,
"test_common_dataloader"
),
(
"test_step"
,
"test_he_dataloader"
),
]
)
def
test_step
(
self
,
step_fname
,
dataloader_fname
):
with
get_lightning_module
()
as
lightning_module
:
dataloader
=
getattr
(
lightning_module
,
dataloader_fname
)()
batch
=
next
(
iter
(
dataloader
))
getattr
(
lightning_module
,
step_fname
)(
batch
,
0
)
@
parameterized
.
expand
(
[
(
"val_dataloader"
,),
]
)
def
test_forward
(
self
,
dataloader_fname
):
with
get_lightning_module
()
as
lightning_module
:
dataloader
=
getattr
(
lightning_module
,
dataloader_fname
)()
batch
=
next
(
iter
(
dataloader
))
lightning_module
(
batch
)
test/torchaudio_unittest/example/emformer_rnnt/test_tedlium3_lightning.py
deleted
100644 → 0
View file @
84d8ced9
from
contextlib
import
contextmanager
from
functools
import
partial
from
unittest.mock
import
patch
import
torch
from
parameterized
import
parameterized
from
torchaudio._internal.module_utils
import
is_module_available
from
torchaudio_unittest.common_utils
import
skipIfNoModule
,
TorchaudioTestCase
from
.utils
import
MockCustomDataset
,
MockDataloader
,
MockSentencePieceProcessor
if
is_module_available
(
"pytorch_lightning"
,
"sentencepiece"
):
from
asr.emformer_rnnt.tedlium3.lightning
import
TEDLIUM3RNNTModule
class
MockTEDLIUM
:
def
__init__
(
self
,
*
args
,
**
kwargs
):
pass
def
__getitem__
(
self
,
n
:
int
):
return
(
torch
.
rand
(
1
,
32640
),
16000
,
"sup"
,
2
,
3
,
4
,
)
def
__len__
(
self
):
return
10
@
contextmanager
def
get_lightning_module
():
with
patch
(
"sentencepiece.SentencePieceProcessor"
,
new
=
partial
(
MockSentencePieceProcessor
,
num_symbols
=
500
)),
patch
(
"asr.emformer_rnnt.tedlium3.lightning.GlobalStatsNormalization"
,
new
=
torch
.
nn
.
Identity
),
patch
(
"torchaudio.datasets.TEDLIUM"
,
new
=
MockTEDLIUM
),
patch
(
"asr.emformer_rnnt.tedlium3.lightning.CustomDataset"
,
new
=
MockCustomDataset
),
patch
(
"torch.utils.data.DataLoader"
,
new
=
MockDataloader
):
yield
TEDLIUM3RNNTModule
(
tedlium_path
=
"tedlium_path"
,
sp_model_path
=
"sp_model_path"
,
global_stats_path
=
"global_stats_path"
,
)
@
skipIfNoModule
(
"pytorch_lightning"
)
@
skipIfNoModule
(
"sentencepiece"
)
class
TestTEDLIUM3RNNTModule
(
TorchaudioTestCase
):
@
classmethod
def
setUpClass
(
cls
)
->
None
:
super
().
setUpClass
()
@
parameterized
.
expand
(
[
(
"training_step"
,
"train_dataloader"
),
(
"validation_step"
,
"val_dataloader"
),
(
"test_step"
,
"test_dataloader"
),
]
)
def
test_step
(
self
,
step_fname
,
dataloader_fname
):
with
get_lightning_module
()
as
lightning_module
:
dataloader
=
getattr
(
lightning_module
,
dataloader_fname
)()
batch
=
next
(
iter
(
dataloader
))
getattr
(
lightning_module
,
step_fname
)(
batch
,
0
)
@
parameterized
.
expand
(
[
(
"val_dataloader"
,),
]
)
def
test_forward
(
self
,
dataloader_fname
):
with
get_lightning_module
()
as
lightning_module
:
dataloader
=
getattr
(
lightning_module
,
dataloader_fname
)()
batch
=
next
(
iter
(
dataloader
))
lightning_module
(
batch
)
test/torchaudio_unittest/prototype/__init__.py
deleted
100644 → 0
View file @
84d8ced9
test/torchaudio_unittest/prototype/conv_emformer_cpu_test.py
deleted
100644 → 0
View file @
84d8ced9
import
torch
from
torchaudio_unittest.common_utils
import
PytorchTestCase
from
torchaudio_unittest.prototype.conv_emformer_test_impl
import
ConvEmformerTestImpl
class
ConvEmformerFloat32CPUTest
(
ConvEmformerTestImpl
,
PytorchTestCase
):
dtype
=
torch
.
float32
device
=
torch
.
device
(
"cpu"
)
class
ConvEmformerFloat64CPUTest
(
ConvEmformerTestImpl
,
PytorchTestCase
):
dtype
=
torch
.
float64
device
=
torch
.
device
(
"cpu"
)
test/torchaudio_unittest/prototype/conv_emformer_gpu_test.py
deleted
100644 → 0
View file @
84d8ced9
import
torch
from
torchaudio_unittest.common_utils
import
PytorchTestCase
,
skipIfNoCuda
from
torchaudio_unittest.prototype.conv_emformer_test_impl
import
ConvEmformerTestImpl
@
skipIfNoCuda
class
ConvEmformerFloat32GPUTest
(
ConvEmformerTestImpl
,
PytorchTestCase
):
dtype
=
torch
.
float32
device
=
torch
.
device
(
"cuda"
)
@
skipIfNoCuda
class
ConvEmformerFloat64GPUTest
(
ConvEmformerTestImpl
,
PytorchTestCase
):
dtype
=
torch
.
float64
device
=
torch
.
device
(
"cuda"
)
test/torchaudio_unittest/prototype/conv_emformer_test_impl.py
deleted
100644 → 0
View file @
84d8ced9
import
torch
from
torchaudio.prototype.models.conv_emformer
import
ConvEmformer
from
torchaudio_unittest.common_utils
import
TestBaseMixin
from
torchaudio_unittest.models.emformer.emformer_test_impl
import
EmformerTestMixin
class
ConvEmformerTestImpl
(
EmformerTestMixin
,
TestBaseMixin
):
def
gen_model
(
self
,
input_dim
,
right_context_length
):
emformer
=
ConvEmformer
(
input_dim
,
8
,
256
,
3
,
4
,
12
,
left_context_length
=
30
,
right_context_length
=
right_context_length
,
max_memory_size
=
1
,
).
to
(
device
=
self
.
device
,
dtype
=
self
.
dtype
)
return
emformer
def
gen_inputs
(
self
,
input_dim
,
batch_size
,
num_frames
,
right_context_length
):
input
=
torch
.
rand
(
batch_size
,
num_frames
,
input_dim
).
to
(
device
=
self
.
device
,
dtype
=
self
.
dtype
)
lengths
=
torch
.
randint
(
1
,
num_frames
-
right_context_length
,
(
batch_size
,)).
to
(
device
=
self
.
device
,
dtype
=
self
.
dtype
)
return
input
,
lengths
test/torchaudio_unittest/prototype/functional/__init__.py
deleted
100644 → 0
View file @
84d8ced9
test/torchaudio_unittest/prototype/functional/autograd_cpu_test.py
deleted
100644 → 0
View file @
84d8ced9
import
torch
from
torchaudio_unittest.common_utils
import
PytorchTestCase
from
.autograd_test_impl
import
AutogradTestImpl
class
TestAutogradCPUFloat64
(
AutogradTestImpl
,
PytorchTestCase
):
dtype
=
torch
.
float64
device
=
torch
.
device
(
"cpu"
)
test/torchaudio_unittest/prototype/functional/autograd_cuda_test.py
deleted
100644 → 0
View file @
84d8ced9
import
torch
from
torchaudio_unittest.common_utils
import
PytorchTestCase
,
skipIfNoCuda
from
.autograd_test_impl
import
AutogradTestImpl
@
skipIfNoCuda
class
TestAutogradCUDAFloat64
(
AutogradTestImpl
,
PytorchTestCase
):
dtype
=
torch
.
float64
device
=
torch
.
device
(
"cuda"
)
test/torchaudio_unittest/prototype/functional/autograd_test_impl.py
deleted
100644 → 0
View file @
84d8ced9
import
torch
import
torchaudio.prototype.functional
as
F
from
parameterized
import
parameterized
from
torch.autograd
import
gradcheck
,
gradgradcheck
from
torchaudio_unittest.common_utils
import
TestBaseMixin
class
AutogradTestImpl
(
TestBaseMixin
):
@
parameterized
.
expand
(
[
(
F
.
convolve
,),
(
F
.
fftconvolve
,),
]
)
def
test_convolve
(
self
,
fn
):
leading_dims
=
(
4
,
3
,
2
)
L_x
,
L_y
=
23
,
40
x
=
torch
.
rand
(
*
leading_dims
,
L_x
,
dtype
=
self
.
dtype
,
device
=
self
.
device
,
requires_grad
=
True
)
y
=
torch
.
rand
(
*
leading_dims
,
L_y
,
dtype
=
self
.
dtype
,
device
=
self
.
device
,
requires_grad
=
True
)
self
.
assertTrue
(
gradcheck
(
fn
,
(
x
,
y
)))
self
.
assertTrue
(
gradgradcheck
(
fn
,
(
x
,
y
)))
def
test_add_noise
(
self
):
leading_dims
=
(
5
,
2
,
3
)
L
=
51
waveform
=
torch
.
rand
(
*
leading_dims
,
L
,
dtype
=
self
.
dtype
,
device
=
self
.
device
,
requires_grad
=
True
)
noise
=
torch
.
rand
(
*
leading_dims
,
L
,
dtype
=
self
.
dtype
,
device
=
self
.
device
,
requires_grad
=
True
)
lengths
=
torch
.
rand
(
*
leading_dims
,
dtype
=
self
.
dtype
,
device
=
self
.
device
,
requires_grad
=
True
)
snr
=
torch
.
rand
(
*
leading_dims
,
dtype
=
self
.
dtype
,
device
=
self
.
device
,
requires_grad
=
True
)
*
10
self
.
assertTrue
(
gradcheck
(
F
.
add_noise
,
(
waveform
,
noise
,
lengths
,
snr
)))
self
.
assertTrue
(
gradgradcheck
(
F
.
add_noise
,
(
waveform
,
noise
,
lengths
,
snr
)))
test/torchaudio_unittest/prototype/functional/batch_consistency_test.py
deleted
100644 → 0
View file @
84d8ced9
import
torch
import
torchaudio.prototype.functional
as
F
from
torchaudio_unittest.common_utils
import
nested_params
,
TorchaudioTestCase
class
BatchConsistencyTest
(
TorchaudioTestCase
):
@
nested_params
(
[
F
.
convolve
,
F
.
fftconvolve
],
)
def
test_convolve
(
self
,
fn
):
leading_dims
=
(
2
,
3
)
L_x
,
L_y
=
89
,
43
x
=
torch
.
rand
(
*
leading_dims
,
L_x
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
y
=
torch
.
rand
(
*
leading_dims
,
L_y
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
actual
=
fn
(
x
,
y
)
expected
=
torch
.
stack
(
[
torch
.
stack
([
fn
(
x
[
i
,
j
].
unsqueeze
(
0
),
y
[
i
,
j
].
unsqueeze
(
0
)).
squeeze
(
0
)
for
j
in
range
(
leading_dims
[
1
])])
for
i
in
range
(
leading_dims
[
0
])
]
)
self
.
assertEqual
(
expected
,
actual
)
def
test_add_noise
(
self
):
leading_dims
=
(
5
,
2
,
3
)
L
=
51
waveform
=
torch
.
rand
(
*
leading_dims
,
L
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
noise
=
torch
.
rand
(
*
leading_dims
,
L
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
lengths
=
torch
.
rand
(
*
leading_dims
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
snr
=
torch
.
rand
(
*
leading_dims
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
*
10
actual
=
F
.
add_noise
(
waveform
,
noise
,
lengths
,
snr
)
expected
=
[]
for
i
in
range
(
leading_dims
[
0
]):
for
j
in
range
(
leading_dims
[
1
]):
for
k
in
range
(
leading_dims
[
2
]):
expected
.
append
(
F
.
add_noise
(
waveform
[
i
][
j
][
k
],
noise
[
i
][
j
][
k
],
lengths
[
i
][
j
][
k
],
snr
[
i
][
j
][
k
]))
self
.
assertEqual
(
torch
.
stack
(
expected
),
actual
.
reshape
(
-
1
,
L
))
test/torchaudio_unittest/prototype/functional/functional_cpu_test.py
deleted
100644 → 0
View file @
84d8ced9
import
torch
from
torchaudio_unittest.common_utils
import
PytorchTestCase
from
.functional_test_impl
import
FunctionalTestImpl
class
FunctionalFloat32CPUTest
(
FunctionalTestImpl
,
PytorchTestCase
):
dtype
=
torch
.
float32
device
=
torch
.
device
(
"cpu"
)
class
FunctionalFloat64CPUTest
(
FunctionalTestImpl
,
PytorchTestCase
):
dtype
=
torch
.
float64
device
=
torch
.
device
(
"cpu"
)
test/torchaudio_unittest/prototype/functional/functional_cuda_test.py
deleted
100644 → 0
View file @
84d8ced9
import
torch
from
torchaudio_unittest.common_utils
import
PytorchTestCase
,
skipIfNoCuda
from
.functional_test_impl
import
FunctionalTestImpl
@
skipIfNoCuda
class
FunctionalFloat32CUDATest
(
FunctionalTestImpl
,
PytorchTestCase
):
dtype
=
torch
.
float32
device
=
torch
.
device
(
"cuda"
)
@
skipIfNoCuda
class
FunctionalFloat64CUDATest
(
FunctionalTestImpl
,
PytorchTestCase
):
dtype
=
torch
.
float64
device
=
torch
.
device
(
"cuda"
)
test/torchaudio_unittest/prototype/functional/functional_test_impl.py
deleted
100644 → 0
View file @
84d8ced9
import
numpy
as
np
import
torch
import
torchaudio.prototype.functional
as
F
from
parameterized
import
parameterized
from
scipy
import
signal
from
torchaudio_unittest.common_utils
import
nested_params
,
TestBaseMixin
class
FunctionalTestImpl
(
TestBaseMixin
):
@
nested_params
(
[(
10
,
4
),
(
4
,
3
,
1
,
2
),
(
2
,),
()],
[(
100
,
43
),
(
21
,
45
)],
)
def
test_convolve_numerics
(
self
,
leading_dims
,
lengths
):
"""Check that convolve returns values identical to those that SciPy produces."""
L_x
,
L_y
=
lengths
x
=
torch
.
rand
(
*
(
leading_dims
+
(
L_x
,)),
dtype
=
self
.
dtype
,
device
=
self
.
device
)
y
=
torch
.
rand
(
*
(
leading_dims
+
(
L_y
,)),
dtype
=
self
.
dtype
,
device
=
self
.
device
)
actual
=
F
.
convolve
(
x
,
y
)
num_signals
=
torch
.
tensor
(
leading_dims
).
prod
()
if
leading_dims
else
1
x_reshaped
=
x
.
reshape
((
num_signals
,
L_x
))
y_reshaped
=
y
.
reshape
((
num_signals
,
L_y
))
expected
=
[
signal
.
convolve
(
x_reshaped
[
i
].
detach
().
cpu
().
numpy
(),
y_reshaped
[
i
].
detach
().
cpu
().
numpy
())
for
i
in
range
(
num_signals
)
]
expected
=
torch
.
tensor
(
np
.
array
(
expected
))
expected
=
expected
.
reshape
(
leading_dims
+
(
-
1
,))
self
.
assertEqual
(
expected
,
actual
)
@
nested_params
(
[(
10
,
4
),
(
4
,
3
,
1
,
2
),
(
2
,),
()],
[(
100
,
43
),
(
21
,
45
)],
)
def
test_fftconvolve_numerics
(
self
,
leading_dims
,
lengths
):
"""Check that fftconvolve returns values identical to those that SciPy produces."""
L_x
,
L_y
=
lengths
x
=
torch
.
rand
(
*
(
leading_dims
+
(
L_x
,)),
dtype
=
self
.
dtype
,
device
=
self
.
device
)
y
=
torch
.
rand
(
*
(
leading_dims
+
(
L_y
,)),
dtype
=
self
.
dtype
,
device
=
self
.
device
)
actual
=
F
.
fftconvolve
(
x
,
y
)
expected
=
signal
.
fftconvolve
(
x
.
detach
().
cpu
().
numpy
(),
y
.
detach
().
cpu
().
numpy
(),
axes
=-
1
)
expected
=
torch
.
tensor
(
expected
)
self
.
assertEqual
(
expected
,
actual
)
@
nested_params
(
[
F
.
convolve
,
F
.
fftconvolve
],
[(
4
,
3
,
1
,
2
),
(
1
,)],
[(
10
,
4
),
(
2
,
2
,
2
)],
)
def
test_convolve_input_leading_dim_check
(
self
,
fn
,
x_shape
,
y_shape
):
"""Check that convolve properly rejects inputs with different leading dimensions."""
x
=
torch
.
rand
(
*
x_shape
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
y
=
torch
.
rand
(
*
y_shape
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
with
self
.
assertRaisesRegex
(
ValueError
,
"Leading dimensions"
):
fn
(
x
,
y
)
def
test_add_noise_broadcast
(
self
):
"""Check that add_noise produces correct outputs when broadcasting input dimensions."""
leading_dims
=
(
5
,
2
,
3
)
L
=
51
waveform
=
torch
.
rand
(
*
leading_dims
,
L
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
noise
=
torch
.
rand
(
5
,
1
,
1
,
L
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
lengths
=
torch
.
rand
(
5
,
1
,
3
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
snr
=
torch
.
rand
(
1
,
1
,
1
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
*
10
actual
=
F
.
add_noise
(
waveform
,
noise
,
lengths
,
snr
)
noise_expanded
=
noise
.
expand
(
*
leading_dims
,
L
)
snr_expanded
=
snr
.
expand
(
*
leading_dims
)
lengths_expanded
=
lengths
.
expand
(
*
leading_dims
)
expected
=
F
.
add_noise
(
waveform
,
noise_expanded
,
lengths_expanded
,
snr_expanded
)
self
.
assertEqual
(
expected
,
actual
)
@
parameterized
.
expand
(
[((
5
,
2
,
3
),
(
2
,
1
,
1
),
(
5
,
2
),
(
5
,
2
,
3
)),
((
2
,
1
),
(
5
,),
(
5
,),
(
5
,)),
((
3
,),
(
5
,
2
,
3
),
(
2
,
1
,
1
),
(
5
,
2
))]
)
def
test_add_noise_leading_dim_check
(
self
,
waveform_dims
,
noise_dims
,
lengths_dims
,
snr_dims
):
"""Check that add_noise properly rejects inputs with different leading dimension lengths."""
L
=
51
waveform
=
torch
.
rand
(
*
waveform_dims
,
L
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
noise
=
torch
.
rand
(
*
noise_dims
,
L
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
lengths
=
torch
.
rand
(
*
lengths_dims
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
snr
=
torch
.
rand
(
*
snr_dims
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
*
10
with
self
.
assertRaisesRegex
(
ValueError
,
"Input leading dimensions"
):
F
.
add_noise
(
waveform
,
noise
,
lengths
,
snr
)
def
test_add_noise_length_check
(
self
):
"""Check that add_noise properly rejects inputs that have inconsistent length dimensions."""
leading_dims
=
(
5
,
2
,
3
)
L
=
51
waveform
=
torch
.
rand
(
*
leading_dims
,
L
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
noise
=
torch
.
rand
(
*
leading_dims
,
50
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
lengths
=
torch
.
rand
(
*
leading_dims
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
snr
=
torch
.
rand
(
*
leading_dims
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
*
10
with
self
.
assertRaisesRegex
(
ValueError
,
"Length dimensions"
):
F
.
add_noise
(
waveform
,
noise
,
lengths
,
snr
)
test/torchaudio_unittest/prototype/functional/torchscript_consistency_cpu_test.py
deleted
100644 → 0
View file @
84d8ced9
import
torch
from
torchaudio_unittest.common_utils
import
PytorchTestCase
from
.torchscript_consistency_test_impl
import
TorchScriptConsistencyTestImpl
class
TorchScriptConsistencyCPUFloat32Test
(
TorchScriptConsistencyTestImpl
,
PytorchTestCase
):
dtype
=
torch
.
float32
device
=
torch
.
device
(
"cpu"
)
class
TorchScriptConsistencyCPUFloat64Test
(
TorchScriptConsistencyTestImpl
,
PytorchTestCase
):
dtype
=
torch
.
float64
device
=
torch
.
device
(
"cpu"
)
test/torchaudio_unittest/prototype/functional/torchscript_consistency_cuda_test.py
deleted
100644 → 0
View file @
84d8ced9
import
torch
from
torchaudio_unittest.common_utils
import
PytorchTestCase
,
skipIfNoCuda
from
.torchscript_consistency_test_impl
import
TorchScriptConsistencyTestImpl
@
skipIfNoCuda
class
TorchScriptConsistencyCUDAFloat32Test
(
TorchScriptConsistencyTestImpl
,
PytorchTestCase
):
dtype
=
torch
.
float32
device
=
torch
.
device
(
"cuda"
)
@
skipIfNoCuda
class
TorchScriptConsistencyCUDAFloat64Test
(
TorchScriptConsistencyTestImpl
,
PytorchTestCase
):
dtype
=
torch
.
float64
device
=
torch
.
device
(
"cuda"
)
test/torchaudio_unittest/prototype/functional/torchscript_consistency_test_impl.py
deleted
100644 → 0
View file @
84d8ced9
import
torch
import
torchaudio.prototype.functional
as
F
from
parameterized
import
parameterized
from
torchaudio_unittest.common_utils
import
TestBaseMixin
,
torch_script
class
TorchScriptConsistencyTestImpl
(
TestBaseMixin
):
def
_assert_consistency
(
self
,
func
,
inputs
,
shape_only
=
False
):
inputs_
=
[]
for
i
in
inputs
:
if
torch
.
is_tensor
(
i
):
i
=
i
.
to
(
device
=
self
.
device
,
dtype
=
self
.
dtype
)
inputs_
.
append
(
i
)
ts_func
=
torch_script
(
func
)
torch
.
random
.
manual_seed
(
40
)
output
=
func
(
*
inputs_
)
torch
.
random
.
manual_seed
(
40
)
ts_output
=
ts_func
(
*
inputs_
)
if
shape_only
:
ts_output
=
ts_output
.
shape
output
=
output
.
shape
self
.
assertEqual
(
ts_output
,
output
)
@
parameterized
.
expand
(
[
(
F
.
convolve
,),
(
F
.
fftconvolve
,),
]
)
def
test_convolve
(
self
,
fn
):
leading_dims
=
(
2
,
3
,
2
)
L_x
,
L_y
=
32
,
55
x
=
torch
.
rand
(
*
leading_dims
,
L_x
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
y
=
torch
.
rand
(
*
leading_dims
,
L_y
,
dtype
=
self
.
dtype
,
device
=
self
.
device
)
self
.
_assert_consistency
(
fn
,
(
x
,
y
))
def
test_add_noise
(
self
):
leading_dims
=
(
2
,
3
)
L
=
31
waveform
=
torch
.
rand
(
*
leading_dims
,
L
,
dtype
=
self
.
dtype
,
device
=
self
.
device
,
requires_grad
=
True
)
noise
=
torch
.
rand
(
*
leading_dims
,
L
,
dtype
=
self
.
dtype
,
device
=
self
.
device
,
requires_grad
=
True
)
lengths
=
torch
.
rand
(
*
leading_dims
,
dtype
=
self
.
dtype
,
device
=
self
.
device
,
requires_grad
=
True
)
snr
=
torch
.
rand
(
*
leading_dims
,
dtype
=
self
.
dtype
,
device
=
self
.
device
,
requires_grad
=
True
)
*
10
self
.
_assert_consistency
(
F
.
add_noise
,
(
waveform
,
noise
,
lengths
,
snr
))
test/torchaudio_unittest/prototype/rnnt_cpu_test.py
deleted
100644 → 0
View file @
84d8ced9
import
torch
from
torchaudio_unittest.common_utils
import
PytorchTestCase
from
torchaudio_unittest.prototype.rnnt_test_impl
import
ConformerRNNTTestImpl
class
ConformerRNNTFloat32CPUTest
(
ConformerRNNTTestImpl
,
PytorchTestCase
):
dtype
=
torch
.
float32
device
=
torch
.
device
(
"cpu"
)
class
ConformerRNNTFloat64CPUTest
(
ConformerRNNTTestImpl
,
PytorchTestCase
):
dtype
=
torch
.
float64
device
=
torch
.
device
(
"cpu"
)
test/torchaudio_unittest/prototype/rnnt_gpu_test.py
deleted
100644 → 0
View file @
84d8ced9
import
torch
from
torchaudio_unittest.common_utils
import
PytorchTestCase
,
skipIfNoCuda
from
torchaudio_unittest.prototype.rnnt_test_impl
import
ConformerRNNTTestImpl
@
skipIfNoCuda
class
ConformerRNNTFloat32GPUTest
(
ConformerRNNTTestImpl
,
PytorchTestCase
):
dtype
=
torch
.
float32
device
=
torch
.
device
(
"cuda"
)
@
skipIfNoCuda
class
ConformerRNNTFloat64GPUTest
(
ConformerRNNTTestImpl
,
PytorchTestCase
):
dtype
=
torch
.
float64
device
=
torch
.
device
(
"cuda"
)
test/torchaudio_unittest/prototype/rnnt_test_impl.py
deleted
100644 → 0
View file @
84d8ced9
import
torch
from
torchaudio.prototype.models
import
conformer_rnnt_model
from
torchaudio_unittest.common_utils
import
TestBaseMixin
,
torch_script
class
ConformerRNNTTestImpl
(
TestBaseMixin
):
def
_get_input_config
(
self
):
model_config
=
self
.
_get_model_config
()
max_input_length
=
59
return
{
"batch_size"
:
7
,
"max_input_length"
:
max_input_length
,
"num_symbols"
:
model_config
[
"num_symbols"
],
"max_target_length"
:
45
,
"input_dim"
:
model_config
[
"input_dim"
],
"encoding_dim"
:
model_config
[
"encoding_dim"
],
"joiner_max_input_length"
:
max_input_length
//
model_config
[
"time_reduction_stride"
],
"time_reduction_stride"
:
model_config
[
"time_reduction_stride"
],
}
def
_get_model_config
(
self
):
return
{
"input_dim"
:
80
,
"num_symbols"
:
128
,
"encoding_dim"
:
64
,
"symbol_embedding_dim"
:
32
,
"num_lstm_layers"
:
2
,
"lstm_hidden_dim"
:
11
,
"lstm_layer_norm"
:
True
,
"lstm_layer_norm_epsilon"
:
1e-5
,
"lstm_dropout"
:
0.3
,
"joiner_activation"
:
"tanh"
,
"time_reduction_stride"
:
4
,
"conformer_input_dim"
:
100
,
"conformer_ffn_dim"
:
33
,
"conformer_num_layers"
:
3
,
"conformer_num_heads"
:
4
,
"conformer_depthwise_conv_kernel_size"
:
31
,
"conformer_dropout"
:
0.1
,
}
def
_get_model
(
self
):
return
conformer_rnnt_model
(
**
self
.
_get_model_config
()).
to
(
device
=
self
.
device
,
dtype
=
self
.
dtype
).
eval
()
def
_get_transcriber_input
(
self
):
input_config
=
self
.
_get_input_config
()
batch_size
=
input_config
[
"batch_size"
]
max_input_length
=
input_config
[
"max_input_length"
]
input_dim
=
input_config
[
"input_dim"
]
input
=
torch
.
rand
(
batch_size
,
max_input_length
,
input_dim
).
to
(
device
=
self
.
device
,
dtype
=
self
.
dtype
)
lengths
=
torch
.
full
((
batch_size
,),
max_input_length
).
to
(
device
=
self
.
device
,
dtype
=
torch
.
int32
)
return
input
,
lengths
def
_get_predictor_input
(
self
):
input_config
=
self
.
_get_input_config
()
batch_size
=
input_config
[
"batch_size"
]
num_symbols
=
input_config
[
"num_symbols"
]
max_target_length
=
input_config
[
"max_target_length"
]
input
=
torch
.
randint
(
0
,
num_symbols
,
(
batch_size
,
max_target_length
)).
to
(
device
=
self
.
device
,
dtype
=
torch
.
int32
)
lengths
=
torch
.
full
((
batch_size
,),
max_target_length
).
to
(
device
=
self
.
device
,
dtype
=
torch
.
int32
)
return
input
,
lengths
def
_get_joiner_input
(
self
):
input_config
=
self
.
_get_input_config
()
batch_size
=
input_config
[
"batch_size"
]
joiner_max_input_length
=
input_config
[
"joiner_max_input_length"
]
max_target_length
=
input_config
[
"max_target_length"
]
input_dim
=
input_config
[
"encoding_dim"
]
utterance_encodings
=
torch
.
rand
(
batch_size
,
joiner_max_input_length
,
input_dim
).
to
(
device
=
self
.
device
,
dtype
=
self
.
dtype
)
utterance_lengths
=
torch
.
randint
(
0
,
joiner_max_input_length
+
1
,
(
batch_size
,)).
to
(
device
=
self
.
device
,
dtype
=
torch
.
int32
)
target_encodings
=
torch
.
rand
(
batch_size
,
max_target_length
,
input_dim
).
to
(
device
=
self
.
device
,
dtype
=
self
.
dtype
)
target_lengths
=
torch
.
randint
(
0
,
max_target_length
+
1
,
(
batch_size
,)).
to
(
device
=
self
.
device
,
dtype
=
torch
.
int32
)
return
utterance_encodings
,
utterance_lengths
,
target_encodings
,
target_lengths
def
setUp
(
self
):
super
().
setUp
()
torch
.
random
.
manual_seed
(
31
)
def
test_torchscript_consistency_forward
(
self
):
r
"""Verify that scripting RNNT does not change the behavior of method `forward`."""
inputs
,
input_lengths
=
self
.
_get_transcriber_input
()
targets
,
target_lengths
=
self
.
_get_predictor_input
()
rnnt
=
self
.
_get_model
()
scripted
=
torch_script
(
rnnt
).
eval
()
ref_state
,
scripted_state
=
None
,
None
for
_
in
range
(
2
):
ref_out
,
ref_input_lengths
,
ref_target_lengths
,
ref_state
=
rnnt
(
inputs
,
input_lengths
,
targets
,
target_lengths
,
ref_state
)
(
scripted_out
,
scripted_input_lengths
,
scripted_target_lengths
,
scripted_state
,
)
=
scripted
(
inputs
,
input_lengths
,
targets
,
target_lengths
,
scripted_state
)
self
.
assertEqual
(
ref_out
,
scripted_out
)
self
.
assertEqual
(
ref_input_lengths
,
scripted_input_lengths
)
self
.
assertEqual
(
ref_target_lengths
,
scripted_target_lengths
)
self
.
assertEqual
(
ref_state
,
scripted_state
)
def
test_torchscript_consistency_transcribe
(
self
):
r
"""Verify that scripting RNNT does not change the behavior of method `transcribe`."""
input
,
lengths
=
self
.
_get_transcriber_input
()
rnnt
=
self
.
_get_model
()
scripted
=
torch_script
(
rnnt
)
ref_out
,
ref_lengths
=
rnnt
.
transcribe
(
input
,
lengths
)
scripted_out
,
scripted_lengths
=
scripted
.
transcribe
(
input
,
lengths
)
self
.
assertEqual
(
ref_out
,
scripted_out
)
self
.
assertEqual
(
ref_lengths
,
scripted_lengths
)
def
test_torchscript_consistency_predict
(
self
):
r
"""Verify that scripting RNNT does not change the behavior of method `predict`."""
input
,
lengths
=
self
.
_get_predictor_input
()
rnnt
=
self
.
_get_model
()
scripted
=
torch_script
(
rnnt
)
ref_state
,
scripted_state
=
None
,
None
for
_
in
range
(
2
):
ref_out
,
ref_lengths
,
ref_state
=
rnnt
.
predict
(
input
,
lengths
,
ref_state
)
scripted_out
,
scripted_lengths
,
scripted_state
=
scripted
.
predict
(
input
,
lengths
,
scripted_state
)
self
.
assertEqual
(
ref_out
,
scripted_out
)
self
.
assertEqual
(
ref_lengths
,
scripted_lengths
)
self
.
assertEqual
(
ref_state
,
scripted_state
)
def
test_torchscript_consistency_join
(
self
):
r
"""Verify that scripting RNNT does not change the behavior of method `join`."""
(
utterance_encodings
,
utterance_lengths
,
target_encodings
,
target_lengths
,
)
=
self
.
_get_joiner_input
()
rnnt
=
self
.
_get_model
()
scripted
=
torch_script
(
rnnt
)
ref_out
,
ref_src_lengths
,
ref_tgt_lengths
=
rnnt
.
join
(
utterance_encodings
,
utterance_lengths
,
target_encodings
,
target_lengths
)
scripted_out
,
scripted_src_lengths
,
scripted_tgt_lengths
=
scripted
.
join
(
utterance_encodings
,
utterance_lengths
,
target_encodings
,
target_lengths
)
self
.
assertEqual
(
ref_out
,
scripted_out
)
self
.
assertEqual
(
ref_src_lengths
,
scripted_src_lengths
)
self
.
assertEqual
(
ref_tgt_lengths
,
scripted_tgt_lengths
)
def
test_output_shape_forward
(
self
):
r
"""Check that method `forward` produces correctly-shaped outputs."""
input_config
=
self
.
_get_input_config
()
batch_size
=
input_config
[
"batch_size"
]
joiner_max_input_length
=
input_config
[
"joiner_max_input_length"
]
max_target_length
=
input_config
[
"max_target_length"
]
num_symbols
=
input_config
[
"num_symbols"
]
inputs
,
input_lengths
=
self
.
_get_transcriber_input
()
targets
,
target_lengths
=
self
.
_get_predictor_input
()
rnnt
=
self
.
_get_model
()
state
=
None
for
_
in
range
(
2
):
out
,
out_lengths
,
target_lengths
,
state
=
rnnt
(
inputs
,
input_lengths
,
targets
,
target_lengths
,
state
)
self
.
assertEqual
(
(
batch_size
,
joiner_max_input_length
,
max_target_length
,
num_symbols
),
out
.
shape
,
)
self
.
assertEqual
((
batch_size
,),
out_lengths
.
shape
)
self
.
assertEqual
((
batch_size
,),
target_lengths
.
shape
)
def
test_output_shape_transcribe
(
self
):
r
"""Check that method `transcribe` produces correctly-shaped outputs."""
input_config
=
self
.
_get_input_config
()
batch_size
=
input_config
[
"batch_size"
]
max_input_length
=
input_config
[
"max_input_length"
]
input
,
lengths
=
self
.
_get_transcriber_input
()
model_config
=
self
.
_get_model_config
()
encoding_dim
=
model_config
[
"encoding_dim"
]
time_reduction_stride
=
model_config
[
"time_reduction_stride"
]
rnnt
=
self
.
_get_model
()
out
,
out_lengths
=
rnnt
.
transcribe
(
input
,
lengths
)
self
.
assertEqual
(
(
batch_size
,
max_input_length
//
time_reduction_stride
,
encoding_dim
),
out
.
shape
,
)
self
.
assertEqual
((
batch_size
,),
out_lengths
.
shape
)
def
test_output_shape_predict
(
self
):
r
"""Check that method `predict` produces correctly-shaped outputs."""
input_config
=
self
.
_get_input_config
()
batch_size
=
input_config
[
"batch_size"
]
max_target_length
=
input_config
[
"max_target_length"
]
model_config
=
self
.
_get_model_config
()
encoding_dim
=
model_config
[
"encoding_dim"
]
input
,
lengths
=
self
.
_get_predictor_input
()
rnnt
=
self
.
_get_model
()
state
=
None
for
_
in
range
(
2
):
out
,
out_lengths
,
state
=
rnnt
.
predict
(
input
,
lengths
,
state
)
self
.
assertEqual
((
batch_size
,
max_target_length
,
encoding_dim
),
out
.
shape
)
self
.
assertEqual
((
batch_size
,),
out_lengths
.
shape
)
def
test_output_shape_join
(
self
):
r
"""Check that method `join` produces correctly-shaped outputs."""
input_config
=
self
.
_get_input_config
()
batch_size
=
input_config
[
"batch_size"
]
joiner_max_input_length
=
input_config
[
"joiner_max_input_length"
]
max_target_length
=
input_config
[
"max_target_length"
]
num_symbols
=
input_config
[
"num_symbols"
]
(
utterance_encodings
,
utterance_lengths
,
target_encodings
,
target_lengths
,
)
=
self
.
_get_joiner_input
()
rnnt
=
self
.
_get_model
()
out
,
src_lengths
,
tgt_lengths
=
rnnt
.
join
(
utterance_encodings
,
utterance_lengths
,
target_encodings
,
target_lengths
)
self
.
assertEqual
(
(
batch_size
,
joiner_max_input_length
,
max_target_length
,
num_symbols
),
out
.
shape
,
)
self
.
assertEqual
((
batch_size
,),
src_lengths
.
shape
)
self
.
assertEqual
((
batch_size
,),
tgt_lengths
.
shape
)
Prev
1
2
3
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment