returnn 1.20241211.145755__tar.gz → 1.20241213.155203__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.20241211.145755 → returnn-1.20241213.155203}/PKG-INFO +1 -1
- returnn-1.20241213.155203/_setup_info_generated.py +2 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/_backend.py +9 -15
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/array_.py +14 -4
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/attention.py +12 -1
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/dims.py +11 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/_backend.py +22 -15
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/layers/basic.py +4 -3
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/frontend/_backend.py +20 -21
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/file_cache.py +1 -1
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn.egg-info/PKG-INFO +1 -1
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_rf_array.py +40 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_rf_attention.py +50 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_rf_encoder_conformer.py +10 -9
- returnn-1.20241211.145755/_setup_info_generated.py +0 -2
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/.editorconfig +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/.gitignore +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/.gitmodules +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/.kateconfig +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/CHANGELOG.md +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/CODEOWNERS +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/CONTRIBUTING.md +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/LICENSE +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/MANIFEST.in +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/README.rst +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/12AX.cluster_map +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/_setup_returnn_env.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-fwd.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-horovod-mpi.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-horovod-mpi.py.sh +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-horovod-mpi.sh +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-hyper-param-tuning.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-iter-dataset.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-list-devices.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-lua-torch-layer.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-pretrain.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-record-and-push-to-webserver.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-returnn-as-framework.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-rf-pt-benchmark.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-rf.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-rhn-enwik8.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-sprint-interface.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-att-copy.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-attention.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-enc-dec.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-hard-att-copy.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-lstm-benchmark.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-native-lstm.12ax.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-native-lstm2.12ax.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-neural-transducer.12ax.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-rec-explicit-lstm.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-rec-explicit-rnn.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-rec-self-att.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-search-compiled-graph.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-timit-lstm-ctc.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-torch.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo.sh +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/README.txt +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/chars.txt +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/config_demo +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/config_fwd +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/config_real +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/decode.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/go.sh +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/lines.txt +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/split/eval.txt +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/split/train.txt +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/split/valid.txt +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/README.md +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/artificial/create_test_h5.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/artificial/forwardconfig +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/artificial/go.sh +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/artificial/trainconfig +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/artificial_rgb/go.sh +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/pyproject.toml +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/requirements.txt +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/__main__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/__old_mod_loader__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/__setup__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/config.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/audio.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/basic.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/bundle_file.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/cached.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/cached2.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/distrib_files.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/generating.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/hdf.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/lm.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/map.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/meta.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/multi_proc.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/normalization_data.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/numpy_dump.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/postprocessing.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/raw_wav.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/sprint.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/stereo.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/util/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/util/feature_extraction.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/util/strings.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/datasets/util/vocabulary.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/engine/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/engine/base.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/engine/batch.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/__main__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/.git +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/graph_editor/README.md +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/graph_editor/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/graph_editor/edit.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/graph_editor/reroute.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/graph_editor/select.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/graph_editor/subgraph.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/graph_editor/transform.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/extern/graph_editor/util.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/forward_iface.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/_native/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/_native/backend.cpp +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/_native/backend.hpp +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/_native/module.cpp +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/_native/module.hpp +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/_native/py_utils.hpp +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/_native/tensor_ops.cpp +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/_native/tensor_ops.hpp +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/_numpy_backend.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/_random_journal.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/_utils.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/audio/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/audio/mel.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/audio/specaugment.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/backend.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/build_from_dict.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/cond.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/const.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/container.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/control_flow_ctx.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/conv.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/conversions/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/conversions/espnet_e_branchformer.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/conversions/hf_llama.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/conversions/torch_nn.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/decoder/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/decoder/transformer.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/device.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/dropout.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/dtype.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/encoder/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/encoder/base.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/encoder/conformer.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/encoder/e_branchformer.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/encoder/transformer.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/gradient.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/graph.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/hooks.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/init.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/label_smoothing.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/linear.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/loop.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/loss.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/math_.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/matmul.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/module.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/normalization.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/parameter.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/parametrizations.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/parametrize.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/piecewise_linear.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/rand.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/rec.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/reduce.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/run_ctx.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/signal.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/state.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/stepwise_scheduler.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/tensor_array.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/frontend/types.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/import_/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/import_/common.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/import_/git.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/import_/import_.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/learning_rate_control.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/log.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/native_op.cpp +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/native_op.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/pretrain.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/sprint/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/sprint/cache.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/sprint/control.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/sprint/error_signals.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/sprint/extern_interface.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/sprint/interface.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tensor/README.md +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tensor/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tensor/_dim_extra.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tensor/_tensor_extra.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tensor/_tensor_mixin_base.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tensor/_tensor_op_overloads.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tensor/control_flow_ctx.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tensor/dim.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tensor/marked_dim.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tensor/tensor.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tensor/tensor_dict.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tensor/utils.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/compat.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/data_pipeline.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/distributed.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/engine.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/README.md +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/_utils.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/cond.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/dims.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/layer.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/loop.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/make_layer.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/masked_computation.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/frontend_low_level/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/frontend_low_level/_backend.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/horovod.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/hyper_param_tuning.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/layers/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/layers/base.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/layers/rec.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/layers/segmental_model.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/layers/signal_processing.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/layers/variable.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/native_op.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/network.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/sprint.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/updater.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/util/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/util/basic.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/util/data.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/util/gradient_checkpoint.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/util/ken_lm.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/util/open_fst.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/README.md +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/data/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/data/extern_data.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/data/pipeline.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/data/queued_data_iter.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/data/tensor_utils.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/distributed.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/engine.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/frontend/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/frontend/_rand.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/frontend/bridge.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/frontend/raw_ops.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/optim/README.md +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/optim/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/optim/lion.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/updater.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/util/README.md +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/util/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/util/array_.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/util/debug_inf_nan.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/util/diagnose_gpu.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/util/exception_helper.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/util/gradient_checkpoint.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/util/module.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/torch/util/scaled_gradient.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/__init__.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/basic.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/better_exchook.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/bpe.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/debug.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/debug_helpers.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/fsa.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/literal_py_to_pickle.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/math.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/native_code_compiler.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/pprint.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/py-to-pickle.cpp +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/py_compat.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/py_ext_mod_compiler.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/result_with_reason.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/sig_proc.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/task_system.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/train_proc_manager.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/util/watch_memory.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn.egg-info/SOURCES.txt +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn.egg-info/dependency_links.txt +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn.egg-info/top_level.txt +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/rnn.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/setup.cfg +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/setup.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/DummySprintExec.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/PyCharm-inspection-profile.xml +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/PyCharm.idea/.gitignore +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/PyCharm.idea/.name +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/PyCharm.idea/misc.xml +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/PyCharm.idea/modules.xml +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/PyCharm.idea/returnn.iml +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/_set_num_threads1.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/_setup_returnn_env.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/_setup_test_env.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/bpe-unicode-demo.codes +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/bpe-unicode-demo.vocab +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/lexicon_opt.fst +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/lexicon_opt.isyms +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/lexicon_opt.jpg +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/lexicon_opt.osyms +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/lint_common.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/pycharm-inspect.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/pylint.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/returnn-as-framework.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/rf_utils.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/spelling.dic +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_Config.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_Dataset.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_Fsa.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_GeneratingDataset.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_HDFDataset.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_LearningRateControl.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_Log.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_MultiProcDataset.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_Pretrain.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_ResNet.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_SprintDataset.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_SprintInterface.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_TFEngine.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_TFNativeOp.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_TFNetworkLayer.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_TFNetworkRecLayer.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_TFNetworkSigProcLayer.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_TFUpdater.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_TFUtil.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_TF_determinism.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_TaskSystem.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_TaskSystem_SharedMem.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_TranslationDataset.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_Util.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_demos.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_fork_exec.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_hdf_dump.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_rf_base.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_rf_cond.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_rf_const.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_rf_container.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_rf_conv.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_rf_decoder_transformer.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_rf_gradient.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_rf_label_smoothing.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_rf_loop.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_rf_math.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_rf_normalization.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_rf_piecewise_linear.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_rf_rec.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_rf_reduce.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_rf_signal.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_tensor.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_tools.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_torch_dataset.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_torch_engine.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_torch_frontend.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_torch_internal_frontend.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/test_torch_util.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tests/torch_utils.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/_setup_returnn_env.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/analyze-dataset-batches.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/bliss-collect-seq-lens.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/bliss-dump-text.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/bliss-get-segment-names.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/bliss-to-ogg-zip.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/bpe-create-lexicon.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/calculate-word-error-rate.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/cleanup-old-models.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/collect-orth-symbols.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/collect-words.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/compile_native_op.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/compile_tf_graph.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/debug-dump-search-scores.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/debug-plot-search-scores.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/dump-dataset-raw-strings.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/dump-dataset.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/dump-forward-stats.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/dump-forward.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/dump-network-json.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/dump-pickle.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/extract_state_tying_from_dataset.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/get-attention-weights.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/get-best-model-epoch.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/hdf_dump.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/hdf_dump_translation_dataset.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/import-blocks-mt-model.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/import-t2t-mt-model.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/lattice_rescorer/.gitignore +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/lattice_rescorer/Makefile +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/lattice_rescorer/README.md +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/lattice_rescorer/example/README.md +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/lattice_rescorer/example/libs_list +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/lattice_rescorer/example/state_vars_list +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/lattice_rescorer/example/tensor_names_list +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/lattice_rescorer/file.h +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/lattice_rescorer/main.cc +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/lattice_rescorer/rescorer.h +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/lattice_rescorer/vocabulary.cc +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/lattice_rescorer/vocabulary.h +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/tf_avg_checkpoints.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/tf_inspect_checkpoint.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/tf_inspect_summary_log.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/torch_avg_checkpoints.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/torch_export_to_onnx.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/torch_inspect_checkpoint.py +0 -0
- {returnn-1.20241211.145755 → returnn-1.20241213.155203}/tools/torch_inspect_checkpoint_and_opt.py +0 -0
|
@@ -496,21 +496,6 @@ class Backend(Generic[T]):
|
|
|
496
496
|
"""
|
|
497
497
|
raise NotImplementedError
|
|
498
498
|
|
|
499
|
-
@staticmethod
|
|
500
|
-
def cum_concat_step(source: Tensor, *, prev_accum: Tensor, axis: Dim, out_spatial_dim: Dim) -> Tensor:
|
|
501
|
-
"""
|
|
502
|
-
Concatenates all previous frames over a time-axis.
|
|
503
|
-
See RETURNN :class:`CumConcatLayer` for details.
|
|
504
|
-
|
|
505
|
-
:param source: same dims as prev_accum except for the accum axis
|
|
506
|
-
:param prev_accum: previous accumulated tensor, shape {..., axis}
|
|
507
|
-
:param axis: the axis to accumulate over
|
|
508
|
-
:param out_spatial_dim: the spatial dim of the output will be this dim. like axis+1.
|
|
509
|
-
:return: accumulated. accumulated shape {..., out_spatial_dim},
|
|
510
|
-
same shape as prev_accum with axis replaced by out_spatial_dim.
|
|
511
|
-
"""
|
|
512
|
-
raise NotImplementedError
|
|
513
|
-
|
|
514
499
|
@staticmethod
|
|
515
500
|
def stack(sources: Sequence[Tensor], *, out_dim: Dim) -> Tensor:
|
|
516
501
|
"""
|
|
@@ -1095,6 +1080,15 @@ class Backend(Generic[T]):
|
|
|
1095
1080
|
out.raw_tensor = source.raw_tensor
|
|
1096
1081
|
return out
|
|
1097
1082
|
|
|
1083
|
+
@staticmethod
|
|
1084
|
+
def set_sparse_dim(source: Tensor, sparse_dim: Dim) -> Tensor:
|
|
1085
|
+
"""set sparse dim"""
|
|
1086
|
+
# This default implementation works fine as long as the backend
|
|
1087
|
+
# does not have special treatments of Tensor and dim tags itself (like TF net dict backend).
|
|
1088
|
+
out = source.copy()
|
|
1089
|
+
out.sparse_dim = sparse_dim
|
|
1090
|
+
return out
|
|
1091
|
+
|
|
1098
1092
|
_AllowedReduceModes = {"sum", "max", "min", "mean", "logsumexp", "any", "all", "argmin", "argmax"}
|
|
1099
1093
|
|
|
1100
1094
|
@staticmethod
|
|
@@ -367,6 +367,7 @@ def concat(
|
|
|
367
367
|
*sources: Tuple[Tensor, Dim],
|
|
368
368
|
allow_broadcast: bool = False,
|
|
369
369
|
out_dim: Optional[Dim] = None,
|
|
370
|
+
handle_dynamic_dims: Optional[bool] = None,
|
|
370
371
|
) -> Tuple[Tensor, Dim]:
|
|
371
372
|
"""
|
|
372
373
|
Concatenates multiple sources in the specified dimension.
|
|
@@ -376,6 +377,7 @@ def concat(
|
|
|
376
377
|
:param sources: list of (tensor, dim) pairs. dim is the axis to concatenate on.
|
|
377
378
|
:param allow_broadcast: if True, the sources can have different dims, and the result will be broadcasted.
|
|
378
379
|
:param out_dim: reuse existing dim for the resulting concatenated dim, if given
|
|
380
|
+
:param handle_dynamic_dims:
|
|
379
381
|
:return: concatenated tensor, out_dim
|
|
380
382
|
"""
|
|
381
383
|
assert sources
|
|
@@ -385,6 +387,9 @@ def concat(
|
|
|
385
387
|
assert src.dims_set - {dim} == dims, f"concat {sources}, need allow_broadcast=True"
|
|
386
388
|
if not out_dim:
|
|
387
389
|
out_dim = sum(d for _, d in sources)
|
|
390
|
+
if handle_dynamic_dims is None or handle_dynamic_dims:
|
|
391
|
+
for src, dim in sources[:-1]:
|
|
392
|
+
assert dim.is_static(), f"concat {sources}, dim {dim} is not static, not yet implemented..."
|
|
388
393
|
# noinspection PyProtectedMember
|
|
389
394
|
return sources[0][0]._raw_backend.concat(*sources, allow_broadcast=allow_broadcast, out_dim=out_dim), out_dim
|
|
390
395
|
|
|
@@ -507,13 +512,18 @@ def cum_concat_step(
|
|
|
507
512
|
:return: (accumulated, out_spatial_dim). accumulated shape {..., out_spatial_dim},
|
|
508
513
|
same shape as prev_accum with axis replaced by out_spatial_dim.
|
|
509
514
|
"""
|
|
515
|
+
# Note: Before, we had a backend function just for this.
|
|
516
|
+
# In case of TF-layers, this was using CumConcatLayer.
|
|
517
|
+
# This would allow for automatic optimization when inside a RecLayer.
|
|
518
|
+
# However, we don't really need this for eager frameworks,
|
|
519
|
+
# and we want to simplify this for now,
|
|
520
|
+
# using pure RF code.
|
|
510
521
|
if not out_spatial_dim:
|
|
511
522
|
out_spatial_dim = axis + 1
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
source._raw_backend.cum_concat_step(source, prev_accum=prev_accum, axis=axis, out_spatial_dim=out_spatial_dim),
|
|
515
|
-
out_spatial_dim,
|
|
523
|
+
out, (out_spatial_dim,) = rf.pad(
|
|
524
|
+
prev_accum, axes=[axis], padding=[(0, 1)], out_dims=[out_spatial_dim], value=source, handle_dynamic_dims=True
|
|
516
525
|
)
|
|
526
|
+
return out, out_spatial_dim
|
|
517
527
|
|
|
518
528
|
|
|
519
529
|
def stack(sources: Sequence[Tensor], *, out_dim: Optional[Dim] = None) -> Tuple[Tensor, Dim]:
|
|
@@ -862,13 +862,24 @@ def _make_indices(
|
|
|
862
862
|
query_spatial_dim_m1 = query_spatial_dim - 1
|
|
863
863
|
q_pos_vec = rf.range_over_dim(query_spatial_dim_m1) # [q_len-1]
|
|
864
864
|
|
|
865
|
+
# The masking in the output is quite custom (left+right masking), so our seq lens don't make sense,
|
|
866
|
+
# and might even cause to fail some tests (that e.g. max(q_seq_len+k_seq_len-1) == shape).
|
|
867
|
+
out_spatial_dim = Dim(
|
|
868
|
+
query_spatial_dim_m1.get_dim_value_tensor() + key_value_spatial_dim.get_dim_value_tensor(),
|
|
869
|
+
name=f"2*{query_spatial_dim.description}-1"
|
|
870
|
+
if (query_spatial_dim == key_value_spatial_dim)
|
|
871
|
+
else f"{query_spatial_dim.description}+{key_value_spatial_dim.description}-1",
|
|
872
|
+
)
|
|
873
|
+
|
|
865
874
|
# We want to have all distances as in rf.combine_bc(kv_pos_vec, "-", q_pos_vec) with shape [q_len,kv_len].
|
|
866
875
|
# We want to store only non-duplicates.
|
|
867
876
|
# The min value is with kv_pos=0, q_pos=q_len-1: -(q_len-1)
|
|
868
877
|
# The max value is with kv_pos=kv_len-1, q_pos=0: k_len-1
|
|
869
|
-
indices,
|
|
878
|
+
indices, _ = rf.concat(
|
|
870
879
|
(q_pos_vec - query_spatial_dim_m1.get_dim_value_tensor(), query_spatial_dim_m1),
|
|
871
880
|
(kv_pos_vec, key_value_spatial_dim),
|
|
881
|
+
out_dim=out_spatial_dim,
|
|
882
|
+
handle_dynamic_dims=False,
|
|
872
883
|
)
|
|
873
884
|
if query_offset is not None:
|
|
874
885
|
indices = indices - query_offset
|
|
@@ -15,6 +15,7 @@ __all__ = [
|
|
|
15
15
|
"range_over_dim_strided",
|
|
16
16
|
"range_over_merged_dims",
|
|
17
17
|
"replace_dim",
|
|
18
|
+
"set_sparse_dim",
|
|
18
19
|
"dim_match_priority_when_needed",
|
|
19
20
|
"num_elements_of_shape",
|
|
20
21
|
"masked_fraction_of_shape",
|
|
@@ -94,6 +95,16 @@ def replace_dim(source: Tensor, *, in_dim: Dim, out_dim: Optional[Dim] = None) -
|
|
|
94
95
|
return source._raw_backend.replace_dim(source, in_dim=in_dim, out_dim=out_dim), out_dim
|
|
95
96
|
|
|
96
97
|
|
|
98
|
+
def set_sparse_dim(source: Tensor, sparse_dim: Dim) -> Tensor:
|
|
99
|
+
"""
|
|
100
|
+
:param source:
|
|
101
|
+
:param sparse_dim:
|
|
102
|
+
:return: source with sparse_dim set
|
|
103
|
+
"""
|
|
104
|
+
# noinspection PyProtectedMember
|
|
105
|
+
return source._raw_backend.set_sparse_dim(source, sparse_dim)
|
|
106
|
+
|
|
107
|
+
|
|
97
108
|
def dim_match_priority_when_needed(dim: Dim, *other_dims: Dim) -> Dim:
|
|
98
109
|
"""
|
|
99
110
|
:return: maybe copy of dim with higher match_priority if needed to distinguish from other_dims
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/_backend.py
RENAMED
|
@@ -342,7 +342,20 @@ class ReturnnLayersBackend(Backend[Layer]):
|
|
|
342
342
|
opts = {}
|
|
343
343
|
if allow_broadcast:
|
|
344
344
|
opts["allow_broadcast"] = True
|
|
345
|
-
|
|
345
|
+
dim_deps = rfl.get_dim_deps(out_dim)
|
|
346
|
+
sources_dims = set()
|
|
347
|
+
for source, _ in sources:
|
|
348
|
+
sources_dims.update(source.dims)
|
|
349
|
+
need_explicit_dim_deps = False
|
|
350
|
+
for dim in dim_deps:
|
|
351
|
+
if dim not in sources_dims:
|
|
352
|
+
need_explicit_dim_deps = True
|
|
353
|
+
break
|
|
354
|
+
if need_explicit_dim_deps:
|
|
355
|
+
source0 = rfl.make_layer(
|
|
356
|
+
{"class": "copy", "from": sources[0][0], "extra_deps": dim_deps}, name="concat_extra_dim_deps"
|
|
357
|
+
)
|
|
358
|
+
sources = ((source0, sources[0][1]),) + sources[1:]
|
|
346
359
|
return rfl.make_layer(
|
|
347
360
|
{"class": "concat", "from": sources, "out_dim": out_dim, **opts},
|
|
348
361
|
name="concat",
|
|
@@ -375,20 +388,6 @@ class ReturnnLayersBackend(Backend[Layer]):
|
|
|
375
388
|
name="pad",
|
|
376
389
|
)
|
|
377
390
|
|
|
378
|
-
@staticmethod
|
|
379
|
-
def cum_concat_step(source: Tensor, *, prev_accum: Tensor, axis: Dim, out_spatial_dim: Dim) -> Tensor:
|
|
380
|
-
"""cum_concat_step"""
|
|
381
|
-
return rfl.make_layer(
|
|
382
|
-
{
|
|
383
|
-
"class": "cum_concat",
|
|
384
|
-
"from": source,
|
|
385
|
-
"state": {"state": prev_accum},
|
|
386
|
-
"out_spatial_dim": out_spatial_dim,
|
|
387
|
-
"axis": axis,
|
|
388
|
-
},
|
|
389
|
-
name="cum_concat",
|
|
390
|
-
)
|
|
391
|
-
|
|
392
391
|
@staticmethod
|
|
393
392
|
def activation(tensor: Tensor, func: str) -> Tensor:
|
|
394
393
|
"""activation"""
|
|
@@ -774,6 +773,14 @@ class ReturnnLayersBackend(Backend[Layer]):
|
|
|
774
773
|
{"class": "reinterpret_data", "set_dim_tags": {in_dim: out_dim}, "from": source}, name="new_dim"
|
|
775
774
|
)
|
|
776
775
|
|
|
776
|
+
@staticmethod
|
|
777
|
+
def set_sparse_dim(source: Tensor, sparse_dim: Dim) -> Tensor:
|
|
778
|
+
"""set sparse dim"""
|
|
779
|
+
return rfl.make_layer(
|
|
780
|
+
{"class": "reinterpret_data", "set_sparse": True, "set_sparse_dim": sparse_dim, "from": source},
|
|
781
|
+
name="set_sparse_dim",
|
|
782
|
+
)
|
|
783
|
+
|
|
777
784
|
@staticmethod
|
|
778
785
|
def reduce(source: Tensor, *, mode: str, axis: Union[Dim, Sequence[Dim]], use_mask: bool = True) -> Tensor:
|
|
779
786
|
"""Reduce"""
|
|
@@ -517,11 +517,12 @@ class ConcatLayer(LayerBase):
|
|
|
517
517
|
dimension = 0
|
|
518
518
|
for tag in concat_dim_tags:
|
|
519
519
|
dimension += tag.dimension
|
|
520
|
+
sum_concat_dim_tags: Dim = sum(concat_dim_tags)
|
|
520
521
|
if not out_dim:
|
|
521
|
-
out_dim =
|
|
522
|
+
out_dim = sum_concat_dim_tags
|
|
522
523
|
assert isinstance(out_dim, Dim)
|
|
523
|
-
|
|
524
|
-
|
|
524
|
+
elif not out_dim.is_dim_known():
|
|
525
|
+
sum_concat_dim_tags.declare_same_as(out_dim)
|
|
525
526
|
assert out_dim.dimension == dimension
|
|
526
527
|
|
|
527
528
|
def _as_common(x, axis):
|
|
@@ -452,9 +452,6 @@ class TorchBackend(Backend[torch.Tensor]):
|
|
|
452
452
|
) -> Tensor:
|
|
453
453
|
"""pad"""
|
|
454
454
|
assert len(out_dims) == len(axes) == len(padding)
|
|
455
|
-
out = source.copy_template_new_dim_tags(
|
|
456
|
-
[out_dims[axes.index(dim)] if dim in axes else dim for dim in source.dim_tags], keep_special_axes=True
|
|
457
|
-
)
|
|
458
455
|
remaining_dims = set(axes)
|
|
459
456
|
raw_pad = []
|
|
460
457
|
for dim in reversed(source.dims):
|
|
@@ -469,10 +466,24 @@ class TorchBackend(Backend[torch.Tensor]):
|
|
|
469
466
|
]
|
|
470
467
|
if not remaining_dims:
|
|
471
468
|
break
|
|
472
|
-
if
|
|
473
|
-
|
|
474
|
-
value
|
|
475
|
-
|
|
469
|
+
# Use torch.nn.functional.pad if possible.
|
|
470
|
+
if (isinstance(value, Tensor) and value.dims == ()) or (not isinstance(value, Tensor)):
|
|
471
|
+
if isinstance(value, Tensor):
|
|
472
|
+
assert value.dims == ()
|
|
473
|
+
value = value.raw_tensor
|
|
474
|
+
out = source.copy_template_new_dim_tags(
|
|
475
|
+
[out_dims[axes.index(dim)] if dim in axes else dim for dim in source.dim_tags], keep_special_axes=True
|
|
476
|
+
)
|
|
477
|
+
out.raw_tensor = torch.nn.functional.pad(source.raw_tensor, pad=raw_pad, mode=mode, value=value)
|
|
478
|
+
else: # Fallback to concat.
|
|
479
|
+
assert isinstance(value, Tensor)
|
|
480
|
+
assert all(dim in source.dims and dim not in axes for dim in value.dims)
|
|
481
|
+
assert len(axes) == 1 # not implemented otherwise currently...
|
|
482
|
+
ext_dim = Dim(1, name="ext")
|
|
483
|
+
value_ext = rf.expand_dim(value, ext_dim)
|
|
484
|
+
out = TorchBackend.concat(
|
|
485
|
+
(source, axes[0]), (value_ext, ext_dim), allow_broadcast=True, out_dim=out_dims[0]
|
|
486
|
+
)
|
|
476
487
|
if any(dim.need_masking() for dim in out_dims) and handle_dynamic_dims:
|
|
477
488
|
if all(right == 0 for right in raw_pad[1::2]) and mode != "circular":
|
|
478
489
|
pass # no masking needed
|
|
@@ -490,24 +501,12 @@ class TorchBackend(Backend[torch.Tensor]):
|
|
|
490
501
|
rf.copy_to_device((left + middle).dyn_size_ext, out.device),
|
|
491
502
|
)
|
|
492
503
|
out.raw_tensor = torch.where(
|
|
493
|
-
mask.
|
|
504
|
+
mask.copy_compatible_to_dims_raw(out.dims),
|
|
494
505
|
out.raw_tensor,
|
|
495
|
-
value,
|
|
506
|
+
value.copy_compatible_to_dims_raw(out.dims) if isinstance(value, Tensor) else value,
|
|
496
507
|
)
|
|
497
508
|
return out
|
|
498
509
|
|
|
499
|
-
@staticmethod
|
|
500
|
-
def cum_concat_step(source: Tensor, *, prev_accum: Tensor, axis: Dim, out_spatial_dim: Dim) -> Tensor:
|
|
501
|
-
"""cum concat step"""
|
|
502
|
-
out = prev_accum.copy_template_replace_dim_tag(
|
|
503
|
-
axis=prev_accum.get_axis_from_description(axis),
|
|
504
|
-
new_dim_tag=out_spatial_dim,
|
|
505
|
-
name=f"{source.name}/cum_concat_step",
|
|
506
|
-
)
|
|
507
|
-
source_raw = source.copy_compatible_to_dims_raw(prev_accum.dims)
|
|
508
|
-
out.raw_tensor = torch.cat((prev_accum.raw_tensor, source_raw), dim=prev_accum.get_axis_from_description(axis))
|
|
509
|
-
return out
|
|
510
|
-
|
|
511
510
|
@staticmethod
|
|
512
511
|
def stack(sources: Sequence[Tensor], *, out_dim: Dim) -> Tensor:
|
|
513
512
|
"""stack"""
|
|
@@ -472,7 +472,7 @@ class _TouchFilesThread(Thread):
|
|
|
472
472
|
"""thread main loop"""
|
|
473
473
|
while True:
|
|
474
474
|
all_files = {} # dict to have order deterministic
|
|
475
|
-
for filename in self.files:
|
|
475
|
+
for filename in self.files.copy(): # copy dict under GIL to avoid modifications during iteration
|
|
476
476
|
all_files[filename] = True
|
|
477
477
|
all_files.update({k: True for k in _all_parent_dirs(filename, base_dir=self.cache_base_dir)})
|
|
478
478
|
for filename in all_files:
|
|
@@ -275,6 +275,46 @@ def test_pad_time_right():
|
|
|
275
275
|
assert all(out_.raw_tensor[b, seq_len] == 1.0)
|
|
276
276
|
|
|
277
277
|
|
|
278
|
+
def test_pad_time_right_non_scalar():
|
|
279
|
+
time_dim = Dim(Tensor("time", [batch_dim], dtype="int32"))
|
|
280
|
+
in_dim = Dim(7, name="in")
|
|
281
|
+
extern_data = TensorDict(
|
|
282
|
+
{
|
|
283
|
+
"data": Tensor("data", [batch_dim, time_dim, in_dim], dtype="float32"),
|
|
284
|
+
"value": Tensor("value", [batch_dim], dtype="float32"),
|
|
285
|
+
}
|
|
286
|
+
)
|
|
287
|
+
|
|
288
|
+
# noinspection PyShadowingNames
|
|
289
|
+
def _forward_step(*, extern_data: TensorDict, **_kwargs):
|
|
290
|
+
data, value = extern_data["data"], extern_data["value"]
|
|
291
|
+
data.mark_as_output("data", shape=(batch_dim, time_dim, in_dim))
|
|
292
|
+
value.mark_as_output("value", shape=(batch_dim,))
|
|
293
|
+
out, (new_time,) = rf.pad(data, axes=[time_dim], padding=[(0, 1)], value=value)
|
|
294
|
+
out.mark_as_default_output(shape=(batch_dim, new_time, in_dim))
|
|
295
|
+
|
|
296
|
+
# TF-layers currently does not support this.
|
|
297
|
+
res = run_model(extern_data, lambda **_kwargs: rf.Module(), _forward_step, test_tensorflow=False)
|
|
298
|
+
data_: Tensor = res["data"]
|
|
299
|
+
value_: Tensor = res["value"]
|
|
300
|
+
out_: Tensor = res["output"]
|
|
301
|
+
assert data_.dims == (batch_dim, time_dim, in_dim)
|
|
302
|
+
new_time_dim = out_.dims[1]
|
|
303
|
+
assert out_.dims == (batch_dim, new_time_dim, in_dim) and new_time_dim != time_dim
|
|
304
|
+
assert time_dim.dyn_size_ext.dims == new_time_dim.dyn_size_ext.dims == (batch_dim,)
|
|
305
|
+
batch_size = batch_dim.get_dim_value()
|
|
306
|
+
assert batch_size > 1
|
|
307
|
+
assert len(set(time_dim.dyn_size_ext.raw_tensor)) > 1 # not all the same
|
|
308
|
+
for b in range(batch_size):
|
|
309
|
+
seq_len = time_dim.dyn_size_ext.raw_tensor[b]
|
|
310
|
+
new_seq_len = new_time_dim.dyn_size_ext.raw_tensor[b]
|
|
311
|
+
print(f"batch {b}, seq_len {seq_len}, new_seq_len {new_seq_len}")
|
|
312
|
+
assert new_seq_len == seq_len + 1
|
|
313
|
+
np.testing.assert_allclose(data_.raw_tensor[b, :seq_len], out_.raw_tensor[b, :seq_len])
|
|
314
|
+
print(out_.raw_tensor[b])
|
|
315
|
+
assert all(out_.raw_tensor[b, seq_len] == value_.raw_tensor[b])
|
|
316
|
+
|
|
317
|
+
|
|
278
318
|
def test_stack():
|
|
279
319
|
batch_dim_ = Dim(3, name="batch")
|
|
280
320
|
time_dim = Dim(5, name="time")
|
|
@@ -542,6 +542,27 @@ def test_relative_positional_encoding():
|
|
|
542
542
|
run_model(extern_data, lambda *, epoch, step: _Net(), _forward_step)
|
|
543
543
|
|
|
544
544
|
|
|
545
|
+
def test_relative_positional_encoding_cross():
|
|
546
|
+
enc_spatial_dim = Dim(Tensor("enc_spatial", [batch_dim], dtype="int32"))
|
|
547
|
+
dec_spatial_dim = Dim(Tensor("dec_spatial", [batch_dim], dtype="int32"))
|
|
548
|
+
in_dim = Dim(8, name="in")
|
|
549
|
+
extern_data = TensorDict(
|
|
550
|
+
{
|
|
551
|
+
"enc": Tensor("enc", [batch_dim, enc_spatial_dim, in_dim], dtype="float32"),
|
|
552
|
+
"dec": Tensor("dec", [batch_dim, dec_spatial_dim, in_dim], dtype="float32"),
|
|
553
|
+
}
|
|
554
|
+
)
|
|
555
|
+
|
|
556
|
+
# noinspection PyShadowingNames
|
|
557
|
+
def _forward_step(**_kwargs):
|
|
558
|
+
out, dim = rf.relative_positional_encoding(
|
|
559
|
+
key_value_spatial_dim=enc_spatial_dim, query_spatial_dim=dec_spatial_dim, feat_dim=in_dim
|
|
560
|
+
)
|
|
561
|
+
out.mark_as_default_output(shape=(dim, in_dim))
|
|
562
|
+
|
|
563
|
+
run_model(extern_data, lambda **_kwargs: rf.Module(), _forward_step)
|
|
564
|
+
|
|
565
|
+
|
|
545
566
|
def test_rel_pos_self_attention():
|
|
546
567
|
time_dim = Dim(Tensor("time", [batch_dim], dtype="int32"))
|
|
547
568
|
in_dim = Dim(8, name="in")
|
|
@@ -550,6 +571,7 @@ def test_rel_pos_self_attention():
|
|
|
550
571
|
"data": Tensor("data", [batch_dim, time_dim, in_dim], dtype="float32"),
|
|
551
572
|
}
|
|
552
573
|
)
|
|
574
|
+
check_batching = False
|
|
553
575
|
|
|
554
576
|
class _Net(rf.Module):
|
|
555
577
|
def __init__(self):
|
|
@@ -565,6 +587,32 @@ def test_rel_pos_self_attention():
|
|
|
565
587
|
|
|
566
588
|
def __call__(self, x: Tensor, *, axis: Dim) -> Tensor:
|
|
567
589
|
"""forward"""
|
|
590
|
+
nonlocal check_batching
|
|
591
|
+
if check_batching:
|
|
592
|
+
assert rf.is_executing_eagerly()
|
|
593
|
+
assert batch_dim in x.dims and axis != batch_dim
|
|
594
|
+
y = self.self_att(x, axis=axis)
|
|
595
|
+
for b in range(batch_dim.get_dim_value()):
|
|
596
|
+
x_b = rf.gather(x, axis=batch_dim, indices=b)
|
|
597
|
+
assert batch_dim in axis.dyn_size_ext.dims # current assumption...
|
|
598
|
+
seq_len = rf.gather(axis.dyn_size_ext, axis=batch_dim, indices=b)
|
|
599
|
+
axis_b = Dim(seq_len)
|
|
600
|
+
# Note: The current order (replace_dim and then slice) is somewhat dependent
|
|
601
|
+
# on the current internal behavior of gather and replace_dim,
|
|
602
|
+
# which might change at some point...
|
|
603
|
+
x_b, _ = rf.replace_dim(x_b, in_dim=axis, out_dim=axis_b)
|
|
604
|
+
x_b, _ = rf.slice(x_b, axis=axis_b, start=0, end=seq_len, out_dim=axis_b)
|
|
605
|
+
y_b = self.self_att(x_b, axis=axis_b)
|
|
606
|
+
y_b_ = rf.gather(y, axis=batch_dim, indices=b)
|
|
607
|
+
y_b_, _ = rf.replace_dim(y_b_, in_dim=axis, out_dim=axis_b)
|
|
608
|
+
y_b_, _ = rf.slice(y_b_, axis=axis_b, start=0, end=seq_len, out_dim=axis_b)
|
|
609
|
+
y_b_ = y_b_.copy_transpose(y_b.dims)
|
|
610
|
+
# Assuming PyTorch...
|
|
611
|
+
np.testing.assert_almost_equal(
|
|
612
|
+
y_b.raw_tensor.cpu().detach().numpy(), y_b_.raw_tensor.cpu().detach().numpy(), decimal=5
|
|
613
|
+
)
|
|
614
|
+
return y
|
|
615
|
+
|
|
568
616
|
return self.self_att(x, axis=axis)
|
|
569
617
|
|
|
570
618
|
# noinspection PyShadowingNames
|
|
@@ -573,6 +621,8 @@ def test_rel_pos_self_attention():
|
|
|
573
621
|
out.mark_as_default_output(shape=(batch_dim, time_dim, model.out_dim))
|
|
574
622
|
|
|
575
623
|
run_model(extern_data, lambda *, epoch, step: _Net(), _forward_step)
|
|
624
|
+
check_batching = True
|
|
625
|
+
run_model(extern_data, lambda *, epoch, step: _Net(), _forward_step, test_tensorflow=False)
|
|
576
626
|
|
|
577
627
|
|
|
578
628
|
def test_sinusoidal_positional_encoding():
|
|
@@ -359,15 +359,16 @@ def test_e_branchformer():
|
|
|
359
359
|
(batch_dim, num_heads_dim, enc_spatial_dim, key_dim_per_head),
|
|
360
360
|
),
|
|
361
361
|
# Check RelPositionalEncoding vs our relative_positional_encoding
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
),
|
|
362
|
+
# Currently disabled this check, as the dim tags are different now...
|
|
363
|
+
# (
|
|
364
|
+
# (rf.RelPosSelfAttention.__call__, 0, "pos_emb", 0),
|
|
365
|
+
# (RelPositionMultiHeadedAttention.forward, 0, "pos_emb", 0),
|
|
366
|
+
# lambda x, **_: _tensor(
|
|
367
|
+
# _reorder_rel_pos_emb_espnet_to_rf(x.squeeze(dim=0)),
|
|
368
|
+
# "pos_emb",
|
|
369
|
+
# [enc_spatial_dim - 1 + enc_spatial_dim, model_dim],
|
|
370
|
+
# ),
|
|
371
|
+
# ),
|
|
371
372
|
(
|
|
372
373
|
(EBranchformerLayer.__call__, 0, "x_mhsa", 0),
|
|
373
374
|
(EBranchformerEncoderLayer.forward, 0, "x_att", 0),
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-hyper-param-tuning.config
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-record-and-push-to-webserver.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-chunking-blstm.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-contribrnn-lstm.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-maxgradnorm-lstm.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-native-lstm-lowmem.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-native-lstm.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-native-lstm2.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-native-lstm2.12ax.tuned.config
RENAMED
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-neural-transducer.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-rec-explicit-lstm.config
RENAMED
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-rec-explicit-rnn.config
RENAMED
|
File without changes
|
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-search-compiled-graph.py
RENAMED
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-tf-vanilla-lstm.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/demo-upd-mult-model.lstm.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png
RENAMED
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png
RENAMED
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/create_IAM_dataset.py
RENAMED
|
File without changes
|
|
File without changes
|
{returnn-1.20241211.145755 → returnn-1.20241213.155203}/demos/mdlstm/IAM/features/raw/demo.h5
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|