returnn 1.20240723.155747__tar.gz → 1.20240724.170410__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.20240723.155747 → returnn-1.20240724.170410}/PKG-INFO +1 -1
- returnn-1.20240724.170410/_setup_info_generated.py +2 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/__main__.py +3 -3
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/audio.py +3 -1
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/basic.py +7 -8
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/generating.py +3 -3
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/hdf.py +1 -7
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/lm.py +133 -50
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/map.py +1 -1
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/meta.py +4 -4
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/multi_proc.py +1 -1
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/numpy_dump.py +0 -6
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/sprint.py +1 -1
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/decoder/transformer.py +2 -2
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/engine.py +27 -4
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn.egg-info/PKG-INFO +1 -1
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_Dataset.py +3 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/dump-dataset.py +1 -1
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/hdf_dump.py +1 -1
- returnn-1.20240723.155747/_setup_info_generated.py +0 -2
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/.editorconfig +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/.gitignore +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/.gitmodules +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/.kateconfig +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/CHANGELOG.md +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/CODEOWNERS +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/CONTRIBUTING.md +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/LICENSE +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/MANIFEST.in +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/README.rst +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/12AX.cluster_map +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/_setup_returnn_env.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-fwd.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-horovod-mpi.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-horovod-mpi.py.sh +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-horovod-mpi.sh +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-hyper-param-tuning.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-iter-dataset.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-list-devices.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-lua-torch-layer.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-pretrain.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-record-and-push-to-webserver.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-returnn-as-framework.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-rf-pt-benchmark.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-rf.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-rhn-enwik8.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-sprint-interface.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-tf-att-copy.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-tf-attention.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-tf-enc-dec.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-tf-hard-att-copy.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-tf-lstm-benchmark.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-tf-native-lstm.12ax.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-tf-native-lstm2.12ax.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-tf-neural-transducer.12ax.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-tf-rec-explicit-lstm.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-tf-rec-explicit-rnn.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-tf-rec-self-att.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-tf-search-compiled-graph.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-timit-lstm-ctc.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-torch.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/demo.sh +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/IAM/README.txt +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/IAM/chars.txt +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/IAM/config_demo +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/IAM/config_fwd +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/IAM/config_real +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/IAM/decode.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/IAM/go.sh +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/IAM/lines.txt +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/IAM/split/eval.txt +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/IAM/split/train.txt +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/IAM/split/valid.txt +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/README.md +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/artificial/create_test_h5.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/artificial/forwardconfig +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/artificial/go.sh +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/artificial/trainconfig +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/artificial_rgb/go.sh +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/pyproject.toml +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/requirements.txt +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/__old_mod_loader__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/__setup__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/config.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/bundle_file.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/cached.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/cached2.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/distrib_files.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/normalization_data.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/raw_wav.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/stereo.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/util/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/util/feature_extraction.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/util/strings.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/datasets/util/vocabulary.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/engine/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/engine/base.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/engine/batch.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/__main__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/.git +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/graph_editor/README.md +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/graph_editor/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/graph_editor/edit.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/graph_editor/reroute.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/graph_editor/select.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/graph_editor/subgraph.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/graph_editor/transform.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/extern/graph_editor/util.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/forward_iface.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/_backend.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/_native/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/_native/backend.cpp +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/_native/backend.hpp +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/_native/module.cpp +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/_native/module.hpp +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/_native/py_utils.hpp +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/_native/tensor_ops.cpp +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/_native/tensor_ops.hpp +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/_numpy_backend.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/_random_journal.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/_utils.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/array_.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/attention.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/audio/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/audio/mel.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/audio/specaugment.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/backend.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/build_from_dict.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/cond.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/const.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/container.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/control_flow_ctx.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/conv.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/decoder/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/device.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/dims.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/dropout.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/dtype.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/encoder/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/encoder/base.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/encoder/conformer.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/gradient.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/graph.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/hooks.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/init.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/label_smoothing.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/linear.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/loop.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/loss.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/math_.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/matmul.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/module.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/normalization.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/parameter.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/parametrizations.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/parametrize.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/piecewise_linear.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/rand.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/rec.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/reduce.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/run_ctx.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/signal.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/state.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/stepwise_scheduler.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/tensor_array.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/types.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/import_/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/import_/common.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/import_/git.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/import_/import_.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/learning_rate_control.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/log.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/native_op.cpp +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/native_op.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/pretrain.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/sprint/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/sprint/cache.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/sprint/control.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/sprint/error_signals.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/sprint/extern_interface.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/sprint/interface.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tensor/README.md +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tensor/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tensor/_dim_extra.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tensor/_tensor_extra.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tensor/_tensor_mixin_base.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tensor/_tensor_op_overloads.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tensor/control_flow_ctx.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tensor/dim.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tensor/marked_dim.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tensor/tensor.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tensor/tensor_dict.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tensor/utils.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/compat.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/data_pipeline.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/distributed.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/engine.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/frontend_layers/README.md +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/frontend_layers/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/frontend_layers/_backend.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/frontend_layers/_utils.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/frontend_layers/cond.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/frontend_layers/dims.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/frontend_layers/layer.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/frontend_layers/loop.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/frontend_layers/make_layer.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/frontend_layers/masked_computation.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/frontend_low_level/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/frontend_low_level/_backend.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/horovod.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/hyper_param_tuning.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/layers/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/layers/base.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/layers/basic.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/layers/rec.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/layers/segmental_model.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/layers/signal_processing.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/layers/variable.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/native_op.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/network.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/sprint.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/updater.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/util/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/util/basic.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/util/data.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/util/gradient_checkpoint.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/util/ken_lm.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/tf/util/open_fst.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/README.md +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/data/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/data/extern_data.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/data/pipeline.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/data/queued_data_iter.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/data/tensor_utils.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/distributed.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/frontend/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/frontend/_backend.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/frontend/_rand.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/frontend/bridge.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/frontend/raw_ops.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/updater.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/util/README.md +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/util/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/util/array_.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/util/diagnose_gpu.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/util/gradient_checkpoint.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/torch/util/scaled_gradient.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/__init__.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/basic.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/better_exchook.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/bpe.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/debug.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/debug_helpers.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/file_cache.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/fsa.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/literal_py_to_pickle.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/math.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/native_code_compiler.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/pprint.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/py-to-pickle.cpp +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/py_compat.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/py_ext_mod_compiler.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/result_with_reason.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/sig_proc.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/task_system.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/train_proc_manager.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/util/watch_memory.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn.egg-info/SOURCES.txt +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn.egg-info/dependency_links.txt +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn.egg-info/top_level.txt +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/rnn.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/setup.cfg +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/setup.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/DummySprintExec.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/PyCharm-inspection-profile.xml +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/PyCharm.idea/.gitignore +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/PyCharm.idea/.name +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/PyCharm.idea/misc.xml +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/PyCharm.idea/modules.xml +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/PyCharm.idea/returnn.iml +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/_set_num_threads1.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/_setup_returnn_env.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/_setup_test_env.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/bpe-unicode-demo.codes +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/bpe-unicode-demo.vocab +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/lexicon_opt.fst +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/lexicon_opt.isyms +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/lexicon_opt.jpg +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/lexicon_opt.osyms +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/lint_common.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/pycharm-inspect.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/pylint.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/returnn-as-framework.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/rf_utils.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/spelling.dic +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_Config.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_Fsa.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_GeneratingDataset.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_HDFDataset.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_LearningRateControl.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_Log.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_MultiProcDataset.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_Pretrain.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_ResNet.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_SprintDataset.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_SprintInterface.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_TFEngine.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_TFNativeOp.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_TFNetworkLayer.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_TFNetworkRecLayer.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_TFNetworkSigProcLayer.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_TFUpdater.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_TFUtil.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_TF_determinism.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_TaskSystem.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_TaskSystem_SharedMem.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_TranslationDataset.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_Util.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_demos.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_fork_exec.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_hdf_dump.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_rf_array.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_rf_attention.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_rf_base.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_rf_cond.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_rf_const.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_rf_container.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_rf_conv.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_rf_encoder_conformer.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_rf_gradient.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_rf_label_smoothing.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_rf_loop.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_rf_math.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_rf_normalization.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_rf_piecewise_linear.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_rf_rec.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_rf_reduce.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_rf_signal.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_tensor.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_tools.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_torch_dataset.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_torch_engine.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_torch_frontend.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_torch_internal_frontend.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/test_torch_util.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tests/torch_utils.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/_setup_returnn_env.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/analyze-dataset-batches.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/bliss-collect-seq-lens.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/bliss-dump-text.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/bliss-get-segment-names.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/bliss-to-ogg-zip.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/bpe-create-lexicon.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/calculate-word-error-rate.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/cleanup-old-models.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/collect-orth-symbols.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/collect-words.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/compile_native_op.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/compile_tf_graph.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/debug-dump-search-scores.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/debug-plot-search-scores.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/dump-dataset-raw-strings.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/dump-forward-stats.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/dump-forward.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/dump-network-json.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/dump-pickle.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/extract_state_tying_from_dataset.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/get-attention-weights.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/get-best-model-epoch.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/hdf_dump_translation_dataset.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/import-blocks-mt-model.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/import-t2t-mt-model.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/lattice_rescorer/.gitignore +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/lattice_rescorer/Makefile +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/lattice_rescorer/README.md +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/lattice_rescorer/example/README.md +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/lattice_rescorer/example/libs_list +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/lattice_rescorer/example/state_vars_list +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/lattice_rescorer/example/tensor_names_list +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/lattice_rescorer/file.h +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/lattice_rescorer/main.cc +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/lattice_rescorer/rescorer.h +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/lattice_rescorer/vocabulary.cc +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/lattice_rescorer/vocabulary.h +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/tf_avg_checkpoints.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/tf_inspect_checkpoint.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/tf_inspect_summary_log.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/torch_avg_checkpoints.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/torch_export_to_onnx.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/torch_inspect_checkpoint.py +0 -0
- {returnn-1.20240723.155747 → returnn-1.20240724.170410}/tools/torch_inspect_checkpoint_and_opt.py +0 -0
|
@@ -270,13 +270,13 @@ def print_task_properties():
|
|
|
270
270
|
print("Train data:", file=log.v2)
|
|
271
271
|
print(" input:", train_data.num_inputs, "x", train_data.window, file=log.v2)
|
|
272
272
|
print(" output:", train_data.num_outputs, file=log.v2)
|
|
273
|
-
print(" ", train_data.len_info() or "no info", file=log.v2)
|
|
273
|
+
print(" ", train_data.len_info(fast=True) or "no info", file=log.v2)
|
|
274
274
|
if dev_data:
|
|
275
275
|
print("Dev data:", file=log.v2)
|
|
276
|
-
print(" ", dev_data.len_info() or "no info", file=log.v2)
|
|
276
|
+
print(" ", dev_data.len_info(fast=True) or "no info", file=log.v2)
|
|
277
277
|
if eval_data:
|
|
278
278
|
print("Eval data:", file=log.v2)
|
|
279
|
-
print(" ", eval_data.len_info() or "no info", file=log.v2)
|
|
279
|
+
print(" ", eval_data.len_info(fast=True) or "no info", file=log.v2)
|
|
280
280
|
|
|
281
281
|
|
|
282
282
|
def init_engine():
|
|
@@ -393,10 +393,12 @@ class OggZipDataset(CachedDataset2):
|
|
|
393
393
|
self._lazy_init()
|
|
394
394
|
return [self._get_tag_from_info_dict(seq) for seq in self._data]
|
|
395
395
|
|
|
396
|
-
def get_total_num_seqs(self):
|
|
396
|
+
def get_total_num_seqs(self, *, fast: bool = False) -> int:
|
|
397
397
|
"""
|
|
398
398
|
:rtype: int
|
|
399
399
|
"""
|
|
400
|
+
if fast and self._data is None:
|
|
401
|
+
raise Exception(f"{self} not initialized")
|
|
400
402
|
self._lazy_init()
|
|
401
403
|
return len(self._data)
|
|
402
404
|
|
|
@@ -812,11 +812,12 @@ class Dataset(object):
|
|
|
812
812
|
"""
|
|
813
813
|
raise OptionalNotImplementedError(f"{self} get_all_tags not implemented")
|
|
814
814
|
|
|
815
|
-
def get_total_num_seqs(self) -> int:
|
|
815
|
+
def get_total_num_seqs(self, *, fast: bool = False) -> int:
|
|
816
816
|
"""
|
|
817
|
+
:param fast: if True, might raise an exception if not possible to get fast.
|
|
817
818
|
:return: total number of seqs, without partition epoch.
|
|
818
|
-
|
|
819
|
-
|
|
819
|
+
Should be the same as len(self.get_all_tags()).
|
|
820
|
+
Note that this is not possible with all datasets.
|
|
820
821
|
"""
|
|
821
822
|
raise OptionalNotImplementedError(f"{self} get_total_num_seqs not implemented")
|
|
822
823
|
|
|
@@ -994,16 +995,14 @@ class Dataset(object):
|
|
|
994
995
|
return self.is_less_than_num_seqs(0)
|
|
995
996
|
raise NotImplementedError(f"{self} have_seqs() is not implemented (and neither get_total_num_seqs())")
|
|
996
997
|
|
|
997
|
-
def len_info(self):
|
|
998
|
+
def len_info(self, *, fast: bool = False) -> str:
|
|
998
999
|
"""
|
|
999
|
-
:
|
|
1000
|
-
:returns a string to present the user as information about our len.
|
|
1001
|
-
Depending on our implementation, we can give some more or some less information.
|
|
1000
|
+
:return: string to present the user as information about our len.
|
|
1002
1001
|
"""
|
|
1003
1002
|
return ", ".join(
|
|
1004
1003
|
[
|
|
1005
1004
|
self.__class__.__name__,
|
|
1006
|
-
"sequences: %s" % try_run(self.get_total_num_seqs, default="unknown"),
|
|
1005
|
+
"sequences: %s" % try_run(self.get_total_num_seqs, kwargs=dict(fast=fast), default="unknown"),
|
|
1007
1006
|
"frames: %s" % try_run(self.get_num_timesteps, default="unknown"),
|
|
1008
1007
|
]
|
|
1009
1008
|
)
|
|
@@ -199,7 +199,7 @@ class GeneratingDataset(Dataset):
|
|
|
199
199
|
"""
|
|
200
200
|
return self._num_seqs
|
|
201
201
|
|
|
202
|
-
def get_total_num_seqs(self) -> int:
|
|
202
|
+
def get_total_num_seqs(self, *, fast: bool = False) -> int:
|
|
203
203
|
"""
|
|
204
204
|
:return: total num seqs
|
|
205
205
|
"""
|
|
@@ -1189,7 +1189,7 @@ class StaticDataset(CachedDataset2):
|
|
|
1189
1189
|
"""
|
|
1190
1190
|
return self.data[0][key].dtype
|
|
1191
1191
|
|
|
1192
|
-
def get_total_num_seqs(self):
|
|
1192
|
+
def get_total_num_seqs(self, *, fast: bool = False) -> int:
|
|
1193
1193
|
"""
|
|
1194
1194
|
:rtype: int
|
|
1195
1195
|
"""
|
|
@@ -2335,7 +2335,7 @@ class LibriSpeechCorpus(CachedDataset2):
|
|
|
2335
2335
|
"""
|
|
2336
2336
|
return [self._get_tag(i) for i in range(len(self._reference_seq_order))]
|
|
2337
2337
|
|
|
2338
|
-
def get_total_num_seqs(self):
|
|
2338
|
+
def get_total_num_seqs(self, *, fast: bool = False) -> int:
|
|
2339
2339
|
"""
|
|
2340
2340
|
:rtype: int
|
|
2341
2341
|
"""
|
|
@@ -428,7 +428,7 @@ class HDFDataset(CachedDataset):
|
|
|
428
428
|
tags += h5_file["seqTags"][...].tolist()
|
|
429
429
|
return list(map(self._decode, tags))
|
|
430
430
|
|
|
431
|
-
def get_total_num_seqs(self):
|
|
431
|
+
def get_total_num_seqs(self, *, fast: bool = False) -> int:
|
|
432
432
|
"""
|
|
433
433
|
:rtype: int
|
|
434
434
|
"""
|
|
@@ -451,12 +451,6 @@ class HDFDataset(CachedDataset):
|
|
|
451
451
|
"""
|
|
452
452
|
return self.data_dtype[key]
|
|
453
453
|
|
|
454
|
-
def len_info(self):
|
|
455
|
-
"""
|
|
456
|
-
:rtype: str
|
|
457
|
-
"""
|
|
458
|
-
return ", ".join(["HDF dataset", "sequences: %i" % self.num_seqs, "frames: %i" % self.get_num_timesteps()])
|
|
459
|
-
|
|
460
454
|
def _get_file_index(self, real_seq_idx):
|
|
461
455
|
# bisect() returns the position for which all elements to the left of the returned index are <= real_seq_idx,
|
|
462
456
|
# so it actually returns the next file index in which the sequence can be found.
|
|
@@ -7,6 +7,7 @@ and some related helpers.
|
|
|
7
7
|
|
|
8
8
|
from __future__ import annotations
|
|
9
9
|
|
|
10
|
+
from typing import Optional, Union, Callable, List, Tuple
|
|
10
11
|
import typing
|
|
11
12
|
import os
|
|
12
13
|
import sys
|
|
@@ -17,7 +18,15 @@ import xml.etree.ElementTree as ElementTree
|
|
|
17
18
|
import numpy
|
|
18
19
|
from random import Random
|
|
19
20
|
|
|
20
|
-
from returnn.util.basic import
|
|
21
|
+
from returnn.util.basic import (
|
|
22
|
+
parse_orthography,
|
|
23
|
+
parse_orthography_into_symbols,
|
|
24
|
+
load_json,
|
|
25
|
+
unicode,
|
|
26
|
+
cf,
|
|
27
|
+
human_bytes_size,
|
|
28
|
+
hms,
|
|
29
|
+
)
|
|
21
30
|
from returnn.util.literal_py_to_pickle import literal_eval
|
|
22
31
|
from returnn.log import log
|
|
23
32
|
|
|
@@ -115,8 +124,6 @@ class LmDataset(CachedDataset2):
|
|
|
115
124
|
self._orth_replace_map_file = orth_replace_map_file
|
|
116
125
|
self._phone_info = phone_info
|
|
117
126
|
|
|
118
|
-
if callable(corpus_file):
|
|
119
|
-
corpus_file = corpus_file()
|
|
120
127
|
if callable(orth_symbols_file):
|
|
121
128
|
orth_symbols_file = orth_symbols_file()
|
|
122
129
|
if callable(orth_symbols_map_file):
|
|
@@ -124,8 +131,6 @@ class LmDataset(CachedDataset2):
|
|
|
124
131
|
if callable(orth_replace_map_file):
|
|
125
132
|
orth_replace_map_file = orth_replace_map_file()
|
|
126
133
|
|
|
127
|
-
print("LmDataset, loading file", corpus_file, file=log.v4)
|
|
128
|
-
|
|
129
134
|
self.word_based = word_based
|
|
130
135
|
self.word_end_symbol = word_end_symbol
|
|
131
136
|
self.seq_end_symbol = seq_end_symbol
|
|
@@ -266,24 +271,74 @@ class LmDataset(CachedDataset2):
|
|
|
266
271
|
self.num_outputs["delayed"] = self.num_outputs["data"]
|
|
267
272
|
self.labels["delayed"] = self.labels["data"]
|
|
268
273
|
|
|
274
|
+
self._orth_tmp_file = None
|
|
275
|
+
self._orth_mmap = None
|
|
276
|
+
self._orths_offsets_and_lens: Optional[List[Tuple[int, int]]] = None # will be loaded in _lazy_init
|
|
277
|
+
|
|
278
|
+
self.next_orth_idx = 0
|
|
279
|
+
self.next_seq_idx = 0
|
|
280
|
+
self.num_skipped = 0
|
|
281
|
+
self.num_unknown = 0
|
|
282
|
+
|
|
283
|
+
def _lazy_init(self):
|
|
284
|
+
if self._orths_offsets_and_lens is not None:
|
|
285
|
+
return
|
|
286
|
+
|
|
287
|
+
corpus_file = self._corpus_file
|
|
288
|
+
if callable(corpus_file):
|
|
289
|
+
corpus_file = corpus_file()
|
|
290
|
+
|
|
291
|
+
print("LmDataset, loading file", corpus_file, file=log.v4)
|
|
292
|
+
|
|
293
|
+
import tempfile
|
|
294
|
+
import mmap
|
|
295
|
+
|
|
296
|
+
tmp_file = tempfile.NamedTemporaryFile(prefix="returnn_lm_dataset_", suffix="_tmp.txt")
|
|
297
|
+
orths = []
|
|
298
|
+
offset = 0
|
|
299
|
+
self._orth_tmp_file = tmp_file
|
|
300
|
+
self._orths_offsets_and_lens = orths
|
|
301
|
+
start_time = time.time()
|
|
302
|
+
last_print_time = start_time
|
|
303
|
+
|
|
304
|
+
def _add_line(line: bytes):
|
|
305
|
+
nonlocal offset, last_print_time
|
|
306
|
+
|
|
307
|
+
orths.append((offset, len(line)))
|
|
308
|
+
tmp_file.write(line)
|
|
309
|
+
tmp_file.write(b"\n")
|
|
310
|
+
offset += len(line) + 1
|
|
311
|
+
|
|
312
|
+
if time.time() - last_print_time > 10:
|
|
313
|
+
print(
|
|
314
|
+
f" ..., loaded {len(self._orths_offsets_and_lens)} sequences,"
|
|
315
|
+
f" {human_bytes_size(offset)},"
|
|
316
|
+
f" after {hms(time.time() - start_time)}",
|
|
317
|
+
file=log.v4,
|
|
318
|
+
)
|
|
319
|
+
last_print_time = time.time()
|
|
320
|
+
|
|
269
321
|
if isinstance(corpus_file, list): # If a list of files is provided, concatenate all.
|
|
270
|
-
self.orths = []
|
|
271
322
|
for file_name in corpus_file:
|
|
272
|
-
if
|
|
323
|
+
if self._use_cache_manager:
|
|
273
324
|
file_name = cf(file_name)
|
|
274
|
-
|
|
325
|
+
iter_corpus(file_name, skip_empty_lines=self._skip_empty_lines, decode=False, callback=_add_line)
|
|
275
326
|
else:
|
|
276
|
-
if
|
|
327
|
+
if self._use_cache_manager:
|
|
277
328
|
corpus_file = cf(corpus_file)
|
|
278
|
-
self.
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
329
|
+
iter_corpus(corpus_file, skip_empty_lines=self._skip_empty_lines, decode=False, callback=_add_line)
|
|
330
|
+
|
|
331
|
+
tmp_file.flush()
|
|
332
|
+
self._orth_mmap = mmap.mmap(tmp_file.fileno(), 0, flags=mmap.MAP_PRIVATE)
|
|
333
|
+
print(
|
|
334
|
+
f" done, loaded {len(self._orths_offsets_and_lens)} sequences,"
|
|
335
|
+
f" {human_bytes_size(offset)},"
|
|
336
|
+
f" in {hms(time.time() - start_time)}",
|
|
337
|
+
file=log.v4,
|
|
338
|
+
)
|
|
282
339
|
|
|
283
|
-
|
|
284
|
-
self.
|
|
285
|
-
self.num_skipped = 0
|
|
286
|
-
self.num_unknown = 0
|
|
340
|
+
# It's only estimated because we might filter some out or so.
|
|
341
|
+
self._estimated_num_seqs = len(self._orths_offsets_and_lens) // self.partition_epoch
|
|
287
342
|
|
|
288
343
|
def get_data_keys(self):
|
|
289
344
|
"""
|
|
@@ -332,9 +387,14 @@ class LmDataset(CachedDataset2):
|
|
|
332
387
|
self.seq_order = seq_order
|
|
333
388
|
elif seq_list is not None:
|
|
334
389
|
self.seq_order = [int(s[len(self._tag_prefix) :]) for s in seq_list]
|
|
390
|
+
elif epoch is None:
|
|
391
|
+
self.seq_order = []
|
|
335
392
|
else:
|
|
393
|
+
self._lazy_init()
|
|
336
394
|
self.seq_order = self.get_seq_order_for_epoch(
|
|
337
|
-
epoch=epoch,
|
|
395
|
+
epoch=epoch,
|
|
396
|
+
num_seqs=len(self._orths_offsets_and_lens),
|
|
397
|
+
get_seq_len=lambda i: self._orths_offsets_and_lens[i][1],
|
|
338
398
|
)
|
|
339
399
|
self.next_orth_idx = 0
|
|
340
400
|
self.next_seq_idx = 0
|
|
@@ -348,9 +408,12 @@ class LmDataset(CachedDataset2):
|
|
|
348
408
|
"""supports sorting"""
|
|
349
409
|
return True
|
|
350
410
|
|
|
351
|
-
def get_total_num_seqs(self) -> int:
|
|
411
|
+
def get_total_num_seqs(self, *, fast: bool = False) -> int:
|
|
352
412
|
"""total num seqs"""
|
|
353
|
-
|
|
413
|
+
if fast and self._orths_offsets_and_lens is None:
|
|
414
|
+
raise Exception(f"{self} not initialized")
|
|
415
|
+
self._lazy_init()
|
|
416
|
+
return len(self._orths_offsets_and_lens)
|
|
354
417
|
|
|
355
418
|
def _reduce_log_skipped_seqs(self):
|
|
356
419
|
if isinstance(self.log_skipped_seqs, bool):
|
|
@@ -380,11 +443,14 @@ class LmDataset(CachedDataset2):
|
|
|
380
443
|
if self.next_orth_idx >= len(self.seq_order):
|
|
381
444
|
assert self.next_seq_idx <= seq_idx, "We expect that we iterate through all seqs."
|
|
382
445
|
if self.num_skipped > 0:
|
|
383
|
-
print("LmDataset: reached end, skipped %i sequences" % self.num_skipped)
|
|
446
|
+
print("LmDataset: reached end, skipped %i sequences" % self.num_skipped, file=log.v2)
|
|
384
447
|
return None
|
|
385
448
|
assert self.next_seq_idx == seq_idx, "We expect that we iterate through all seqs."
|
|
386
449
|
true_idx = self.seq_order[self.next_orth_idx]
|
|
387
|
-
|
|
450
|
+
self._lazy_init()
|
|
451
|
+
# get sequence for the next index given by seq_order
|
|
452
|
+
offset, len_ = self._orths_offsets_and_lens[true_idx]
|
|
453
|
+
orth = self._orth_mmap[offset : offset + len_].decode("utf8")
|
|
388
454
|
seq_tag = self._tag_prefix + str(true_idx)
|
|
389
455
|
self.next_orth_idx += 1
|
|
390
456
|
if orth == "</s>":
|
|
@@ -500,10 +566,10 @@ def _is_bliss(filename):
|
|
|
500
566
|
return False
|
|
501
567
|
|
|
502
568
|
|
|
503
|
-
def _iter_bliss(filename, callback):
|
|
569
|
+
def _iter_bliss(filename: str, callback: Callable[[Union[str, bytes]], None], *, decode: bool = True):
|
|
504
570
|
"""
|
|
505
|
-
:param
|
|
506
|
-
:param
|
|
571
|
+
:param filename:
|
|
572
|
+
:param callback:
|
|
507
573
|
"""
|
|
508
574
|
corpus_file = open(filename, "rb")
|
|
509
575
|
if filename.endswith(".gz"):
|
|
@@ -534,51 +600,68 @@ def _iter_bliss(filename, callback):
|
|
|
534
600
|
orth_split = orth_raw.split()
|
|
535
601
|
orth = " ".join(orth_split)
|
|
536
602
|
|
|
603
|
+
if not decode:
|
|
604
|
+
orth = orth.encode("utf8")
|
|
537
605
|
callback(orth)
|
|
538
606
|
|
|
539
607
|
|
|
540
|
-
def _iter_txt(
|
|
608
|
+
def _iter_txt(
|
|
609
|
+
filename: str, callback: Callable[[Union[str, bytes]], None], *, skip_empty_lines: bool = True, decode: bool = True
|
|
610
|
+
) -> None:
|
|
541
611
|
"""
|
|
542
|
-
:param
|
|
543
|
-
:param
|
|
544
|
-
:param
|
|
612
|
+
:param filename:
|
|
613
|
+
:param callback:
|
|
614
|
+
:param skip_empty_lines:
|
|
615
|
+
:param decode:
|
|
545
616
|
"""
|
|
546
617
|
f = open(filename, "rb")
|
|
547
618
|
if filename.endswith(".gz"):
|
|
548
619
|
f = gzip.GzipFile(fileobj=f)
|
|
549
620
|
|
|
550
621
|
for line in f:
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
622
|
+
if decode:
|
|
623
|
+
try:
|
|
624
|
+
line = line.decode("utf8")
|
|
625
|
+
except UnicodeDecodeError:
|
|
626
|
+
line = line.decode("latin_1") # or iso8859_15?
|
|
555
627
|
line = line.strip()
|
|
556
628
|
if skip_empty_lines and not line:
|
|
557
629
|
continue
|
|
558
630
|
callback(line)
|
|
559
631
|
|
|
560
632
|
|
|
561
|
-
def iter_corpus(
|
|
633
|
+
def iter_corpus(
|
|
634
|
+
filename: str, callback: Callable[[Union[str, bytes]], None], *, skip_empty_lines: bool = True, decode: bool = True
|
|
635
|
+
) -> None:
|
|
562
636
|
"""
|
|
563
|
-
:param
|
|
564
|
-
:param
|
|
565
|
-
:param
|
|
637
|
+
:param filename:
|
|
638
|
+
:param callback:
|
|
639
|
+
:param skip_empty_lines:
|
|
640
|
+
:param decode:
|
|
566
641
|
"""
|
|
567
642
|
if _is_bliss(filename):
|
|
568
|
-
_iter_bliss(filename=filename, callback=callback)
|
|
643
|
+
_iter_bliss(filename=filename, callback=callback, decode=decode)
|
|
569
644
|
else:
|
|
570
|
-
_iter_txt(filename=filename, callback=callback, skip_empty_lines=skip_empty_lines)
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
def read_corpus(
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
:
|
|
577
|
-
:
|
|
578
|
-
:
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
645
|
+
_iter_txt(filename=filename, callback=callback, skip_empty_lines=skip_empty_lines, decode=decode)
|
|
646
|
+
|
|
647
|
+
|
|
648
|
+
def read_corpus(
|
|
649
|
+
filename: str,
|
|
650
|
+
*,
|
|
651
|
+
skip_empty_lines: bool = True,
|
|
652
|
+
decode: bool = True,
|
|
653
|
+
out_list: Optional[Union[List[str], List[bytes]]] = None,
|
|
654
|
+
) -> Union[List[str], List[bytes]]:
|
|
655
|
+
"""
|
|
656
|
+
:param filename: either Bliss XML or line-based text
|
|
657
|
+
:param skip_empty_lines: in case of line-based text, skip empty lines
|
|
658
|
+
:param decode: if True, return str, otherwise bytes
|
|
659
|
+
:param out_list: if given, append to this list
|
|
660
|
+
:return: out_list, list of orthographies
|
|
661
|
+
"""
|
|
662
|
+
if out_list is None:
|
|
663
|
+
out_list = []
|
|
664
|
+
iter_corpus(filename=filename, callback=out_list.append, skip_empty_lines=skip_empty_lines, decode=decode)
|
|
582
665
|
return out_list
|
|
583
666
|
|
|
584
667
|
|
|
@@ -109,7 +109,7 @@ class MapDatasetWrapper(CachedDataset2):
|
|
|
109
109
|
raise NotImplementedError("'num_seqs' is only known after calling init_seq_order().")
|
|
110
110
|
return len(self._seq_order)
|
|
111
111
|
|
|
112
|
-
def get_total_num_seqs(self) -> int:
|
|
112
|
+
def get_total_num_seqs(self, *, fast: bool = False) -> int:
|
|
113
113
|
"""
|
|
114
114
|
:return: total number of seqs
|
|
115
115
|
"""
|
|
@@ -459,7 +459,7 @@ class MetaDataset(CachedDataset2):
|
|
|
459
459
|
"""
|
|
460
460
|
return self.seq_list_original[self.default_dataset_key]
|
|
461
461
|
|
|
462
|
-
def get_total_num_seqs(self) -> int:
|
|
462
|
+
def get_total_num_seqs(self, *, fast: bool = False) -> int:
|
|
463
463
|
"""
|
|
464
464
|
:return: total number of seqs, without partition epoch
|
|
465
465
|
"""
|
|
@@ -1639,7 +1639,7 @@ class ConcatSeqsDataset(CachedDataset2):
|
|
|
1639
1639
|
"""
|
|
1640
1640
|
return self.dataset.get_data_shape(key)
|
|
1641
1641
|
|
|
1642
|
-
def get_total_num_seqs(self) -> int:
|
|
1642
|
+
def get_total_num_seqs(self, *, fast: bool = False) -> int:
|
|
1643
1643
|
"""total num seqs"""
|
|
1644
1644
|
return len(self.full_seq_list)
|
|
1645
1645
|
|
|
@@ -1879,9 +1879,9 @@ class VariableDataset(Dataset):
|
|
|
1879
1879
|
"""all tags"""
|
|
1880
1880
|
return self._dataset.get_all_tags()
|
|
1881
1881
|
|
|
1882
|
-
def get_total_num_seqs(self) -> int:
|
|
1882
|
+
def get_total_num_seqs(self, *, fast: bool = False) -> int:
|
|
1883
1883
|
"""total num seqs"""
|
|
1884
|
-
return self._dataset.get_total_num_seqs()
|
|
1884
|
+
return self._dataset.get_total_num_seqs(fast=fast)
|
|
1885
1885
|
|
|
1886
1886
|
def get_seq_length(self, sorted_seq_idx: int) -> NumbersDict:
|
|
1887
1887
|
"""seq len"""
|
|
@@ -332,7 +332,7 @@ class MultiProcDataset(CachedDataset2):
|
|
|
332
332
|
"""num seqs"""
|
|
333
333
|
return self._num_seqs
|
|
334
334
|
|
|
335
|
-
def get_total_num_seqs(self) -> int:
|
|
335
|
+
def get_total_num_seqs(self, *, fast: bool = False) -> int:
|
|
336
336
|
"""total num seqs"""
|
|
337
337
|
if self._total_num_seqs is not None:
|
|
338
338
|
return self._total_num_seqs
|
|
@@ -123,12 +123,6 @@ class NumpyDumpDataset(Dataset):
|
|
|
123
123
|
"""
|
|
124
124
|
return self._num_seqs
|
|
125
125
|
|
|
126
|
-
def len_info(self):
|
|
127
|
-
"""
|
|
128
|
-
:rtype: str
|
|
129
|
-
"""
|
|
130
|
-
return "%s, %i seqs" % (self.__class__.__name__, self.num_seqs)
|
|
131
|
-
|
|
132
126
|
# ------------ Seq cache management -----------
|
|
133
127
|
|
|
134
128
|
def _cleanup_old_seq_cache(self, seq_end):
|
|
@@ -1223,7 +1223,7 @@ class SprintCacheDataset(CachedDataset2):
|
|
|
1223
1223
|
self._num_seqs = len(self.seq_list_ordered)
|
|
1224
1224
|
return True
|
|
1225
1225
|
|
|
1226
|
-
def get_total_num_seqs(self) -> int:
|
|
1226
|
+
def get_total_num_seqs(self, *, fast: bool = False) -> int:
|
|
1227
1227
|
"""total num seqs"""
|
|
1228
1228
|
return len(self.seq_list_original)
|
|
1229
1229
|
|
{returnn-1.20240723.155747 → returnn-1.20240724.170410}/returnn/frontend/decoder/transformer.py
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"""
|
|
2
|
-
(Label-sync) Transformer decoder, including cross attention to encoder
|
|
2
|
+
(Label-sync) Transformer decoder, optionally including cross attention to encoder
|
|
3
3
|
|
|
4
4
|
References:
|
|
5
5
|
|
|
@@ -81,7 +81,7 @@ class TransformerDecoder(rf.Module):
|
|
|
81
81
|
if embed_dim:
|
|
82
82
|
self.input_embedding_proj = rf.Linear(embed_dim, model_dim, with_bias=False)
|
|
83
83
|
|
|
84
|
-
# This
|
|
84
|
+
# TODO This should be configurable...
|
|
85
85
|
self.pos_enc = functools.partial(
|
|
86
86
|
rf.sinusoidal_positional_encoding, feat_dim=embed_dim or model_dim, dtype=self.input_embedding.weight.dtype
|
|
87
87
|
)
|
|
@@ -18,6 +18,7 @@ from torch.utils.data import DataLoader
|
|
|
18
18
|
from torch import autocast
|
|
19
19
|
from torch.cuda import amp
|
|
20
20
|
from random import random
|
|
21
|
+
import math
|
|
21
22
|
|
|
22
23
|
import returnn
|
|
23
24
|
from returnn.config import Config
|
|
@@ -118,6 +119,7 @@ class Engine(EngineBase):
|
|
|
118
119
|
|
|
119
120
|
self._log_memory_usage = config.bool("torch_log_memory_usage", False)
|
|
120
121
|
self._log_batch_size = config.bool("log_batch_size", False) and log.verbose[5]
|
|
122
|
+
self._calculate_exp_loss = config.bool("calculate_exp_loss", False)
|
|
121
123
|
self._reset_dev_memory_caches = config.bool("reset_dev_memory_caches", False)
|
|
122
124
|
self._forward_auto_split_batch_on_oom = config.bool("forward_auto_split_batch_on_oom", False)
|
|
123
125
|
|
|
@@ -433,10 +435,11 @@ class Engine(EngineBase):
|
|
|
433
435
|
|
|
434
436
|
accumulated_losses_dict += losses_dict
|
|
435
437
|
accumulated_inv_norm_factors_dict += inv_norm_factors_dict
|
|
438
|
+
eval_info = self._maybe_extend_losses_info(losses_dict / inv_norm_factors_dict)
|
|
436
439
|
_print_process(
|
|
437
440
|
f"ep {self.epoch} train",
|
|
438
441
|
step=step_idx,
|
|
439
|
-
eval_info=dict(
|
|
442
|
+
eval_info=dict(eval_info),
|
|
440
443
|
step_duration=step_duration,
|
|
441
444
|
batch_size_info=_get_batch_size_info(extern_data) if self._log_batch_size else None,
|
|
442
445
|
log_memory_usage_device=self._device if self._log_memory_usage else None,
|
|
@@ -463,6 +466,7 @@ class Engine(EngineBase):
|
|
|
463
466
|
)
|
|
464
467
|
|
|
465
468
|
accumulated_losses_dict = accumulated_losses_dict / accumulated_inv_norm_factors_dict
|
|
469
|
+
accumulated_losses_dict = self._maybe_extend_losses_info(accumulated_losses_dict)
|
|
466
470
|
self.learning_rate_control.set_epoch_error(
|
|
467
471
|
self.epoch, {f"train_loss_{k}": v for k, v in accumulated_losses_dict.items()}
|
|
468
472
|
)
|
|
@@ -530,8 +534,8 @@ class Engine(EngineBase):
|
|
|
530
534
|
train_ctx = rf.get_run_ctx()
|
|
531
535
|
|
|
532
536
|
if score_keys is None:
|
|
533
|
-
score_keys =
|
|
534
|
-
error_keys =
|
|
537
|
+
score_keys = set(name for name, loss in train_ctx.losses.items() if not loss.as_error)
|
|
538
|
+
error_keys = set(name for name, loss in train_ctx.losses.items() if loss.as_error)
|
|
535
539
|
|
|
536
540
|
losses_dict = NumbersDict(
|
|
537
541
|
{
|
|
@@ -549,16 +553,18 @@ class Engine(EngineBase):
|
|
|
549
553
|
|
|
550
554
|
accumulated_losses_dict += losses_dict
|
|
551
555
|
accumulated_inv_norm_factors_dict += inv_norm_factors_dict
|
|
556
|
+
eval_info = self._maybe_extend_losses_info(losses_dict / inv_norm_factors_dict)
|
|
552
557
|
_print_process(
|
|
553
558
|
f"ep {self.epoch} {dataset_name} eval",
|
|
554
559
|
step=step_idx,
|
|
555
|
-
eval_info=dict(
|
|
560
|
+
eval_info=dict(eval_info),
|
|
556
561
|
log_memory_usage_device=self._device if self._log_memory_usage else None,
|
|
557
562
|
)
|
|
558
563
|
step_idx += 1
|
|
559
564
|
|
|
560
565
|
assert step_idx > 0, f"No data in dataset {dataset_name!r}."
|
|
561
566
|
accumulated_losses_dict = accumulated_losses_dict / accumulated_inv_norm_factors_dict
|
|
567
|
+
accumulated_losses_dict = self._maybe_extend_losses_info(accumulated_losses_dict)
|
|
562
568
|
|
|
563
569
|
self.learning_rate_control.set_epoch_error(
|
|
564
570
|
self.epoch, {f"{dataset_name}_loss_{k}": v for k, v in accumulated_losses_dict.items()}
|
|
@@ -588,6 +594,23 @@ class Engine(EngineBase):
|
|
|
588
594
|
assert isinstance(ls[0], self.learning_rate_control.EpochData)
|
|
589
595
|
self.learning_rate_control.epoch_data[self.epoch] = ls[0]
|
|
590
596
|
|
|
597
|
+
def _maybe_extend_losses_info(self, losses: NumbersDict) -> NumbersDict:
|
|
598
|
+
"""
|
|
599
|
+
:param losses:
|
|
600
|
+
:return: maybe extended losses
|
|
601
|
+
"""
|
|
602
|
+
if self._calculate_exp_loss and losses.has_values():
|
|
603
|
+
# Assume the current run ctx still has info about the losses from the last step.
|
|
604
|
+
assert rf.get_run_ctx().losses
|
|
605
|
+
score_keys = set(k for k, v in rf.get_run_ctx().losses.items() if not v.as_error)
|
|
606
|
+
losses_ = {}
|
|
607
|
+
for key, value in losses.items():
|
|
608
|
+
losses_[key] = value
|
|
609
|
+
if key in score_keys:
|
|
610
|
+
losses_[f"{key}:exp"] = math.exp(value)
|
|
611
|
+
losses = NumbersDict(losses_)
|
|
612
|
+
return losses
|
|
613
|
+
|
|
591
614
|
def _create_data_loader(self, dataset: Dataset, *, train: bool = False) -> DataLoader:
|
|
592
615
|
"""
|
|
593
616
|
:param dataset: RETURNN dataset
|
|
@@ -722,12 +722,15 @@ def test_LmDataset_pickle():
|
|
|
722
722
|
}
|
|
723
723
|
)
|
|
724
724
|
assert isinstance(dataset, LmDataset)
|
|
725
|
+
assert dataset._orths_offsets_and_lens is None # not yet loaded, will be lazily loaded
|
|
725
726
|
|
|
726
727
|
s = pickle.dumps(dataset)
|
|
727
728
|
dataset = pickle.loads(s)
|
|
728
729
|
assert isinstance(dataset, LmDataset)
|
|
730
|
+
assert dataset._orths_offsets_and_lens is None # not yet loaded, will be lazily loaded
|
|
729
731
|
|
|
730
732
|
dataset.init_seq_order(epoch=1)
|
|
733
|
+
assert dataset._orths_offsets_and_lens is not None # loaded now
|
|
731
734
|
dataset.load_seqs(0, 2)
|
|
732
735
|
orth = dataset.get_data(0, "data")
|
|
733
736
|
assert orth.tolist() == [1, 2]
|
|
@@ -281,7 +281,7 @@ def init(options):
|
|
|
281
281
|
print("Dataset:", file=log.v2)
|
|
282
282
|
print(" input:", dataset.num_inputs, "x", dataset.window, file=log.v2)
|
|
283
283
|
print(" output:", dataset.num_outputs, file=log.v2)
|
|
284
|
-
print(" ", dataset.len_info() or "no info", file=log.v2)
|
|
284
|
+
print(" ", dataset.len_info(fast=True) or "no info", file=log.v2)
|
|
285
285
|
if options.max_seq_length == "config":
|
|
286
286
|
options.max_seq_length = config.typed_value("max_seq_length", sys.maxsize)
|
|
287
287
|
elif options.max_seq_length:
|
|
@@ -71,7 +71,7 @@ def init(config_filename, cmd_line_opts, dataset_config_str):
|
|
|
71
71
|
else:
|
|
72
72
|
assert dataset_config_str
|
|
73
73
|
dataset = init_dataset(dataset_config_str)
|
|
74
|
-
print("Source dataset:", dataset.len_info(), file=log.v3)
|
|
74
|
+
print("Source dataset:", dataset.len_info(fast=True), file=log.v3)
|
|
75
75
|
return dataset
|
|
76
76
|
|
|
77
77
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|