returnn 1.20250810.211220__tar.gz → 1.20251104.113756__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of returnn might be problematic. Click here for more details.
- {returnn-1.20250810.211220/returnn.egg-info → returnn-1.20251104.113756}/PKG-INFO +1 -1
- returnn-1.20251104.113756/_setup_info_generated.py +2 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/config.py +1 -1
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/basic.py +45 -17
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/distrib_files.py +65 -6
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/generating.py +12 -21
- returnn-1.20251104.113756/returnn/datasets/huggingface.py +434 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/lm.py +20 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/meta.py +92 -23
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/multi_proc.py +6 -5
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/text_dict.py +1 -1
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_backend.py +14 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_cache.py +4 -2
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/array_.py +87 -21
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/attention.py +1 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/conv.py +7 -4
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/decoder/transformer.py +36 -17
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/dims.py +26 -10
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/encoder/conformer.py +33 -8
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/hooks.py +3 -3
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/module.py +8 -1
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/nested.py +10 -1
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/normalization.py +1 -1
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/rand.py +14 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/signal.py +1 -1
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/_dim_extra.py +375 -557
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/_tensor_extra.py +6 -1
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/_backend.py +7 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_low_level/_backend.py +15 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/layers/basic.py +2 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/data/returnn_dataset_wrapper.py +9 -3
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/engine.py +43 -2
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/frontend/_backend.py +31 -1
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/updater.py +60 -30
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/util/diagnose_gpu.py +65 -31
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/basic.py +25 -8
- returnn-1.20251104.113756/returnn/util/collect_outputs_dict.py +79 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/file_cache.py +46 -4
- {returnn-1.20250810.211220 → returnn-1.20251104.113756/returnn.egg-info}/PKG-INFO +1 -1
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn.egg-info/SOURCES.txt +4 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/rf_utils.py +26 -5
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_Dataset.py +104 -1
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TFUtil.py +1 -70
- returnn-1.20251104.113756/tests/test_datasets_huggingface.py +201 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_array.py +40 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_attention.py +2 -2
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_base.py +45 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_conv.py +19 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_decoder_transformer.py +245 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_encoder_conformer.py +136 -25
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_signal.py +34 -0
- returnn-1.20251104.113756/tests/test_tensor.py +189 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_torch_engine.py +122 -0
- returnn-1.20251104.113756/tools/file-cache.py +109 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/torch_scale_tuning.py +1 -1
- returnn-1.20250810.211220/_setup_info_generated.py +0 -2
- returnn-1.20250810.211220/tests/test_tensor.py +0 -40
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/.editorconfig +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/.gitignore +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/.gitmodules +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/.kateconfig +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/CHANGELOG.md +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/CODEOWNERS +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/CONTRIBUTING.md +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/LICENSE +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/MANIFEST.in +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/README.rst +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/12AX.cluster_map +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/_setup_returnn_env.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-fwd.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-horovod-mpi.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-horovod-mpi.py.sh +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-horovod-mpi.sh +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-hyper-param-tuning.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-iter-dataset.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-list-devices.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-lua-torch-layer.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-pretrain.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-record-and-push-to-webserver.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-returnn-as-framework.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-rf-pt-benchmark.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-rf.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-rhn-enwik8.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-sprint-interface.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-att-copy.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-attention.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-enc-dec.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-hard-att-copy.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-lstm-benchmark.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-native-lstm.12ax.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-native-lstm2.12ax.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-neural-transducer.12ax.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-rec-explicit-lstm.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-rec-explicit-rnn.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-rec-self-att.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-search-compiled-graph.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-timit-lstm-ctc.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-torch.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo.sh +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/README.txt +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/chars.txt +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/config_demo +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/config_fwd +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/config_real +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/decode.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/go.sh +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/lines.txt +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/split/eval.txt +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/split/train.txt +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/split/valid.txt +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/README.md +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/artificial/create_test_h5.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/artificial/forwardconfig +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/artificial/go.sh +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/artificial/trainconfig +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/artificial_rgb/go.sh +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/pyproject.toml +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/requirements.txt +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/__main__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/__old_mod_loader__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/__setup__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/audio.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/bundle_file.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/cached.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/cached2.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/hdf.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/map.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/normalization_data.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/numpy_dump.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/postprocessing.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/raw_wav.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/sprint.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/stereo.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/util/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/util/feature_extraction.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/util/strings.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/util/vocabulary.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/engine/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/engine/base.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/engine/batch.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/__main__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/.git +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/graph_editor/README.md +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/graph_editor/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/graph_editor/edit.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/graph_editor/reroute.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/graph_editor/select.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/graph_editor/subgraph.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/graph_editor/transform.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/graph_editor/util.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/forward_iface.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_native/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_native/backend.cpp +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_native/backend.hpp +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_native/module.cpp +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_native/module.hpp +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_native/py_utils.hpp +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_native/tensor_ops.cpp +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_native/tensor_ops.hpp +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_numpy_backend.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_random_journal.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_utils.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/audio/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/audio/mel.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/audio/specaugment.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/backend.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/build_from_dict.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/cond.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/const.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/container.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/control_flow_ctx.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/conversions/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/conversions/espnet_e_branchformer.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/conversions/hf_llama.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/conversions/torch_nn.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/decoder/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/device.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/dropout.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/dtype.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/encoder/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/encoder/base.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/encoder/conformer_v2.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/encoder/e_branchformer.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/encoder/transformer.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/gradient.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/graph.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/init.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/label_smoothing.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/linear.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/loop.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/loss.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/math_.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/matmul.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/parameter.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/parametrizations.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/parametrize.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/piecewise_linear.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/rec.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/reduce.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/run_ctx.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/state.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/stepwise_scheduler.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/tensor_array.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/types.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/import_/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/import_/common.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/import_/git.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/import_/import_.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/learning_rate_control.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/log.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/native_op.cpp +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/native_op.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/pretrain.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/sprint/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/sprint/cache.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/sprint/control.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/sprint/error_signals.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/sprint/extern_interface.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/sprint/interface.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/README.md +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/_tensor_mixin_base.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/_tensor_op_overloads.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/control_flow_ctx.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/dim.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/marked_dim.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/tensor.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/tensor_dict.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/utils.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/compat.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/data_pipeline.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/distributed.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/engine.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/README.md +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/_utils.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/cond.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/dims.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/layer.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/loop.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/make_layer.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/masked_computation.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_low_level/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/horovod.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/hyper_param_tuning.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/layers/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/layers/base.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/layers/rec.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/layers/segmental_model.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/layers/signal_processing.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/layers/variable.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/native_op.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/network.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/sprint.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/updater.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/util/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/util/basic.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/util/data.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/util/gradient_checkpoint.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/util/ken_lm.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/util/open_fst.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/README.md +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/data/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/data/extern_data.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/data/pipeline.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/data/queued_data_iter.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/data/tensor_utils.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/distributed.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/frontend/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/frontend/_rand.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/frontend/bridge.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/frontend/raw_ops.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/optim/README.md +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/optim/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/optim/lion.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/util/README.md +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/util/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/util/array_.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/util/debug_inf_nan.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/util/exception_helper.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/util/gradient_checkpoint.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/util/module.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/util/scaled_gradient.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/__init__.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/better_exchook.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/bpe.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/debug.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/debug_helpers.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/fsa.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/literal_py_to_pickle.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/lru_cache.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/math.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/native_code_compiler.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/pprint.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/py-to-pickle.cpp +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/py_ext_mod_compiler.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/result_with_reason.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/sig_proc.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/task_system.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/train_proc_manager.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/watch_memory.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn.egg-info/dependency_links.txt +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn.egg-info/requires.txt +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn.egg-info/top_level.txt +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/rnn.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/setup.cfg +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/setup.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/DummySprintExec.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm-inspection-profile.xml +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/.gitignore +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/.name +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/misc.xml +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/modules.xml +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/returnn.iml +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/_set_num_threads1.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/_setup_returnn_env.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/_setup_test_env.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/bpe-unicode-demo.codes +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/bpe-unicode-demo.vocab +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/lexicon_opt.fst +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/lexicon_opt.isyms +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/lexicon_opt.jpg +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/lexicon_opt.osyms +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/lint_common.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/pycharm-inspect.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/pylint.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/returnn-as-framework.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/spelling.dic +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_Config.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_Fsa.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_GeneratingDataset.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_HDFDataset.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_LearningRateControl.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_Log.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_MultiProcDataset.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_Pretrain.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_ResNet.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_SprintDataset.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_SprintInterface.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TFEngine.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TFNativeOp.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TFNetworkLayer.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TFNetworkRecLayer.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TFNetworkSigProcLayer.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TFUpdater.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TF_determinism.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TaskSystem.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TaskSystem_SharedMem.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TranslationDataset.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_Util.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_demos.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_fork_exec.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_hdf_dump.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_cond.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_const.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_container.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_gradient.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_label_smoothing.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_loop.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_math.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_normalization.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_piecewise_linear.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_rec.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_reduce.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_threading.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_tools.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_torch_dataset.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_torch_frontend.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_torch_internal_frontend.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_torch_util.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/torch_utils.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/_setup_returnn_env.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/analyze-dataset-batches.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/bliss-collect-seq-lens.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/bliss-dump-text.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/bliss-get-segment-names.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/bliss-to-ogg-zip.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/bpe-create-lexicon.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/calculate-word-error-rate.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/cleanup-old-models.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/collect-orth-symbols.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/collect-words.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/compile_native_op.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/compile_tf_graph.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/debug-dump-search-scores.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/debug-plot-search-scores.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/dump-dataset-raw-strings.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/dump-dataset.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/dump-forward-stats.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/dump-forward.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/dump-network-json.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/dump-pickle.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/extract_state_tying_from_dataset.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/get-attention-weights.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/get-best-model-epoch.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/hdf_dump.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/hdf_dump_translation_dataset.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/import-blocks-mt-model.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/import-t2t-mt-model.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/.gitignore +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/Makefile +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/README.md +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/example/README.md +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/example/libs_list +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/example/state_vars_list +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/example/tensor_names_list +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/file.h +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/main.cc +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/rescorer.h +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/vocabulary.cc +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/vocabulary.h +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/tf_avg_checkpoints.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/tf_inspect_checkpoint.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/tf_inspect_summary_log.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/torch_avg_checkpoints.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/torch_export_to_onnx.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/torch_inspect_checkpoint.py +0 -0
- {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/torch_inspect_checkpoint_and_opt.py +0 -0
|
@@ -801,7 +801,7 @@ class SubProcCopyGlobalConfigPreInitFunc:
|
|
|
801
801
|
from returnn.log import log
|
|
802
802
|
from returnn import __old_mod_loader__
|
|
803
803
|
|
|
804
|
-
better_exchook.
|
|
804
|
+
better_exchook.setup_all()
|
|
805
805
|
__old_mod_loader__.disable_lazy_mod_loads()
|
|
806
806
|
|
|
807
807
|
if self.global_config:
|
|
@@ -19,6 +19,7 @@ import os
|
|
|
19
19
|
import math
|
|
20
20
|
import numpy
|
|
21
21
|
import functools
|
|
22
|
+
import types
|
|
22
23
|
from typing import TYPE_CHECKING, Optional, Any, Set, Tuple, Union, Type, Dict, Sequence, List, Callable
|
|
23
24
|
|
|
24
25
|
from returnn.log import log
|
|
@@ -154,7 +155,7 @@ class Dataset:
|
|
|
154
155
|
self.seq_tags_filter = set(self._load_seq_list_file(seq_list_filter_file)) if seq_list_filter_file else None
|
|
155
156
|
self.unique_seq_tags = unique_seq_tags
|
|
156
157
|
self._seq_order_seq_lens_file = seq_order_seq_lens_file
|
|
157
|
-
self._seq_order_seq_lens_by_idx = None
|
|
158
|
+
self._seq_order_seq_lens_by_idx: Optional[Sequence[Union[int, float]]] = None
|
|
158
159
|
# There is probably no use case for combining the two, so avoid potential misconfiguration.
|
|
159
160
|
assert self.partition_epoch == 1 or self.repeat_epoch == 1, (
|
|
160
161
|
"Combining partition_epoch and repeat_epoch is prohibited."
|
|
@@ -486,12 +487,8 @@ class Dataset:
|
|
|
486
487
|
"""
|
|
487
488
|
raise NotImplementedError
|
|
488
489
|
|
|
489
|
-
def _get_seq_order_seq_lens_by_idx(self, seq_idx):
|
|
490
|
-
|
|
491
|
-
:param int seq_idx:
|
|
492
|
-
:rtype: int
|
|
493
|
-
"""
|
|
494
|
-
if not self._seq_order_seq_lens_by_idx:
|
|
490
|
+
def _get_seq_order_seq_lens_by_idx(self, seq_idx: int) -> Union[int, float]:
|
|
491
|
+
if self._seq_order_seq_lens_by_idx is None:
|
|
495
492
|
assert self._seq_order_seq_lens_file
|
|
496
493
|
if self._seq_order_seq_lens_file.endswith(".gz"):
|
|
497
494
|
import gzip
|
|
@@ -502,11 +499,12 @@ class Dataset:
|
|
|
502
499
|
seq_lens = eval(raw)
|
|
503
500
|
assert isinstance(seq_lens, dict)
|
|
504
501
|
all_tags = self.get_all_tags()
|
|
505
|
-
self._seq_order_seq_lens_by_idx = [seq_lens[tag] for tag in all_tags]
|
|
502
|
+
self._seq_order_seq_lens_by_idx = numpy.array([seq_lens[tag] for tag in all_tags])
|
|
503
|
+
self._get_seq_order_seq_lens_by_idx = self._seq_order_seq_lens_by_idx.__getitem__ # faster
|
|
506
504
|
return self._seq_order_seq_lens_by_idx[seq_idx]
|
|
507
505
|
|
|
508
506
|
def get_seq_order_for_epoch(
|
|
509
|
-
self, epoch: Optional[int], num_seqs: int, get_seq_len: Optional[Callable[[int], int]] = None
|
|
507
|
+
self, epoch: Optional[int], num_seqs: int, get_seq_len: Optional[Callable[[int], Union[int, float]]] = None
|
|
510
508
|
) -> Sequence[int]:
|
|
511
509
|
"""
|
|
512
510
|
Returns the order of the given epoch.
|
|
@@ -515,7 +513,7 @@ class Dataset:
|
|
|
515
513
|
|
|
516
514
|
:param epoch: for 'random', this determines the random seed
|
|
517
515
|
:param num_seqs:
|
|
518
|
-
:param get_seq_len: function (originalSeqIdx: int) -> int
|
|
516
|
+
:param get_seq_len: function (originalSeqIdx: int) -> int|float
|
|
519
517
|
:return: the order for the given epoch. such that seq_idx -> underlying idx
|
|
520
518
|
"""
|
|
521
519
|
if epoch is None:
|
|
@@ -561,17 +559,30 @@ class Dataset:
|
|
|
561
559
|
seq_index = range(num_seqs - 1, -1, -1) # type: Union[range, Sequence[int]]
|
|
562
560
|
elif seq_ordering_method in ["sorted", "sorted_reverse"]:
|
|
563
561
|
assert get_seq_len
|
|
564
|
-
|
|
565
|
-
|
|
562
|
+
seq_lens = _get_seq_len_as_array(get_seq_len, num_seqs)
|
|
563
|
+
if seq_ordering_method == "sorted_reverse":
|
|
564
|
+
seq_lens = -seq_lens
|
|
566
565
|
seq_index = numpy.argsort(seq_lens, kind="stable")
|
|
567
|
-
elif seq_ordering_method.startswith("random"):
|
|
568
|
-
tmp = seq_ordering_method.split(":")
|
|
566
|
+
elif seq_ordering_method == "random" or seq_ordering_method.startswith("random:"):
|
|
567
|
+
tmp = seq_ordering_method.split(":", 1)
|
|
569
568
|
nth = int(tmp[1]) if len(tmp) > 1 else 1
|
|
570
569
|
# Keep this deterministic! Use fixed seed.
|
|
571
570
|
rnd_seed = self._get_random_seed_for_epoch(epoch=epoch, num_epochs_fixed=nth)
|
|
572
571
|
random_generator = numpy.random.RandomState(rnd_seed)
|
|
573
572
|
seq_index = random_generator.permutation(num_seqs)
|
|
574
|
-
elif seq_ordering_method.startswith("
|
|
573
|
+
elif seq_ordering_method == "random_sample" or seq_ordering_method.startswith("random_sample:"):
|
|
574
|
+
tmp = seq_ordering_method.split(":", 1)
|
|
575
|
+
nth = int(tmp[1]) if len(tmp) > 1 else 1
|
|
576
|
+
# Keep this deterministic! Use fixed seed.
|
|
577
|
+
rnd_seed = self._get_random_seed_for_epoch(epoch=epoch, num_epochs_fixed=nth)
|
|
578
|
+
random_generator = numpy.random.RandomState(rnd_seed)
|
|
579
|
+
seq_index = random_generator.randint(0, num_seqs, size=num_seqs)
|
|
580
|
+
elif (
|
|
581
|
+
seq_ordering_method == "sort_bin_shuffle"
|
|
582
|
+
or seq_ordering_method.startswith("sort_bin_shuffle:")
|
|
583
|
+
or seq_ordering_method == "sort_bin_shuffle_x2"
|
|
584
|
+
or seq_ordering_method.startswith("sort_bin_shuffle_x2:")
|
|
585
|
+
):
|
|
575
586
|
# Shuffle seqs, sort by length, and shuffle bins (then shuffle seqs within each bin if sort_bin_shuffle_x2).
|
|
576
587
|
assert get_seq_len
|
|
577
588
|
tmp = seq_ordering_method.split(":")[1:]
|
|
@@ -602,7 +613,7 @@ class Dataset:
|
|
|
602
613
|
random_generator.shuffle(part) # Shuffle within the bin.
|
|
603
614
|
out_index.append(part)
|
|
604
615
|
seq_index = numpy.concatenate(out_index)
|
|
605
|
-
elif seq_ordering_method.startswith("laplace"):
|
|
616
|
+
elif seq_ordering_method == "laplace" or seq_ordering_method.startswith("laplace:"):
|
|
606
617
|
assert get_seq_len
|
|
607
618
|
tmp = seq_ordering_method.split(":")[1:]
|
|
608
619
|
if len(tmp) == 0:
|
|
@@ -616,7 +627,7 @@ class Dataset:
|
|
|
616
627
|
nth = 1
|
|
617
628
|
else:
|
|
618
629
|
nth = int(tmp[1])
|
|
619
|
-
seq_lens =
|
|
630
|
+
seq_lens = _get_seq_len_as_array(get_seq_len, num_seqs)
|
|
620
631
|
rnd_seed = self._get_random_seed_for_epoch(epoch=epoch, num_epochs_fixed=nth)
|
|
621
632
|
random_generator = numpy.random.RandomState(rnd_seed)
|
|
622
633
|
seq_index = random_generator.permutation(num_seqs) # type: Union[numpy.ndarray, List[int]]
|
|
@@ -1489,6 +1500,7 @@ def get_dataset_class(name: Union[str, Type[Dataset]]) -> Optional[Type[Dataset]
|
|
|
1489
1500
|
"distrib_files",
|
|
1490
1501
|
"postprocessing",
|
|
1491
1502
|
"text_dict",
|
|
1503
|
+
"huggingface",
|
|
1492
1504
|
]
|
|
1493
1505
|
for mod_name in mod_names:
|
|
1494
1506
|
mod = import_module("returnn.datasets.%s" % mod_name)
|
|
@@ -1745,3 +1757,19 @@ def set_config_extern_data_from_dataset(config, dataset):
|
|
|
1745
1757
|
"extern_data",
|
|
1746
1758
|
{key: _data_kwargs_from_dataset_key(dataset=dataset, key=key) for key in dataset.get_data_keys()},
|
|
1747
1759
|
)
|
|
1760
|
+
|
|
1761
|
+
|
|
1762
|
+
def _get_seq_len_as_array(get_seq_len: Callable[[int], Union[int, float]], num_seqs: int) -> numpy.ndarray:
|
|
1763
|
+
if num_seqs == 0:
|
|
1764
|
+
return numpy.zeros((0,), dtype=numpy.int32)
|
|
1765
|
+
if isinstance(get_seq_len, (types.BuiltinMethodType, types.MethodWrapperType, types.MethodType)):
|
|
1766
|
+
# Call it once. This might trigger some caching.
|
|
1767
|
+
get_seq_len(0)
|
|
1768
|
+
# Get it again. This might now get us a different (cached) function, e.g. array.__getitem__.
|
|
1769
|
+
get_seq_len = getattr(get_seq_len.__self__, get_seq_len.__name__)
|
|
1770
|
+
assert isinstance(get_seq_len, (types.BuiltinMethodType, types.MethodWrapperType, types.MethodType))
|
|
1771
|
+
obj = get_seq_len.__self__
|
|
1772
|
+
if isinstance(obj, numpy.ndarray) and get_seq_len.__name__ == "__getitem__":
|
|
1773
|
+
assert obj.shape == (num_seqs,)
|
|
1774
|
+
return obj
|
|
1775
|
+
return numpy.array([get_seq_len(i) for i in range(num_seqs)])
|
|
@@ -6,13 +6,14 @@ https://github.com/rwth-i6/returnn/issues/1519
|
|
|
6
6
|
|
|
7
7
|
from __future__ import annotations
|
|
8
8
|
|
|
9
|
+
from collections import deque
|
|
9
10
|
from typing import Union, Optional, Any, Callable, Sequence, Tuple, List, Dict
|
|
10
11
|
import os
|
|
11
12
|
import sys
|
|
12
13
|
import numpy
|
|
13
14
|
from returnn.log import log
|
|
14
15
|
from returnn.util import better_exchook
|
|
15
|
-
from returnn.util.basic import override_env_var, try_run
|
|
16
|
+
from returnn.util.basic import override_env_var, try_run, OptionalNotImplementedError
|
|
16
17
|
from returnn.util.literal_py_to_pickle import literal_eval
|
|
17
18
|
from returnn.util.multi_proc_non_daemonic_spawn import NonDaemonicSpawnContext
|
|
18
19
|
from returnn.config import SubProcCopyGlobalConfigPreInitFunc
|
|
@@ -134,7 +135,7 @@ class DistributeFilesDataset(CachedDataset2):
|
|
|
134
135
|
def __init__(
|
|
135
136
|
self,
|
|
136
137
|
*,
|
|
137
|
-
files: Union[List[FileTree], os.PathLike],
|
|
138
|
+
files: Union[List[FileTree], os.PathLike, Callable[[], List[FileTree]]],
|
|
138
139
|
get_sub_epoch_dataset: Callable[[List[FileTree]], Dict[str, Any]],
|
|
139
140
|
preload_next_n_sub_epochs: int = 1,
|
|
140
141
|
buffer_size: int = 1,
|
|
@@ -150,9 +151,10 @@ class DistributeFilesDataset(CachedDataset2):
|
|
|
150
151
|
can also be specified as a path to a .txt file containing one file per line,
|
|
151
152
|
or a python file containing the repr of a list of arbitrarily nested python objects,
|
|
152
153
|
or a JSON file containing a list of arbitarily nested (JSON) objects.
|
|
154
|
+
It can also be a callable which returns such a list.
|
|
153
155
|
:param get_sub_epoch_dataset: callable which returns a dataset dict for a given subset of files
|
|
154
156
|
:param preload_next_n_sub_epochs: how many sub epoch datasets to preload
|
|
155
|
-
:param buffer_size: buffer size for each worker,
|
|
157
|
+
:param buffer_size: buffer size for each worker, number of seqs to prefetch
|
|
156
158
|
:param distrib_shard_files: set to true to shard the data across worker processes in
|
|
157
159
|
distributed training scenaria
|
|
158
160
|
:param _meta_info_cache: for internal use
|
|
@@ -243,6 +245,11 @@ class DistributeFilesDataset(CachedDataset2):
|
|
|
243
245
|
return
|
|
244
246
|
if isinstance(self.files, list):
|
|
245
247
|
self._files = self.files
|
|
248
|
+
elif callable(self.files):
|
|
249
|
+
self._files = self.files()
|
|
250
|
+
assert isinstance(self._files, list), (
|
|
251
|
+
f"{self}: callable files {self.files} must return a list, got {type(self._files)}"
|
|
252
|
+
)
|
|
246
253
|
elif isinstance(self.files, (str, os.PathLike)):
|
|
247
254
|
_, ext = os.path.splitext(self.files)
|
|
248
255
|
assert ext, f"{self}: no file extension on file list file {self.files}"
|
|
@@ -498,6 +505,24 @@ class DistributeFilesDataset(CachedDataset2):
|
|
|
498
505
|
self._lazy_init_num_outputs()
|
|
499
506
|
return self._data_keys
|
|
500
507
|
|
|
508
|
+
def get_all_tags(self) -> List[str]:
|
|
509
|
+
"""get all tags"""
|
|
510
|
+
if self.partition_epoch > 1:
|
|
511
|
+
raise OptionalNotImplementedError(f"{self} get_all_tags not supported for partition_epoch > 1")
|
|
512
|
+
if self.epoch is None:
|
|
513
|
+
# Need to init the worker.
|
|
514
|
+
self.init_seq_order(epoch=1)
|
|
515
|
+
return self._workers[self.epoch].get_all_tags()
|
|
516
|
+
|
|
517
|
+
def get_total_num_seqs(self, *, fast: bool = False) -> int:
|
|
518
|
+
"""get total num seqs"""
|
|
519
|
+
if self.partition_epoch > 1:
|
|
520
|
+
raise OptionalNotImplementedError(f"{self} get_total_num_seqs not supported for partition_epoch > 1")
|
|
521
|
+
if self.epoch is None:
|
|
522
|
+
# Need to init the worker.
|
|
523
|
+
self.init_seq_order(epoch=1)
|
|
524
|
+
return self._workers[self.epoch].get_total_num_seqs(fast=fast)
|
|
525
|
+
|
|
501
526
|
|
|
502
527
|
def _get_key_for_file_tree(t: FileTree) -> str:
|
|
503
528
|
"""generates a deterministic key given a file tree"""
|
|
@@ -601,6 +626,26 @@ class _WorkerProcParent:
|
|
|
601
626
|
assert msg == "data_seq"
|
|
602
627
|
return data
|
|
603
628
|
|
|
629
|
+
def get_all_tags(self) -> List[str]:
|
|
630
|
+
"""get all tags"""
|
|
631
|
+
self._lazy_wait_for_init_seq_order()
|
|
632
|
+
self.parent_conn.send(("get_all_tags", {}))
|
|
633
|
+
msg, data = self.parent_conn.recv()
|
|
634
|
+
assert msg == "all_tags"
|
|
635
|
+
if isinstance(data, Exception):
|
|
636
|
+
raise data
|
|
637
|
+
return data
|
|
638
|
+
|
|
639
|
+
def get_total_num_seqs(self, **kwargs) -> int:
|
|
640
|
+
"""get total num seqs"""
|
|
641
|
+
self._lazy_wait_for_init_seq_order()
|
|
642
|
+
self.parent_conn.send(("get_total_num_seqs", kwargs))
|
|
643
|
+
msg, data = self.parent_conn.recv()
|
|
644
|
+
assert msg == "total_num_seqs"
|
|
645
|
+
if isinstance(data, Exception):
|
|
646
|
+
raise data
|
|
647
|
+
return data
|
|
648
|
+
|
|
604
649
|
def exit(self, *, join: bool = True):
|
|
605
650
|
"""exit"""
|
|
606
651
|
self._lazy_wait_for_init_seq_order()
|
|
@@ -636,7 +681,7 @@ def _worker_proc_loop(
|
|
|
636
681
|
dataset = init_dataset(dataset_dict)
|
|
637
682
|
|
|
638
683
|
got_init_seq_order = False
|
|
639
|
-
cache:
|
|
684
|
+
cache: deque[DatasetSeq] = deque()
|
|
640
685
|
next_seq_idx = 0
|
|
641
686
|
|
|
642
687
|
# noinspection PyShadowingNames
|
|
@@ -701,7 +746,7 @@ def _worker_proc_loop(
|
|
|
701
746
|
elif msg == "get_data_seq":
|
|
702
747
|
seq_idx = kwargs["seq_idx"]
|
|
703
748
|
while cache and cache[0].seq_idx < seq_idx:
|
|
704
|
-
cache.
|
|
749
|
+
cache.popleft()
|
|
705
750
|
res = _get(seq_idx)
|
|
706
751
|
parent_conn.send(("data_seq", res))
|
|
707
752
|
elif msg == "init_seq_order":
|
|
@@ -714,7 +759,21 @@ def _worker_proc_loop(
|
|
|
714
759
|
parent_conn.send(("num_seqs", num_seqs))
|
|
715
760
|
got_init_seq_order = True
|
|
716
761
|
next_seq_idx = 0
|
|
717
|
-
cache
|
|
762
|
+
cache.clear()
|
|
763
|
+
elif msg == "get_all_tags":
|
|
764
|
+
try:
|
|
765
|
+
tags = dataset.get_all_tags()
|
|
766
|
+
except Exception as exc:
|
|
767
|
+
parent_conn.send(("all_tags", exc))
|
|
768
|
+
else:
|
|
769
|
+
parent_conn.send(("all_tags", tags))
|
|
770
|
+
elif msg == "get_total_num_seqs":
|
|
771
|
+
try:
|
|
772
|
+
total_num_seqs = dataset.get_total_num_seqs(**kwargs)
|
|
773
|
+
except Exception as exc:
|
|
774
|
+
parent_conn.send(("total_num_seqs", exc))
|
|
775
|
+
else:
|
|
776
|
+
parent_conn.send(("total_num_seqs", total_num_seqs))
|
|
718
777
|
else:
|
|
719
778
|
raise Exception(f"unknown msg {msg!r}")
|
|
720
779
|
except KeyboardInterrupt: # when parent dies
|
|
@@ -7,14 +7,13 @@ from __future__ import annotations
|
|
|
7
7
|
from typing import Optional, Union, Any, Sequence, List, Tuple, Dict
|
|
8
8
|
import numpy
|
|
9
9
|
import sys
|
|
10
|
-
import typing
|
|
11
10
|
|
|
12
11
|
from returnn.util.basic import class_idx_seq_to_1_of_k, CollectionReadCheckCovered
|
|
13
12
|
from returnn.log import log
|
|
14
13
|
from returnn.tensor import Tensor, Dim, TensorDict
|
|
15
14
|
|
|
16
15
|
from .util.feature_extraction import ExtractAudioFeatures
|
|
17
|
-
from .util.vocabulary import
|
|
16
|
+
from .util.vocabulary import Vocabulary, BytePairEncoding, CharacterTargets
|
|
18
17
|
from .audio import OggZipDataset # noqa # for API compatibility
|
|
19
18
|
from .basic import Dataset, DatasetSeq, convert_data_dims
|
|
20
19
|
from .cached2 import CachedDataset2
|
|
@@ -1165,11 +1164,9 @@ class StaticDataset(CachedDataset2):
|
|
|
1165
1164
|
"""supports sorting"""
|
|
1166
1165
|
return True
|
|
1167
1166
|
|
|
1168
|
-
def _collect_single_seq(self, seq_idx):
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
:rtype: DatasetSeq
|
|
1172
|
-
"""
|
|
1167
|
+
def _collect_single_seq(self, seq_idx: int) -> Optional[DatasetSeq]:
|
|
1168
|
+
if seq_idx >= len(self._seq_order):
|
|
1169
|
+
return None
|
|
1173
1170
|
corpus_seq_idx = self._seq_order[seq_idx]
|
|
1174
1171
|
data = self.data[corpus_seq_idx]
|
|
1175
1172
|
return DatasetSeq(
|
|
@@ -1280,12 +1277,6 @@ class CopyTaskDataset(GeneratingDataset):
|
|
|
1280
1277
|
return DatasetSeq(seq_idx=seq_idx, features=seq_np, targets={"classes": seq_np})
|
|
1281
1278
|
|
|
1282
1279
|
|
|
1283
|
-
# Multiple external sources where we could write automatic wrappers:
|
|
1284
|
-
# * https://github.com/tensorflow/datasets
|
|
1285
|
-
# * tf.contrib.keras.datasets, https://www.tensorflow.org/api_docs/python/tf/keras/datasets
|
|
1286
|
-
# * nltk.corpus
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
1280
|
class TimitDataset(CachedDataset2):
|
|
1290
1281
|
"""
|
|
1291
1282
|
DARPA TIMIT Acoustic-Phonetic Continuous Speech Corpus.
|
|
@@ -1553,7 +1544,7 @@ class TimitDataset(CachedDataset2):
|
|
|
1553
1544
|
|
|
1554
1545
|
self._random_permute_audio = CollectionReadCheckCovered.from_bool_or_dict(random_permute_audio)
|
|
1555
1546
|
|
|
1556
|
-
self._seq_order
|
|
1547
|
+
self._seq_order: Optional[Sequence[int]] = None
|
|
1557
1548
|
self._init_timit()
|
|
1558
1549
|
|
|
1559
1550
|
self._audio_data = {} # seq_tag -> (audio, sample_rate). loaded by self._reader_thread_main
|
|
@@ -1927,8 +1918,8 @@ class BlissDataset(CachedDataset2):
|
|
|
1927
1918
|
self._with_delta = with_delta
|
|
1928
1919
|
self.num_inputs *= 1 + with_delta
|
|
1929
1920
|
self._bpe_file = open(bpe_file, "r")
|
|
1930
|
-
self._seqs
|
|
1931
|
-
self._vocab
|
|
1921
|
+
self._seqs: List[BlissDataset.SeqInfo] = []
|
|
1922
|
+
self._vocab: Dict[str, int] = {} # set in self._parse_vocab
|
|
1932
1923
|
self._parse_bliss_xml(filename=path)
|
|
1933
1924
|
# TODO: loading audio like in TimitDataset, and in parallel
|
|
1934
1925
|
self._bpe = BytePairEncoding(vocab_file=vocab_file, bpe_file=bpe_file)
|
|
@@ -2100,7 +2091,7 @@ class LibriSpeechCorpus(CachedDataset2):
|
|
|
2100
2091
|
self.targets = CharacterTargets(**chars)
|
|
2101
2092
|
elif targets is None:
|
|
2102
2093
|
assert bpe is None and chars is None
|
|
2103
|
-
self.targets
|
|
2094
|
+
self.targets: Optional[Vocabulary] = None
|
|
2104
2095
|
else:
|
|
2105
2096
|
raise Exception("invalid targets %r. provide bpe or chars" % targets)
|
|
2106
2097
|
if self.targets:
|
|
@@ -2128,7 +2119,7 @@ class LibriSpeechCorpus(CachedDataset2):
|
|
|
2128
2119
|
self._reference_seq_order = seqs
|
|
2129
2120
|
self.transs = {s: self.transs[s] for s in seqs}
|
|
2130
2121
|
self.epoch_wise_filter = epoch_wise_filter
|
|
2131
|
-
self._seq_order
|
|
2122
|
+
self._seq_order: Optional[Sequence[int]] = None
|
|
2132
2123
|
self.init_seq_order()
|
|
2133
2124
|
|
|
2134
2125
|
def _collect_trans(self):
|
|
@@ -2294,9 +2285,9 @@ class LibriSpeechCorpus(CachedDataset2):
|
|
|
2294
2285
|
""":return: whether this dataset supports sharding"""
|
|
2295
2286
|
return True
|
|
2296
2287
|
|
|
2297
|
-
def get_current_seq_order(self):
|
|
2288
|
+
def get_current_seq_order(self) -> Sequence[int]:
|
|
2298
2289
|
"""
|
|
2299
|
-
:
|
|
2290
|
+
:return: seq order of current epoch
|
|
2300
2291
|
"""
|
|
2301
2292
|
assert self._seq_order is not None
|
|
2302
2293
|
return self._seq_order
|
|
@@ -2446,7 +2437,7 @@ class Enwik8Corpus(CachedDataset2):
|
|
|
2446
2437
|
self._batch_num_seqs = batch_num_seqs
|
|
2447
2438
|
self._random = numpy.random.RandomState(1) # seed will be set in init_seq_order
|
|
2448
2439
|
self._seq_starts = numpy.arange(0, len(self._data) - 1, seq_len)
|
|
2449
|
-
self._seq_order
|
|
2440
|
+
self._seq_order: Optional[Sequence[int]] = None
|
|
2450
2441
|
|
|
2451
2442
|
def get_data_dtype(self, key):
|
|
2452
2443
|
"""
|