returnn 1.20241105.131828__tar.gz → 1.20241106.173429__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.20241105.131828 → returnn-1.20241106.173429}/PKG-INFO +1 -1
- returnn-1.20241106.173429/_setup_info_generated.py +2 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/array_.py +11 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/rand.py +20 -15
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/learning_rate_control.py +2 -2
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/data/returnn_dataset_wrapper.py +8 -1
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/engine.py +61 -29
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/basic.py +32 -38
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/math.py +18 -1
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn.egg-info/PKG-INFO +1 -1
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_demos.py +3 -0
- returnn-1.20241105.131828/_setup_info_generated.py +0 -2
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/.editorconfig +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/.gitignore +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/.gitmodules +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/.kateconfig +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/CHANGELOG.md +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/CODEOWNERS +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/CONTRIBUTING.md +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/LICENSE +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/MANIFEST.in +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/README.rst +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/12AX.cluster_map +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/_setup_returnn_env.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-fwd.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-horovod-mpi.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-horovod-mpi.py.sh +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-horovod-mpi.sh +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-hyper-param-tuning.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-iter-dataset.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-list-devices.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-lua-torch-layer.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-pretrain.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-record-and-push-to-webserver.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-returnn-as-framework.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-rf-pt-benchmark.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-rf.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-rhn-enwik8.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-sprint-interface.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-tf-att-copy.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-tf-attention.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-tf-enc-dec.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-tf-hard-att-copy.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-tf-lstm-benchmark.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-tf-native-lstm.12ax.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-tf-native-lstm2.12ax.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-tf-neural-transducer.12ax.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-tf-rec-explicit-lstm.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-tf-rec-explicit-rnn.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-tf-rec-self-att.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-tf-search-compiled-graph.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-timit-lstm-ctc.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-torch.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/demo.sh +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/IAM/README.txt +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/IAM/chars.txt +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/IAM/config_demo +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/IAM/config_fwd +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/IAM/config_real +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/IAM/decode.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/IAM/go.sh +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/IAM/lines.txt +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/IAM/split/eval.txt +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/IAM/split/train.txt +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/IAM/split/valid.txt +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/README.md +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/artificial/create_test_h5.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/artificial/forwardconfig +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/artificial/go.sh +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/artificial/trainconfig +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/artificial_rgb/go.sh +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/pyproject.toml +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/requirements.txt +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/__main__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/__old_mod_loader__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/__setup__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/config.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/audio.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/basic.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/bundle_file.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/cached.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/cached2.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/distrib_files.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/generating.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/hdf.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/lm.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/map.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/meta.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/multi_proc.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/normalization_data.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/numpy_dump.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/postprocessing.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/raw_wav.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/sprint.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/stereo.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/util/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/util/feature_extraction.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/util/strings.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/datasets/util/vocabulary.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/engine/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/engine/base.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/engine/batch.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/__main__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/.git +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/graph_editor/README.md +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/graph_editor/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/graph_editor/edit.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/graph_editor/reroute.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/graph_editor/select.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/graph_editor/subgraph.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/graph_editor/transform.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/extern/graph_editor/util.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/forward_iface.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/_backend.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/_native/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/_native/backend.cpp +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/_native/backend.hpp +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/_native/module.cpp +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/_native/module.hpp +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/_native/py_utils.hpp +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/_native/tensor_ops.cpp +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/_native/tensor_ops.hpp +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/_numpy_backend.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/_random_journal.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/_utils.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/attention.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/audio/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/audio/mel.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/audio/specaugment.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/backend.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/build_from_dict.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/cond.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/const.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/container.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/control_flow_ctx.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/conv.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/conversions/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/conversions/espnet_e_branchformer.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/conversions/hf_llama.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/conversions/torch_nn.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/decoder/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/decoder/transformer.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/device.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/dims.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/dropout.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/dtype.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/encoder/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/encoder/base.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/encoder/conformer.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/encoder/e_branchformer.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/encoder/transformer.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/gradient.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/graph.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/hooks.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/init.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/label_smoothing.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/linear.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/loop.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/loss.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/math_.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/matmul.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/module.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/normalization.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/parameter.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/parametrizations.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/parametrize.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/piecewise_linear.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/rec.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/reduce.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/run_ctx.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/signal.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/state.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/stepwise_scheduler.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/tensor_array.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/frontend/types.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/import_/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/import_/common.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/import_/git.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/import_/import_.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/log.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/native_op.cpp +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/native_op.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/pretrain.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/sprint/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/sprint/cache.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/sprint/control.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/sprint/error_signals.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/sprint/extern_interface.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/sprint/interface.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tensor/README.md +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tensor/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tensor/_dim_extra.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tensor/_tensor_extra.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tensor/_tensor_mixin_base.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tensor/_tensor_op_overloads.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tensor/control_flow_ctx.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tensor/dim.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tensor/marked_dim.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tensor/tensor.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tensor/tensor_dict.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tensor/utils.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/compat.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/data_pipeline.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/distributed.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/engine.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/frontend_layers/README.md +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/frontend_layers/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/frontend_layers/_backend.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/frontend_layers/_utils.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/frontend_layers/cond.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/frontend_layers/dims.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/frontend_layers/layer.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/frontend_layers/loop.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/frontend_layers/make_layer.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/frontend_layers/masked_computation.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/frontend_low_level/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/frontend_low_level/_backend.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/horovod.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/hyper_param_tuning.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/layers/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/layers/base.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/layers/basic.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/layers/rec.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/layers/segmental_model.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/layers/signal_processing.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/layers/variable.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/native_op.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/network.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/sprint.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/updater.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/util/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/util/basic.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/util/data.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/util/gradient_checkpoint.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/util/ken_lm.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/tf/util/open_fst.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/README.md +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/data/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/data/extern_data.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/data/pipeline.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/data/queued_data_iter.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/data/tensor_utils.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/distributed.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/frontend/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/frontend/_backend.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/frontend/_rand.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/frontend/bridge.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/frontend/raw_ops.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/optim/README.md +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/optim/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/optim/lion.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/updater.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/util/README.md +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/util/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/util/array_.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/util/diagnose_gpu.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/util/exception_helper.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/util/gradient_checkpoint.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/util/module.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/torch/util/scaled_gradient.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/__init__.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/better_exchook.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/bpe.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/debug.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/debug_helpers.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/file_cache.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/fsa.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/literal_py_to_pickle.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/native_code_compiler.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/pprint.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/py-to-pickle.cpp +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/py_compat.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/py_ext_mod_compiler.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/result_with_reason.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/sig_proc.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/task_system.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/train_proc_manager.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn/util/watch_memory.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn.egg-info/SOURCES.txt +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn.egg-info/dependency_links.txt +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/returnn.egg-info/top_level.txt +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/rnn.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/setup.cfg +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/setup.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/DummySprintExec.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/PyCharm-inspection-profile.xml +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/PyCharm.idea/.gitignore +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/PyCharm.idea/.name +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/PyCharm.idea/misc.xml +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/PyCharm.idea/modules.xml +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/PyCharm.idea/returnn.iml +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/_set_num_threads1.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/_setup_returnn_env.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/_setup_test_env.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/bpe-unicode-demo.codes +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/bpe-unicode-demo.vocab +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/lexicon_opt.fst +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/lexicon_opt.isyms +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/lexicon_opt.jpg +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/lexicon_opt.osyms +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/lint_common.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/pycharm-inspect.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/pylint.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/returnn-as-framework.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/rf_utils.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/spelling.dic +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_Config.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_Dataset.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_Fsa.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_GeneratingDataset.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_HDFDataset.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_LearningRateControl.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_Log.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_MultiProcDataset.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_Pretrain.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_ResNet.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_SprintDataset.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_SprintInterface.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_TFEngine.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_TFNativeOp.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_TFNetworkLayer.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_TFNetworkRecLayer.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_TFNetworkSigProcLayer.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_TFUpdater.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_TFUtil.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_TF_determinism.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_TaskSystem.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_TaskSystem_SharedMem.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_TranslationDataset.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_Util.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_fork_exec.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_hdf_dump.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_rf_array.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_rf_attention.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_rf_base.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_rf_cond.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_rf_const.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_rf_container.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_rf_conv.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_rf_decoder_transformer.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_rf_encoder_conformer.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_rf_gradient.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_rf_label_smoothing.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_rf_loop.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_rf_math.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_rf_normalization.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_rf_piecewise_linear.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_rf_rec.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_rf_reduce.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_rf_signal.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_tensor.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_tools.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_torch_dataset.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_torch_engine.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_torch_frontend.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_torch_internal_frontend.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/test_torch_util.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tests/torch_utils.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/_setup_returnn_env.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/analyze-dataset-batches.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/bliss-collect-seq-lens.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/bliss-dump-text.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/bliss-get-segment-names.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/bliss-to-ogg-zip.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/bpe-create-lexicon.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/calculate-word-error-rate.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/cleanup-old-models.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/collect-orth-symbols.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/collect-words.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/compile_native_op.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/compile_tf_graph.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/debug-dump-search-scores.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/debug-plot-search-scores.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/dump-dataset-raw-strings.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/dump-dataset.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/dump-forward-stats.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/dump-forward.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/dump-network-json.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/dump-pickle.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/extract_state_tying_from_dataset.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/get-attention-weights.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/get-best-model-epoch.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/hdf_dump.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/hdf_dump_translation_dataset.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/import-blocks-mt-model.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/import-t2t-mt-model.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/lattice_rescorer/.gitignore +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/lattice_rescorer/Makefile +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/lattice_rescorer/README.md +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/lattice_rescorer/example/README.md +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/lattice_rescorer/example/libs_list +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/lattice_rescorer/example/state_vars_list +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/lattice_rescorer/example/tensor_names_list +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/lattice_rescorer/file.h +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/lattice_rescorer/main.cc +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/lattice_rescorer/rescorer.h +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/lattice_rescorer/vocabulary.cc +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/lattice_rescorer/vocabulary.h +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/tf_avg_checkpoints.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/tf_inspect_checkpoint.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/tf_inspect_summary_log.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/torch_avg_checkpoints.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/torch_export_to_onnx.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/torch_inspect_checkpoint.py +0 -0
- {returnn-1.20241105.131828 → returnn-1.20241106.173429}/tools/torch_inspect_checkpoint_and_opt.py +0 -0
|
@@ -36,6 +36,7 @@ __all__ = [
|
|
|
36
36
|
"masked_scatter",
|
|
37
37
|
"sequence_mask",
|
|
38
38
|
"pack_padded",
|
|
39
|
+
"pad_packed",
|
|
39
40
|
"gather",
|
|
40
41
|
"scatter",
|
|
41
42
|
"scatter_argmax",
|
|
@@ -627,6 +628,8 @@ def pack_padded(
|
|
|
627
628
|
Packing means to only store the non-padded frames.
|
|
628
629
|
This uses :func:`masked_select` internally based on the mask of non-masked frames.
|
|
629
630
|
|
|
631
|
+
See :func:`pad_packed` for the inverse operation.
|
|
632
|
+
|
|
630
633
|
:param source:
|
|
631
634
|
:param dims: dims in source to pack. the order defines the format. first dim is major, etc.
|
|
632
635
|
if there are no padded frames, e.g. dims=[B,T] would just result in the [B*T,...] reshaped tensor.
|
|
@@ -648,6 +651,14 @@ def pack_padded(
|
|
|
648
651
|
return rf.masked_select(source, mask=mask, dims=dims, out_dim=out_dim)
|
|
649
652
|
|
|
650
653
|
|
|
654
|
+
def pad_packed(source: Tensor, *, in_dim: Dim, dims: Sequence[Dim]) -> Tensor:
|
|
655
|
+
"""
|
|
656
|
+
Inverse of :func:`pack_padded`, i.e. unpack the sequence, i.e. pad it back to the original length.
|
|
657
|
+
"""
|
|
658
|
+
mask = rf.sequence_mask(dims, device=source.device)
|
|
659
|
+
return rf.masked_scatter(source, mask=mask, in_dim=in_dim, dims=dims)
|
|
660
|
+
|
|
661
|
+
|
|
651
662
|
# noinspection PyUnusedLocal
|
|
652
663
|
def gather(
|
|
653
664
|
source: Tensor,
|
|
@@ -69,13 +69,14 @@ __all__ = [
|
|
|
69
69
|
|
|
70
70
|
def set_random_seed(seed: int):
|
|
71
71
|
"""
|
|
72
|
+
This initializes the random state of the backend
|
|
73
|
+
and also the step-based random state
|
|
74
|
+
(see :func:`get_static_step_based_seed`, only used when ``static=True`` in :func:`random`).
|
|
75
|
+
|
|
72
76
|
Call this at the beginning of the program
|
|
73
77
|
(after the RF backend was selected),
|
|
74
|
-
or when the model and computation graph is supposed to be reinitialized
|
|
75
|
-
|
|
76
|
-
This initializes the random state of the backend and also the step-based random state.
|
|
77
|
-
|
|
78
|
-
This is *not* expected to be called after each epoch or step.
|
|
78
|
+
or when the model and computation graph is supposed to be reinitialized
|
|
79
|
+
or at the beginning of each epoch.
|
|
79
80
|
|
|
80
81
|
:param seed: should depend on epoch or step
|
|
81
82
|
"""
|
|
@@ -124,6 +125,8 @@ def reset_step_random_state():
|
|
|
124
125
|
|
|
125
126
|
def get_static_step_based_seed(*, size=None) -> Union[int, numpy.ndarray]:
|
|
126
127
|
"""
|
|
128
|
+
This is intended as a static seed for :func:`random` when ``static=True`` is used.
|
|
129
|
+
|
|
127
130
|
:return: from the static step-based random state, get a seed
|
|
128
131
|
"""
|
|
129
132
|
return _step_rnd.randint(2**31, size=size)
|
|
@@ -180,18 +183,20 @@ def random(
|
|
|
180
183
|
:param int|float|Tensor|None bound: for uniform, defining the range [-bound, bound)
|
|
181
184
|
:param int|float|Tensor|None minval: for uniform
|
|
182
185
|
:param int|float|Tensor|None maxval: for uniform
|
|
183
|
-
:param int|list[int]|numpy.ndarray|None seed:
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
186
|
+
:param int|list[int]|numpy.ndarray|None seed:
|
|
187
|
+
Only for the case ``static=True``.
|
|
188
|
+
If not given, uses self.network.random.randint,
|
|
189
|
+
i.e. then it is controlled by the global seed setting, and every layer would get its own seed.
|
|
190
|
+
If you specify it explicitly, make sure every :class:`RandomLayer` uses a different seed,
|
|
191
|
+
otherwise you would get the same random numbers everywhere.
|
|
187
192
|
:param str|tf.random.Algorithm|None algorithm: see :class:`RandomStateInitLayer`
|
|
188
193
|
:param Tensor|None explicit_state: You can pass the state explicitly here.
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
194
|
+
If not given, will be created automatically, and updated automatically.
|
|
195
|
+
You could pass a :class:`VariableLayer` with initial value via :class:`RandomStateInitLayer`,
|
|
196
|
+
or directly a :class:`RandomStateInitLayer`.
|
|
197
|
+
If auto_update_state is True, it must be a variable,
|
|
198
|
+
and every time a new random number is created, this variable is updated.
|
|
199
|
+
Otherwise (default), it will not be updated automatically.
|
|
195
200
|
:param bool|None auto_update_state: only used when you pass an explicit state
|
|
196
201
|
:param bool|None static: if no state at all should be used. it just relies on the seed then.
|
|
197
202
|
:param out: if given, will directly write into it, if possible by backend
|
|
@@ -5,7 +5,7 @@ The base class is :class:`LearningRateControl`.
|
|
|
5
5
|
|
|
6
6
|
from __future__ import annotations
|
|
7
7
|
|
|
8
|
-
from typing import Optional, Any, Dict
|
|
8
|
+
from typing import Optional, Union, Any, Dict
|
|
9
9
|
import typing
|
|
10
10
|
import os
|
|
11
11
|
import returnn.util.basic as util
|
|
@@ -350,7 +350,7 @@ class LearningRateControl:
|
|
|
350
350
|
relative_error /= learning_rate / self.default_learning_rate
|
|
351
351
|
return relative_error
|
|
352
352
|
|
|
353
|
-
def set_epoch_error(self, epoch, error):
|
|
353
|
+
def set_epoch_error(self, epoch: int, error: Dict[str, Union[float, Dict[str, float]]]):
|
|
354
354
|
"""
|
|
355
355
|
:type epoch: int
|
|
356
356
|
:type error: dict[str,float|dict[str,float]]
|
|
@@ -67,7 +67,14 @@ class ReturnnDatasetIterDataPipe(torch.utils.data.IterDataPipe):
|
|
|
67
67
|
|
|
68
68
|
def reset(self):
|
|
69
69
|
"""
|
|
70
|
-
|
|
70
|
+
This is called by PyTorch DataLoader mechanism once we create a new iterator over the DataLoader.
|
|
71
|
+
This happens at the beginning of each epoch.
|
|
72
|
+
|
|
73
|
+
(Note: The mechanism where ``reset()`` is actually called is very obfuscated in PyTorch.
|
|
74
|
+
As I understand it, there is a IterDataPipe metaclass (_IterDataPipeMeta)
|
|
75
|
+
which automatically registers a hook on ``__iter__`` via ``hook_iterator``.
|
|
76
|
+
Deep inside the complex logic of this hook, it calls ``_set_datapipe_valid_iterator_id``
|
|
77
|
+
which then calls ``reset()``.)
|
|
71
78
|
"""
|
|
72
79
|
self._reset_callback()
|
|
73
80
|
|
|
@@ -34,7 +34,7 @@ from returnn.util import NumbersDict
|
|
|
34
34
|
from returnn.util.basic import hms, NotSpecified
|
|
35
35
|
from returnn.util.result_with_reason import ResultWithReason
|
|
36
36
|
from returnn.util.debug import debug_shell
|
|
37
|
-
from returnn.util.math import simplify_and_format_number
|
|
37
|
+
from returnn.util.math import simplify_and_format_number, merge_random_seeds
|
|
38
38
|
from returnn.forward_iface import ForwardCallbackIface
|
|
39
39
|
|
|
40
40
|
from .updater import Updater
|
|
@@ -282,6 +282,17 @@ class Engine(EngineBase):
|
|
|
282
282
|
}
|
|
283
283
|
)
|
|
284
284
|
|
|
285
|
+
# Note: The RF/Torch default random number generator influences many things during training,
|
|
286
|
+
# such as dropout and other random operations inside the model,
|
|
287
|
+
# but also some potential shuffling in the dataset iterator.
|
|
288
|
+
# Also see Dataset._get_default_random_seed_offset() and Dataset._get_random_seed_for_epoch().
|
|
289
|
+
random_seed = self.config.int("random_seed", 42)
|
|
290
|
+
seed_data = [self.epoch, self.global_train_step, random_seed]
|
|
291
|
+
if self._torch_distributed_ctx:
|
|
292
|
+
seed_data.append(self._torch_distributed_ctx.rank())
|
|
293
|
+
random_seed = merge_random_seeds(seed_data) # Join all seeds into one int.
|
|
294
|
+
rf.set_random_seed(random_seed)
|
|
295
|
+
|
|
285
296
|
def _maybe_reset_dev_memory_caches(self, *, force: bool = False):
|
|
286
297
|
if not force and not self._reset_dev_memory_caches:
|
|
287
298
|
return
|
|
@@ -372,10 +383,9 @@ class Engine(EngineBase):
|
|
|
372
383
|
num_seqs_ = (
|
|
373
384
|
int(extern_data_raw["num_seqs"]) if extern_data_raw.get("num_seqs", None) is not None else -1
|
|
374
385
|
)
|
|
375
|
-
|
|
376
|
-
assert
|
|
377
|
-
last_seq_idx = int(
|
|
378
|
-
del last_seq_idx_
|
|
386
|
+
# Note: The batches might have been shuffled,
|
|
387
|
+
# thus we cannot really assert that the seq_idx is always increasing.
|
|
388
|
+
last_seq_idx = max(int(extern_data_raw["seq_idx"].max()), last_seq_idx)
|
|
379
389
|
if step_idx == 0:
|
|
380
390
|
if num_seqs_ >= 0:
|
|
381
391
|
print(f"Epoch {self.epoch} num_seqs: {num_seqs_}", file=log.v5)
|
|
@@ -385,6 +395,7 @@ class Engine(EngineBase):
|
|
|
385
395
|
del num_seqs_
|
|
386
396
|
if num_seqs is not None:
|
|
387
397
|
assert last_seq_idx < num_seqs
|
|
398
|
+
epoch_continuous = (self.epoch - 1 + (last_seq_idx + 1) / num_seqs) if num_seqs is not None else None
|
|
388
399
|
|
|
389
400
|
# clear the gradients when every gradient accumulation loop starts
|
|
390
401
|
if zero_grad_next_step:
|
|
@@ -417,7 +428,10 @@ class Engine(EngineBase):
|
|
|
417
428
|
|
|
418
429
|
if accum_grad_multiple_step_dyn:
|
|
419
430
|
accum_grad_multiple_step = accum_grad_multiple_step_dyn(
|
|
420
|
-
epoch=self.epoch,
|
|
431
|
+
epoch=self.epoch,
|
|
432
|
+
epoch_continuous=epoch_continuous,
|
|
433
|
+
global_train_step=self.global_train_step,
|
|
434
|
+
**util.get_fwd_compat_kwargs(),
|
|
421
435
|
)
|
|
422
436
|
cur_count_grad_accum += 1
|
|
423
437
|
perform_update_step = cur_count_grad_accum >= accum_grad_multiple_step
|
|
@@ -477,9 +491,7 @@ class Engine(EngineBase):
|
|
|
477
491
|
step_idx += 1
|
|
478
492
|
self.global_train_step += 1
|
|
479
493
|
self._updater.set_current_train_step(
|
|
480
|
-
global_train_step=self.global_train_step,
|
|
481
|
-
epoch=self.epoch,
|
|
482
|
-
epoch_continuous=(self.epoch - 1 + (last_seq_idx + 1) / num_seqs) if num_seqs is not None else None,
|
|
494
|
+
global_train_step=self.global_train_step, epoch=self.epoch, epoch_continuous=epoch_continuous
|
|
483
495
|
)
|
|
484
496
|
except Exception as exc:
|
|
485
497
|
help_on_torch_exception(exc, step_idx=step_idx, model=self._orig_model, extern_data=extern_data)
|
|
@@ -488,8 +500,8 @@ class Engine(EngineBase):
|
|
|
488
500
|
elapsed = time.monotonic() - epoch_start_time
|
|
489
501
|
elapsed_computation_percentage = elapsed_computation_time / elapsed
|
|
490
502
|
print(
|
|
491
|
-
"Trained %i steps, %s elapsed (%.1f%% computing time)"
|
|
492
|
-
% (step_idx, hms(elapsed), (elapsed_computation_percentage * 100.0)),
|
|
503
|
+
"Epoch %i: Trained %i steps, %s elapsed (%.1f%% computing time)"
|
|
504
|
+
% (self.epoch, step_idx, hms(elapsed), (elapsed_computation_percentage * 100.0)),
|
|
493
505
|
file=log.v3,
|
|
494
506
|
)
|
|
495
507
|
|
|
@@ -509,7 +521,7 @@ class Engine(EngineBase):
|
|
|
509
521
|
if self._do_save():
|
|
510
522
|
self.learning_rate_control.save()
|
|
511
523
|
|
|
512
|
-
print(f"Total train loss:", _format_score(dict(accumulated_losses_dict)), file=log.v3)
|
|
524
|
+
print(f"Epoch {self.epoch}: Total train loss:", _format_score(dict(accumulated_losses_dict)), file=log.v3)
|
|
513
525
|
|
|
514
526
|
self._maybe_report_dev_memory_stats()
|
|
515
527
|
|
|
@@ -540,8 +552,6 @@ class Engine(EngineBase):
|
|
|
540
552
|
self._reset_dev_memory_stats()
|
|
541
553
|
|
|
542
554
|
eval_dump_str = []
|
|
543
|
-
score_keys = None
|
|
544
|
-
error_keys = None
|
|
545
555
|
|
|
546
556
|
for dataset_name, dataset in self.eval_datasets.items():
|
|
547
557
|
if skip_already_evaluated and self._is_dataset_evaluated(name=dataset_name):
|
|
@@ -583,10 +593,6 @@ class Engine(EngineBase):
|
|
|
583
593
|
self._run_step(extern_data, train_func=True)
|
|
584
594
|
train_ctx = rf.get_run_ctx()
|
|
585
595
|
|
|
586
|
-
if score_keys is None:
|
|
587
|
-
score_keys = set(name for name, loss in train_ctx.losses.items() if not loss.as_error)
|
|
588
|
-
error_keys = set(name for name, loss in train_ctx.losses.items() if loss.as_error)
|
|
589
|
-
|
|
590
596
|
losses_dict = NumbersDict(
|
|
591
597
|
{
|
|
592
598
|
name: (
|
|
@@ -623,14 +629,7 @@ class Engine(EngineBase):
|
|
|
623
629
|
self.learning_rate_control.save()
|
|
624
630
|
|
|
625
631
|
# Same format as the TF engine.
|
|
626
|
-
eval_dump_str += [
|
|
627
|
-
"%s: score %s error %s"
|
|
628
|
-
% (
|
|
629
|
-
dataset_name,
|
|
630
|
-
_format_score({name: accumulated_losses_dict[name] for name in score_keys}),
|
|
631
|
-
_format_score({name: accumulated_losses_dict[name] for name in error_keys}),
|
|
632
|
-
)
|
|
633
|
-
]
|
|
632
|
+
eval_dump_str += ["%s: %s" % (dataset_name, _format_score(dict(accumulated_losses_dict)))]
|
|
634
633
|
|
|
635
634
|
if self._torch_distributed_ctx:
|
|
636
635
|
assert self._torch_distributed_ctx.rank() == 0
|
|
@@ -638,7 +637,11 @@ class Engine(EngineBase):
|
|
|
638
637
|
torch.distributed.broadcast(_has_data, src=0)
|
|
639
638
|
|
|
640
639
|
if not self._torch_distributed_ctx or self._torch_distributed_ctx.rank() == 0:
|
|
641
|
-
print(
|
|
640
|
+
print(
|
|
641
|
+
f"Epoch {self.epoch} evaluation:",
|
|
642
|
+
" ".join(eval_dump_str) if eval_dump_str else "(No evaluations.)",
|
|
643
|
+
file=log.v1,
|
|
644
|
+
)
|
|
642
645
|
|
|
643
646
|
self._maybe_report_dev_memory_stats()
|
|
644
647
|
|
|
@@ -662,7 +665,10 @@ class Engine(EngineBase):
|
|
|
662
665
|
for key, value in losses.items():
|
|
663
666
|
losses_[key] = value
|
|
664
667
|
if key in score_keys:
|
|
665
|
-
|
|
668
|
+
try:
|
|
669
|
+
losses_[f"{key}:exp"] = math.exp(value)
|
|
670
|
+
except OverflowError:
|
|
671
|
+
losses_[f"{key}:exp"] = float("inf")
|
|
666
672
|
losses = NumbersDict(losses_)
|
|
667
673
|
return losses
|
|
668
674
|
|
|
@@ -695,6 +701,32 @@ class Engine(EngineBase):
|
|
|
695
701
|
max_seqs = self.config.typed_value("max_seqs", -1)
|
|
696
702
|
batches_dataset = data_pipeline.BatchingIterDataPipe(wrapped_dataset, batch_size=batch_size, max_seqs=max_seqs)
|
|
697
703
|
|
|
704
|
+
online_shuffle_batches = self.config.typed_value("online_shuffle_batches", None)
|
|
705
|
+
if train and online_shuffle_batches:
|
|
706
|
+
if isinstance(online_shuffle_batches, int):
|
|
707
|
+
online_shuffle_batches = {"buffer_size": online_shuffle_batches}
|
|
708
|
+
elif isinstance(online_shuffle_batches, dict):
|
|
709
|
+
if "buffer_size" not in online_shuffle_batches:
|
|
710
|
+
raise ValueError(
|
|
711
|
+
f"config online_shuffle_batches, buffer_size not defined, got {online_shuffle_batches}"
|
|
712
|
+
)
|
|
713
|
+
else:
|
|
714
|
+
raise TypeError(
|
|
715
|
+
f"config online_shuffle_batches, expected int or dict, got {type(online_shuffle_batches)}"
|
|
716
|
+
)
|
|
717
|
+
# Note on random seed: This is handled by the PyTorch DataLoader iterator logic and IterDataPipe reset.
|
|
718
|
+
# Specifically, when we create a new DataLoader iterator,
|
|
719
|
+
# this will get fetch a new random number (from current Torch RNG state),
|
|
720
|
+
# use that as seed for the shuffle buffer.
|
|
721
|
+
# Note: In case of distributed training, it will broadcast the seed from rank 0 to all others.
|
|
722
|
+
# This is maybe not really what we want?
|
|
723
|
+
# https://discuss.pytorch.org/t/shuffleriterdatapipe-but-different-random-seed-per-distributed-rank/212612
|
|
724
|
+
# I currently don't really see a good way to override this behavior.
|
|
725
|
+
# Also note that we are likely using persistent multiprocessing data loader workers,
|
|
726
|
+
# so calling torch.utils.data.graph_settings.apply_random_seed here in the main proc
|
|
727
|
+
# will not have an effect then.
|
|
728
|
+
batches_dataset = torch.utils.data.datapipes.iter.Shuffler(batches_dataset, **online_shuffle_batches)
|
|
729
|
+
|
|
698
730
|
loader_opts = self.config.typed_value("torch_dataloader_opts") or {}
|
|
699
731
|
assert isinstance(loader_opts, dict), f"config torch_dataloader_opts, expected dict, got {type(loader_opts)}"
|
|
700
732
|
|
|
@@ -1333,7 +1365,7 @@ def _format_score(score: Dict[str, float]) -> str:
|
|
|
1333
1365
|
return "None"
|
|
1334
1366
|
if len(score) == 1:
|
|
1335
1367
|
return _format_score_value(list(score.values())[0])
|
|
1336
|
-
return " ".join(["%s %s" % (
|
|
1368
|
+
return " ".join(["%s %s" % (k, _format_score_value(v)) for k, v in score.items()])
|
|
1337
1369
|
|
|
1338
1370
|
|
|
1339
1371
|
def _format_score_value(v: Any) -> str:
|
|
@@ -5,7 +5,7 @@ Various generic utilities, which are shared across different backend engines.
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
from __future__ import annotations
|
|
8
|
-
from typing import Optional, Union, Any, Generic, TypeVar, Iterable, Tuple, Dict, List, Callable
|
|
8
|
+
from typing import Optional, Union, Any, Generic, TypeVar, Iterable, Tuple, Dict, List, Set, Callable
|
|
9
9
|
|
|
10
10
|
import subprocess
|
|
11
11
|
from subprocess import CalledProcessError
|
|
@@ -1962,9 +1962,9 @@ class NumbersDict:
|
|
|
1962
1962
|
self.value = broadcast_value
|
|
1963
1963
|
self.max = self._max_error
|
|
1964
1964
|
|
|
1965
|
-
def copy(self):
|
|
1965
|
+
def copy(self) -> NumbersDict:
|
|
1966
1966
|
"""
|
|
1967
|
-
:
|
|
1967
|
+
:return: copy
|
|
1968
1968
|
"""
|
|
1969
1969
|
return NumbersDict(self)
|
|
1970
1970
|
|
|
@@ -1981,11 +1981,10 @@ class NumbersDict:
|
|
|
1981
1981
|
numbers_dict={k: const_number for k in numbers_dict.dict.keys()},
|
|
1982
1982
|
)
|
|
1983
1983
|
|
|
1984
|
-
def copy_like(self, numbers_dict):
|
|
1984
|
+
def copy_like(self, numbers_dict: NumbersDict) -> NumbersDict:
|
|
1985
1985
|
"""
|
|
1986
|
-
:param
|
|
1986
|
+
:param numbers_dict:
|
|
1987
1987
|
:return: copy of self with same keys as numbers_dict as far as we have them
|
|
1988
|
-
:rtype: NumbersDict
|
|
1989
1988
|
"""
|
|
1990
1989
|
if self.value is not None:
|
|
1991
1990
|
return NumbersDict(
|
|
@@ -1998,11 +1997,11 @@ class NumbersDict:
|
|
|
1998
1997
|
)
|
|
1999
1998
|
|
|
2000
1999
|
@property
|
|
2001
|
-
def keys_set(self):
|
|
2000
|
+
def keys_set(self) -> Set[str]:
|
|
2002
2001
|
"""
|
|
2003
2002
|
Also see :func:`keys_union` if you want to have a deterministic order.
|
|
2004
2003
|
|
|
2005
|
-
:
|
|
2004
|
+
:return: set of keys
|
|
2006
2005
|
"""
|
|
2007
2006
|
return set(self.dict.keys())
|
|
2008
2007
|
|
|
@@ -2019,32 +2018,32 @@ class NumbersDict:
|
|
|
2019
2018
|
res.append(key)
|
|
2020
2019
|
return res
|
|
2021
2020
|
|
|
2022
|
-
def __getitem__(self, key):
|
|
2021
|
+
def __getitem__(self, key: str):
|
|
2023
2022
|
if self.value is not None:
|
|
2024
2023
|
return self.dict.get(key, self.value)
|
|
2025
2024
|
return self.dict[key]
|
|
2026
2025
|
|
|
2027
|
-
def __setitem__(self, key, value):
|
|
2026
|
+
def __setitem__(self, key: str, value):
|
|
2028
2027
|
self.dict[key] = value
|
|
2029
2028
|
|
|
2030
|
-
def __delitem__(self, key):
|
|
2029
|
+
def __delitem__(self, key: str):
|
|
2031
2030
|
del self.dict[key]
|
|
2032
2031
|
|
|
2033
|
-
def __contains__(self, item):
|
|
2032
|
+
def __contains__(self, item: str):
|
|
2034
2033
|
return item in self.dict
|
|
2035
2034
|
|
|
2036
|
-
def get(self, key, default=None):
|
|
2035
|
+
def get(self, key: str, default=None):
|
|
2037
2036
|
"""
|
|
2038
|
-
:param
|
|
2037
|
+
:param key:
|
|
2039
2038
|
:param T default:
|
|
2040
2039
|
:rtype: object|T
|
|
2041
2040
|
"""
|
|
2042
2041
|
# Keep consistent with self.__getitem__. If self.value is set, this will always be the default value.
|
|
2043
2042
|
return self.dict.get(key, self.value if self.value is not None else default)
|
|
2044
2043
|
|
|
2045
|
-
def pop(self, key, *args):
|
|
2044
|
+
def pop(self, key: str, *args):
|
|
2046
2045
|
"""
|
|
2047
|
-
:param
|
|
2046
|
+
:param key:
|
|
2048
2047
|
:param T args: default, or not
|
|
2049
2048
|
:rtype: object|T
|
|
2050
2049
|
"""
|
|
@@ -2057,22 +2056,21 @@ class NumbersDict:
|
|
|
2057
2056
|
# which would only make sense for our values, not the dict keys.
|
|
2058
2057
|
raise Exception("%s.__iter__ is undefined" % self.__class__.__name__)
|
|
2059
2058
|
|
|
2060
|
-
def keys(self):
|
|
2059
|
+
def keys(self) -> Iterable[str]:
|
|
2061
2060
|
"""
|
|
2062
2061
|
:rtype: set[str]
|
|
2063
2062
|
"""
|
|
2064
2063
|
return self.dict.keys()
|
|
2065
2064
|
|
|
2066
|
-
def values(self):
|
|
2065
|
+
def values(self) -> List[Any]:
|
|
2067
2066
|
"""
|
|
2068
|
-
:
|
|
2067
|
+
:return: values: dict values + self.value
|
|
2069
2068
|
"""
|
|
2070
2069
|
return list(self.dict.values()) + ([self.value] if self.value is not None else [])
|
|
2071
2070
|
|
|
2072
|
-
def items(self):
|
|
2071
|
+
def items(self) -> Iterable[Tuple[str, Any]]:
|
|
2073
2072
|
"""
|
|
2074
2073
|
:return: dict items. this excludes self.value
|
|
2075
|
-
:rtype: set[(str,object)]
|
|
2076
2074
|
"""
|
|
2077
2075
|
return self.dict.items()
|
|
2078
2076
|
|
|
@@ -2082,9 +2080,9 @@ class NumbersDict:
|
|
|
2082
2080
|
"""
|
|
2083
2081
|
return self.value is not None or key in self.dict
|
|
2084
2082
|
|
|
2085
|
-
def has_values(self):
|
|
2083
|
+
def has_values(self) -> bool:
|
|
2086
2084
|
"""
|
|
2087
|
-
:
|
|
2085
|
+
:return: any values in self.dict or self.value
|
|
2088
2086
|
"""
|
|
2089
2087
|
return bool(self.dict) or self.value is not None
|
|
2090
2088
|
|
|
@@ -2188,12 +2186,12 @@ class NumbersDict:
|
|
|
2188
2186
|
def __neg__(self):
|
|
2189
2187
|
return self.unary_op(op=lambda a: -a)
|
|
2190
2188
|
|
|
2191
|
-
def __bool__(self):
|
|
2189
|
+
def __bool__(self) -> bool:
|
|
2192
2190
|
return any(self.values())
|
|
2193
2191
|
|
|
2194
2192
|
__nonzero__ = __bool__ # Python 2
|
|
2195
2193
|
|
|
2196
|
-
def elem_eq(self, other, result_with_default=True):
|
|
2194
|
+
def elem_eq(self, other, result_with_default: bool = True) -> NumbersDict:
|
|
2197
2195
|
"""
|
|
2198
2196
|
Element-wise equality check with other.
|
|
2199
2197
|
Note about broadcast default value: Consider some key which is neither in self nor in other.
|
|
@@ -2204,8 +2202,8 @@ class NumbersDict:
|
|
|
2204
2202
|
You can control the behavior via result_with_default.
|
|
2205
2203
|
|
|
2206
2204
|
:param NumbersDict|T other:
|
|
2207
|
-
:param
|
|
2208
|
-
:
|
|
2205
|
+
:param result_with_default:
|
|
2206
|
+
:return: new NumbersDict with bool values
|
|
2209
2207
|
"""
|
|
2210
2208
|
|
|
2211
2209
|
def op(a, b):
|
|
@@ -2225,19 +2223,17 @@ class NumbersDict:
|
|
|
2225
2223
|
res.value = None
|
|
2226
2224
|
return res
|
|
2227
2225
|
|
|
2228
|
-
def __eq__(self, other):
|
|
2226
|
+
def __eq__(self, other) -> bool:
|
|
2229
2227
|
"""
|
|
2230
2228
|
:param NumbersDict|T other:
|
|
2231
2229
|
:return: whether self == other elemwise. see self.elem_eq
|
|
2232
|
-
:rtype: bool
|
|
2233
2230
|
"""
|
|
2234
2231
|
return all(self.elem_eq(other).values())
|
|
2235
2232
|
|
|
2236
|
-
def __ne__(self, other):
|
|
2233
|
+
def __ne__(self, other) -> bool:
|
|
2237
2234
|
"""
|
|
2238
2235
|
:param NumbersDict|T other:
|
|
2239
2236
|
:return: not (self == other)
|
|
2240
|
-
:rtype: bool
|
|
2241
2237
|
"""
|
|
2242
2238
|
return not (self == other)
|
|
2243
2239
|
|
|
@@ -2246,11 +2242,10 @@ class NumbersDict:
|
|
|
2246
2242
|
# and it would just confuse.
|
|
2247
2243
|
raise Exception("%s.__cmp__ is undefined" % self.__class__.__name__)
|
|
2248
2244
|
|
|
2249
|
-
def any_compare(self, other, cmp):
|
|
2245
|
+
def any_compare(self, other, cmp) -> bool:
|
|
2250
2246
|
"""
|
|
2251
2247
|
:param NumbersDict other:
|
|
2252
2248
|
:param ((object,object)->True) cmp:
|
|
2253
|
-
:rtype: True
|
|
2254
2249
|
"""
|
|
2255
2250
|
for key in self.keys():
|
|
2256
2251
|
if key in other.keys():
|
|
@@ -2283,11 +2278,11 @@ class NumbersDict:
|
|
|
2283
2278
|
return min(*args)
|
|
2284
2279
|
|
|
2285
2280
|
@classmethod
|
|
2286
|
-
def max(cls, items):
|
|
2281
|
+
def max(cls, items) -> NumbersDict:
|
|
2287
2282
|
"""
|
|
2288
2283
|
Element-wise maximum for item in items.
|
|
2284
|
+
|
|
2289
2285
|
:param list[NumbersDict|int|float] items:
|
|
2290
|
-
:rtype: NumbersDict
|
|
2291
2286
|
"""
|
|
2292
2287
|
assert items
|
|
2293
2288
|
if len(items) == 1:
|
|
@@ -2297,11 +2292,10 @@ class NumbersDict:
|
|
|
2297
2292
|
return cls.max([items[0], cls.max(items[1:])])
|
|
2298
2293
|
|
|
2299
2294
|
@classmethod
|
|
2300
|
-
def min(cls, items):
|
|
2295
|
+
def min(cls, items) -> NumbersDict:
|
|
2301
2296
|
"""
|
|
2302
2297
|
Element-wise minimum for item in items.
|
|
2303
2298
|
:param list[NumbersDict|int|float] items:
|
|
2304
|
-
:rtype: NumbersDict
|
|
2305
2299
|
"""
|
|
2306
2300
|
assert items
|
|
2307
2301
|
if len(items) == 1:
|
|
@@ -2327,7 +2321,7 @@ class NumbersDict:
|
|
|
2327
2321
|
"""
|
|
2328
2322
|
return min(self.values())
|
|
2329
2323
|
|
|
2330
|
-
def __repr__(self):
|
|
2324
|
+
def __repr__(self) -> str:
|
|
2331
2325
|
if self.value is None and not self.dict:
|
|
2332
2326
|
return "%s()" % self.__class__.__name__
|
|
2333
2327
|
if self.value is None and self.dict:
|
|
@@ -3,8 +3,9 @@ Some mathematical functions, in pure NumPy.
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
|
-
from typing import Union, Optional, Dict
|
|
6
|
+
from typing import Union, Optional, Sequence, Dict
|
|
7
7
|
import numpy
|
|
8
|
+
import hashlib
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
def ceil_div(a: int, b: int) -> int:
|
|
@@ -85,3 +86,19 @@ def simplify_and_format_number(n: Union[int, float]) -> str:
|
|
|
85
86
|
return str(n).rstrip("0").rstrip(".")
|
|
86
87
|
else:
|
|
87
88
|
raise TypeError(f"Expected int or float, got {n!r} type {type(n)}")
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def merge_random_seeds(data_sources: Sequence[int], *, num_bytes: int = 4, signed: bool = False) -> int:
|
|
92
|
+
"""
|
|
93
|
+
:param data_sources: A list of integers. We expect that they are all representable as 64-bit signed integers.
|
|
94
|
+
:param num_bytes: for the output seed.
|
|
95
|
+
:param signed: whether the output seed should be signed.
|
|
96
|
+
:return: A num_bytes*8-bit integer seed, deterministically derived from the input data.
|
|
97
|
+
"""
|
|
98
|
+
# Convert each integer to bytes and concatenate them
|
|
99
|
+
combined = b"".join(int(source).to_bytes(8, "big", signed=True) for source in data_sources)
|
|
100
|
+
# Use SHA-256 to hash the combined bytes
|
|
101
|
+
hash_digest = hashlib.sha256(combined).digest()
|
|
102
|
+
# Convert the hash digest to an integer seed
|
|
103
|
+
seed = int.from_bytes(hash_digest[:num_bytes], "big", signed=signed)
|
|
104
|
+
return seed
|
|
@@ -79,6 +79,9 @@ def parse_last_fer(out: str) -> float:
|
|
|
79
79
|
if not m:
|
|
80
80
|
# example: dev: score 0.03350000149202181 error 0.009919877954075871
|
|
81
81
|
m = re.match("dev: score .* error ([0-9.]+)\\s?", line)
|
|
82
|
+
if not m:
|
|
83
|
+
# example: Epoch 2 evaluation: dev: ce 0.034 fer 0.019
|
|
84
|
+
m = re.match("Epoch [0-9]+ evaluation: dev: .* fer ([0-9.]+)\\s?", line)
|
|
82
85
|
if not m:
|
|
83
86
|
continue
|
|
84
87
|
parsed_fer = float(m.group(1))
|
|
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.20241105.131828 → returnn-1.20241106.173429}/demos/demo-hyper-param-tuning.config
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|