returnn 1.20241024.173653__tar.gz → 1.20241026.3853__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.20241024.173653 → returnn-1.20241026.3853}/PKG-INFO +1 -1
- returnn-1.20241026.3853/_setup_info_generated.py +2 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/__main__.py +4 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/meta.py +105 -1
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/engine/base.py +6 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/engine.py +6 -3
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn.egg-info/PKG-INFO +1 -1
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_Dataset.py +63 -2
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_torch_engine.py +177 -0
- returnn-1.20241024.173653/_setup_info_generated.py +0 -2
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/.editorconfig +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/.gitignore +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/.gitmodules +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/.kateconfig +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/CHANGELOG.md +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/CODEOWNERS +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/CONTRIBUTING.md +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/LICENSE +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/MANIFEST.in +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/README.rst +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/12AX.cluster_map +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/_setup_returnn_env.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-fwd.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-horovod-mpi.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-horovod-mpi.py.sh +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-horovod-mpi.sh +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-hyper-param-tuning.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-iter-dataset.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-list-devices.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-lua-torch-layer.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-pretrain.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-record-and-push-to-webserver.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-returnn-as-framework.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-rf-pt-benchmark.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-rf.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-rhn-enwik8.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-sprint-interface.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-att-copy.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-attention.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-enc-dec.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-hard-att-copy.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-lstm-benchmark.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-native-lstm.12ax.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-native-lstm2.12ax.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-neural-transducer.12ax.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-rec-explicit-lstm.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-rec-explicit-rnn.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-rec-self-att.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-search-compiled-graph.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-timit-lstm-ctc.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-torch.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo.sh +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/README.txt +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/chars.txt +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/config_demo +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/config_fwd +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/config_real +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/decode.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/go.sh +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/lines.txt +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/split/eval.txt +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/split/train.txt +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/split/valid.txt +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/README.md +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/artificial/create_test_h5.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/artificial/forwardconfig +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/artificial/go.sh +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/artificial/trainconfig +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/artificial_rgb/go.sh +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/pyproject.toml +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/requirements.txt +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/__old_mod_loader__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/__setup__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/config.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/audio.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/basic.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/bundle_file.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/cached.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/cached2.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/distrib_files.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/generating.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/hdf.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/lm.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/map.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/multi_proc.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/normalization_data.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/numpy_dump.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/postprocessing.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/raw_wav.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/sprint.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/stereo.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/util/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/util/feature_extraction.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/util/strings.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/datasets/util/vocabulary.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/engine/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/engine/batch.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/__main__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/.git +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/graph_editor/README.md +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/graph_editor/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/graph_editor/edit.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/graph_editor/reroute.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/graph_editor/select.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/graph_editor/subgraph.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/graph_editor/transform.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/extern/graph_editor/util.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/forward_iface.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/_backend.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/_native/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/_native/backend.cpp +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/_native/backend.hpp +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/_native/module.cpp +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/_native/module.hpp +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/_native/py_utils.hpp +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/_native/tensor_ops.cpp +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/_native/tensor_ops.hpp +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/_numpy_backend.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/_random_journal.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/_utils.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/array_.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/attention.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/audio/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/audio/mel.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/audio/specaugment.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/backend.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/build_from_dict.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/cond.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/const.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/container.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/control_flow_ctx.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/conv.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/conversions/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/conversions/espnet_e_branchformer.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/conversions/hf_llama.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/conversions/torch_nn.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/decoder/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/decoder/transformer.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/device.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/dims.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/dropout.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/dtype.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/encoder/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/encoder/base.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/encoder/conformer.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/encoder/e_branchformer.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/encoder/transformer.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/gradient.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/graph.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/hooks.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/init.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/label_smoothing.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/linear.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/loop.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/loss.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/math_.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/matmul.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/module.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/normalization.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/parameter.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/parametrizations.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/parametrize.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/piecewise_linear.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/rand.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/rec.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/reduce.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/run_ctx.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/signal.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/state.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/stepwise_scheduler.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/tensor_array.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/frontend/types.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/import_/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/import_/common.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/import_/git.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/import_/import_.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/learning_rate_control.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/log.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/native_op.cpp +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/native_op.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/pretrain.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/sprint/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/sprint/cache.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/sprint/control.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/sprint/error_signals.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/sprint/extern_interface.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/sprint/interface.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tensor/README.md +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tensor/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tensor/_dim_extra.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tensor/_tensor_extra.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tensor/_tensor_mixin_base.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tensor/_tensor_op_overloads.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tensor/control_flow_ctx.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tensor/dim.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tensor/marked_dim.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tensor/tensor.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tensor/tensor_dict.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tensor/utils.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/compat.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/data_pipeline.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/distributed.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/engine.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/README.md +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/_backend.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/_utils.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/cond.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/dims.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/layer.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/loop.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/make_layer.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/masked_computation.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/frontend_low_level/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/frontend_low_level/_backend.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/horovod.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/hyper_param_tuning.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/layers/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/layers/base.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/layers/basic.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/layers/rec.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/layers/segmental_model.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/layers/signal_processing.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/layers/variable.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/native_op.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/network.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/sprint.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/updater.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/util/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/util/basic.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/util/data.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/util/gradient_checkpoint.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/util/ken_lm.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/tf/util/open_fst.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/README.md +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/data/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/data/extern_data.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/data/pipeline.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/data/queued_data_iter.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/data/tensor_utils.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/distributed.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/frontend/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/frontend/_backend.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/frontend/_rand.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/frontend/bridge.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/frontend/raw_ops.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/optim/README.md +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/optim/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/optim/lion.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/updater.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/util/README.md +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/util/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/util/array_.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/util/diagnose_gpu.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/util/exception_helper.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/util/gradient_checkpoint.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/util/module.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/torch/util/scaled_gradient.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/__init__.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/basic.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/better_exchook.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/bpe.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/debug.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/debug_helpers.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/file_cache.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/fsa.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/literal_py_to_pickle.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/math.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/native_code_compiler.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/pprint.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/py-to-pickle.cpp +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/py_compat.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/py_ext_mod_compiler.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/result_with_reason.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/sig_proc.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/task_system.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/train_proc_manager.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn/util/watch_memory.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn.egg-info/SOURCES.txt +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn.egg-info/dependency_links.txt +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/returnn.egg-info/top_level.txt +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/rnn.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/setup.cfg +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/setup.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/DummySprintExec.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/PyCharm-inspection-profile.xml +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/PyCharm.idea/.gitignore +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/PyCharm.idea/.name +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/PyCharm.idea/misc.xml +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/PyCharm.idea/modules.xml +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/PyCharm.idea/returnn.iml +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/_set_num_threads1.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/_setup_returnn_env.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/_setup_test_env.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/bpe-unicode-demo.codes +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/bpe-unicode-demo.vocab +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/lexicon_opt.fst +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/lexicon_opt.isyms +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/lexicon_opt.jpg +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/lexicon_opt.osyms +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/lint_common.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/pycharm-inspect.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/pylint.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/returnn-as-framework.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/rf_utils.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/spelling.dic +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_Config.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_Fsa.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_GeneratingDataset.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_HDFDataset.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_LearningRateControl.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_Log.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_MultiProcDataset.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_Pretrain.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_ResNet.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_SprintDataset.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_SprintInterface.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_TFEngine.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_TFNativeOp.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_TFNetworkLayer.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_TFNetworkRecLayer.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_TFNetworkSigProcLayer.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_TFUpdater.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_TFUtil.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_TF_determinism.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_TaskSystem.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_TaskSystem_SharedMem.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_TranslationDataset.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_Util.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_demos.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_fork_exec.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_hdf_dump.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_rf_array.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_rf_attention.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_rf_base.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_rf_cond.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_rf_const.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_rf_container.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_rf_conv.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_rf_decoder_transformer.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_rf_encoder_conformer.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_rf_gradient.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_rf_label_smoothing.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_rf_loop.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_rf_math.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_rf_normalization.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_rf_piecewise_linear.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_rf_rec.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_rf_reduce.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_rf_signal.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_tensor.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_tools.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_torch_dataset.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_torch_frontend.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_torch_internal_frontend.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/test_torch_util.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tests/torch_utils.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/_setup_returnn_env.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/analyze-dataset-batches.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/bliss-collect-seq-lens.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/bliss-dump-text.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/bliss-get-segment-names.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/bliss-to-ogg-zip.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/bpe-create-lexicon.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/calculate-word-error-rate.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/cleanup-old-models.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/collect-orth-symbols.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/collect-words.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/compile_native_op.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/compile_tf_graph.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/debug-dump-search-scores.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/debug-plot-search-scores.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/dump-dataset-raw-strings.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/dump-dataset.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/dump-forward-stats.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/dump-forward.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/dump-network-json.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/dump-pickle.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/extract_state_tying_from_dataset.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/get-attention-weights.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/get-best-model-epoch.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/hdf_dump.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/hdf_dump_translation_dataset.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/import-blocks-mt-model.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/import-t2t-mt-model.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/lattice_rescorer/.gitignore +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/lattice_rescorer/Makefile +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/lattice_rescorer/README.md +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/lattice_rescorer/example/README.md +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/lattice_rescorer/example/libs_list +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/lattice_rescorer/example/state_vars_list +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/lattice_rescorer/example/tensor_names_list +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/lattice_rescorer/file.h +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/lattice_rescorer/main.cc +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/lattice_rescorer/rescorer.h +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/lattice_rescorer/vocabulary.cc +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/lattice_rescorer/vocabulary.h +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/tf_avg_checkpoints.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/tf_inspect_checkpoint.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/tf_inspect_summary_log.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/torch_avg_checkpoints.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/torch_export_to_onnx.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/torch_inspect_checkpoint.py +0 -0
- {returnn-1.20241024.173653 → returnn-1.20241026.3853}/tools/torch_inspect_checkpoint_and_opt.py +0 -0
|
@@ -576,6 +576,10 @@ def execute_main_task():
|
|
|
576
576
|
assert data, "set forward_data"
|
|
577
577
|
else:
|
|
578
578
|
data = init_dataset(config.opt_typed_value("forward_data"))
|
|
579
|
+
# engine.epoch is usually the epoch of the loaded checkpoint,
|
|
580
|
+
# or what EngineBase.get_epoch_model will return.
|
|
581
|
+
# You can have both load and load_epoch, where load points to the checkpoint,
|
|
582
|
+
# and load_epoch is some other epoch, which you will get here for the dataset.
|
|
579
583
|
data.init_seq_order(epoch=engine.epoch or 1)
|
|
580
584
|
forward_callback = config.typed_value("forward_callback")
|
|
581
585
|
assert forward_callback, "no forward_callback specified"
|
|
@@ -1875,7 +1875,7 @@ class VariableDataset(Dataset):
|
|
|
1875
1875
|
|
|
1876
1876
|
def init_seq_order(self, epoch=None, seq_list=None, seq_order=None):
|
|
1877
1877
|
"""init seq order"""
|
|
1878
|
-
super().init_seq_order()
|
|
1878
|
+
super().init_seq_order(epoch=epoch, seq_list=seq_list, seq_order=seq_order)
|
|
1879
1879
|
if epoch is None:
|
|
1880
1880
|
if seq_list is not None or seq_order is not None:
|
|
1881
1881
|
raise ValueError(f"{self}: epoch is None, but given seq_list or seq_order, not supported")
|
|
@@ -1973,6 +1973,110 @@ class VariableDataset(Dataset):
|
|
|
1973
1973
|
return self._dataset.is_data_sparse(key)
|
|
1974
1974
|
|
|
1975
1975
|
|
|
1976
|
+
class MultiEpochDataset(CachedDataset2):
|
|
1977
|
+
"""
|
|
1978
|
+
It wraps some dataset, where one outer epoch corresponds to multiple epochs in the inner wrapped dataset.
|
|
1979
|
+
|
|
1980
|
+
This can be useful when the inner dataset uses partition_epoch, and we want to cover the whole full epoch.
|
|
1981
|
+
|
|
1982
|
+
One specific example when the data is distributed over multiple files,
|
|
1983
|
+
and for reasonable performance, you want to have the data copied to the local disk,
|
|
1984
|
+
but all data together is too large to fit on the local disk.
|
|
1985
|
+
Then :class:`DistributeFilesDataset` is the logical choice,
|
|
1986
|
+
which solves these issues.
|
|
1987
|
+
However, you must use some partition_epoch in :class:`DistributeFilesDataset`
|
|
1988
|
+
such that it will not load all data at once.
|
|
1989
|
+
To cover all the data, you can use this :class:`MultiEpochDataset`
|
|
1990
|
+
and set multi_epoch = partition_epoch of the inner dataset.
|
|
1991
|
+
"""
|
|
1992
|
+
|
|
1993
|
+
def __init__(self, *, dataset: Dict[str, Any], multi_epoch: int, **kwargs):
|
|
1994
|
+
"""
|
|
1995
|
+
:param dataset: the inner wrapped dataset
|
|
1996
|
+
:param multi_epoch: how much inner epochs correspond to one outer epoch
|
|
1997
|
+
"""
|
|
1998
|
+
super().__init__(**kwargs)
|
|
1999
|
+
self._dataset = init_dataset(dataset, parent_dataset=self)
|
|
2000
|
+
assert self._dataset
|
|
2001
|
+
self._multi_epoch = multi_epoch
|
|
2002
|
+
self.num_inputs = self._dataset.num_inputs
|
|
2003
|
+
self.num_outputs = self._dataset.num_outputs
|
|
2004
|
+
self.labels = self._dataset.labels
|
|
2005
|
+
self._cur_inner_start_epoch: Optional[int] = None
|
|
2006
|
+
self._cur_inner_epoch_offset = 0
|
|
2007
|
+
self._cur_inner_epoch_seq_idx_offset = 0
|
|
2008
|
+
self._epoch_have_predefined_seq_order = False
|
|
2009
|
+
|
|
2010
|
+
def init_seq_order(self, epoch=None, seq_list=None, seq_order=None):
|
|
2011
|
+
"""init seq order"""
|
|
2012
|
+
super().init_seq_order(epoch=epoch, seq_list=seq_list, seq_order=seq_order)
|
|
2013
|
+
self._epoch_have_predefined_seq_order = bool(seq_list or seq_order)
|
|
2014
|
+
# epoch is 1-based
|
|
2015
|
+
self._cur_inner_start_epoch = ((epoch - 1) * self._multi_epoch + 1) if epoch is not None else None
|
|
2016
|
+
self._cur_inner_epoch_offset = 0
|
|
2017
|
+
self._cur_inner_epoch_seq_idx_offset = 0
|
|
2018
|
+
self._dataset.init_seq_order(epoch=self._cur_inner_start_epoch, seq_list=seq_list, seq_order=seq_order)
|
|
2019
|
+
|
|
2020
|
+
def finish_epoch(self, *, free_resources: bool = False):
|
|
2021
|
+
"""finish epoch"""
|
|
2022
|
+
super().finish_epoch(free_resources=free_resources)
|
|
2023
|
+
self._dataset.finish_epoch(free_resources=free_resources)
|
|
2024
|
+
|
|
2025
|
+
def get_all_tags(self) -> List[str]:
|
|
2026
|
+
"""all tags"""
|
|
2027
|
+
return self._dataset.get_all_tags()
|
|
2028
|
+
|
|
2029
|
+
def get_total_num_seqs(self, *, fast: bool = False) -> int:
|
|
2030
|
+
"""total num seqs"""
|
|
2031
|
+
return self._dataset.get_total_num_seqs(fast=fast)
|
|
2032
|
+
|
|
2033
|
+
def get_data_keys(self) -> List[str]:
|
|
2034
|
+
"""data keys"""
|
|
2035
|
+
return self._dataset.get_data_keys()
|
|
2036
|
+
|
|
2037
|
+
def get_target_list(self) -> List[str]:
|
|
2038
|
+
"""target list"""
|
|
2039
|
+
return self._dataset.get_target_list()
|
|
2040
|
+
|
|
2041
|
+
def _collect_single_seq(self, seq_idx: int) -> Optional[DatasetSeq]:
|
|
2042
|
+
assert seq_idx >= self._cur_inner_epoch_seq_idx_offset
|
|
2043
|
+
sub_seq_idx = seq_idx - self._cur_inner_epoch_seq_idx_offset
|
|
2044
|
+
if not self._dataset.is_less_than_num_seqs(sub_seq_idx):
|
|
2045
|
+
if self._epoch_have_predefined_seq_order:
|
|
2046
|
+
return None # predefined seq order, so no multi-epoch handling
|
|
2047
|
+
if self._cur_inner_start_epoch is None:
|
|
2048
|
+
return None # there was no epoch given, so no multi-epoch handling
|
|
2049
|
+
self._cur_inner_epoch_offset += 1
|
|
2050
|
+
if self._cur_inner_epoch_offset >= self._multi_epoch:
|
|
2051
|
+
return None # we are done
|
|
2052
|
+
self._dataset.init_seq_order(epoch=self._cur_inner_start_epoch + self._cur_inner_epoch_offset)
|
|
2053
|
+
self._cur_inner_epoch_seq_idx_offset = seq_idx
|
|
2054
|
+
sub_seq_idx = 0
|
|
2055
|
+
assert self._dataset.is_less_than_num_seqs(sub_seq_idx) # expect that the sub epoch has some seqs
|
|
2056
|
+
self._dataset.load_seqs(sub_seq_idx, sub_seq_idx + 1)
|
|
2057
|
+
data = {}
|
|
2058
|
+
for key in self.get_data_keys():
|
|
2059
|
+
data[key] = self._dataset.get_data(sub_seq_idx, key)
|
|
2060
|
+
seq_tag = self._dataset.get_tag(sub_seq_idx)
|
|
2061
|
+
return DatasetSeq(seq_idx=seq_idx, seq_tag=seq_tag, features=data)
|
|
2062
|
+
|
|
2063
|
+
def get_data_dim(self, key: str) -> int:
|
|
2064
|
+
"""data dim"""
|
|
2065
|
+
return self._dataset.get_data_dim(key)
|
|
2066
|
+
|
|
2067
|
+
def get_data_shape(self, data_key: str) -> List[int]:
|
|
2068
|
+
"""data shape"""
|
|
2069
|
+
return self._dataset.get_data_shape(data_key)
|
|
2070
|
+
|
|
2071
|
+
def get_data_dtype(self, key: str) -> str:
|
|
2072
|
+
"""data dtype"""
|
|
2073
|
+
return self._dataset.get_data_dtype(key)
|
|
2074
|
+
|
|
2075
|
+
def is_data_sparse(self, key: str) -> bool:
|
|
2076
|
+
"""is data sparse"""
|
|
2077
|
+
return self._dataset.is_data_sparse(key)
|
|
2078
|
+
|
|
2079
|
+
|
|
1976
2080
|
class AnythingDataset(Dataset):
|
|
1977
2081
|
"""
|
|
1978
2082
|
An infinite dataset, creating dummy (zero) data on the fly,
|
|
@@ -266,6 +266,12 @@ class EngineBase:
|
|
|
266
266
|
"""
|
|
267
267
|
return self.pretrain and self.epoch == self.pretrain.get_train_num_epochs() + 1
|
|
268
268
|
|
|
269
|
+
def set_epoch(self, epoch: int):
|
|
270
|
+
"""
|
|
271
|
+
Set the current epoch.
|
|
272
|
+
"""
|
|
273
|
+
self.epoch = epoch
|
|
274
|
+
|
|
269
275
|
def forward_with_callback(self, *, dataset: Dataset, callback: ForwardCallbackIface):
|
|
270
276
|
"""
|
|
271
277
|
Iterate through the dataset, calling `forward_step` from user config,
|
|
@@ -225,6 +225,11 @@ class Engine(EngineBase):
|
|
|
225
225
|
self._train_step_func = self.config.typed_value("train_step")
|
|
226
226
|
assert self._train_step_func, "train_step not defined"
|
|
227
227
|
|
|
228
|
+
def set_epoch(self, epoch: int):
|
|
229
|
+
"""set epoch"""
|
|
230
|
+
super().set_epoch(epoch)
|
|
231
|
+
self._epoch_mp_shared.value = epoch
|
|
232
|
+
|
|
228
233
|
def train(self):
|
|
229
234
|
"""
|
|
230
235
|
Main training loop.
|
|
@@ -243,9 +248,7 @@ class Engine(EngineBase):
|
|
|
243
248
|
)
|
|
244
249
|
self.epoch = self._start_epoch - 1
|
|
245
250
|
while self.epoch + 1 <= self._final_epoch:
|
|
246
|
-
self.epoch
|
|
247
|
-
self._epoch_mp_shared.value = self.epoch
|
|
248
|
-
|
|
251
|
+
self.set_epoch(self.epoch + 1)
|
|
249
252
|
self.init_train_epoch()
|
|
250
253
|
self.train_epoch()
|
|
251
254
|
|
|
@@ -18,12 +18,12 @@ from returnn.util.basic import NumbersDict
|
|
|
18
18
|
from returnn.util import better_exchook
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
def dummy_iter_dataset(dataset: Dataset) -> List[DatasetSeq]:
|
|
21
|
+
def dummy_iter_dataset(dataset: Dataset, *, epoch: int = 1) -> List[DatasetSeq]:
|
|
22
22
|
"""
|
|
23
23
|
:param Dataset dataset:
|
|
24
24
|
:return: seqs
|
|
25
25
|
"""
|
|
26
|
-
dataset.init_seq_order(epoch=
|
|
26
|
+
dataset.init_seq_order(epoch=epoch)
|
|
27
27
|
data_keys = dataset.get_data_keys()
|
|
28
28
|
seq_idx = 0
|
|
29
29
|
seqs = []
|
|
@@ -1147,6 +1147,67 @@ def test_PostprocessingDataset():
|
|
|
1147
1147
|
assert func(2) == 21
|
|
1148
1148
|
|
|
1149
1149
|
|
|
1150
|
+
def test_MultiEpochDataset():
|
|
1151
|
+
from returnn.datasets.meta import MultiEpochDataset
|
|
1152
|
+
from returnn.datasets.cached2 import CachedDataset2
|
|
1153
|
+
|
|
1154
|
+
in_dim, out_dim = 11, 7
|
|
1155
|
+
seq_len = 5
|
|
1156
|
+
inner_num_seqs = 10
|
|
1157
|
+
|
|
1158
|
+
class _MyDataset(CachedDataset2):
|
|
1159
|
+
def __init__(self):
|
|
1160
|
+
super().__init__()
|
|
1161
|
+
self.num_inputs = in_dim
|
|
1162
|
+
self.num_outputs = {"classes": out_dim}
|
|
1163
|
+
|
|
1164
|
+
# noinspection PyShadowingNames
|
|
1165
|
+
def init_seq_order(self, epoch=None, seq_list=None, seq_order=None):
|
|
1166
|
+
"""init seq order"""
|
|
1167
|
+
super().init_seq_order(epoch=epoch, seq_list=seq_list, seq_order=seq_order)
|
|
1168
|
+
self._num_seqs = inner_num_seqs
|
|
1169
|
+
|
|
1170
|
+
def _collect_single_seq(self, seq_idx: int) -> Optional[DatasetSeq]:
|
|
1171
|
+
if seq_idx >= self._num_seqs:
|
|
1172
|
+
return None
|
|
1173
|
+
return DatasetSeq(
|
|
1174
|
+
seq_idx=seq_idx,
|
|
1175
|
+
seq_tag=repr({"epoch": self.epoch, "seq_idx": seq_idx}),
|
|
1176
|
+
features=numpy.zeros((seq_len, in_dim)),
|
|
1177
|
+
targets={"classes": numpy.zeros((seq_len,), dtype=numpy.int32)},
|
|
1178
|
+
)
|
|
1179
|
+
|
|
1180
|
+
inner_dataset = _MyDataset()
|
|
1181
|
+
inner_dataset.initialize()
|
|
1182
|
+
|
|
1183
|
+
multi_epoch = 3
|
|
1184
|
+
dataset = MultiEpochDataset(dataset=inner_dataset, multi_epoch=multi_epoch)
|
|
1185
|
+
for outer_epoch in [1, 7]:
|
|
1186
|
+
seqs = dummy_iter_dataset(dataset, epoch=outer_epoch)
|
|
1187
|
+
assert len(seqs) == inner_num_seqs * multi_epoch
|
|
1188
|
+
outer_seq_idx = 0
|
|
1189
|
+
sub_ep = (outer_epoch - 1) * multi_epoch + 1 # 1-based
|
|
1190
|
+
sub_seq_idx = 0
|
|
1191
|
+
for seq in seqs:
|
|
1192
|
+
assert outer_seq_idx == seq.seq_idx
|
|
1193
|
+
assert seq.features["data"].shape == (seq_len, in_dim)
|
|
1194
|
+
assert seq.features["classes"].shape == (seq_len,)
|
|
1195
|
+
print("seq:", seq.seq_tag)
|
|
1196
|
+
d = eval(seq.seq_tag) # seq tag is dict repr
|
|
1197
|
+
assert isinstance(d, dict)
|
|
1198
|
+
assert d["epoch"] == sub_ep
|
|
1199
|
+
assert d["seq_idx"] == sub_seq_idx
|
|
1200
|
+
# Calc next expected values.
|
|
1201
|
+
if sub_seq_idx >= inner_num_seqs - 1:
|
|
1202
|
+
sub_seq_idx = 0
|
|
1203
|
+
sub_ep += 1
|
|
1204
|
+
else:
|
|
1205
|
+
sub_seq_idx += 1
|
|
1206
|
+
outer_seq_idx += 1
|
|
1207
|
+
assert outer_seq_idx == len(seqs)
|
|
1208
|
+
assert sub_ep == outer_epoch * multi_epoch + 1 and sub_seq_idx == 0
|
|
1209
|
+
|
|
1210
|
+
|
|
1150
1211
|
if __name__ == "__main__":
|
|
1151
1212
|
better_exchook.install()
|
|
1152
1213
|
if len(sys.argv) <= 1:
|
|
@@ -294,6 +294,183 @@ def test_forward_beam_seq_lens():
|
|
|
294
294
|
assert len(max_sizes) > 1
|
|
295
295
|
|
|
296
296
|
|
|
297
|
+
def test_torch_engine_forward_dataset_epoch():
|
|
298
|
+
import tempfile
|
|
299
|
+
import shutil
|
|
300
|
+
import atexit
|
|
301
|
+
import os
|
|
302
|
+
import returnn
|
|
303
|
+
|
|
304
|
+
model_dir_name = tempfile.mkdtemp()
|
|
305
|
+
assert model_dir_name and os.path.isdir(model_dir_name) and not os.listdir(model_dir_name)
|
|
306
|
+
atexit.register(lambda: shutil.rmtree(model_dir_name))
|
|
307
|
+
|
|
308
|
+
in_dim, out_dim = 9, 13
|
|
309
|
+
|
|
310
|
+
def _get_model(**_kwargs):
|
|
311
|
+
return torch.nn.Linear(in_dim, out_dim)
|
|
312
|
+
|
|
313
|
+
epoch = 17
|
|
314
|
+
filename = Engine.epoch_model_filename(f"{model_dir_name}/model", epoch=epoch) + ".pt"
|
|
315
|
+
|
|
316
|
+
# That's how RETURNN now saves the model (2024-10-25).
|
|
317
|
+
# Maybe leave it like this for the test, even when RETURNN itself changes it,
|
|
318
|
+
# so that we also test that we still support this format.
|
|
319
|
+
torch.save(
|
|
320
|
+
{
|
|
321
|
+
"model": _get_model().state_dict(), # some random model
|
|
322
|
+
"epoch": epoch,
|
|
323
|
+
"step": 123,
|
|
324
|
+
"effective_learning_rate": 0.13,
|
|
325
|
+
"returnn_version": returnn.__long_version__,
|
|
326
|
+
},
|
|
327
|
+
filename,
|
|
328
|
+
)
|
|
329
|
+
|
|
330
|
+
recent_seen_seq_idx: Optional[int] = None
|
|
331
|
+
|
|
332
|
+
class _ForwardCallback(ForwardCallbackIface):
|
|
333
|
+
def process_seq(self, *, seq_tag: str, outputs: TensorDict):
|
|
334
|
+
print("*** forward callback process seq", seq_tag)
|
|
335
|
+
d = eval(seq_tag) # we prepared the dataset this way that we get some dict repr here...
|
|
336
|
+
assert isinstance(d, dict)
|
|
337
|
+
assert d["epoch"] == epoch
|
|
338
|
+
nonlocal recent_seen_seq_idx
|
|
339
|
+
seq_idx = d["seq_idx"]
|
|
340
|
+
if seq_idx == 0:
|
|
341
|
+
assert recent_seen_seq_idx is None
|
|
342
|
+
else:
|
|
343
|
+
assert recent_seen_seq_idx is not None
|
|
344
|
+
assert seq_idx == recent_seen_seq_idx + 1
|
|
345
|
+
recent_seen_seq_idx = seq_idx
|
|
346
|
+
|
|
347
|
+
forward_callback = _ForwardCallback()
|
|
348
|
+
|
|
349
|
+
def _forward_step(*, extern_data: TensorDict, **_kwargs):
|
|
350
|
+
print("*** forward step", extern_data)
|
|
351
|
+
data = extern_data["data"]
|
|
352
|
+
# Doesn't matter what we set as output here, not used...
|
|
353
|
+
# (Without output, maybe RETURNN complains, so put sth.)
|
|
354
|
+
# We just use the seq_tag in the forward callback, which is anyway available.
|
|
355
|
+
data.mark_as_default_output(shape=data.dims)
|
|
356
|
+
|
|
357
|
+
config = Config(
|
|
358
|
+
dict(
|
|
359
|
+
task="forward",
|
|
360
|
+
batch_size=50,
|
|
361
|
+
extern_data={"data": {"dim": in_dim}},
|
|
362
|
+
get_model=_get_model,
|
|
363
|
+
load=filename,
|
|
364
|
+
forward_step=_forward_step,
|
|
365
|
+
torch_dataloader_opts=dict(num_workers=0), # simplifies the test
|
|
366
|
+
)
|
|
367
|
+
)
|
|
368
|
+
|
|
369
|
+
from returnn.datasets.cached2 import CachedDataset2
|
|
370
|
+
from returnn.datasets.basic import DatasetSeq
|
|
371
|
+
|
|
372
|
+
num_seqs = 10
|
|
373
|
+
|
|
374
|
+
class _MyDataset(CachedDataset2):
|
|
375
|
+
def __init__(self):
|
|
376
|
+
super().__init__()
|
|
377
|
+
self.num_inputs = in_dim
|
|
378
|
+
self.num_outputs = {"classes": out_dim}
|
|
379
|
+
|
|
380
|
+
# noinspection PyShadowingNames
|
|
381
|
+
def init_seq_order(self, epoch=None, seq_list=None, seq_order=None):
|
|
382
|
+
"""init seq order"""
|
|
383
|
+
super().init_seq_order(epoch=epoch, seq_list=seq_list, seq_order=seq_order)
|
|
384
|
+
self._num_seqs = num_seqs
|
|
385
|
+
|
|
386
|
+
def _collect_single_seq(self, seq_idx: int) -> Optional[DatasetSeq]:
|
|
387
|
+
if seq_idx >= self._num_seqs:
|
|
388
|
+
return None
|
|
389
|
+
return DatasetSeq(
|
|
390
|
+
seq_idx=seq_idx,
|
|
391
|
+
seq_tag=repr({"epoch": self.epoch, "seq_idx": seq_idx}),
|
|
392
|
+
features=numpy.zeros((10, in_dim)),
|
|
393
|
+
targets={"classes": numpy.zeros((10,), dtype=numpy.int32)},
|
|
394
|
+
)
|
|
395
|
+
|
|
396
|
+
dataset = _MyDataset()
|
|
397
|
+
dataset.initialize()
|
|
398
|
+
|
|
399
|
+
with global_config_ctx(config):
|
|
400
|
+
engine = Engine(config=config)
|
|
401
|
+
engine.init_network_from_config()
|
|
402
|
+
# We expect that the engine epoch is set to the epoch of the checkpoint.
|
|
403
|
+
assert engine.epoch == epoch
|
|
404
|
+
|
|
405
|
+
for epoch in [3, 7, 11]:
|
|
406
|
+
engine.set_epoch(epoch)
|
|
407
|
+
assert engine.epoch == epoch
|
|
408
|
+
dataset.init_seq_order(epoch=epoch)
|
|
409
|
+
assert dataset.num_seqs == num_seqs
|
|
410
|
+
recent_seen_seq_idx = None
|
|
411
|
+
engine.forward_with_callback(callback=forward_callback, dataset=dataset)
|
|
412
|
+
assert recent_seen_seq_idx == num_seqs - 1
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
def test_torch_engine_forward_load_epoch():
|
|
416
|
+
import tempfile
|
|
417
|
+
import shutil
|
|
418
|
+
import atexit
|
|
419
|
+
import os
|
|
420
|
+
import returnn
|
|
421
|
+
|
|
422
|
+
model_dir_name = tempfile.mkdtemp()
|
|
423
|
+
assert model_dir_name and os.path.isdir(model_dir_name) and not os.listdir(model_dir_name)
|
|
424
|
+
atexit.register(lambda: shutil.rmtree(model_dir_name))
|
|
425
|
+
|
|
426
|
+
in_dim, out_dim = 9, 13
|
|
427
|
+
|
|
428
|
+
def _get_model(**_kwargs):
|
|
429
|
+
return torch.nn.Linear(in_dim, out_dim)
|
|
430
|
+
|
|
431
|
+
epoch = 17
|
|
432
|
+
load_epoch = 11 # some other epoch
|
|
433
|
+
filename = Engine.epoch_model_filename(f"{model_dir_name}/model", epoch=epoch) + ".pt"
|
|
434
|
+
|
|
435
|
+
# That's how RETURNN now saves the model (2024-10-25).
|
|
436
|
+
# Maybe leave it like this for the test, even when RETURNN itself changes it,
|
|
437
|
+
# so that we also test that we still support this format.
|
|
438
|
+
torch.save(
|
|
439
|
+
{
|
|
440
|
+
"model": _get_model().state_dict(), # some random model
|
|
441
|
+
"epoch": epoch,
|
|
442
|
+
"step": 123,
|
|
443
|
+
"effective_learning_rate": 0.13,
|
|
444
|
+
"returnn_version": returnn.__long_version__,
|
|
445
|
+
},
|
|
446
|
+
filename,
|
|
447
|
+
)
|
|
448
|
+
|
|
449
|
+
def _forward_step(*, extern_data: TensorDict, **_kwargs):
|
|
450
|
+
print("*** forward step", extern_data)
|
|
451
|
+
data = extern_data["data"]
|
|
452
|
+
data.mark_as_default_output(shape=data.dims) # dummy...
|
|
453
|
+
|
|
454
|
+
config = Config(
|
|
455
|
+
dict(
|
|
456
|
+
task="forward",
|
|
457
|
+
batch_size=50,
|
|
458
|
+
extern_data={"data": {"dim": in_dim}},
|
|
459
|
+
get_model=_get_model,
|
|
460
|
+
load=filename,
|
|
461
|
+
load_epoch=load_epoch,
|
|
462
|
+
forward_step=_forward_step,
|
|
463
|
+
torch_dataloader_opts=dict(num_workers=0), # simplifies the test
|
|
464
|
+
)
|
|
465
|
+
)
|
|
466
|
+
|
|
467
|
+
with global_config_ctx(config):
|
|
468
|
+
engine = Engine(config=config)
|
|
469
|
+
engine.init_network_from_config()
|
|
470
|
+
# We expect that even though we loaded the checkpoint, we now have the load_epoch.
|
|
471
|
+
assert engine.epoch == load_epoch
|
|
472
|
+
|
|
473
|
+
|
|
297
474
|
def test_min_seq_len():
|
|
298
475
|
from returnn.datasets.generating import DummyDataset
|
|
299
476
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-record-and-push-to-webserver.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-chunking-blstm.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-contribrnn-lstm.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-maxgradnorm-lstm.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-native-lstm-lowmem.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
{returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-native-lstm2.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-native-lstm2.12ax.tuned.config
RENAMED
|
File without changes
|
{returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-neural-transducer.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-rec-explicit-lstm.config
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-search-compiled-graph.py
RENAMED
|
File without changes
|
{returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-tf-vanilla-lstm.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/demo-upd-mult-model.lstm.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
{returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png
RENAMED
|
File without changes
|
{returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png
RENAMED
|
File without changes
|
{returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/IAM/create_IAM_dataset.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/artificial/create_test_h5.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20241024.173653 → returnn-1.20241026.3853}/demos/mdlstm/artificial_rgb/create_test_h5.py
RENAMED
|
File without changes
|