returnn 1.20240610.94006__tar.gz → 1.20240610.115802__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.20240610.94006/returnn.egg-info → returnn-1.20240610.115802}/PKG-INFO +1 -1
- returnn-1.20240610.115802/_setup_info_generated.py +2 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/basic.py +71 -24
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/concat_files.py +17 -12
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/meta.py +92 -75
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/multi_proc.py +3 -5
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/basic.py +20 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802/returnn.egg-info}/PKG-INFO +1 -1
- returnn-1.20240610.94006/_setup_info_generated.py +0 -2
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/.editorconfig +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/.gitignore +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/.gitmodules +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/.kateconfig +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/CHANGELOG.md +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/CODEOWNERS +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/CONTRIBUTING.md +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/LICENSE +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/MANIFEST.in +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/README.rst +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/12AX.cluster_map +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/_setup_returnn_env.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-fwd.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-horovod-mpi.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-horovod-mpi.py.sh +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-horovod-mpi.sh +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-hyper-param-tuning.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-iter-dataset.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-list-devices.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-lua-torch-layer.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-pretrain.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-record-and-push-to-webserver.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-returnn-as-framework.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-rf-pt-benchmark.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-rf.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-rhn-enwik8.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-sprint-interface.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-tf-att-copy.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-tf-attention.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-tf-enc-dec.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-tf-hard-att-copy.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-tf-lstm-benchmark.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-tf-native-lstm.12ax.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-tf-native-lstm2.12ax.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-tf-neural-transducer.12ax.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-tf-rec-explicit-lstm.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-tf-rec-explicit-rnn.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-tf-rec-self-att.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-tf-search-compiled-graph.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-timit-lstm-ctc.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-torch.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/demo.sh +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/IAM/README.txt +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/IAM/chars.txt +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/IAM/config_demo +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/IAM/config_fwd +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/IAM/config_real +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/IAM/decode.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/IAM/go.sh +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/IAM/lines.txt +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/IAM/split/eval.txt +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/IAM/split/train.txt +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/IAM/split/valid.txt +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/README.md +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/artificial/create_test_h5.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/artificial/forwardconfig +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/artificial/go.sh +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/artificial/trainconfig +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/artificial_rgb/go.sh +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/pyproject.toml +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/requirements.txt +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/__main__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/__old_mod_loader__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/__setup__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/config.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/audio.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/bundle_file.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/cached.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/cached2.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/generating.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/hdf.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/lm.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/map.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/normalization_data.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/numpy_dump.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/raw_wav.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/sprint.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/stereo.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/util/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/util/feature_extraction.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/util/strings.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/datasets/util/vocabulary.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/engine/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/engine/base.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/engine/batch.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/__main__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/.git +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/graph_editor/README.md +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/graph_editor/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/graph_editor/edit.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/graph_editor/reroute.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/graph_editor/select.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/graph_editor/subgraph.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/graph_editor/transform.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/extern/graph_editor/util.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/forward_iface.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/_backend.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/_native/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/_native/backend.cpp +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/_native/backend.hpp +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/_native/module.cpp +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/_native/module.hpp +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/_native/py_utils.hpp +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/_native/tensor_ops.cpp +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/_native/tensor_ops.hpp +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/_numpy_backend.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/_random_journal.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/_utils.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/array_.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/attention.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/audio/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/audio/mel.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/audio/specaugment.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/backend.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/cond.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/const.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/container.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/control_flow_ctx.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/conv.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/decoder/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/decoder/transformer.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/device.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/dims.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/dropout.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/dtype.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/encoder/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/encoder/base.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/encoder/conformer.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/gradient.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/graph.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/hooks.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/init.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/label_smoothing.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/linear.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/loop.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/loss.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/math_.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/matmul.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/module.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/normalization.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/parameter.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/rand.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/rec.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/reduce.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/run_ctx.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/signal.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/state.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/tensor_array.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/frontend/types.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/import_/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/import_/common.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/import_/git.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/import_/import_.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/learning_rate_control.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/log.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/native_op.cpp +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/native_op.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/pretrain.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/sprint/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/sprint/cache.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/sprint/control.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/sprint/error_signals.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/sprint/extern_interface.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/sprint/interface.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tensor/README.md +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tensor/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tensor/_dim_extra.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tensor/_tensor_extra.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tensor/_tensor_mixin_base.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tensor/_tensor_op_overloads.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tensor/control_flow_ctx.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tensor/dim.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tensor/marked_dim.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tensor/tensor.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tensor/tensor_dict.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tensor/utils.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/compat.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/data_pipeline.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/distributed.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/engine.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/frontend_layers/README.md +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/frontend_layers/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/frontend_layers/_backend.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/frontend_layers/_utils.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/frontend_layers/cond.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/frontend_layers/dims.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/frontend_layers/layer.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/frontend_layers/loop.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/frontend_layers/make_layer.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/frontend_layers/masked_computation.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/frontend_low_level/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/frontend_low_level/_backend.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/horovod.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/hyper_param_tuning.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/layers/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/layers/base.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/layers/basic.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/layers/rec.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/layers/segmental_model.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/layers/signal_processing.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/layers/variable.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/native_op.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/network.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/sprint.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/updater.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/util/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/util/basic.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/util/data.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/util/gradient_checkpoint.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/util/ken_lm.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/tf/util/open_fst.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/README.md +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/data/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/data/extern_data.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/data/pipeline.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/data/queued_data_iter.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/data/tensor_utils.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/distributed.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/engine.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/frontend/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/frontend/_backend.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/frontend/_rand.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/frontend/bridge.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/frontend/raw_ops.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/updater.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/util/README.md +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/util/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/util/diagnose_gpu.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/torch/util/scaled_gradient.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/__init__.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/better_exchook.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/bpe.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/debug.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/debug_helpers.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/file_cache.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/fsa.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/literal_py_to_pickle.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/math.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/native_code_compiler.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/pprint.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/py-to-pickle.cpp +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/py_compat.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/py_ext_mod_compiler.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/result_with_reason.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/sig_proc.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/task_system.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/train_proc_manager.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn/util/watch_memory.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn.egg-info/SOURCES.txt +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn.egg-info/dependency_links.txt +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/returnn.egg-info/top_level.txt +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/rnn.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/setup.cfg +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/setup.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/DummySprintExec.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/PyCharm-inspection-profile.xml +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/PyCharm.idea/.gitignore +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/PyCharm.idea/.name +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/PyCharm.idea/misc.xml +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/PyCharm.idea/modules.xml +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/PyCharm.idea/returnn.iml +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/_set_num_threads1.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/_setup_returnn_env.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/_setup_test_env.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/bpe-unicode-demo.codes +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/bpe-unicode-demo.vocab +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/lexicon_opt.fst +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/lexicon_opt.isyms +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/lexicon_opt.jpg +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/lexicon_opt.osyms +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/lint_common.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/pycharm-inspect.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/pylint.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/returnn-as-framework.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/rf_utils.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/spelling.dic +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_Config.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_Dataset.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_Fsa.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_GeneratingDataset.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_HDFDataset.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_LearningRateControl.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_Log.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_MultiProcDataset.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_Pretrain.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_ResNet.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_SprintDataset.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_SprintInterface.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_TFEngine.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_TFNativeOp.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_TFNetworkLayer.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_TFNetworkRecLayer.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_TFNetworkSigProcLayer.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_TFUpdater.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_TFUtil.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_TF_determinism.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_TaskSystem.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_TaskSystem_SharedMem.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_TranslationDataset.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_Util.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_demos.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_fork_exec.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_hdf_dump.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_rf_array.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_rf_attention.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_rf_base.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_rf_cond.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_rf_const.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_rf_container.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_rf_conv.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_rf_encoder_conformer.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_rf_gradient.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_rf_label_smoothing.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_rf_loop.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_rf_math.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_rf_normalization.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_rf_rec.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_rf_reduce.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_rf_signal.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_tensor.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_tools.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_torch_dataset.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_torch_engine.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_torch_frontend.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tests/test_torch_internal_frontend.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/_setup_returnn_env.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/analyze-dataset-batches.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/bliss-collect-seq-lens.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/bliss-dump-text.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/bliss-get-segment-names.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/bliss-to-ogg-zip.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/bpe-create-lexicon.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/calculate-word-error-rate.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/cleanup-old-models.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/collect-orth-symbols.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/collect-words.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/compile_native_op.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/compile_tf_graph.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/debug-dump-search-scores.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/debug-plot-search-scores.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/dump-dataset-raw-strings.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/dump-dataset.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/dump-forward-stats.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/dump-forward.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/dump-network-json.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/dump-pickle.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/extract_state_tying_from_dataset.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/get-attention-weights.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/get-best-model-epoch.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/hdf_dump.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/hdf_dump_translation_dataset.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/import-blocks-mt-model.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/import-t2t-mt-model.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/lattice_rescorer/.gitignore +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/lattice_rescorer/Makefile +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/lattice_rescorer/README.md +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/lattice_rescorer/example/README.md +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/lattice_rescorer/example/libs_list +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/lattice_rescorer/example/state_vars_list +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/lattice_rescorer/example/tensor_names_list +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/lattice_rescorer/file.h +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/lattice_rescorer/main.cc +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/lattice_rescorer/rescorer.h +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/lattice_rescorer/vocabulary.cc +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/lattice_rescorer/vocabulary.h +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/tf_avg_checkpoints.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/tf_inspect_checkpoint.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/tf_inspect_summary_log.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/torch_avg_checkpoints.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/torch_export_to_onnx.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/torch_inspect_checkpoint.py +0 -0
- {returnn-1.20240610.94006 → returnn-1.20240610.115802}/tools/torch_inspect_checkpoint_and_opt.py +0 -0
|
@@ -19,7 +19,7 @@ import os
|
|
|
19
19
|
import numpy
|
|
20
20
|
import functools
|
|
21
21
|
import typing
|
|
22
|
-
from typing import Optional, Any, Union, Type, Dict, Sequence, List, Callable
|
|
22
|
+
from typing import TYPE_CHECKING, Optional, Any, Union, Type, Dict, Sequence, List, Callable
|
|
23
23
|
|
|
24
24
|
from returnn.log import log
|
|
25
25
|
from returnn.engine.batch import Batch, BatchSetGenerator
|
|
@@ -27,6 +27,12 @@ from returnn.datasets.util.vocabulary import Vocabulary
|
|
|
27
27
|
from returnn.util.basic import try_run, NumbersDict, OptionalNotImplementedError
|
|
28
28
|
from returnn.tensor import TensorDict
|
|
29
29
|
|
|
30
|
+
if TYPE_CHECKING:
|
|
31
|
+
from returnn.config import Config
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
RANDOM_SEED_OFFSET_ENV_VAR = "RETURNN_RANDOM_SEED_OFFSET"
|
|
35
|
+
|
|
30
36
|
|
|
31
37
|
class Dataset(object):
|
|
32
38
|
"""
|
|
@@ -34,10 +40,12 @@ class Dataset(object):
|
|
|
34
40
|
"""
|
|
35
41
|
|
|
36
42
|
@staticmethod
|
|
37
|
-
def kwargs_update_from_config(config, kwargs):
|
|
43
|
+
def kwargs_update_from_config(config: Config, kwargs: Dict[str, Any]):
|
|
38
44
|
"""
|
|
39
|
-
|
|
40
|
-
|
|
45
|
+
Update kwargs inplace from config
|
|
46
|
+
|
|
47
|
+
:param config:
|
|
48
|
+
:param kwargs: updates will be done inplace
|
|
41
49
|
"""
|
|
42
50
|
|
|
43
51
|
def set_or_remove(key, value):
|
|
@@ -59,10 +67,10 @@ class Dataset(object):
|
|
|
59
67
|
set_or_remove("chunking_variance", config.float("chunking_variance", 0))
|
|
60
68
|
|
|
61
69
|
@staticmethod
|
|
62
|
-
def get_default_kwargs_eval(config):
|
|
70
|
+
def get_default_kwargs_eval(config: Config) -> Dict[str, Any]:
|
|
63
71
|
"""
|
|
64
|
-
:param
|
|
65
|
-
:
|
|
72
|
+
:param config:
|
|
73
|
+
:return: default kwargs for an eval dataset based on the config
|
|
66
74
|
"""
|
|
67
75
|
# For dev/eval, by default, we should not do chunking (i.e. chunking = "0").
|
|
68
76
|
chunking = "0"
|
|
@@ -75,11 +83,11 @@ class Dataset(object):
|
|
|
75
83
|
return dict(chunking=chunking, seq_ordering="sorted", shuffle_frames_of_nseqs=0)
|
|
76
84
|
|
|
77
85
|
@classmethod
|
|
78
|
-
def from_config(cls, config, **kwargs):
|
|
86
|
+
def from_config(cls, config: Config, **kwargs) -> Dataset:
|
|
79
87
|
"""
|
|
80
|
-
:
|
|
81
|
-
:param
|
|
82
|
-
:
|
|
88
|
+
:param config:
|
|
89
|
+
:param kwargs: passed on to __init__
|
|
90
|
+
:return: new dataset via cls(...)
|
|
83
91
|
"""
|
|
84
92
|
cls.kwargs_update_from_config(config, kwargs)
|
|
85
93
|
return cls(**kwargs)
|
|
@@ -106,20 +114,20 @@ class Dataset(object):
|
|
|
106
114
|
"""
|
|
107
115
|
:param str name: e.g. "train" or "eval"
|
|
108
116
|
:param int window: features will be of dimension window * feature_dim, as we add a context-window around.
|
|
109
|
-
|
|
117
|
+
not all datasets support this option.
|
|
110
118
|
:param None|int|dict|NumbersDict|(dict,dict) context_window: will add this context for each chunk
|
|
111
119
|
:param None|str|int|(int,int)|dict|(dict,dict)|function chunking: "chunk_size:chunk_step"
|
|
112
120
|
:param str seq_ordering: "batching"-option in config. e.g. "default", "sorted" or "random".
|
|
113
|
-
|
|
121
|
+
See self.get_seq_order_for_epoch() for more details.
|
|
114
122
|
:param int|None fixed_random_seed: for the shuffling, e.g. for seq_ordering='random'.
|
|
115
123
|
otherwise epoch will be used.
|
|
116
124
|
useful when used as eval dataset.
|
|
117
125
|
:param int|None random_seed_offset: for shuffling, e.g. for seq_ordering='random'.
|
|
118
126
|
ignored when fixed_random_seed is set.
|
|
119
127
|
:param int|None partition_epoch:
|
|
120
|
-
:param int|None repeat_epoch: Repeat the sequences in an epoch this many times.
|
|
121
|
-
|
|
122
|
-
|
|
128
|
+
:param int|None repeat_epoch: Repeat the sequences in an epoch this many times.
|
|
129
|
+
Useful to scale the dataset relative to other datasets, e.g. when used in CombinedDataset.
|
|
130
|
+
Not allowed to be used in combination with partition_epoch.
|
|
123
131
|
:param str|None seq_list_filter_file: defines a subset of sequences (by tag) to use
|
|
124
132
|
:param bool unique_seq_tags: uniquify seqs with same seq tags in seq order
|
|
125
133
|
:param str|None seq_order_seq_lens_file: for seq order, use the seq length given by this file
|
|
@@ -245,7 +253,11 @@ class Dataset(object):
|
|
|
245
253
|
config = get_global_config(raise_exception=False)
|
|
246
254
|
if not config:
|
|
247
255
|
return 0
|
|
248
|
-
|
|
256
|
+
|
|
257
|
+
env_val = os.environ.get(RANDOM_SEED_OFFSET_ENV_VAR)
|
|
258
|
+
if env_val is not None:
|
|
259
|
+
return int(env_val)
|
|
260
|
+
elif config.typed_value("torch_distributed") is not None:
|
|
249
261
|
import returnn.torch.distributed
|
|
250
262
|
|
|
251
263
|
return returnn.torch.distributed.get_ctx(config=config).rank() * 16127
|
|
@@ -445,17 +457,18 @@ class Dataset(object):
|
|
|
445
457
|
self._seq_order_seq_lens_by_idx = [seq_lens[tag] for tag in all_tags]
|
|
446
458
|
return self._seq_order_seq_lens_by_idx[seq_idx]
|
|
447
459
|
|
|
448
|
-
def get_seq_order_for_epoch(
|
|
460
|
+
def get_seq_order_for_epoch(
|
|
461
|
+
self, epoch: Optional[int], num_seqs: int, get_seq_len: Optional[Callable[[int], int]] = None
|
|
462
|
+
) -> Sequence[int]:
|
|
449
463
|
"""
|
|
450
464
|
Returns the order of the given epoch.
|
|
451
465
|
This is mostly a static method, except that is depends on the configured type of ordering,
|
|
452
466
|
such as 'default' (= as-is), 'sorted' or 'random'. 'sorted' also uses the sequence length.
|
|
453
467
|
|
|
454
|
-
:param
|
|
455
|
-
:param
|
|
456
|
-
:param
|
|
468
|
+
:param epoch: for 'random', this determines the random seed
|
|
469
|
+
:param num_seqs:
|
|
470
|
+
:param get_seq_len: function (originalSeqIdx: int) -> int
|
|
457
471
|
:return: the order for the given epoch. such that seq_idx -> underlying idx
|
|
458
|
-
:rtype: typing.Sequence[int]
|
|
459
472
|
"""
|
|
460
473
|
if epoch is None:
|
|
461
474
|
# This might be called in the beginning. Skip this and wait until we init the real relevant epoch.
|
|
@@ -1372,11 +1385,14 @@ def init_dataset(
|
|
|
1372
1385
|
kwargs: Union[Dict[str, Any], str, Callable[[], Dict[str, Any]], Dataset],
|
|
1373
1386
|
extra_kwargs: Optional[Dict[str, Any]] = None,
|
|
1374
1387
|
default_kwargs: Optional[Dict[str, Any]] = None,
|
|
1388
|
+
*,
|
|
1389
|
+
parent_dataset: Optional[Dataset] = None,
|
|
1375
1390
|
) -> Dataset:
|
|
1376
1391
|
"""
|
|
1377
1392
|
:param kwargs:
|
|
1378
1393
|
:param extra_kwargs:
|
|
1379
1394
|
:param default_kwargs:
|
|
1395
|
+
:param parent_dataset: if given, will adapt some of the default_kwargs (when not set)
|
|
1380
1396
|
"""
|
|
1381
1397
|
assert kwargs
|
|
1382
1398
|
if isinstance(kwargs, Dataset):
|
|
@@ -1384,7 +1400,9 @@ def init_dataset(
|
|
|
1384
1400
|
data.initialize()
|
|
1385
1401
|
return data
|
|
1386
1402
|
if callable(kwargs):
|
|
1387
|
-
return init_dataset(
|
|
1403
|
+
return init_dataset(
|
|
1404
|
+
kwargs(), extra_kwargs=extra_kwargs, default_kwargs=default_kwargs, parent_dataset=parent_dataset
|
|
1405
|
+
)
|
|
1388
1406
|
if isinstance(kwargs, str):
|
|
1389
1407
|
if kwargs.startswith("{"):
|
|
1390
1408
|
kwargs = eval(kwargs)
|
|
@@ -1393,10 +1411,13 @@ def init_dataset(
|
|
|
1393
1411
|
|
|
1394
1412
|
config = get_global_config()
|
|
1395
1413
|
data = eval(kwargs[len("config:") :], config.typed_dict, config.typed_dict)
|
|
1396
|
-
return init_dataset(
|
|
1414
|
+
return init_dataset(
|
|
1415
|
+
data, extra_kwargs=extra_kwargs, default_kwargs=default_kwargs, parent_dataset=parent_dataset
|
|
1416
|
+
)
|
|
1397
1417
|
else:
|
|
1398
1418
|
config_str = kwargs
|
|
1399
1419
|
kwargs = {}
|
|
1420
|
+
default_kwargs = _dataset_extend_default_kwargs_from_parent_dataset(default_kwargs, parent_dataset)
|
|
1400
1421
|
if default_kwargs:
|
|
1401
1422
|
kwargs.update(default_kwargs)
|
|
1402
1423
|
if extra_kwargs:
|
|
@@ -1409,6 +1430,7 @@ def init_dataset(
|
|
|
1409
1430
|
clazz = get_dataset_class(clazz_name)
|
|
1410
1431
|
if not clazz:
|
|
1411
1432
|
raise Exception("Dataset class %r not found" % clazz_name)
|
|
1433
|
+
default_kwargs = _dataset_extend_default_kwargs_from_parent_dataset(default_kwargs, parent_dataset)
|
|
1412
1434
|
if default_kwargs:
|
|
1413
1435
|
for key, value in default_kwargs.items():
|
|
1414
1436
|
kwargs.setdefault(key, value)
|
|
@@ -1420,6 +1442,31 @@ def init_dataset(
|
|
|
1420
1442
|
return obj
|
|
1421
1443
|
|
|
1422
1444
|
|
|
1445
|
+
def _dataset_extend_default_kwargs_from_parent_dataset(
|
|
1446
|
+
default_kwargs: Optional[Dict[str, Any]], parent_dataset: Optional[Dataset]
|
|
1447
|
+
) -> Optional[Dict[str, Any]]:
|
|
1448
|
+
"""
|
|
1449
|
+
:param default_kwargs:
|
|
1450
|
+
:param parent_dataset:
|
|
1451
|
+
"""
|
|
1452
|
+
if not parent_dataset:
|
|
1453
|
+
return default_kwargs
|
|
1454
|
+
default_kwargs = default_kwargs.copy() if default_kwargs else {}
|
|
1455
|
+
default_kwargs.setdefault("random_seed_offset", parent_dataset.random_seed_offset)
|
|
1456
|
+
return default_kwargs
|
|
1457
|
+
|
|
1458
|
+
|
|
1459
|
+
def extend_dataset_dict_from_parent_dataset(
|
|
1460
|
+
dataset_dict: Dict[str, Any], parent_dataset: Optional[Dataset]
|
|
1461
|
+
) -> Dict[str, Any]:
|
|
1462
|
+
"""
|
|
1463
|
+
:param dataset_dict:
|
|
1464
|
+
:param parent_dataset:
|
|
1465
|
+
:return: extended dataset_dict
|
|
1466
|
+
"""
|
|
1467
|
+
return _dataset_extend_default_kwargs_from_parent_dataset(dataset_dict, parent_dataset)
|
|
1468
|
+
|
|
1469
|
+
|
|
1423
1470
|
def init_dataset_via_str(config_str, config=None, cache_byte_size=None, **kwargs):
|
|
1424
1471
|
"""
|
|
1425
1472
|
:param str config_str: hdf-files, or "LmDataset:..." or so
|
|
@@ -11,10 +11,10 @@ import os
|
|
|
11
11
|
import sys
|
|
12
12
|
import numpy
|
|
13
13
|
from returnn.log import log
|
|
14
|
-
from returnn.util.basic import try_run
|
|
14
|
+
from returnn.util.basic import override_env_var, try_run
|
|
15
15
|
from returnn.util.multi_proc_non_daemonic_spawn import NonDaemonicSpawnContext
|
|
16
16
|
from returnn.config import SubProcCopyGlobalConfigPreInitFunc
|
|
17
|
-
from .basic import init_dataset, DatasetSeq
|
|
17
|
+
from .basic import init_dataset, extend_dataset_dict_from_parent_dataset, DatasetSeq, RANDOM_SEED_OFFSET_ENV_VAR
|
|
18
18
|
from .cached2 import CachedDataset2
|
|
19
19
|
|
|
20
20
|
# noinspection PyProtectedMember
|
|
@@ -192,7 +192,7 @@ class ConcatFilesDataset(CachedDataset2):
|
|
|
192
192
|
# Init the dataset with the first file.
|
|
193
193
|
dataset_dict, exit_hook = self._get_sub_dataset_dict(files=[self.files[0]])
|
|
194
194
|
try:
|
|
195
|
-
dataset = init_dataset(dataset_dict, extra_kwargs={"seq_ordering": "default"})
|
|
195
|
+
dataset = init_dataset(dataset_dict, extra_kwargs={"seq_ordering": "default"}, parent_dataset=self)
|
|
196
196
|
self.num_inputs = dataset.num_inputs
|
|
197
197
|
self.num_outputs = dataset.num_outputs
|
|
198
198
|
self.labels = dataset.labels
|
|
@@ -293,8 +293,7 @@ class ConcatFilesDataset(CachedDataset2):
|
|
|
293
293
|
|
|
294
294
|
def _get_sub_dataset_dict(self, files: List[FileTree]) -> Tuple[Dict[str, Any], _FileCacheExitHook]:
|
|
295
295
|
dataset_dict = self.get_sub_epoch_dataset(files)
|
|
296
|
-
|
|
297
|
-
dataset_dict["random_seed_offset"] = self.random_seed_offset
|
|
296
|
+
dataset_dict = extend_dataset_dict_from_parent_dataset(dataset_dict, parent_dataset=self)
|
|
298
297
|
if dataset_dict.get("partition_epoch", 1) != 1:
|
|
299
298
|
raise ValueError(f"{self}: sub dataset should not have partition_epoch, got: {dataset_dict}")
|
|
300
299
|
if "seq_ordering" not in dataset_dict and "seq_order_control_dataset" not in dataset_dict:
|
|
@@ -423,6 +422,9 @@ class _WorkerProcParent:
|
|
|
423
422
|
buffer_size: int,
|
|
424
423
|
exit_hook: Optional[Callable[[], None]] = None,
|
|
425
424
|
):
|
|
425
|
+
# the dataset makes sure this is set
|
|
426
|
+
assert "random_seed_offset" in dataset_dict
|
|
427
|
+
|
|
426
428
|
self.epoch = epoch
|
|
427
429
|
self.full_epoch_0idx = full_epoch_0idx
|
|
428
430
|
self.dataset_dict = dataset_dict
|
|
@@ -431,13 +433,16 @@ class _WorkerProcParent:
|
|
|
431
433
|
parent_conn, child_conn = _mp.Pipe()
|
|
432
434
|
self.parent_conn: mpConnection = parent_conn
|
|
433
435
|
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
436
|
+
# the env will be forwarded to the child process
|
|
437
|
+
with override_env_var(RANDOM_SEED_OFFSET_ENV_VAR, str(dataset_dict["random_seed_offset"])):
|
|
438
|
+
self.worker_proc = _mp.Process(
|
|
439
|
+
name=f"{name} worker ep {epoch}",
|
|
440
|
+
target=_worker_proc_loop,
|
|
441
|
+
args=(epoch, buffer_size, dataset_dict, child_conn),
|
|
442
|
+
daemon=True,
|
|
443
|
+
)
|
|
444
|
+
self.worker_proc.start()
|
|
445
|
+
|
|
441
446
|
# Make sure the child connection is closed here.
|
|
442
447
|
# It stays open in the child, until the child dies.
|
|
443
448
|
# When that happens, now any consecutive read on the pipe
|
|
@@ -23,9 +23,10 @@ The dataset classes MetaDataset and CombinedDataset which perform these tasks ar
|
|
|
23
23
|
|
|
24
24
|
from __future__ import annotations
|
|
25
25
|
|
|
26
|
-
from typing import Optional, Any, Sequence, List, Dict
|
|
26
|
+
from typing import Optional, Union, Any, Callable, Sequence, List, Dict, Tuple
|
|
27
27
|
from returnn.datasets.basic import Dataset, DatasetSeq, init_dataset, convert_data_dims
|
|
28
28
|
from .cached2 import CachedDataset2
|
|
29
|
+
import returnn.util.basic as util
|
|
29
30
|
from returnn.util.basic import NumbersDict, load_json, OptionalNotImplementedError
|
|
30
31
|
from returnn.log import log
|
|
31
32
|
from random import Random
|
|
@@ -39,26 +40,31 @@ class EpochWiseFilter:
|
|
|
39
40
|
Applies some filter to the sequences (e.g. by seq length) for some epoch.
|
|
40
41
|
"""
|
|
41
42
|
|
|
42
|
-
def __init__(
|
|
43
|
+
def __init__(
|
|
44
|
+
self, epochs_opts: Dict[Tuple[int, Optional[int]], Dict[str, Any]], debug_msg_prefix: str = "EpochWiseFilter"
|
|
45
|
+
):
|
|
43
46
|
"""
|
|
44
|
-
:param
|
|
45
|
-
:param
|
|
47
|
+
:param epochs_opts: (ep_start, ep_end) -> epoch opts
|
|
48
|
+
:param debug_msg_prefix:
|
|
46
49
|
"""
|
|
47
50
|
self.epochs_opts = epochs_opts
|
|
48
51
|
self.debug_msg_prefix = debug_msg_prefix
|
|
49
52
|
|
|
50
53
|
@classmethod
|
|
51
|
-
def filter_epoch(
|
|
52
|
-
|
|
53
|
-
:
|
|
54
|
-
:
|
|
55
|
-
:
|
|
56
|
-
:
|
|
54
|
+
def filter_epoch(
|
|
55
|
+
cls,
|
|
56
|
+
opts: Union[Dict[str, Any], util.CollectionReadCheckCovered],
|
|
57
|
+
seq_order: Sequence[int],
|
|
58
|
+
get_seq_len: Callable[[int], int],
|
|
59
|
+
debug_msg_prefix: str,
|
|
60
|
+
) -> List[int]:
|
|
61
|
+
"""
|
|
62
|
+
:param opts:
|
|
63
|
+
:param seq_order: list of seq idxs
|
|
64
|
+
:param get_seq_len: seq idx -> len
|
|
65
|
+
:param debug_msg_prefix:
|
|
57
66
|
:return: new seq_order
|
|
58
|
-
:rtype: list[int]
|
|
59
67
|
"""
|
|
60
|
-
import returnn.util.basic as util
|
|
61
|
-
|
|
62
68
|
if not isinstance(opts, util.CollectionReadCheckCovered):
|
|
63
69
|
opts = util.CollectionReadCheckCovered(opts)
|
|
64
70
|
if opts.get("max_mean_len"):
|
|
@@ -150,7 +156,7 @@ class MetaDataset(CachedDataset2):
|
|
|
150
156
|
'corpus/ted_1/1',
|
|
151
157
|
'corpus/ted_1/2',
|
|
152
158
|
'corpus/ted_1/3',
|
|
153
|
-
'corpus/ted_1/4',
|
|
159
|
+
'corpus/ted_1/4'],
|
|
154
160
|
'translation': [
|
|
155
161
|
'line-0',
|
|
156
162
|
'line-1',
|
|
@@ -194,33 +200,33 @@ class MetaDataset(CachedDataset2):
|
|
|
194
200
|
|
|
195
201
|
def __init__(
|
|
196
202
|
self,
|
|
197
|
-
datasets,
|
|
198
|
-
data_map,
|
|
199
|
-
seq_list_file=None,
|
|
200
|
-
seq_order_control_dataset=None,
|
|
201
|
-
seq_lens_file=None,
|
|
202
|
-
data_dims=None,
|
|
203
|
-
data_dtypes=None, # noqa # not used
|
|
204
|
-
window=1,
|
|
203
|
+
datasets: Dict[str, Dict[str, Any]],
|
|
204
|
+
data_map: Dict[str, Tuple[str, str]],
|
|
205
|
+
seq_list_file: Optional[str] = None,
|
|
206
|
+
seq_order_control_dataset: Optional[str] = None,
|
|
207
|
+
seq_lens_file: Optional[str] = None,
|
|
208
|
+
data_dims: Optional[Dict[str, Tuple[int, int]]] = None, # deprecated
|
|
209
|
+
data_dtypes: Optional[Dict[str, str]] = None, # noqa # deprecated, not used
|
|
210
|
+
window: int = 1,
|
|
205
211
|
**kwargs,
|
|
206
212
|
):
|
|
207
213
|
"""
|
|
208
|
-
:param
|
|
209
|
-
:param
|
|
210
|
-
|
|
211
|
-
:param
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
:param
|
|
219
|
-
:param
|
|
220
|
-
|
|
221
|
-
:param
|
|
222
|
-
|
|
223
|
-
:param
|
|
214
|
+
:param datasets: dataset-key -> dataset-kwargs. including keyword 'class' and maybe 'files'
|
|
215
|
+
:param data_map: self-data-key -> (dataset-key, dataset-data-key).
|
|
216
|
+
Should contain 'data' as key. Also defines the target-list, which is all except 'data'.
|
|
217
|
+
:param seq_list_file: filename. pickle. dict[str,list[str]], dataset-key -> list of sequence tags.
|
|
218
|
+
Can be None if tag format is the same for all datasets.
|
|
219
|
+
Then the sequence list will be default sequence order of default dataset (``data_map["data"][0]``),
|
|
220
|
+
or seq_order_control_dataset.
|
|
221
|
+
You only need it if the tag name is not the same for all datasets.
|
|
222
|
+
It will currently not act as filter,
|
|
223
|
+
as the subdataset controls the sequence order (and thus what seqs to use).
|
|
224
|
+
:param seq_order_control_dataset: if set, this dataset will define the order for each epoch.
|
|
225
|
+
:param seq_lens_file: filename. json. dict[str,dict[str,int]], seq-tag -> data-key -> len.
|
|
226
|
+
Use if getting sequence length from loading data is too costly.
|
|
227
|
+
:param data_dims: self-data-key -> data-dimension, len(shape) (1 ==> sparse repr).
|
|
228
|
+
Deprecated/Only to double-check. Read from data if not specified.
|
|
229
|
+
:param data_dtypes: self-data-key -> dtype. Read from data if not specified. Deprecated, not used.
|
|
224
230
|
"""
|
|
225
231
|
assert window == 1 # not implemented
|
|
226
232
|
super(MetaDataset, self).__init__(**kwargs)
|
|
@@ -239,7 +245,7 @@ class MetaDataset(CachedDataset2):
|
|
|
239
245
|
|
|
240
246
|
# This will only initialize datasets needed for features occuring in data_map
|
|
241
247
|
self.datasets = {
|
|
242
|
-
key: init_dataset(datasets[key], extra_kwargs={"name": "%s_%s" % (self.name, key)})
|
|
248
|
+
key: init_dataset(datasets[key], extra_kwargs={"name": "%s_%s" % (self.name, key)}, parent_dataset=self)
|
|
243
249
|
for key in self.dataset_keys
|
|
244
250
|
} # type: typing.Dict[str,Dataset]
|
|
245
251
|
|
|
@@ -283,11 +289,9 @@ class MetaDataset(CachedDataset2):
|
|
|
283
289
|
self.orig_seq_order_is_initialized = False
|
|
284
290
|
self.seq_list_ordered = None # type: typing.Optional[typing.Dict[str,typing.List[str]]]
|
|
285
291
|
|
|
286
|
-
def _is_same_seq_name_for_each_dataset(self):
|
|
292
|
+
def _is_same_seq_name_for_each_dataset(self) -> bool:
|
|
287
293
|
"""
|
|
288
294
|
This should be fast.
|
|
289
|
-
|
|
290
|
-
:rtype: bool
|
|
291
295
|
"""
|
|
292
296
|
main_list = self.seq_list_original[self.default_dataset_key]
|
|
293
297
|
for key, other_list in self.seq_list_original.items():
|
|
@@ -295,11 +299,10 @@ class MetaDataset(CachedDataset2):
|
|
|
295
299
|
return False
|
|
296
300
|
return True
|
|
297
301
|
|
|
298
|
-
def _load_seq_list(self, seq_list_file=None):
|
|
302
|
+
def _load_seq_list(self, seq_list_file: Optional[str] = None) -> Dict[str, List[str]]:
|
|
299
303
|
"""
|
|
300
|
-
:param
|
|
304
|
+
:param seq_list_file:
|
|
301
305
|
:return: dict: dataset key -> seq list
|
|
302
|
-
:rtype: dict[str,list[str]]
|
|
303
306
|
"""
|
|
304
307
|
if seq_list_file:
|
|
305
308
|
seq_list = Dataset._load_seq_list_file(seq_list_file, expect_list=False)
|
|
@@ -361,7 +364,7 @@ class MetaDataset(CachedDataset2):
|
|
|
361
364
|
|
|
362
365
|
return seq_list
|
|
363
366
|
|
|
364
|
-
def _get_dataset_seq_length(self, seq_idx):
|
|
367
|
+
def _get_dataset_seq_length(self, seq_idx: int):
|
|
365
368
|
if not self.orig_seq_order_is_initialized:
|
|
366
369
|
# To use get_seq_length() we first have to init the sequence order once in original order.
|
|
367
370
|
# If sequence lengths are not needed by get_seq_order_for_epoch this is never executed.
|
|
@@ -576,15 +579,17 @@ class ClusteringDataset(CachedDataset2):
|
|
|
576
579
|
We will read the cluster-map (seq-name -> cluster-idx) here directly.
|
|
577
580
|
"""
|
|
578
581
|
|
|
579
|
-
def __init__(
|
|
582
|
+
def __init__(
|
|
583
|
+
self, dataset: Dict[str, Any], cluster_map_file: str, n_clusters: int, single_cluster: bool = False, **kwargs
|
|
584
|
+
):
|
|
580
585
|
"""
|
|
581
|
-
:param
|
|
586
|
+
:param dataset:
|
|
582
587
|
:param cluster_map_file:
|
|
583
|
-
:param
|
|
588
|
+
:param n_clusters:
|
|
584
589
|
:param single_cluster:
|
|
585
590
|
"""
|
|
586
591
|
super(CachedDataset2, self).__init__(**kwargs)
|
|
587
|
-
self.dataset = init_dataset(dataset)
|
|
592
|
+
self.dataset = init_dataset(dataset, parent_dataset=self)
|
|
588
593
|
self.n_clusters = n_clusters
|
|
589
594
|
self.single_cluster = single_cluster
|
|
590
595
|
self.cluster_map = self._load_cluster_map(cluster_map_file)
|
|
@@ -594,7 +599,7 @@ class ClusteringDataset(CachedDataset2):
|
|
|
594
599
|
self.num_outputs["cluster_idx"] = (n_clusters, 1) # will be a single int32
|
|
595
600
|
self.expected_load_seq_start = 0
|
|
596
601
|
|
|
597
|
-
def _load_cluster_map(self, filename):
|
|
602
|
+
def _load_cluster_map(self, filename: str):
|
|
598
603
|
lines = open(filename).read().splitlines()
|
|
599
604
|
assert "<coprus-key-map>" in lines[:3], "We expect the Sprint XML format."
|
|
600
605
|
# It has lines like: <map-item key="CHiME3/dt05_bth/M03_22GC010M_BTH.CH5/1" value="0"/>
|
|
@@ -733,12 +738,12 @@ class ConcatDataset(CachedDataset2):
|
|
|
733
738
|
It will go through the datasets always in order.
|
|
734
739
|
"""
|
|
735
740
|
|
|
736
|
-
def __init__(self, datasets, **kwargs):
|
|
741
|
+
def __init__(self, datasets: Sequence[Dict[str, Any]], **kwargs):
|
|
737
742
|
"""
|
|
738
|
-
:param
|
|
743
|
+
:param datasets: list of kwargs for init_dataset
|
|
739
744
|
"""
|
|
740
745
|
super(ConcatDataset, self).__init__(**kwargs)
|
|
741
|
-
self.datasets = [init_dataset(d_kwargs) for d_kwargs in datasets]
|
|
746
|
+
self.datasets = [init_dataset(d_kwargs, parent_dataset=self) for d_kwargs in datasets]
|
|
742
747
|
assert self.datasets
|
|
743
748
|
self.num_inputs = self.datasets[0].num_inputs
|
|
744
749
|
self.num_outputs = self.datasets[0].num_outputs
|
|
@@ -906,19 +911,31 @@ class CombinedDataset(CachedDataset2):
|
|
|
906
911
|
Also see :class:`MetaDataset`.
|
|
907
912
|
"""
|
|
908
913
|
|
|
909
|
-
def __init__(
|
|
914
|
+
def __init__(
|
|
915
|
+
self,
|
|
916
|
+
datasets: Dict[str, Dict[str, Any]],
|
|
917
|
+
data_map: Dict[Tuple[str, str], str],
|
|
918
|
+
sampling_sizes: Union[None, int, Dict[str, int]] = None,
|
|
919
|
+
data_dims: Optional[Dict[str, Tuple[int, int]]] = None,
|
|
920
|
+
data_dtypes: Optional[Dict[str, str]] = None,
|
|
921
|
+
window: int = 1,
|
|
922
|
+
**kwargs,
|
|
923
|
+
):
|
|
910
924
|
"""
|
|
911
|
-
:param
|
|
912
|
-
:param
|
|
913
|
-
|
|
914
|
-
:param
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
925
|
+
:param datasets: dataset-key -> dataset-kwargs. including keyword 'class' and maybe 'files'
|
|
926
|
+
:param data_map: (dataset-key, dataset-data-key) -> self-data-key.
|
|
927
|
+
Should contain 'data' as key. Also defines the target-list, which is all except 'data'.
|
|
928
|
+
:param sampling_sizes: dataset-key -> number-of-sequences.
|
|
929
|
+
If set, the given fixed amount of sequences is taken
|
|
930
|
+
from each dataset in every epoch (instead of using all).
|
|
931
|
+
If an int is given, this number is used for all datasets.
|
|
932
|
+
The sequences will be taken in the order provided by the sub-datasets
|
|
933
|
+
nd we will loop back to the beginning of the dataset each time we reach the end.
|
|
934
|
+
Sequence ordering will be applied after the sampling.
|
|
935
|
+
Partition and repeat epoch are not supported when sampling.
|
|
936
|
+
:param data_dims: self-data-key -> data-dimension, len(shape) (1 ==> sparse repr).
|
|
937
|
+
Deprecated/Only to double check. Read from data if not specified.
|
|
938
|
+
:param data_dtypes: self-data-key -> dtype. Read from data if not specified.
|
|
922
939
|
"""
|
|
923
940
|
assert window == 1 # not implemented
|
|
924
941
|
super(CombinedDataset, self).__init__(**kwargs)
|
|
@@ -949,7 +966,7 @@ class CombinedDataset(CachedDataset2):
|
|
|
949
966
|
self.sampling_sizes = sampling_sizes
|
|
950
967
|
|
|
951
968
|
# This will only initialize datasets needed for features occurring in data_map
|
|
952
|
-
self.datasets = {key: init_dataset(datasets[key]) for key in self.dataset_keys}
|
|
969
|
+
self.datasets = {key: init_dataset(datasets[key], parent_dataset=self) for key in self.dataset_keys}
|
|
953
970
|
|
|
954
971
|
self._estimated_num_seqs = sum([self.datasets[k].estimated_num_seqs for k in sorted(self.datasets.keys())])
|
|
955
972
|
self.estimated_num_seq_per_subset = [self.datasets[k].estimated_num_seqs for k in sorted(self.datasets.keys())]
|
|
@@ -1400,7 +1417,7 @@ class ConcatSeqsDataset(CachedDataset2):
|
|
|
1400
1417
|
if isinstance(dataset, dict):
|
|
1401
1418
|
dataset = dataset.copy()
|
|
1402
1419
|
dataset.setdefault("name", "%s_subdataset" % self.name)
|
|
1403
|
-
self.sub_dataset = init_dataset(dataset)
|
|
1420
|
+
self.sub_dataset = init_dataset(dataset, parent_dataset=self)
|
|
1404
1421
|
self.num_outputs = self.sub_dataset.num_outputs
|
|
1405
1422
|
self.num_inputs = self.sub_dataset.num_inputs
|
|
1406
1423
|
self.labels = self.sub_dataset.labels
|
|
@@ -1597,18 +1614,18 @@ class ChunkShuffleDataset(CachedDataset2):
|
|
|
1597
1614
|
|
|
1598
1615
|
def __init__(
|
|
1599
1616
|
self,
|
|
1600
|
-
dataset,
|
|
1601
|
-
chunk_shuffle_cache=1000,
|
|
1602
|
-
batch_gen_batch_size=5000,
|
|
1603
|
-
batch_gen_max_seqs=1,
|
|
1604
|
-
batch_gen_recurrent_net=True,
|
|
1617
|
+
dataset: Dict[str, Any],
|
|
1618
|
+
chunk_shuffle_cache: int = 1000,
|
|
1619
|
+
batch_gen_batch_size: int = 5000,
|
|
1620
|
+
batch_gen_max_seqs: int = 1,
|
|
1621
|
+
batch_gen_recurrent_net: bool = True,
|
|
1605
1622
|
**kwargs,
|
|
1606
1623
|
):
|
|
1607
1624
|
"""
|
|
1608
1625
|
:param dict[str] dataset: kwargs for init_dataset
|
|
1609
1626
|
"""
|
|
1610
1627
|
super(ChunkShuffleDataset, self).__init__(**kwargs)
|
|
1611
|
-
self.dataset = init_dataset(dataset)
|
|
1628
|
+
self.dataset = init_dataset(dataset, parent_dataset=self)
|
|
1612
1629
|
assert self.dataset
|
|
1613
1630
|
self.dataset_last_load_seq_end = None
|
|
1614
1631
|
self.chunk_shuffle_cache = chunk_shuffle_cache
|
|
@@ -1796,7 +1813,7 @@ class VariableDataset(Dataset):
|
|
|
1796
1813
|
dataset_dict = self._get_dataset(epoch=epoch)
|
|
1797
1814
|
if dataset_dict != self._dataset_dict:
|
|
1798
1815
|
self._dataset_dict = dataset_dict
|
|
1799
|
-
self._dataset = init_dataset(dataset_dict)
|
|
1816
|
+
self._dataset = init_dataset(dataset_dict, parent_dataset=self)
|
|
1800
1817
|
|
|
1801
1818
|
def init_seq_order(self, epoch=None, seq_list=None, seq_order=None):
|
|
1802
1819
|
"""init seq order"""
|
|
@@ -10,7 +10,7 @@ import multiprocessing as mp
|
|
|
10
10
|
from returnn.util.basic import try_run
|
|
11
11
|
from returnn.config import SubProcCopyGlobalConfigPreInitFunc
|
|
12
12
|
from returnn.util.multi_proc_non_daemonic_spawn import NonDaemonicSpawnContext
|
|
13
|
-
from .basic import init_dataset, Dataset, DatasetSeq
|
|
13
|
+
from .basic import init_dataset, extend_dataset_dict_from_parent_dataset, Dataset, DatasetSeq
|
|
14
14
|
from .cached2 import CachedDataset2
|
|
15
15
|
|
|
16
16
|
# noinspection PyProtectedMember
|
|
@@ -46,10 +46,8 @@ class MultiProcDataset(CachedDataset2):
|
|
|
46
46
|
assert num_workers > 0 and buffer_size > 0
|
|
47
47
|
dataset = dataset.copy()
|
|
48
48
|
for k, v in kwargs.items():
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if "random_seed_offset" not in dataset:
|
|
52
|
-
dataset["random_seed_offset"] = self.random_seed_offset
|
|
49
|
+
dataset.setdefault(k, v)
|
|
50
|
+
dataset = extend_dataset_dict_from_parent_dataset(dataset, parent_dataset=self)
|
|
53
51
|
self.dataset = dataset
|
|
54
52
|
self.num_workers = num_workers
|
|
55
53
|
self.buffer_size = buffer_size
|
|
@@ -4519,3 +4519,23 @@ def find_libcudart_from_runtime():
|
|
|
4519
4519
|
return fn
|
|
4520
4520
|
_find_libcudart_from_runtime_cached = [None]
|
|
4521
4521
|
return None
|
|
4522
|
+
|
|
4523
|
+
|
|
4524
|
+
@contextlib.contextmanager
|
|
4525
|
+
def override_env_var(var_name: str, value: str):
|
|
4526
|
+
"""
|
|
4527
|
+
context manager for temporarily overriding the value of an env var
|
|
4528
|
+
|
|
4529
|
+
:param var_name: the name of the environment variable to override
|
|
4530
|
+
:param value: the value to set while the context mgr is active
|
|
4531
|
+
"""
|
|
4532
|
+
|
|
4533
|
+
cur_val = os.environ.get(var_name)
|
|
4534
|
+
os.environ[var_name] = value
|
|
4535
|
+
try:
|
|
4536
|
+
yield
|
|
4537
|
+
finally:
|
|
4538
|
+
if cur_val is not None:
|
|
4539
|
+
os.environ[var_name] = cur_val
|
|
4540
|
+
else:
|
|
4541
|
+
os.environ.pop(var_name)
|
|
File without changes
|