returnn 1.20240924.10718__tar.gz → 1.20240925.224259__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.20240924.10718 → returnn-1.20240925.224259}/PKG-INFO +1 -1
- returnn-1.20240925.224259/_setup_info_generated.py +2 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/postprocessing.py +18 -3
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/_backend.py +9 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/array_.py +96 -3
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/decoder/transformer.py +9 -1
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/math_.py +7 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/frontend_low_level/_backend.py +8 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/frontend/_backend.py +42 -4
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn.egg-info/PKG-INFO +1 -1
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_rf_array.py +32 -0
- returnn-1.20240924.10718/_setup_info_generated.py +0 -2
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/.editorconfig +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/.gitignore +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/.gitmodules +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/.kateconfig +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/CHANGELOG.md +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/CODEOWNERS +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/CONTRIBUTING.md +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/LICENSE +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/MANIFEST.in +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/README.rst +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/12AX.cluster_map +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/_setup_returnn_env.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-fwd.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-horovod-mpi.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-horovod-mpi.py.sh +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-horovod-mpi.sh +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-hyper-param-tuning.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-iter-dataset.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-list-devices.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-lua-torch-layer.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-pretrain.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-record-and-push-to-webserver.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-returnn-as-framework.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-rf-pt-benchmark.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-rf.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-rhn-enwik8.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-sprint-interface.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-att-copy.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-attention.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-enc-dec.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-hard-att-copy.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-lstm-benchmark.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-native-lstm.12ax.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-native-lstm2.12ax.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-neural-transducer.12ax.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-rec-explicit-lstm.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-rec-explicit-rnn.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-rec-self-att.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-search-compiled-graph.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-timit-lstm-ctc.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-torch.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo.sh +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/README.txt +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/chars.txt +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/config_demo +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/config_fwd +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/config_real +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/decode.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/go.sh +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/lines.txt +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/split/eval.txt +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/split/train.txt +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/split/valid.txt +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/README.md +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/artificial/create_test_h5.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/artificial/forwardconfig +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/artificial/go.sh +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/artificial/trainconfig +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/artificial_rgb/go.sh +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/pyproject.toml +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/requirements.txt +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/__main__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/__old_mod_loader__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/__setup__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/config.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/audio.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/basic.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/bundle_file.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/cached.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/cached2.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/distrib_files.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/generating.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/hdf.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/lm.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/map.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/meta.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/multi_proc.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/normalization_data.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/numpy_dump.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/raw_wav.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/sprint.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/stereo.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/util/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/util/feature_extraction.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/util/strings.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/datasets/util/vocabulary.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/engine/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/engine/base.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/engine/batch.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/__main__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/.git +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/graph_editor/README.md +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/graph_editor/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/graph_editor/edit.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/graph_editor/reroute.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/graph_editor/select.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/graph_editor/subgraph.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/graph_editor/transform.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/extern/graph_editor/util.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/forward_iface.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/_native/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/_native/backend.cpp +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/_native/backend.hpp +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/_native/module.cpp +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/_native/module.hpp +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/_native/py_utils.hpp +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/_native/tensor_ops.cpp +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/_native/tensor_ops.hpp +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/_numpy_backend.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/_random_journal.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/_utils.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/attention.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/audio/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/audio/mel.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/audio/specaugment.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/backend.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/build_from_dict.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/cond.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/const.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/container.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/control_flow_ctx.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/conv.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/conversions/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/conversions/espnet_e_branchformer.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/conversions/hf_llama.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/conversions/torch_nn.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/decoder/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/device.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/dims.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/dropout.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/dtype.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/encoder/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/encoder/base.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/encoder/conformer.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/encoder/e_branchformer.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/encoder/transformer.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/gradient.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/graph.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/hooks.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/init.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/label_smoothing.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/linear.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/loop.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/loss.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/matmul.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/module.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/normalization.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/parameter.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/parametrizations.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/parametrize.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/piecewise_linear.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/rand.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/rec.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/reduce.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/run_ctx.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/signal.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/state.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/stepwise_scheduler.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/tensor_array.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/types.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/import_/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/import_/common.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/import_/git.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/import_/import_.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/learning_rate_control.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/log.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/native_op.cpp +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/native_op.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/pretrain.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/sprint/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/sprint/cache.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/sprint/control.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/sprint/error_signals.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/sprint/extern_interface.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/sprint/interface.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tensor/README.md +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tensor/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tensor/_dim_extra.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tensor/_tensor_extra.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tensor/_tensor_mixin_base.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tensor/_tensor_op_overloads.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tensor/control_flow_ctx.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tensor/dim.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tensor/marked_dim.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tensor/tensor.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tensor/tensor_dict.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tensor/utils.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/compat.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/data_pipeline.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/distributed.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/engine.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/frontend_layers/README.md +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/frontend_layers/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/frontend_layers/_backend.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/frontend_layers/_utils.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/frontend_layers/cond.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/frontend_layers/dims.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/frontend_layers/layer.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/frontend_layers/loop.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/frontend_layers/make_layer.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/frontend_layers/masked_computation.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/frontend_low_level/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/horovod.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/hyper_param_tuning.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/layers/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/layers/base.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/layers/basic.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/layers/rec.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/layers/segmental_model.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/layers/signal_processing.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/layers/variable.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/native_op.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/network.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/sprint.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/updater.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/util/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/util/basic.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/util/data.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/util/gradient_checkpoint.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/util/ken_lm.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/util/open_fst.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/README.md +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/data/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/data/extern_data.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/data/pipeline.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/data/queued_data_iter.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/data/tensor_utils.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/distributed.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/engine.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/frontend/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/frontend/_rand.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/frontend/bridge.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/frontend/raw_ops.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/updater.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/util/README.md +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/util/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/util/array_.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/util/diagnose_gpu.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/util/gradient_checkpoint.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/util/module.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/torch/util/scaled_gradient.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/__init__.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/basic.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/better_exchook.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/bpe.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/debug.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/debug_helpers.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/file_cache.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/fsa.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/literal_py_to_pickle.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/math.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/native_code_compiler.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/pprint.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/py-to-pickle.cpp +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/py_compat.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/py_ext_mod_compiler.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/result_with_reason.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/sig_proc.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/task_system.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/train_proc_manager.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/util/watch_memory.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn.egg-info/SOURCES.txt +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn.egg-info/dependency_links.txt +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn.egg-info/top_level.txt +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/rnn.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/setup.cfg +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/setup.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/DummySprintExec.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/PyCharm-inspection-profile.xml +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/PyCharm.idea/.gitignore +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/PyCharm.idea/.name +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/PyCharm.idea/misc.xml +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/PyCharm.idea/modules.xml +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/PyCharm.idea/returnn.iml +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/_set_num_threads1.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/_setup_returnn_env.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/_setup_test_env.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/bpe-unicode-demo.codes +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/bpe-unicode-demo.vocab +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/lexicon_opt.fst +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/lexicon_opt.isyms +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/lexicon_opt.jpg +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/lexicon_opt.osyms +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/lint_common.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/pycharm-inspect.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/pylint.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/returnn-as-framework.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/rf_utils.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/spelling.dic +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_Config.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_Dataset.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_Fsa.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_GeneratingDataset.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_HDFDataset.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_LearningRateControl.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_Log.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_MultiProcDataset.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_Pretrain.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_ResNet.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_SprintDataset.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_SprintInterface.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_TFEngine.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_TFNativeOp.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_TFNetworkLayer.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_TFNetworkRecLayer.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_TFNetworkSigProcLayer.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_TFUpdater.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_TFUtil.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_TF_determinism.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_TaskSystem.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_TaskSystem_SharedMem.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_TranslationDataset.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_Util.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_demos.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_fork_exec.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_hdf_dump.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_rf_attention.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_rf_base.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_rf_cond.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_rf_const.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_rf_container.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_rf_conv.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_rf_decoder_transformer.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_rf_encoder_conformer.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_rf_gradient.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_rf_label_smoothing.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_rf_loop.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_rf_math.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_rf_normalization.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_rf_piecewise_linear.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_rf_rec.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_rf_reduce.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_rf_signal.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_tensor.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_tools.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_torch_dataset.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_torch_engine.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_torch_frontend.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_torch_internal_frontend.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/test_torch_util.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tests/torch_utils.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/_setup_returnn_env.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/analyze-dataset-batches.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/bliss-collect-seq-lens.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/bliss-dump-text.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/bliss-get-segment-names.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/bliss-to-ogg-zip.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/bpe-create-lexicon.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/calculate-word-error-rate.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/cleanup-old-models.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/collect-orth-symbols.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/collect-words.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/compile_native_op.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/compile_tf_graph.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/debug-dump-search-scores.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/debug-plot-search-scores.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/dump-dataset-raw-strings.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/dump-dataset.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/dump-forward-stats.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/dump-forward.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/dump-network-json.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/dump-pickle.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/extract_state_tying_from_dataset.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/get-attention-weights.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/get-best-model-epoch.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/hdf_dump.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/hdf_dump_translation_dataset.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/import-blocks-mt-model.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/import-t2t-mt-model.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/lattice_rescorer/.gitignore +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/lattice_rescorer/Makefile +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/lattice_rescorer/README.md +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/lattice_rescorer/example/README.md +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/lattice_rescorer/example/libs_list +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/lattice_rescorer/example/state_vars_list +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/lattice_rescorer/example/tensor_names_list +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/lattice_rescorer/file.h +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/lattice_rescorer/main.cc +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/lattice_rescorer/rescorer.h +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/lattice_rescorer/vocabulary.cc +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/lattice_rescorer/vocabulary.h +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/tf_avg_checkpoints.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/tf_inspect_checkpoint.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/tf_inspect_summary_log.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/torch_avg_checkpoints.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/torch_export_to_onnx.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/torch_inspect_checkpoint.py +0 -0
- {returnn-1.20240924.10718 → returnn-1.20240925.224259}/tools/torch_inspect_checkpoint_and_opt.py +0 -0
|
@@ -304,16 +304,31 @@ class LaplaceOrdering(Callable[[Iterator[TensorDict]], Iterator[TensorDict]]):
|
|
|
304
304
|
iterator = iter(iterator)
|
|
305
305
|
is_down_phase = False
|
|
306
306
|
|
|
307
|
+
seq_buffer = list(islice(iterator, self.num_seqs_per_bin))
|
|
307
308
|
while True:
|
|
308
|
-
seq_buffer = list(islice(iterator, self.num_seqs_per_bin))
|
|
309
309
|
seq_buffer.sort(key=self._get_seq_len, reverse=is_down_phase)
|
|
310
|
-
yield from seq_buffer
|
|
311
310
|
|
|
312
|
-
|
|
311
|
+
next_seq_buffer = []
|
|
312
|
+
has_ended = False
|
|
313
|
+
|
|
314
|
+
# Yield items to trainer while gradually pulling more data from PP function.
|
|
315
|
+
# This optimizes CPU load when multiple workers are used.
|
|
316
|
+
for item in seq_buffer:
|
|
317
|
+
yield item
|
|
318
|
+
|
|
319
|
+
try:
|
|
320
|
+
if not has_ended:
|
|
321
|
+
next_seq_buffer.append(next(iterator))
|
|
322
|
+
except StopIteration:
|
|
323
|
+
has_ended = True
|
|
313
324
|
|
|
314
325
|
if len(seq_buffer) < self.num_seqs_per_bin:
|
|
326
|
+
assert has_ended and not next_seq_buffer
|
|
315
327
|
break
|
|
316
328
|
|
|
329
|
+
is_down_phase = not is_down_phase
|
|
330
|
+
seq_buffer = next_seq_buffer
|
|
331
|
+
|
|
317
332
|
def _get_seq_len(self, tdict: TensorDict) -> int:
|
|
318
333
|
"""
|
|
319
334
|
:return: segment length of the segment in `tdict` as measured by `self.length_key` for comparison.
|
|
@@ -921,6 +921,8 @@ class Backend(Generic[T]):
|
|
|
921
921
|
*,
|
|
922
922
|
indices: Tensor,
|
|
923
923
|
indices_dim: Union[Dim, Sequence[Dim]],
|
|
924
|
+
mode: str,
|
|
925
|
+
fill_value: Union[int, float],
|
|
924
926
|
out_dim: Union[Dim, Sequence[Dim]],
|
|
925
927
|
) -> Tensor:
|
|
926
928
|
"""
|
|
@@ -932,6 +934,8 @@ class Backend(Generic[T]):
|
|
|
932
934
|
:param source: [batch_dims..., indices_dim(s)..., feature_dims...]
|
|
933
935
|
:param indices: [batch_dims..., indices_dim(s)...] -> out_dim
|
|
934
936
|
:param indices_dim:
|
|
937
|
+
:param mode: "sum" or "max" or "min"
|
|
938
|
+
:param fill_value:
|
|
935
939
|
:param out_dim:
|
|
936
940
|
:return: [batch_dims..., out_dim, feature_dims...]
|
|
937
941
|
"""
|
|
@@ -983,6 +987,11 @@ class Backend(Generic[T]):
|
|
|
983
987
|
"""
|
|
984
988
|
raise NotImplementedError
|
|
985
989
|
|
|
990
|
+
@staticmethod
|
|
991
|
+
def is_finite(x: Tensor) -> Tensor:
|
|
992
|
+
"""is finite"""
|
|
993
|
+
raise NotImplementedError
|
|
994
|
+
|
|
986
995
|
@staticmethod
|
|
987
996
|
def clip_by_value(
|
|
988
997
|
x: Tensor,
|
|
@@ -24,6 +24,7 @@ __all__ = [
|
|
|
24
24
|
"reshape",
|
|
25
25
|
"split",
|
|
26
26
|
"expand_dim",
|
|
27
|
+
"expand_dims",
|
|
27
28
|
"squeeze",
|
|
28
29
|
"window",
|
|
29
30
|
"concat",
|
|
@@ -37,6 +38,7 @@ __all__ = [
|
|
|
37
38
|
"pack_padded",
|
|
38
39
|
"gather",
|
|
39
40
|
"scatter",
|
|
41
|
+
"scatter_argmax",
|
|
40
42
|
"slice",
|
|
41
43
|
"shift_right",
|
|
42
44
|
"reverse_sequence",
|
|
@@ -48,7 +50,7 @@ __all__ = [
|
|
|
48
50
|
|
|
49
51
|
|
|
50
52
|
def convert_to_tensor(
|
|
51
|
-
value: Union[Tensor, T, RawTensorTypes],
|
|
53
|
+
value: Union[Tensor, T, RawTensorTypes, list, tuple],
|
|
52
54
|
*,
|
|
53
55
|
dims: Sequence[Dim] = None,
|
|
54
56
|
dtype: Optional[str] = None,
|
|
@@ -73,6 +75,8 @@ def convert_to_tensor(
|
|
|
73
75
|
"""
|
|
74
76
|
if isinstance(value, Tensor): # fast path
|
|
75
77
|
return value
|
|
78
|
+
if isinstance(value, (tuple, list)):
|
|
79
|
+
value = numpy.array(value, dtype=dtype)
|
|
76
80
|
if dims is None and shape is not None:
|
|
77
81
|
dims = shape # old code
|
|
78
82
|
if isinstance(value, (int, float, complex, bool, str, numpy.number)):
|
|
@@ -257,6 +261,15 @@ def expand_dim(source: Tensor, dim: Dim) -> Tensor:
|
|
|
257
261
|
return source._raw_backend.expand_dim(source, dim=dim)
|
|
258
262
|
|
|
259
263
|
|
|
264
|
+
def expand_dims(source: Tensor, dims: Sequence[Dim]) -> Tensor:
|
|
265
|
+
"""
|
|
266
|
+
Expand multiple dims, via :func:`expand_dim`.
|
|
267
|
+
"""
|
|
268
|
+
for dim in dims:
|
|
269
|
+
source = expand_dim(source, dim)
|
|
270
|
+
return source
|
|
271
|
+
|
|
272
|
+
|
|
260
273
|
def squeeze(source: Tensor, axis: Dim) -> Tensor:
|
|
261
274
|
"""
|
|
262
275
|
Removes the axis with dimension of extend 1 from the source.
|
|
@@ -680,17 +693,24 @@ def scatter(
|
|
|
680
693
|
*,
|
|
681
694
|
indices: Tensor,
|
|
682
695
|
indices_dim: Union[Dim, Sequence[Dim]],
|
|
696
|
+
mode: str = "sum",
|
|
697
|
+
fill_value: Optional[Union[int, float]] = None,
|
|
683
698
|
out_dim: Optional[Union[Dim, Sequence[Dim]]] = None,
|
|
684
699
|
) -> Tensor:
|
|
685
700
|
"""
|
|
686
701
|
Scatters into new zero-tensor.
|
|
687
702
|
If entries in indices are duplicated, the corresponding values in source will be added together
|
|
688
|
-
(scatter_add in PyTorch)
|
|
703
|
+
(scatter_add in PyTorch)
|
|
704
|
+
with mode=="sum",
|
|
705
|
+
or otherwise it will take the max/min.
|
|
706
|
+
|
|
689
707
|
(TF segment_sum can be implemented via this.)
|
|
690
708
|
|
|
691
709
|
:param source: [batch_dims..., indices_dim(s)..., feature_dims...]
|
|
692
710
|
:param indices: [batch_dims..., indices_dim(s)...] -> out_dim
|
|
693
711
|
:param indices_dim:
|
|
712
|
+
:param mode: "sum" or "max" or "min". also see :func:`scatter_argmax`.
|
|
713
|
+
:param fill_value:
|
|
694
714
|
:param out_dim: The indices target dim.
|
|
695
715
|
If not given, will be automatically determined as the sparse_dim from indices.
|
|
696
716
|
If multiple out dims, use indices into the merged out dims,
|
|
@@ -700,8 +720,81 @@ def scatter(
|
|
|
700
720
|
if not out_dim:
|
|
701
721
|
assert isinstance(indices, Tensor) and indices.sparse_dim
|
|
702
722
|
out_dim = indices.sparse_dim
|
|
723
|
+
if fill_value is None:
|
|
724
|
+
if mode == "sum":
|
|
725
|
+
fill_value = 0
|
|
726
|
+
elif mode == "max":
|
|
727
|
+
if "int" in source.dtype:
|
|
728
|
+
import numpy
|
|
729
|
+
|
|
730
|
+
fill_value = numpy.iinfo(source.raw_tensor.dtype).min
|
|
731
|
+
else:
|
|
732
|
+
fill_value = float("-inf")
|
|
733
|
+
elif mode == "min":
|
|
734
|
+
if "int" in source.dtype:
|
|
735
|
+
import numpy
|
|
736
|
+
|
|
737
|
+
fill_value = numpy.iinfo(source.raw_tensor.dtype).max
|
|
738
|
+
else:
|
|
739
|
+
fill_value = float("inf")
|
|
740
|
+
else:
|
|
741
|
+
raise ValueError(f"scatter: invalid mode {mode!r}")
|
|
703
742
|
# noinspection PyProtectedMember
|
|
704
|
-
return source._raw_backend.scatter(
|
|
743
|
+
return source._raw_backend.scatter(
|
|
744
|
+
source, indices=indices, indices_dim=indices_dim, mode=mode, fill_value=fill_value, out_dim=out_dim
|
|
745
|
+
)
|
|
746
|
+
|
|
747
|
+
|
|
748
|
+
def scatter_argmax(
|
|
749
|
+
source: Tensor,
|
|
750
|
+
*,
|
|
751
|
+
indices: Tensor,
|
|
752
|
+
indices_dim: Union[Dim, Sequence[Dim]],
|
|
753
|
+
invalid_idx: int = -1,
|
|
754
|
+
out_dim: Optional[Union[Dim, Sequence[Dim]]] = None,
|
|
755
|
+
) -> Tensor:
|
|
756
|
+
"""
|
|
757
|
+
Get the index in src which has the max value for each index in index.
|
|
758
|
+
|
|
759
|
+
This is like :func:`scatter` with ``mode="argmax"``.
|
|
760
|
+
|
|
761
|
+
:param source: [batch_dims..., indices_dim(s)..., feature_dims...]
|
|
762
|
+
:param indices: [batch_dims..., indices_dim(s)...] -> out_dim
|
|
763
|
+
:param indices_dim:
|
|
764
|
+
:param invalid_idx: in case some of the output entries are never set (via ``indices``),
|
|
765
|
+
this will be used as the value.
|
|
766
|
+
:param out_dim: The indices target dim.
|
|
767
|
+
:return: [batch_dims..., out_dim(s)..., feature_dims...]
|
|
768
|
+
"""
|
|
769
|
+
import numpy
|
|
770
|
+
|
|
771
|
+
if not out_dim:
|
|
772
|
+
assert isinstance(indices, Tensor) and indices.sparse_dim
|
|
773
|
+
out_dim = indices.sparse_dim
|
|
774
|
+
|
|
775
|
+
# For the shape comments, use [B,I,F] for shorter source, [B,O,F] for shorter output.
|
|
776
|
+
# use scatter to get the max value for each index
|
|
777
|
+
out_max = rf.scatter(source, indices=indices, indices_dim=indices_dim, mode="max", out_dim=out_dim) # [B,O,F]
|
|
778
|
+
src_max = rf.gather(out_max, indices=indices, axis=out_dim) # [B,I,F] -> max value or invalid_value
|
|
779
|
+
|
|
780
|
+
max_invalid_idx = numpy.iinfo(indices.dtype).max
|
|
781
|
+
|
|
782
|
+
# then use gather to get the max value back to src.
|
|
783
|
+
# then mask the src with the max value.
|
|
784
|
+
src_max_mask = src_max == source
|
|
785
|
+
src_max_mask = src_max_mask.copy_masked(False)
|
|
786
|
+
src_indices = rf.where(
|
|
787
|
+
src_max_mask, rf.range_over_dim(indices_dim, dtype=indices.dtype, device=source.device), max_invalid_idx
|
|
788
|
+
) # [B,I,F] -> I
|
|
789
|
+
|
|
790
|
+
# now scatter the min of src_indices into tensor
|
|
791
|
+
out = rf.scatter(
|
|
792
|
+
src_indices, indices=indices, indices_dim=indices_dim, mode="min", fill_value=invalid_idx, out_dim=out_dim
|
|
793
|
+
) # [B,O,F] -> I or invalid_idx or max_invalid_idx
|
|
794
|
+
|
|
795
|
+
if max_invalid_idx != invalid_idx:
|
|
796
|
+
out = rf.where(out != max_invalid_idx, out, invalid_idx) # [B,O,F] -> I or invalid_idx
|
|
797
|
+
return out
|
|
705
798
|
|
|
706
799
|
|
|
707
800
|
# noinspection PyShadowingBuiltins
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/frontend/decoder/transformer.py
RENAMED
|
@@ -441,6 +441,7 @@ class FeedForwardGated(rf.Module):
|
|
|
441
441
|
ff_dim: Optional[Union[Dim, int]] = NotSpecified,
|
|
442
442
|
dropout: float = 0.1,
|
|
443
443
|
activation: Union[Callable[[Tensor], Tensor], Dict[str, Any], rf.Module] = rf.swish,
|
|
444
|
+
gate_activation: Union[Callable[[Tensor], Tensor], Dict[str, Any], rf.Module] = rf.identity,
|
|
444
445
|
with_bias: bool = False,
|
|
445
446
|
):
|
|
446
447
|
"""
|
|
@@ -474,11 +475,18 @@ class FeedForwardGated(rf.Module):
|
|
|
474
475
|
activation = rf.build_from_dict(activation)
|
|
475
476
|
elif not callable(activation):
|
|
476
477
|
raise TypeError(f"{self}: unexpected activation type {activation!r}")
|
|
478
|
+
if gate_activation is NotSpecified:
|
|
479
|
+
gate_activation = rf.identity
|
|
480
|
+
elif isinstance(gate_activation, dict):
|
|
481
|
+
gate_activation = rf.build_from_dict(gate_activation)
|
|
482
|
+
elif not callable(gate_activation):
|
|
483
|
+
raise TypeError(f"{self}: unexpected gate_activation type {gate_activation!r}")
|
|
477
484
|
|
|
478
485
|
self.out_dim = out_dim
|
|
479
486
|
self.dropout = dropout
|
|
480
487
|
self.dropout_broadcast = rf.dropout_broadcast_default()
|
|
481
488
|
self.activation = activation
|
|
489
|
+
self.gate_activation = gate_activation
|
|
482
490
|
|
|
483
491
|
# Factor 2 because we concatenate the two paths.
|
|
484
492
|
self.linear_ff = rf.Linear(out_dim, 2 * ff_dim, with_bias=with_bias)
|
|
@@ -488,7 +496,7 @@ class FeedForwardGated(rf.Module):
|
|
|
488
496
|
"""forward"""
|
|
489
497
|
x_ff1 = self.linear_ff(inp)
|
|
490
498
|
x_ff1a, x_ff1b = rf.split(x_ff1, axis=self.linear_ff.out_dim, out_dims=[self.linear_out.in_dim] * 2)
|
|
491
|
-
x_act = self.activation(x_ff1a) * x_ff1b
|
|
499
|
+
x_act = self.activation(x_ff1a) * self.gate_activation(x_ff1b)
|
|
492
500
|
x_drop = rf.dropout(x_act, self.dropout, axis=self.dropout_broadcast and self.linear_out.in_dim)
|
|
493
501
|
x_ff2 = self.linear_out(x_drop)
|
|
494
502
|
return x_ff2
|
|
@@ -37,6 +37,7 @@ __all__ = [
|
|
|
37
37
|
"logical_not",
|
|
38
38
|
"opt_logical_or",
|
|
39
39
|
"opt_logical_and",
|
|
40
|
+
"is_finite",
|
|
40
41
|
"maximum",
|
|
41
42
|
"minimum",
|
|
42
43
|
"clip_by_value",
|
|
@@ -361,6 +362,12 @@ def opt_logical_and(a: Union[Tensor, bool], b: Union[Tensor, bool]) -> Union[Ten
|
|
|
361
362
|
return combine(a, "logical_and", b)
|
|
362
363
|
|
|
363
364
|
|
|
365
|
+
def is_finite(a: Tensor) -> Tensor:
|
|
366
|
+
"""is finite"""
|
|
367
|
+
# noinspection PyProtectedMember
|
|
368
|
+
return a._raw_backend.is_finite(a)
|
|
369
|
+
|
|
370
|
+
|
|
364
371
|
def maximum(a: Tensor, b: Union[Tensor, _RawTensorTypes], *other_tensors) -> Tensor:
|
|
365
372
|
"""maximum"""
|
|
366
373
|
if not other_tensors:
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/returnn/tf/frontend_low_level/_backend.py
RENAMED
|
@@ -554,6 +554,14 @@ class TFBackend(Backend[tf.Tensor]):
|
|
|
554
554
|
out_data.raw_tensor = y
|
|
555
555
|
return out_data
|
|
556
556
|
|
|
557
|
+
@staticmethod
|
|
558
|
+
def is_finite(x: Tensor) -> Tensor:
|
|
559
|
+
"""is finite"""
|
|
560
|
+
out = x.copy_template("is_finite", dtype="bool")
|
|
561
|
+
with tf_util.same_control_flow_ctx(x):
|
|
562
|
+
out.raw_tensor = tf.math.is_finite(x.raw_tensor)
|
|
563
|
+
return out
|
|
564
|
+
|
|
557
565
|
@staticmethod
|
|
558
566
|
def clip_by_value(
|
|
559
567
|
x: Tensor,
|
|
@@ -1015,6 +1015,8 @@ class TorchBackend(Backend[torch.Tensor]):
|
|
|
1015
1015
|
*,
|
|
1016
1016
|
indices: Tensor,
|
|
1017
1017
|
indices_dim: Union[Dim, Sequence[Dim]],
|
|
1018
|
+
mode: str,
|
|
1019
|
+
fill_value: Union[int, float],
|
|
1018
1020
|
out_dim: Union[Dim, Sequence[Dim]],
|
|
1019
1021
|
) -> Tensor:
|
|
1020
1022
|
"""
|
|
@@ -1026,6 +1028,8 @@ class TorchBackend(Backend[torch.Tensor]):
|
|
|
1026
1028
|
:param source: [batch_dims..., indices_dim(s)..., feature_dims...]
|
|
1027
1029
|
:param indices: [batch_dims..., indices_dim(s)...] -> out_dim
|
|
1028
1030
|
:param indices_dim:
|
|
1031
|
+
:param mode: "sum", "max", "min"
|
|
1032
|
+
:param fill_value:
|
|
1029
1033
|
:param out_dim:
|
|
1030
1034
|
:return: [batch_dims..., out_dim, feature_dims...]
|
|
1031
1035
|
"""
|
|
@@ -1065,8 +1069,29 @@ class TorchBackend(Backend[torch.Tensor]):
|
|
|
1065
1069
|
)
|
|
1066
1070
|
out_dims = batch_dims + [out_flat_dim] + feature_dims
|
|
1067
1071
|
out_shape = [d.get_dim_value() for d in out_dims]
|
|
1068
|
-
|
|
1069
|
-
|
|
1072
|
+
if mode == "sum" and isinstance(fill_value, (int, float)) and fill_value == 0:
|
|
1073
|
+
out_raw = torch.zeros(out_shape, dtype=source.raw_tensor.dtype, device=source.raw_tensor.device)
|
|
1074
|
+
out_raw.scatter_add_(dim=len(batch_dims), index=indices.raw_tensor.to(torch.int64), src=source.raw_tensor)
|
|
1075
|
+
elif mode == "sum":
|
|
1076
|
+
out_raw = torch.full(out_shape, fill_value, dtype=source.raw_tensor.dtype, device=source.raw_tensor.device)
|
|
1077
|
+
out_raw.scatter_reduce_(
|
|
1078
|
+
dim=len(batch_dims),
|
|
1079
|
+
index=indices.raw_tensor.to(torch.int64),
|
|
1080
|
+
src=source.raw_tensor,
|
|
1081
|
+
reduce="sum",
|
|
1082
|
+
include_self=False,
|
|
1083
|
+
)
|
|
1084
|
+
elif mode in ("max", "min"):
|
|
1085
|
+
out_raw = torch.full(out_shape, fill_value, dtype=source.raw_tensor.dtype, device=source.raw_tensor.device)
|
|
1086
|
+
out_raw.scatter_reduce_(
|
|
1087
|
+
dim=len(batch_dims),
|
|
1088
|
+
index=indices.raw_tensor.to(torch.int64),
|
|
1089
|
+
src=source.raw_tensor,
|
|
1090
|
+
reduce="a" + mode,
|
|
1091
|
+
include_self=False,
|
|
1092
|
+
)
|
|
1093
|
+
else:
|
|
1094
|
+
raise ValueError(f"scatter: mode {mode!r} not supported")
|
|
1070
1095
|
res = Tensor(
|
|
1071
1096
|
"scatter",
|
|
1072
1097
|
dims=out_dims,
|
|
@@ -1128,8 +1153,14 @@ class TorchBackend(Backend[torch.Tensor]):
|
|
|
1128
1153
|
allow_broadcast_all_sources: bool = False,
|
|
1129
1154
|
) -> Tensor:
|
|
1130
1155
|
"""where"""
|
|
1131
|
-
|
|
1132
|
-
|
|
1156
|
+
if isinstance(true_, Tensor):
|
|
1157
|
+
dtype = true_.dtype
|
|
1158
|
+
elif isinstance(false_, Tensor):
|
|
1159
|
+
dtype = false_.dtype
|
|
1160
|
+
else:
|
|
1161
|
+
dtype = None
|
|
1162
|
+
true_ = rf.convert_to_tensor(true_, _backend=TorchBackend, dtype=dtype, device=cond.device)
|
|
1163
|
+
false_ = rf.convert_to_tensor(false_, _backend=TorchBackend, dtype=dtype, device=cond.device)
|
|
1133
1164
|
out = Tensor.get_common_data(
|
|
1134
1165
|
[true_, false_, cond], allow_broadcast_all_sources=allow_broadcast_all_sources, name="where"
|
|
1135
1166
|
)
|
|
@@ -1174,6 +1205,13 @@ class TorchBackend(Backend[torch.Tensor]):
|
|
|
1174
1205
|
out.raw_tensor = out_raw
|
|
1175
1206
|
return out
|
|
1176
1207
|
|
|
1208
|
+
@staticmethod
|
|
1209
|
+
def is_finite(x: Tensor) -> Tensor:
|
|
1210
|
+
"""is finite"""
|
|
1211
|
+
out = x.copy_template("is_finite", dtype="bool")
|
|
1212
|
+
out.raw_tensor = torch.isfinite(x.raw_tensor)
|
|
1213
|
+
return out
|
|
1214
|
+
|
|
1177
1215
|
@staticmethod
|
|
1178
1216
|
def clip_by_value(
|
|
1179
1217
|
x: Tensor,
|
|
@@ -373,6 +373,38 @@ def test_gather_time_static_clip_to_valid():
|
|
|
373
373
|
run_model(extern_data_template, lambda *, epoch, step: rf.Module(), _forward_step)
|
|
374
374
|
|
|
375
375
|
|
|
376
|
+
def test_scatter_fill_inf():
|
|
377
|
+
batch_dim_ = Dim(3, name="batch")
|
|
378
|
+
states_dim = Dim(7, name="states")
|
|
379
|
+
|
|
380
|
+
def _forward_step(**_kwargs):
|
|
381
|
+
start_states = rf.convert_to_tensor(
|
|
382
|
+
[2, 4, 5], name="start_states", dims=[batch_dim_], sparse_dim=states_dim, dtype="int32"
|
|
383
|
+
)
|
|
384
|
+
batch_dim_.get_size_tensor().mark_as_output("batch_size", shape=[])
|
|
385
|
+
start_states.mark_as_output("start_states", shape=[batch_dim_])
|
|
386
|
+
scores = rf.scatter(
|
|
387
|
+
rf.zeros([batch_dim_]),
|
|
388
|
+
indices=start_states,
|
|
389
|
+
indices_dim=[batch_dim_],
|
|
390
|
+
fill_value=float("-inf"),
|
|
391
|
+
) # [S], per state
|
|
392
|
+
scores.mark_as_default_output(shape=[states_dim])
|
|
393
|
+
|
|
394
|
+
res = run_model(TensorDict(), lambda *, epoch, step: rf.Module(), _forward_step, test_tensorflow=False)
|
|
395
|
+
batch_size = res["batch_size"].raw_tensor.item()
|
|
396
|
+
assert res["start_states"].raw_tensor.shape == (batch_size,)
|
|
397
|
+
assert res["output"].raw_tensor.shape == (states_dim.dimension,)
|
|
398
|
+
assert res["output"].raw_tensor.tolist().count(0.0) == batch_size
|
|
399
|
+
assert res["output"].raw_tensor.tolist().count(float("-inf")) == states_dim.dimension - batch_size
|
|
400
|
+
assert states_dim.dimension > batch_size
|
|
401
|
+
for i in range(states_dim.dimension):
|
|
402
|
+
if i in res["start_states"].raw_tensor:
|
|
403
|
+
assert res["output"].raw_tensor[i] == 0.0
|
|
404
|
+
else:
|
|
405
|
+
assert res["output"].raw_tensor[i] == float("-inf")
|
|
406
|
+
|
|
407
|
+
|
|
376
408
|
def test_slice():
|
|
377
409
|
time_dim = Dim(Tensor("time", [batch_dim], dtype="int32"))
|
|
378
410
|
in_dim = Dim(7, name="in")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/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.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-chunking-blstm.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-contribrnn-lstm.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-maxgradnorm-lstm.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-native-lstm-lowmem.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-native-lstm.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-native-lstm2.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-native-lstm2.12ax.tuned.config
RENAMED
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-neural-transducer.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-rec-explicit-lstm.config
RENAMED
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-rec-explicit-rnn.config
RENAMED
|
File without changes
|
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-search-compiled-graph.py
RENAMED
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-tf-vanilla-lstm.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/demo-upd-mult-model.lstm.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png
RENAMED
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png
RENAMED
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/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.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/create_IAM_dataset.py
RENAMED
|
File without changes
|
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/IAM/features/raw/demo.h5
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/artificial/create_test_h5.py
RENAMED
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/artificial/forwardconfig
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/artificial_rgb/create_test_h5.py
RENAMED
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/artificial_rgb/forwardconfig
RENAMED
|
File without changes
|
|
File without changes
|
{returnn-1.20240924.10718 → returnn-1.20240925.224259}/demos/mdlstm/artificial_rgb/trainconfig
RENAMED
|
File without changes
|
|
File without changes
|