returnn 1.20240614.213333__tar.gz → 1.20240618.151147__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.20240614.213333/returnn.egg-info → returnn-1.20240618.151147}/PKG-INFO +1 -1
- returnn-1.20240618.151147/_setup_info_generated.py +2 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/distrib_files.py +1 -1
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/__init__.py +3 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/_backend.py +48 -4
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/_numpy_backend.py +3 -3
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/array_.py +43 -0
- returnn-1.20240618.151147/returnn/frontend/build_from_dict.py +60 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/encoder/conformer.py +4 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/math_.py +18 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/normalization.py +25 -1
- returnn-1.20240618.151147/returnn/frontend/piecewise_linear.py +55 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/run_ctx.py +20 -1
- returnn-1.20240618.151147/returnn/frontend/stepwise_scheduler.py +31 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tensor/_dim_extra.py +40 -35
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/frontend_layers/_backend.py +2 -2
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/frontend_low_level/_backend.py +3 -3
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/frontend/_backend.py +59 -3
- {returnn-1.20240614.213333 → returnn-1.20240618.151147/returnn.egg-info}/PKG-INFO +1 -1
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn.egg-info/SOURCES.txt +4 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_rf_array.py +45 -0
- returnn-1.20240618.151147/tests/test_rf_piecewise_linear.py +49 -0
- returnn-1.20240614.213333/_setup_info_generated.py +0 -2
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/.editorconfig +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/.gitignore +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/.gitmodules +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/.kateconfig +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/CHANGELOG.md +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/CODEOWNERS +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/CONTRIBUTING.md +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/LICENSE +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/MANIFEST.in +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/README.rst +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/12AX.cluster_map +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/_setup_returnn_env.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-fwd.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-horovod-mpi.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-horovod-mpi.py.sh +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-horovod-mpi.sh +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-hyper-param-tuning.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-iter-dataset.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-list-devices.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-lua-torch-layer.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-pretrain.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-record-and-push-to-webserver.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-returnn-as-framework.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-rf-pt-benchmark.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-rf.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-rhn-enwik8.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-sprint-interface.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-tf-att-copy.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-tf-attention.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-tf-enc-dec.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-tf-hard-att-copy.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-tf-lstm-benchmark.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-tf-native-lstm.12ax.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-tf-native-lstm2.12ax.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-tf-neural-transducer.12ax.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-tf-rec-explicit-lstm.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-tf-rec-explicit-rnn.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-tf-rec-self-att.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-tf-search-compiled-graph.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-timit-lstm-ctc.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-torch.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/demo.sh +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/IAM/README.txt +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/IAM/chars.txt +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/IAM/config_demo +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/IAM/config_fwd +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/IAM/config_real +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/IAM/decode.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/IAM/go.sh +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/IAM/lines.txt +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/IAM/split/eval.txt +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/IAM/split/train.txt +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/IAM/split/valid.txt +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/README.md +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/artificial/create_test_h5.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/artificial/forwardconfig +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/artificial/go.sh +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/artificial/trainconfig +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/artificial_rgb/go.sh +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/pyproject.toml +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/requirements.txt +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/__main__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/__old_mod_loader__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/__setup__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/config.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/audio.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/basic.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/bundle_file.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/cached.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/cached2.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/generating.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/hdf.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/lm.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/map.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/meta.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/multi_proc.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/normalization_data.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/numpy_dump.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/raw_wav.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/sprint.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/stereo.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/util/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/util/feature_extraction.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/util/strings.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/datasets/util/vocabulary.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/engine/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/engine/base.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/engine/batch.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/__main__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/.git +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/graph_editor/README.md +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/graph_editor/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/graph_editor/edit.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/graph_editor/reroute.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/graph_editor/select.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/graph_editor/subgraph.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/graph_editor/transform.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/extern/graph_editor/util.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/forward_iface.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/_native/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/_native/backend.cpp +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/_native/backend.hpp +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/_native/module.cpp +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/_native/module.hpp +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/_native/py_utils.hpp +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/_native/tensor_ops.cpp +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/_native/tensor_ops.hpp +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/_random_journal.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/_utils.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/attention.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/audio/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/audio/mel.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/audio/specaugment.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/backend.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/cond.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/const.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/container.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/control_flow_ctx.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/conv.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/decoder/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/decoder/transformer.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/device.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/dims.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/dropout.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/dtype.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/encoder/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/encoder/base.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/gradient.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/graph.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/hooks.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/init.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/label_smoothing.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/linear.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/loop.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/loss.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/matmul.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/module.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/parameter.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/rand.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/rec.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/reduce.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/signal.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/state.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/tensor_array.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/types.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/import_/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/import_/common.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/import_/git.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/import_/import_.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/learning_rate_control.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/log.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/native_op.cpp +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/native_op.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/pretrain.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/sprint/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/sprint/cache.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/sprint/control.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/sprint/error_signals.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/sprint/extern_interface.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/sprint/interface.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tensor/README.md +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tensor/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tensor/_tensor_extra.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tensor/_tensor_mixin_base.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tensor/_tensor_op_overloads.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tensor/control_flow_ctx.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tensor/dim.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tensor/marked_dim.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tensor/tensor.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tensor/tensor_dict.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tensor/utils.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/compat.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/data_pipeline.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/distributed.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/engine.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/frontend_layers/README.md +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/frontend_layers/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/frontend_layers/_utils.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/frontend_layers/cond.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/frontend_layers/dims.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/frontend_layers/layer.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/frontend_layers/loop.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/frontend_layers/make_layer.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/frontend_layers/masked_computation.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/frontend_low_level/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/horovod.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/hyper_param_tuning.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/layers/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/layers/base.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/layers/basic.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/layers/rec.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/layers/segmental_model.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/layers/signal_processing.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/layers/variable.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/native_op.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/network.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/sprint.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/updater.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/util/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/util/basic.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/util/data.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/util/gradient_checkpoint.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/util/ken_lm.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/util/open_fst.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/README.md +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/data/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/data/extern_data.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/data/pipeline.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/data/queued_data_iter.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/data/tensor_utils.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/distributed.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/engine.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/frontend/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/frontend/_rand.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/frontend/bridge.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/frontend/raw_ops.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/updater.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/util/README.md +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/util/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/util/diagnose_gpu.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/torch/util/scaled_gradient.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/__init__.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/basic.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/better_exchook.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/bpe.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/debug.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/debug_helpers.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/file_cache.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/fsa.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/literal_py_to_pickle.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/math.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/native_code_compiler.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/pprint.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/py-to-pickle.cpp +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/py_compat.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/py_ext_mod_compiler.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/result_with_reason.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/sig_proc.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/task_system.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/train_proc_manager.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/util/watch_memory.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn.egg-info/dependency_links.txt +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn.egg-info/top_level.txt +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/rnn.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/setup.cfg +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/setup.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/DummySprintExec.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/PyCharm-inspection-profile.xml +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/PyCharm.idea/.gitignore +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/PyCharm.idea/.name +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/PyCharm.idea/misc.xml +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/PyCharm.idea/modules.xml +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/PyCharm.idea/returnn.iml +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/_set_num_threads1.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/_setup_returnn_env.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/_setup_test_env.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/bpe-unicode-demo.codes +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/bpe-unicode-demo.vocab +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/lexicon_opt.fst +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/lexicon_opt.isyms +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/lexicon_opt.jpg +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/lexicon_opt.osyms +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/lint_common.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/pycharm-inspect.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/pylint.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/returnn-as-framework.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/rf_utils.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/spelling.dic +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_Config.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_Dataset.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_Fsa.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_GeneratingDataset.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_HDFDataset.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_LearningRateControl.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_Log.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_MultiProcDataset.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_Pretrain.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_ResNet.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_SprintDataset.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_SprintInterface.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_TFEngine.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_TFNativeOp.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_TFNetworkLayer.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_TFNetworkRecLayer.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_TFNetworkSigProcLayer.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_TFUpdater.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_TFUtil.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_TF_determinism.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_TaskSystem.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_TaskSystem_SharedMem.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_TranslationDataset.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_Util.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_demos.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_fork_exec.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_hdf_dump.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_rf_attention.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_rf_base.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_rf_cond.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_rf_const.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_rf_container.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_rf_conv.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_rf_encoder_conformer.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_rf_gradient.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_rf_label_smoothing.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_rf_loop.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_rf_math.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_rf_normalization.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_rf_rec.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_rf_reduce.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_rf_signal.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_tensor.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_tools.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_torch_dataset.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_torch_engine.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_torch_frontend.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tests/test_torch_internal_frontend.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/_setup_returnn_env.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/analyze-dataset-batches.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/bliss-collect-seq-lens.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/bliss-dump-text.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/bliss-get-segment-names.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/bliss-to-ogg-zip.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/bpe-create-lexicon.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/calculate-word-error-rate.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/cleanup-old-models.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/collect-orth-symbols.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/collect-words.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/compile_native_op.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/compile_tf_graph.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/debug-dump-search-scores.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/debug-plot-search-scores.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/dump-dataset-raw-strings.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/dump-dataset.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/dump-forward-stats.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/dump-forward.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/dump-network-json.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/dump-pickle.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/extract_state_tying_from_dataset.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/get-attention-weights.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/get-best-model-epoch.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/hdf_dump.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/hdf_dump_translation_dataset.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/import-blocks-mt-model.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/import-t2t-mt-model.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/lattice_rescorer/.gitignore +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/lattice_rescorer/Makefile +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/lattice_rescorer/README.md +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/lattice_rescorer/example/README.md +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/lattice_rescorer/example/libs_list +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/lattice_rescorer/example/state_vars_list +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/lattice_rescorer/example/tensor_names_list +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/lattice_rescorer/file.h +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/lattice_rescorer/main.cc +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/lattice_rescorer/rescorer.h +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/lattice_rescorer/vocabulary.cc +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/lattice_rescorer/vocabulary.h +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/tf_avg_checkpoints.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/tf_inspect_checkpoint.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/tf_inspect_summary_log.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/torch_avg_checkpoints.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/torch_export_to_onnx.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/torch_inspect_checkpoint.py +0 -0
- {returnn-1.20240614.213333 → returnn-1.20240618.151147}/tools/torch_inspect_checkpoint_and_opt.py +0 -0
|
@@ -301,7 +301,7 @@ class DistributeFilesDataset(CachedDataset2):
|
|
|
301
301
|
if "seq_ordering" not in dataset_dict and "seq_order_control_dataset" not in dataset_dict:
|
|
302
302
|
raise ValueError(
|
|
303
303
|
f"{self}: sub dataset should have explicit seq_ordering "
|
|
304
|
-
"(or seq_order_control_dataset for MetaDataset), got: {dataset_dict}"
|
|
304
|
+
f"(or seq_order_control_dataset for MetaDataset), got: {dataset_dict}"
|
|
305
305
|
)
|
|
306
306
|
self._lazy_init_file_cache_proc()
|
|
307
307
|
dataset_dict, exit_hook = self._file_cache.handle_cached_files_in_config(dataset_dict)
|
|
@@ -21,6 +21,7 @@ from .state import *
|
|
|
21
21
|
from .array_ import *
|
|
22
22
|
from .attention import *
|
|
23
23
|
from .backend import *
|
|
24
|
+
from .build_from_dict import *
|
|
24
25
|
from .cond import *
|
|
25
26
|
from .const import *
|
|
26
27
|
from .container import *
|
|
@@ -40,11 +41,13 @@ from .math_ import *
|
|
|
40
41
|
from .matmul import *
|
|
41
42
|
from .normalization import *
|
|
42
43
|
from .parameter import *
|
|
44
|
+
from .piecewise_linear import *
|
|
43
45
|
from .rand import *
|
|
44
46
|
from .rec import *
|
|
45
47
|
from .reduce import *
|
|
46
48
|
from .run_ctx import *
|
|
47
49
|
from .signal import *
|
|
50
|
+
from .stepwise_scheduler import *
|
|
48
51
|
from .types import *
|
|
49
52
|
|
|
50
53
|
# Modules not in the main namespace but in sub namespaces.
|
|
@@ -135,14 +135,14 @@ class Backend(Generic[T]):
|
|
|
135
135
|
raise NotImplementedError
|
|
136
136
|
|
|
137
137
|
@staticmethod
|
|
138
|
-
def get_shape_raw(raw_tensor: T) -> Union[T, Tuple[Union[int, T]]]:
|
|
138
|
+
def get_shape_raw(raw_tensor: T) -> Union[T, Tuple[Union[int, T], ...]]:
|
|
139
139
|
"""
|
|
140
140
|
:return: shape of raw tensor
|
|
141
141
|
"""
|
|
142
142
|
raise NotImplementedError
|
|
143
143
|
|
|
144
144
|
@staticmethod
|
|
145
|
-
def get_shape_tuple_raw(raw_tensor: T) -> Tuple[Union[int, T]]:
|
|
145
|
+
def get_shape_tuple_raw(raw_tensor: T) -> Tuple[Union[int, T], ...]:
|
|
146
146
|
"""
|
|
147
147
|
:return: shape of raw tensor. assumes that ndim is known.
|
|
148
148
|
In eager frameworks, all dims are int.
|
|
@@ -150,7 +150,7 @@ class Backend(Generic[T]):
|
|
|
150
150
|
raise NotImplementedError
|
|
151
151
|
|
|
152
152
|
@staticmethod
|
|
153
|
-
def get_known_shape_raw(raw_tensor: T) -> Tuple[Optional[int]]:
|
|
153
|
+
def get_known_shape_raw(raw_tensor: T) -> Tuple[Optional[int], ...]:
|
|
154
154
|
"""
|
|
155
155
|
:return: shape of raw tensor, int for static known, None otherwise. assumes that ndim is known.
|
|
156
156
|
This will not create any ops.
|
|
@@ -159,7 +159,7 @@ class Backend(Generic[T]):
|
|
|
159
159
|
raise NotImplementedError
|
|
160
160
|
|
|
161
161
|
@staticmethod
|
|
162
|
-
def set_known_shape_raw(raw_tensor: T, shape: Tuple[Optional[int]]) -> None:
|
|
162
|
+
def set_known_shape_raw(raw_tensor: T, shape: Tuple[Optional[int], ...]) -> None:
|
|
163
163
|
"""
|
|
164
164
|
Sets the known shape of the raw tensor.
|
|
165
165
|
This is only supported in graph-based frameworks,
|
|
@@ -506,6 +506,15 @@ class Backend(Generic[T]):
|
|
|
506
506
|
"""
|
|
507
507
|
raise NotImplementedError
|
|
508
508
|
|
|
509
|
+
@staticmethod
|
|
510
|
+
def stack(sources: Sequence[Tensor], *, out_dim: Dim) -> Tensor:
|
|
511
|
+
"""
|
|
512
|
+
:param sources:
|
|
513
|
+
:param out_dim:
|
|
514
|
+
:return: stacked tensor
|
|
515
|
+
"""
|
|
516
|
+
raise NotImplementedError
|
|
517
|
+
|
|
509
518
|
# Restrict the possible activation function names,
|
|
510
519
|
# to not get unexpected behavior,
|
|
511
520
|
# or unwanted incompatibilities.
|
|
@@ -953,6 +962,22 @@ class Backend(Generic[T]):
|
|
|
953
962
|
"""where"""
|
|
954
963
|
raise NotImplementedError
|
|
955
964
|
|
|
965
|
+
@staticmethod
|
|
966
|
+
def search_sorted(
|
|
967
|
+
sorted_seq: Tensor, values: Tensor, *, axis: Dim, side: str = "left", out_dtype: str = "int32"
|
|
968
|
+
) -> Tensor:
|
|
969
|
+
"""
|
|
970
|
+
:param sorted_seq: [SharedDims...,axis], sequence of numbers, sorted low to high in the given axis.
|
|
971
|
+
:param values: [SharedDims...,OtherDims...], sequence of numbers to search for in ``sorted_seq``.
|
|
972
|
+
:param axis:
|
|
973
|
+
:param side: "left" or "right"
|
|
974
|
+
:param out_dtype:
|
|
975
|
+
:return: [SharedDims...,OtherDims...] -> axis, indices in axis in ``sorted_seq`` such that
|
|
976
|
+
sorted_seq[i-1] < value <= sorted_seq[i] if side=="left",
|
|
977
|
+
sorted_seq[i-1] <= value < sorted_seq[i] if side=="right".
|
|
978
|
+
"""
|
|
979
|
+
raise NotImplementedError
|
|
980
|
+
|
|
956
981
|
@staticmethod
|
|
957
982
|
def clip_by_value(
|
|
958
983
|
x: Tensor,
|
|
@@ -964,6 +989,25 @@ class Backend(Generic[T]):
|
|
|
964
989
|
"""clip by value"""
|
|
965
990
|
raise NotImplementedError
|
|
966
991
|
|
|
992
|
+
@staticmethod
|
|
993
|
+
def lerp(
|
|
994
|
+
start: Tensor, end: Tensor, weight: Union[float, Tensor], *, allow_broadcast_all_sources: bool = False
|
|
995
|
+
) -> Tensor:
|
|
996
|
+
"""
|
|
997
|
+
Linear interpolation between start and end.
|
|
998
|
+
(Some backends might provide an optimized version of this.)
|
|
999
|
+
|
|
1000
|
+
:param start:
|
|
1001
|
+
:param end:
|
|
1002
|
+
:param weight: scalar or tensor
|
|
1003
|
+
:param allow_broadcast_all_sources:
|
|
1004
|
+
:return: start + weight * (end - start)
|
|
1005
|
+
"""
|
|
1006
|
+
# Default implementation.
|
|
1007
|
+
if not allow_broadcast_all_sources:
|
|
1008
|
+
return start + weight * (end - start)
|
|
1009
|
+
return rf.combine_bc(start, "+", rf.combine_bc(weight, "*", rf.combine_bc(end, "-", start)))
|
|
1010
|
+
|
|
967
1011
|
@staticmethod
|
|
968
1012
|
def matmul(a: Tensor[T], b: Tensor[T], *, reduce: Union[Dim, Sequence[Dim]], use_mask: bool = True) -> Tensor[T]:
|
|
969
1013
|
"""
|
|
@@ -52,14 +52,14 @@ class NumpyBackend(Backend[numpy.ndarray]):
|
|
|
52
52
|
return raw_tensor.ndim
|
|
53
53
|
|
|
54
54
|
@staticmethod
|
|
55
|
-
def get_shape_raw(raw_tensor: numpy.ndarray) -> Tuple[int]:
|
|
55
|
+
def get_shape_raw(raw_tensor: numpy.ndarray) -> Tuple[int, ...]:
|
|
56
56
|
"""
|
|
57
57
|
:return: shape of raw tensor
|
|
58
58
|
"""
|
|
59
59
|
return raw_tensor.shape
|
|
60
60
|
|
|
61
61
|
@staticmethod
|
|
62
|
-
def get_shape_tuple_raw(raw_tensor: numpy.ndarray) -> Tuple[int]:
|
|
62
|
+
def get_shape_tuple_raw(raw_tensor: numpy.ndarray) -> Tuple[int, ...]:
|
|
63
63
|
"""
|
|
64
64
|
:return: shape of raw tensor. assumes that ndim is known.
|
|
65
65
|
In eager frameworks, all dims are int.
|
|
@@ -67,7 +67,7 @@ class NumpyBackend(Backend[numpy.ndarray]):
|
|
|
67
67
|
return raw_tensor.shape
|
|
68
68
|
|
|
69
69
|
@staticmethod
|
|
70
|
-
def get_known_shape_raw(raw_tensor: numpy.ndarray) -> Tuple[int]:
|
|
70
|
+
def get_known_shape_raw(raw_tensor: numpy.ndarray) -> Tuple[int, ...]:
|
|
71
71
|
"""
|
|
72
72
|
:return: shape of raw tensor, int for static known, None otherwise. assumes that ndim is known.
|
|
73
73
|
This will not create any ops.
|
|
@@ -29,6 +29,7 @@ __all__ = [
|
|
|
29
29
|
"concat_features",
|
|
30
30
|
"pad",
|
|
31
31
|
"cum_concat_step",
|
|
32
|
+
"stack",
|
|
32
33
|
"masked_select",
|
|
33
34
|
"masked_scatter",
|
|
34
35
|
"sequence_mask",
|
|
@@ -39,6 +40,7 @@ __all__ = [
|
|
|
39
40
|
"shift_right",
|
|
40
41
|
"reverse_sequence",
|
|
41
42
|
"where",
|
|
43
|
+
"search_sorted",
|
|
42
44
|
"sparse_to_dense",
|
|
43
45
|
"one_hot",
|
|
44
46
|
]
|
|
@@ -352,6 +354,13 @@ def concat(
|
|
|
352
354
|
) -> Tuple[Tensor, Dim]:
|
|
353
355
|
"""
|
|
354
356
|
Concatenates multiple sources in the specified dimension.
|
|
357
|
+
|
|
358
|
+
Also see :func:`stack`.
|
|
359
|
+
|
|
360
|
+
:param sources: list of (tensor, dim) pairs. dim is the axis to concatenate on.
|
|
361
|
+
:param allow_broadcast: if True, the sources can have different dims, and the result will be broadcasted.
|
|
362
|
+
:param out_dim: reuse existing dim for the resulting concatenated dim, if given
|
|
363
|
+
:return: concatenated tensor, out_dim
|
|
355
364
|
"""
|
|
356
365
|
assert sources
|
|
357
366
|
if not allow_broadcast:
|
|
@@ -490,6 +499,23 @@ def cum_concat_step(
|
|
|
490
499
|
)
|
|
491
500
|
|
|
492
501
|
|
|
502
|
+
def stack(sources: Sequence[Tensor], *, out_dim: Optional[Dim] = None) -> Tuple[Tensor, Dim]:
|
|
503
|
+
"""
|
|
504
|
+
Stack the sources in a new dimension.
|
|
505
|
+
All sources must have the same shape.
|
|
506
|
+
|
|
507
|
+
:param sources:
|
|
508
|
+
:param out_dim: if given, use this as the new dim
|
|
509
|
+
:return: stacked tensor, out_dim
|
|
510
|
+
"""
|
|
511
|
+
if not sources:
|
|
512
|
+
raise ValueError("no sources to stack")
|
|
513
|
+
if not out_dim:
|
|
514
|
+
out_dim = Dim(len(sources), name="stack")
|
|
515
|
+
# noinspection PyProtectedMember
|
|
516
|
+
return sources[0]._raw_backend.stack(sources, out_dim=out_dim), out_dim
|
|
517
|
+
|
|
518
|
+
|
|
493
519
|
def masked_select(
|
|
494
520
|
tensor: Tensor, *, mask: Tensor, dims: Sequence[Dim], out_dim: Optional[Dim] = None
|
|
495
521
|
) -> Tuple[Tensor, Dim]:
|
|
@@ -749,6 +775,23 @@ def where(
|
|
|
749
775
|
return cond._raw_backend.where(cond, true_, false_, allow_broadcast_all_sources=allow_broadcast_all_sources)
|
|
750
776
|
|
|
751
777
|
|
|
778
|
+
def search_sorted(
|
|
779
|
+
sorted_seq: Tensor, values: Tensor, *, axis: Dim, side: str = "left", out_dtype: str = "int32"
|
|
780
|
+
) -> Tensor:
|
|
781
|
+
"""
|
|
782
|
+
:param sorted_seq: [SharedDims...,axis], sequence of numbers, sorted low to high in the given axis.
|
|
783
|
+
:param values: [SharedDims...,OtherDims...], sequence of numbers to search for in ``sorted_seq``.
|
|
784
|
+
:param axis:
|
|
785
|
+
:param side: "left" or "right"
|
|
786
|
+
:param out_dtype:
|
|
787
|
+
:return: [SharedDims...,OtherDims...] -> axis, indices in axis in ``sorted_seq`` such that
|
|
788
|
+
sorted_seq[i-1] < value <= sorted_seq[i] if side=="left",
|
|
789
|
+
sorted_seq[i-1] <= value < sorted_seq[i] if side=="right".
|
|
790
|
+
"""
|
|
791
|
+
# noinspection PyProtectedMember
|
|
792
|
+
return sorted_seq._raw_backend.search_sorted(sorted_seq, values, axis=axis, side=side, out_dtype=out_dtype)
|
|
793
|
+
|
|
794
|
+
|
|
752
795
|
def sparse_to_dense(
|
|
753
796
|
labels: Union[Tensor, rf.RawTensorTypes],
|
|
754
797
|
*,
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Construct modules (or other objects) from dictionaries.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
from typing import Union, Any, Type, Dict
|
|
7
|
+
import importlib
|
|
8
|
+
import returnn.frontend as rf
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
__all__ = ["build_from_dict", "build_dict"]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def build_from_dict(d: Dict[str, Any], *args, **kwargs) -> Union[rf.Module, Any]:
|
|
15
|
+
"""
|
|
16
|
+
Build a module (or other object) from a dictionary.
|
|
17
|
+
`"class"` in the dict is required and specifies the class to be instantiated.
|
|
18
|
+
The other options are passed to the class constructor.
|
|
19
|
+
|
|
20
|
+
:param d: dictionary with the class name and other options
|
|
21
|
+
:param args: passed to the class constructor
|
|
22
|
+
:param kwargs: passed to the class constructor
|
|
23
|
+
:return: cls(*args, **d, **kwargs)
|
|
24
|
+
"""
|
|
25
|
+
if "class" not in d:
|
|
26
|
+
raise ValueError(f"build_from_dict: Missing 'class' key in dict: {d}")
|
|
27
|
+
d = d.copy()
|
|
28
|
+
cls_name = d.pop("class")
|
|
29
|
+
cls = _get_cls(cls_name)
|
|
30
|
+
return cls(*args, **d, **kwargs)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def build_dict(cls: Type, **kwargs) -> Dict[str, Any]:
|
|
34
|
+
"""
|
|
35
|
+
Build a dictionary for :func:`build_from_dict`.
|
|
36
|
+
The class name is stored in the `"class"` key.
|
|
37
|
+
|
|
38
|
+
Note that this is intended to be used for serialization
|
|
39
|
+
and also to get a unique stable hashable representation
|
|
40
|
+
(e.g. for Sisyphus :func:`sis_hash_helper`)
|
|
41
|
+
which should not change if the class is renamed or moved
|
|
42
|
+
to keep the hash stable.
|
|
43
|
+
"""
|
|
44
|
+
return {"class": _get_cls_name(cls), **kwargs}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _get_cls(cls_name: str) -> Type:
|
|
48
|
+
if "." not in cls_name:
|
|
49
|
+
raise ValueError(f"Expected '.' in class name: {cls_name}")
|
|
50
|
+
mod_name, cls_name = cls_name.rsplit(".", 1)
|
|
51
|
+
if mod_name == "rf":
|
|
52
|
+
return getattr(rf, cls_name)
|
|
53
|
+
mod = importlib.import_module(mod_name)
|
|
54
|
+
return getattr(mod, cls_name)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def _get_cls_name(cls: Type) -> str:
|
|
58
|
+
if getattr(rf, cls.__name__, None) is cls:
|
|
59
|
+
return f"rf.{cls.__name__}"
|
|
60
|
+
return f"{cls.__module__}.{cls.__name__}"
|
{returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/frontend/encoder/conformer.py
RENAMED
|
@@ -227,6 +227,10 @@ class ConformerEncoderLayer(rf.Module):
|
|
|
227
227
|
conv_norm = rf.BatchNorm(out_dim, **conv_norm_opts)
|
|
228
228
|
elif isinstance(conv_norm, type):
|
|
229
229
|
conv_norm = conv_norm(out_dim, **(conv_norm_opts or {}))
|
|
230
|
+
elif isinstance(conv_norm, dict):
|
|
231
|
+
conv_norm = rf.build_from_dict(conv_norm, out_dim, **(conv_norm_opts or {}))
|
|
232
|
+
if not callable(conv_norm):
|
|
233
|
+
raise TypeError(f"{self}: unexpected conv_norm type {conv_norm!r}")
|
|
230
234
|
self.conv_block = ConformerConvBlock(out_dim=out_dim, kernel_size=conv_kernel_size, norm=conv_norm)
|
|
231
235
|
self.conv_layer_norm = rf.LayerNorm(out_dim)
|
|
232
236
|
|
|
@@ -66,6 +66,7 @@ __all__ = [
|
|
|
66
66
|
"softmax",
|
|
67
67
|
"log_softmax",
|
|
68
68
|
"gating",
|
|
69
|
+
"lerp",
|
|
69
70
|
]
|
|
70
71
|
|
|
71
72
|
|
|
@@ -567,3 +568,20 @@ def gating(
|
|
|
567
568
|
|
|
568
569
|
a, b = rf.split(x, axis=axis, out_dims=[out_dim, out_dim])
|
|
569
570
|
return act_func(a) * gate_func(b), out_dim
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
def lerp(
|
|
574
|
+
start: Tensor, end: Tensor, weight: Union[float, Tensor], *, allow_broadcast_all_sources: bool = False
|
|
575
|
+
) -> Tensor:
|
|
576
|
+
"""
|
|
577
|
+
Linear interpolation between start and end.
|
|
578
|
+
(Some backends might provide an optimized version of this.)
|
|
579
|
+
|
|
580
|
+
:param start:
|
|
581
|
+
:param end:
|
|
582
|
+
:param weight: scalar or tensor
|
|
583
|
+
:param allow_broadcast_all_sources:
|
|
584
|
+
:return: start + weight * (end - start)
|
|
585
|
+
"""
|
|
586
|
+
# noinspection PyProtectedMember
|
|
587
|
+
return start._raw_backend.lerp(start, end, weight, allow_broadcast_all_sources=allow_broadcast_all_sources)
|
|
@@ -8,7 +8,7 @@ from returnn.tensor import Tensor, Dim
|
|
|
8
8
|
import returnn.frontend as rf
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
__all__ = ["moments", "LayerNorm", "BatchNorm", "normalize", "Normalize"]
|
|
11
|
+
__all__ = ["moments", "LayerNorm", "GroupNorm", "BatchNorm", "normalize", "Normalize"]
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
def moments(
|
|
@@ -70,6 +70,30 @@ class LayerNorm(rf.Module):
|
|
|
70
70
|
return norm_x * self.scale + self.bias
|
|
71
71
|
|
|
72
72
|
|
|
73
|
+
class GroupNorm(rf.Module):
|
|
74
|
+
"""
|
|
75
|
+
`Group normalization <https://arxiv.org/abs/1803.08494>`__.
|
|
76
|
+
"""
|
|
77
|
+
|
|
78
|
+
def __init__(self, in_dim: Union[rf.Dim, Sequence[rf.Dim]], *, num_groups: Union[int, Dim], eps: float = 1e-6):
|
|
79
|
+
super().__init__()
|
|
80
|
+
self.in_dim = in_dim
|
|
81
|
+
self.num_groups = num_groups if isinstance(num_groups, Dim) else Dim(num_groups, name="groups")
|
|
82
|
+
self.in_group_dim = in_dim.ceildiv_left(num_groups)
|
|
83
|
+
self.eps = eps
|
|
84
|
+
self.scale = rf.Parameter([self.in_dim] if isinstance(self.in_dim, rf.Dim) else self.in_dim)
|
|
85
|
+
self.scale.initial = 1.0
|
|
86
|
+
self.bias = rf.Parameter(self.scale.dims)
|
|
87
|
+
self.bias.initial = 0.0
|
|
88
|
+
|
|
89
|
+
def __call__(self, x: Tensor) -> Tensor:
|
|
90
|
+
x = rf.split_dims(x, axis=self.in_dim, dims=[self.num_groups, self.in_group_dim])
|
|
91
|
+
mean, variance = rf.moments(x, axis=self.in_group_dim)
|
|
92
|
+
norm_x = (x - mean) * rf.rsqrt(variance + self.eps)
|
|
93
|
+
norm_x, _ = rf.merge_dims(norm_x, dims=[self.num_groups, self.in_group_dim], out_dim=self.in_dim)
|
|
94
|
+
return norm_x * self.scale + self.bias
|
|
95
|
+
|
|
96
|
+
|
|
73
97
|
class BatchNorm(rf.Module):
|
|
74
98
|
"""
|
|
75
99
|
Batch normalization. https://arxiv.org/abs/1502.03167
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Piecewise linear function
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
from typing import Union, Dict
|
|
7
|
+
import numpy as np
|
|
8
|
+
from returnn.tensor import Tensor, Dim
|
|
9
|
+
import returnn.frontend as rf
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
__all__ = ["PiecewiseLinear"]
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class PiecewiseLinear(rf.Module):
|
|
16
|
+
"""
|
|
17
|
+
Piecewise linear function.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
def __init__(self, points: Dict[Union[int, float], Union[float, Tensor]]):
|
|
21
|
+
"""
|
|
22
|
+
:param points: dict of key -> value pairs.
|
|
23
|
+
"""
|
|
24
|
+
super().__init__()
|
|
25
|
+
if not points:
|
|
26
|
+
raise ValueError(f"{self}: points must not be empty")
|
|
27
|
+
self._points_sorted = sorted(points.items())
|
|
28
|
+
self.points_dim = Dim(len(self._points_sorted), name="pcw_schd_pieces")
|
|
29
|
+
# Note: Use rf.Parameter to work around deepcopy issue. https://github.com/rwth-i6/returnn/issues/1541
|
|
30
|
+
self._keys = rf.Parameter(
|
|
31
|
+
rf.convert_to_tensor(
|
|
32
|
+
np.array([k for k, _ in self._points_sorted], dtype=rf.get_default_float_dtype()),
|
|
33
|
+
dims=[self.points_dim],
|
|
34
|
+
),
|
|
35
|
+
auxiliary=True,
|
|
36
|
+
)
|
|
37
|
+
self._values = rf.Parameter(
|
|
38
|
+
rf.stack([rf.convert_to_tensor(v) for _, v in self._points_sorted], out_dim=self.points_dim)[0],
|
|
39
|
+
auxiliary=True,
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
def __call__(self, x: Tensor) -> Tensor:
|
|
43
|
+
"""
|
|
44
|
+
:param x: (x_dims...) -> value in keys
|
|
45
|
+
:return: y: (x_dims...,y_dims...) -> value in values
|
|
46
|
+
"""
|
|
47
|
+
index = rf.search_sorted(self._keys, x, axis=self.points_dim)
|
|
48
|
+
index = rf.clip_by_value(index, 1, self.points_dim.dimension - 1)
|
|
49
|
+
x_start = rf.gather(self._keys, indices=index - 1)
|
|
50
|
+
x_end = rf.gather(self._keys, indices=index)
|
|
51
|
+
x_frac = (x - x_start) / (x_end - x_start)
|
|
52
|
+
x_frac = rf.clip_by_value(x_frac, 0.0, 1.0)
|
|
53
|
+
y_start = rf.gather(self._values, indices=index - 1)
|
|
54
|
+
y_end = rf.gather(self._values, indices=index)
|
|
55
|
+
return rf.lerp(y_start, y_end, x_frac)
|
|
@@ -14,7 +14,7 @@ import returnn.frontend as rf
|
|
|
14
14
|
from . import _backend
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
__all__ = ["RunCtx", "Loss", "get_run_ctx", "init_train_step_run_ctx", "init_forward_step_run_ctx"]
|
|
17
|
+
__all__ = ["RunCtx", "Loss", "get_run_ctx", "get_run_ctx_step", "init_train_step_run_ctx", "init_forward_step_run_ctx"]
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
_run_ctx = None # type: Optional[RunCtx]
|
|
@@ -134,6 +134,12 @@ class RunCtx:
|
|
|
134
134
|
"""
|
|
135
135
|
return self._step
|
|
136
136
|
|
|
137
|
+
def get_step_tensor(self) -> Tensor:
|
|
138
|
+
"""
|
|
139
|
+
:return: step as tensor
|
|
140
|
+
"""
|
|
141
|
+
return rf.convert_to_tensor(self.step)
|
|
142
|
+
|
|
137
143
|
@property
|
|
138
144
|
def epoch(self) -> Union[int, Tensor]:
|
|
139
145
|
"""
|
|
@@ -141,6 +147,12 @@ class RunCtx:
|
|
|
141
147
|
"""
|
|
142
148
|
return self._epoch
|
|
143
149
|
|
|
150
|
+
def get_epoch_tensor(self) -> Tensor:
|
|
151
|
+
"""
|
|
152
|
+
:return: epoch as tensor
|
|
153
|
+
"""
|
|
154
|
+
return rf.convert_to_tensor(self.epoch)
|
|
155
|
+
|
|
144
156
|
def mark_as_loss(
|
|
145
157
|
self,
|
|
146
158
|
loss: Union[Tensor, Any],
|
|
@@ -350,6 +362,13 @@ class RunCtx:
|
|
|
350
362
|
return loss
|
|
351
363
|
|
|
352
364
|
|
|
365
|
+
def get_run_ctx_step() -> Tensor:
|
|
366
|
+
"""
|
|
367
|
+
:return: shortcut for ``get_run_ctx().get_step_tensor()``
|
|
368
|
+
"""
|
|
369
|
+
return get_run_ctx().get_step_tensor()
|
|
370
|
+
|
|
371
|
+
|
|
353
372
|
@dataclass
|
|
354
373
|
class Loss:
|
|
355
374
|
"""
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Stepwise scheduler, e.g. for learning rate or other hyperparameters.
|
|
3
|
+
|
|
4
|
+
All these modules will accept any args/kwargs but leave them unused,
|
|
5
|
+
and instead uses :func:`get_run_ctx` to get the current train step from the current run context.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
from returnn.tensor import Tensor
|
|
10
|
+
import returnn.frontend as rf
|
|
11
|
+
from .piecewise_linear import PiecewiseLinear
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["PiecewiseLinearStepwiseScheduler"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class PiecewiseLinearStepwiseScheduler(PiecewiseLinear):
|
|
18
|
+
"""
|
|
19
|
+
Piecewise linear scheduler based on the current global train step.
|
|
20
|
+
|
|
21
|
+
Example::
|
|
22
|
+
|
|
23
|
+
scheduler = PiecewiseLinearStepwiseScheduler(
|
|
24
|
+
{0: 1.0, 10000: 0.1, 20000: 0.01}
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
This will start with 1.0, and then linearly decay to 0.1 at step 10000, and then to 0.01 at step 20000.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
def __call__(self, *args, **kwargs) -> Tensor:
|
|
31
|
+
return super().__call__(rf.get_run_ctx_step())
|
|
@@ -4,7 +4,7 @@ or just rarely used attribs, such that we can save memory for the common case.
|
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
6
|
from __future__ import annotations
|
|
7
|
-
from typing import TYPE_CHECKING, Optional, Union, Tuple, Sequence, Dict, List, Callable
|
|
7
|
+
from typing import TYPE_CHECKING, Optional, Union, Any, Tuple, Sequence, Dict, List, Set, Callable
|
|
8
8
|
import operator
|
|
9
9
|
|
|
10
10
|
from returnn.util.basic import Entity
|
|
@@ -1286,15 +1286,15 @@ class _DimMixin:
|
|
|
1286
1286
|
self: Dim,
|
|
1287
1287
|
other: Dim,
|
|
1288
1288
|
*,
|
|
1289
|
-
ignore_feature_dim=False,
|
|
1290
|
-
allow_same_feature_dim=False,
|
|
1291
|
-
allow_same_spatial_dim=None,
|
|
1292
|
-
treat_feature_as_spatial=False,
|
|
1293
|
-
broadcast_matches=False,
|
|
1294
|
-
unknown_spatial_matches=False,
|
|
1295
|
-
undefined_matches=False,
|
|
1296
|
-
derived_matches=False,
|
|
1297
|
-
allow_old_behavior=False,
|
|
1289
|
+
ignore_feature_dim: bool = False,
|
|
1290
|
+
allow_same_feature_dim: bool = False,
|
|
1291
|
+
allow_same_spatial_dim: Optional[bool] = None,
|
|
1292
|
+
treat_feature_as_spatial: bool = False,
|
|
1293
|
+
broadcast_matches: bool = False,
|
|
1294
|
+
unknown_spatial_matches: bool = False,
|
|
1295
|
+
undefined_matches: bool = False,
|
|
1296
|
+
derived_matches: bool = False,
|
|
1297
|
+
allow_old_behavior: bool = False,
|
|
1298
1298
|
) -> bool:
|
|
1299
1299
|
"""
|
|
1300
1300
|
Compares self to other for equality.
|
|
@@ -1307,16 +1307,16 @@ class _DimMixin:
|
|
|
1307
1307
|
and might potentially change in the future.
|
|
1308
1308
|
https://github.com/rwth-i6/returnn/issues/634
|
|
1309
1309
|
|
|
1310
|
-
:param
|
|
1311
|
-
:param
|
|
1312
|
-
:param
|
|
1313
|
-
:param
|
|
1314
|
-
:param
|
|
1315
|
-
:param
|
|
1316
|
-
:param
|
|
1317
|
-
:param
|
|
1318
|
-
:param
|
|
1319
|
-
:param
|
|
1310
|
+
:param other:
|
|
1311
|
+
:param ignore_feature_dim:
|
|
1312
|
+
:param allow_same_feature_dim:
|
|
1313
|
+
:param allow_same_spatial_dim:
|
|
1314
|
+
:param treat_feature_as_spatial:
|
|
1315
|
+
:param broadcast_matches:
|
|
1316
|
+
:param unknown_spatial_matches:
|
|
1317
|
+
:param undefined_matches:
|
|
1318
|
+
:param derived_matches:
|
|
1319
|
+
:param allow_old_behavior: useful e.g. for find_matching_dim_map
|
|
1320
1320
|
"""
|
|
1321
1321
|
if self is other: # first some fast path check
|
|
1322
1322
|
return True
|
|
@@ -1820,12 +1820,13 @@ class _DimMixin:
|
|
|
1820
1820
|
self._make_extra().copy_same_as = other
|
|
1821
1821
|
|
|
1822
1822
|
@classmethod
|
|
1823
|
-
def get_existing_tag_from_collection(
|
|
1823
|
+
def get_existing_tag_from_collection(
|
|
1824
|
+
cls, other: Dim, tags: Union[Sequence[Dim], Set[Dim]], is_equal_opts: Optional[Dict[str, Any]] = None
|
|
1825
|
+
) -> Optional[Dim]:
|
|
1824
1826
|
"""
|
|
1825
|
-
:param
|
|
1826
|
-
:param
|
|
1827
|
-
:param
|
|
1828
|
-
:rtype: Dim|None
|
|
1827
|
+
:param other:
|
|
1828
|
+
:param tags:
|
|
1829
|
+
:param is_equal_opts: passed to Dim.is_equal
|
|
1829
1830
|
"""
|
|
1830
1831
|
if is_equal_opts is None:
|
|
1831
1832
|
is_equal_opts = {}
|
|
@@ -1842,13 +1843,17 @@ class _DimMixin:
|
|
|
1842
1843
|
return None
|
|
1843
1844
|
|
|
1844
1845
|
@classmethod
|
|
1845
|
-
def get_all_dimension_tags(
|
|
1846
|
-
|
|
1847
|
-
:
|
|
1848
|
-
:
|
|
1849
|
-
:
|
|
1846
|
+
def get_all_dimension_tags(
|
|
1847
|
+
cls,
|
|
1848
|
+
data_list: List[_t.Tensor],
|
|
1849
|
+
is_equal_opts: Optional[Dict[str, Any]] = None,
|
|
1850
|
+
unique_separate_axes: bool = True,
|
|
1851
|
+
) -> Tuple[List[Dim], util.DictRefKeys[_t.Tensor, List[Dim]]]:
|
|
1852
|
+
"""
|
|
1853
|
+
:param data_list:
|
|
1854
|
+
:param is_equal_opts: passed to Dim.is_equal
|
|
1855
|
+
:param unique_separate_axes: e.g. data_list=[Data with shape (B,5,5,10)] results in 4 dim tags, not 3.
|
|
1850
1856
|
:return: list of dimension tags, dict for data -> list of dimension tags (for each axis)
|
|
1851
|
-
:rtype: (list[Dim], util.DictRefKeys[_t.Tensor, list[Dim]])
|
|
1852
1857
|
"""
|
|
1853
1858
|
tags = []
|
|
1854
1859
|
data_axes_dict = util.DictRefKeys() # type: util.DictRefKeys[_t.Tensor, List[Dim]]
|
|
@@ -2323,11 +2328,11 @@ class Op:
|
|
|
2323
2328
|
Op on :class:`Dim` which results in a derived :class:`Dim`.
|
|
2324
2329
|
"""
|
|
2325
2330
|
|
|
2326
|
-
def __init__(self, kind, inputs, attribs=None):
|
|
2331
|
+
def __init__(self, kind: str, inputs: List[Dim], attribs: Optional[Dict[str, Any]] = None):
|
|
2327
2332
|
"""
|
|
2328
|
-
:param
|
|
2329
|
-
:param
|
|
2330
|
-
:param
|
|
2333
|
+
:param kind: "add", "sub", "mul", "ceildiv"
|
|
2334
|
+
:param inputs:
|
|
2335
|
+
:param attribs:
|
|
2331
2336
|
"""
|
|
2332
2337
|
self.kind = kind
|
|
2333
2338
|
self.inputs = inputs
|
{returnn-1.20240614.213333 → returnn-1.20240618.151147}/returnn/tf/frontend_layers/_backend.py
RENAMED
|
@@ -151,12 +151,12 @@ class ReturnnLayersBackend(Backend[Layer]):
|
|
|
151
151
|
raise NotImplementedError
|
|
152
152
|
|
|
153
153
|
@staticmethod
|
|
154
|
-
def get_shape_tuple_raw(raw_tensor: Layer) -> Tuple[Union[int, Layer]]:
|
|
154
|
+
def get_shape_tuple_raw(raw_tensor: Layer) -> Tuple[Union[int, Layer], ...]:
|
|
155
155
|
"""shape"""
|
|
156
156
|
raise NotImplementedError
|
|
157
157
|
|
|
158
158
|
@staticmethod
|
|
159
|
-
def get_known_shape_raw(raw_tensor: Layer) -> Tuple[Optional[int]]:
|
|
159
|
+
def get_known_shape_raw(raw_tensor: Layer) -> Tuple[Optional[int], ...]:
|
|
160
160
|
"""known shape"""
|
|
161
161
|
return raw_tensor.tensor.batch_shape
|
|
162
162
|
|