returnn 1.20240620.64807__tar.gz → 1.20240620.201955__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.20240620.64807/returnn.egg-info → returnn-1.20240620.201955}/PKG-INFO +1 -1
- returnn-1.20240620.201955/_setup_info_generated.py +2 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/util/vocabulary.py +41 -5
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/bpe.py +91 -53
- {returnn-1.20240620.64807 → returnn-1.20240620.201955/returnn.egg-info}/PKG-INFO +1 -1
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_Util.py +132 -2
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/bpe-create-lexicon.py +1 -1
- returnn-1.20240620.64807/_setup_info_generated.py +0 -2
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/.editorconfig +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/.gitignore +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/.gitmodules +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/.kateconfig +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/CHANGELOG.md +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/CODEOWNERS +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/CONTRIBUTING.md +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/LICENSE +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/MANIFEST.in +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/README.rst +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/12AX.cluster_map +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/_setup_returnn_env.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-fwd.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-horovod-mpi.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-horovod-mpi.py.sh +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-horovod-mpi.sh +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-hyper-param-tuning.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-iter-dataset.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-list-devices.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-lua-torch-layer.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-pretrain.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-record-and-push-to-webserver.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-returnn-as-framework.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-rf-pt-benchmark.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-rf.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-rhn-enwik8.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-sprint-interface.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-att-copy.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-attention.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-enc-dec.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-hard-att-copy.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-lstm-benchmark.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-native-lstm.12ax.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-native-lstm2.12ax.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-neural-transducer.12ax.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-rec-explicit-lstm.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-rec-explicit-rnn.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-rec-self-att.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-search-compiled-graph.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-timit-lstm-ctc.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-torch.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo.sh +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/IAM/README.txt +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/IAM/chars.txt +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/IAM/config_demo +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/IAM/config_fwd +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/IAM/config_real +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/IAM/decode.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/IAM/go.sh +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/IAM/lines.txt +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/IAM/split/eval.txt +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/IAM/split/train.txt +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/IAM/split/valid.txt +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/README.md +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/artificial/create_test_h5.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/artificial/forwardconfig +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/artificial/go.sh +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/artificial/trainconfig +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/artificial_rgb/go.sh +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/pyproject.toml +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/requirements.txt +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/__main__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/__old_mod_loader__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/__setup__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/config.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/audio.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/basic.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/bundle_file.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/cached.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/cached2.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/distrib_files.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/generating.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/hdf.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/lm.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/map.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/meta.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/multi_proc.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/normalization_data.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/numpy_dump.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/raw_wav.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/sprint.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/stereo.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/util/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/util/feature_extraction.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/datasets/util/strings.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/engine/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/engine/base.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/engine/batch.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/__main__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/.git +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/graph_editor/README.md +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/graph_editor/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/graph_editor/edit.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/graph_editor/reroute.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/graph_editor/select.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/graph_editor/subgraph.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/graph_editor/transform.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/extern/graph_editor/util.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/forward_iface.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/_backend.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/_native/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/_native/backend.cpp +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/_native/backend.hpp +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/_native/module.cpp +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/_native/module.hpp +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/_native/py_utils.hpp +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/_native/tensor_ops.cpp +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/_native/tensor_ops.hpp +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/_numpy_backend.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/_random_journal.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/_utils.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/array_.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/attention.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/audio/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/audio/mel.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/audio/specaugment.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/backend.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/build_from_dict.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/cond.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/const.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/container.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/control_flow_ctx.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/conv.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/decoder/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/decoder/transformer.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/device.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/dims.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/dropout.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/dtype.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/encoder/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/encoder/base.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/encoder/conformer.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/gradient.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/graph.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/hooks.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/init.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/label_smoothing.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/linear.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/loop.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/loss.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/math_.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/matmul.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/module.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/normalization.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/parameter.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/piecewise_linear.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/rand.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/rec.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/reduce.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/run_ctx.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/signal.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/state.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/stepwise_scheduler.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/tensor_array.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/frontend/types.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/import_/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/import_/common.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/import_/git.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/import_/import_.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/learning_rate_control.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/log.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/native_op.cpp +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/native_op.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/pretrain.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/sprint/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/sprint/cache.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/sprint/control.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/sprint/error_signals.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/sprint/extern_interface.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/sprint/interface.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tensor/README.md +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tensor/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tensor/_dim_extra.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tensor/_tensor_extra.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tensor/_tensor_mixin_base.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tensor/_tensor_op_overloads.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tensor/control_flow_ctx.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tensor/dim.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tensor/marked_dim.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tensor/tensor.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tensor/tensor_dict.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tensor/utils.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/compat.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/data_pipeline.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/distributed.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/engine.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/frontend_layers/README.md +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/frontend_layers/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/frontend_layers/_backend.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/frontend_layers/_utils.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/frontend_layers/cond.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/frontend_layers/dims.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/frontend_layers/layer.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/frontend_layers/loop.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/frontend_layers/make_layer.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/frontend_layers/masked_computation.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/frontend_low_level/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/frontend_low_level/_backend.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/horovod.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/hyper_param_tuning.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/layers/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/layers/base.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/layers/basic.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/layers/rec.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/layers/segmental_model.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/layers/signal_processing.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/layers/variable.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/native_op.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/network.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/sprint.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/updater.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/util/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/util/basic.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/util/data.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/util/gradient_checkpoint.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/util/ken_lm.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/tf/util/open_fst.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/README.md +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/data/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/data/extern_data.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/data/pipeline.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/data/queued_data_iter.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/data/tensor_utils.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/distributed.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/engine.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/frontend/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/frontend/_backend.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/frontend/_rand.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/frontend/bridge.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/frontend/raw_ops.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/updater.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/util/README.md +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/util/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/util/diagnose_gpu.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/torch/util/scaled_gradient.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/__init__.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/basic.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/better_exchook.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/debug.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/debug_helpers.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/file_cache.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/fsa.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/literal_py_to_pickle.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/math.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/native_code_compiler.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/pprint.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/py-to-pickle.cpp +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/py_compat.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/py_ext_mod_compiler.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/result_with_reason.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/sig_proc.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/task_system.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/train_proc_manager.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn/util/watch_memory.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn.egg-info/SOURCES.txt +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn.egg-info/dependency_links.txt +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/returnn.egg-info/top_level.txt +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/rnn.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/setup.cfg +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/setup.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/DummySprintExec.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/PyCharm-inspection-profile.xml +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/PyCharm.idea/.gitignore +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/PyCharm.idea/.name +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/PyCharm.idea/misc.xml +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/PyCharm.idea/modules.xml +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/PyCharm.idea/returnn.iml +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/_set_num_threads1.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/_setup_returnn_env.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/_setup_test_env.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/bpe-unicode-demo.codes +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/bpe-unicode-demo.vocab +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/lexicon_opt.fst +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/lexicon_opt.isyms +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/lexicon_opt.jpg +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/lexicon_opt.osyms +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/lint_common.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/pycharm-inspect.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/pylint.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/returnn-as-framework.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/rf_utils.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/spelling.dic +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_Config.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_Dataset.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_Fsa.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_GeneratingDataset.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_HDFDataset.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_LearningRateControl.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_Log.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_MultiProcDataset.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_Pretrain.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_ResNet.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_SprintDataset.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_SprintInterface.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_TFEngine.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_TFNativeOp.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_TFNetworkLayer.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_TFNetworkRecLayer.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_TFNetworkSigProcLayer.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_TFUpdater.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_TFUtil.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_TF_determinism.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_TaskSystem.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_TaskSystem_SharedMem.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_TranslationDataset.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_demos.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_fork_exec.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_hdf_dump.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_rf_array.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_rf_attention.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_rf_base.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_rf_cond.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_rf_const.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_rf_container.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_rf_conv.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_rf_encoder_conformer.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_rf_gradient.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_rf_label_smoothing.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_rf_loop.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_rf_math.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_rf_normalization.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_rf_piecewise_linear.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_rf_rec.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_rf_reduce.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_rf_signal.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_tensor.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_tools.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_torch_dataset.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_torch_engine.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_torch_frontend.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tests/test_torch_internal_frontend.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/_setup_returnn_env.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/analyze-dataset-batches.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/bliss-collect-seq-lens.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/bliss-dump-text.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/bliss-get-segment-names.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/bliss-to-ogg-zip.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/calculate-word-error-rate.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/cleanup-old-models.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/collect-orth-symbols.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/collect-words.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/compile_native_op.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/compile_tf_graph.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/debug-dump-search-scores.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/debug-plot-search-scores.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/dump-dataset-raw-strings.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/dump-dataset.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/dump-forward-stats.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/dump-forward.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/dump-network-json.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/dump-pickle.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/extract_state_tying_from_dataset.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/get-attention-weights.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/get-best-model-epoch.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/hdf_dump.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/hdf_dump_translation_dataset.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/import-blocks-mt-model.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/import-t2t-mt-model.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/lattice_rescorer/.gitignore +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/lattice_rescorer/Makefile +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/lattice_rescorer/README.md +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/lattice_rescorer/example/README.md +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/lattice_rescorer/example/libs_list +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/lattice_rescorer/example/state_vars_list +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/lattice_rescorer/example/tensor_names_list +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/lattice_rescorer/file.h +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/lattice_rescorer/main.cc +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/lattice_rescorer/rescorer.h +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/lattice_rescorer/vocabulary.cc +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/lattice_rescorer/vocabulary.h +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/tf_avg_checkpoints.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/tf_inspect_checkpoint.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/tf_inspect_summary_log.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/torch_avg_checkpoints.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/torch_export_to_onnx.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/torch_inspect_checkpoint.py +0 -0
- {returnn-1.20240620.64807 → returnn-1.20240620.201955}/tools/torch_inspect_checkpoint_and_opt.py +0 -0
|
@@ -19,6 +19,7 @@ import sys
|
|
|
19
19
|
import numpy
|
|
20
20
|
|
|
21
21
|
from returnn.log import log
|
|
22
|
+
from returnn.util.basic import NotSpecified
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
class Vocabulary(object):
|
|
@@ -327,14 +328,48 @@ class SamplingBytePairEncoding(Vocabulary):
|
|
|
327
328
|
This will encode the text on-the-fly with BPE.
|
|
328
329
|
"""
|
|
329
330
|
|
|
330
|
-
def __init__(
|
|
331
|
+
def __init__(
|
|
332
|
+
self,
|
|
333
|
+
vocab_file: str,
|
|
334
|
+
breadth_prob: float,
|
|
335
|
+
seq_postfix: Optional[List[int]] = None,
|
|
336
|
+
label_postfix_merge_symbol: Optional[str] = NotSpecified,
|
|
337
|
+
word_prefix_symbol: Optional[str] = NotSpecified,
|
|
338
|
+
**kwargs,
|
|
339
|
+
):
|
|
331
340
|
"""
|
|
332
|
-
:param
|
|
333
|
-
:param
|
|
334
|
-
:param
|
|
341
|
+
:param vocab_file:
|
|
342
|
+
:param breadth_prob:
|
|
343
|
+
:param seq_postfix: labels will be added to the seq in self.get_seq
|
|
344
|
+
:param label_postfix_merge_symbol: If given, will use this as label postfix merge symbol,
|
|
345
|
+
i.e. when this occurs at the end of a label, it is supposed to be merged with the next label,
|
|
346
|
+
i.e. the space between them is removed and is not a word boundary.
|
|
347
|
+
If None, will not use any postfix merge symbol.
|
|
348
|
+
If not specified, and also word_prefix_symbol is not specified, will use "@@" by default here,
|
|
349
|
+
the standard from subword-nmt, and our original behavior.
|
|
350
|
+
:param word_prefix_symbol: If given, every new word starts with this symbol.
|
|
351
|
+
This also implies that there are no spaces between words
|
|
352
|
+
and this symbol is a placeholder for the space.
|
|
353
|
+
If None, will not use this logic.
|
|
354
|
+
For SentencePiece, you usually would use "▁" here.
|
|
335
355
|
"""
|
|
336
356
|
super(SamplingBytePairEncoding, self).__init__(vocab_file=vocab_file, seq_postfix=seq_postfix, **kwargs)
|
|
337
|
-
from returnn.util.bpe import SamplingBytePairEncoder
|
|
357
|
+
from returnn.util.bpe import SamplingBytePairEncoder, BpePostMergeSymbol, BpeOpts
|
|
358
|
+
|
|
359
|
+
if label_postfix_merge_symbol is NotSpecified and word_prefix_symbol is NotSpecified:
|
|
360
|
+
label_postfix_merge_symbol = BpePostMergeSymbol
|
|
361
|
+
word_prefix_symbol = None
|
|
362
|
+
else:
|
|
363
|
+
if label_postfix_merge_symbol is NotSpecified:
|
|
364
|
+
label_postfix_merge_symbol = None
|
|
365
|
+
if word_prefix_symbol is NotSpecified:
|
|
366
|
+
word_prefix_symbol = None
|
|
367
|
+
if word_prefix_symbol is not None:
|
|
368
|
+
# I'm not sure if this makes sense otherwise...
|
|
369
|
+
assert label_postfix_merge_symbol is None, (
|
|
370
|
+
f"{self}: word_prefix_symbol {word_prefix_symbol},"
|
|
371
|
+
f" label_postfix_merge_symbol {label_postfix_merge_symbol}"
|
|
372
|
+
)
|
|
338
373
|
|
|
339
374
|
self.rnd = numpy.random.RandomState(0)
|
|
340
375
|
self.bpe = SamplingBytePairEncoder(
|
|
@@ -342,6 +377,7 @@ class SamplingBytePairEncoding(Vocabulary):
|
|
|
342
377
|
breadth_prob=breadth_prob,
|
|
343
378
|
rnd=self.rnd,
|
|
344
379
|
unknown_label=self.id_to_label(self.unknown_label_id) if self.unknown_label_id is not None else None,
|
|
380
|
+
opts=BpeOpts(label_postfix_merge_symbol=label_postfix_merge_symbol, word_prefix_symbol=word_prefix_symbol),
|
|
345
381
|
)
|
|
346
382
|
|
|
347
383
|
def set_random_seed(self, seed):
|
|
@@ -4,6 +4,7 @@ Provide basic Byte-Pair-Encoding (BPE) utilities.
|
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
from typing import Optional, List, Dict, Callable
|
|
7
|
+
from dataclasses import dataclass
|
|
7
8
|
import re
|
|
8
9
|
import numpy
|
|
9
10
|
|
|
@@ -227,70 +228,69 @@ class StandardBytePairEncoder:
|
|
|
227
228
|
return output
|
|
228
229
|
|
|
229
230
|
|
|
231
|
+
@dataclass
|
|
232
|
+
class BpeOpts:
|
|
233
|
+
"""
|
|
234
|
+
Options, should allow for both subword-nmt BPE and SentencePiece BPE/Unigram.
|
|
235
|
+
"""
|
|
236
|
+
|
|
237
|
+
label_postfix_merge_symbol: Optional[str] = None # eg. "@@"
|
|
238
|
+
word_prefix_symbol: Optional[str] = None # eg. "▁"
|
|
239
|
+
|
|
240
|
+
|
|
230
241
|
class PrefixTree:
|
|
231
242
|
"""
|
|
232
243
|
Prefix tree / trie.
|
|
233
244
|
This class represents both a single node and the tree.
|
|
234
245
|
"""
|
|
235
246
|
|
|
236
|
-
def __init__(self, prefix: str = "",
|
|
247
|
+
def __init__(self, *, prefix: str = "", opts: BpeOpts):
|
|
237
248
|
"""
|
|
238
|
-
:param prefix:
|
|
239
|
-
:param root:
|
|
249
|
+
:param prefix: if this is not the root, the prefix to get here
|
|
240
250
|
"""
|
|
241
251
|
self.prefix = prefix
|
|
242
252
|
self.arcs: Dict[str, PrefixTree] = {} # single char (or BpePostMergeSymbol) -> sub tree
|
|
243
|
-
self.finished = False #
|
|
253
|
+
self.finished = False # label finished here
|
|
244
254
|
self.bpe_finished = False # partial word finished here with BpePostMergeSymbol at end
|
|
245
|
-
self.
|
|
246
|
-
self.root = root
|
|
255
|
+
self.opts = opts
|
|
247
256
|
|
|
248
|
-
def add(self, postfix: str
|
|
257
|
+
def add(self, postfix: str) -> PrefixTree:
|
|
249
258
|
"""
|
|
250
259
|
:param postfix:
|
|
251
|
-
:param root:
|
|
252
260
|
"""
|
|
253
|
-
if not root:
|
|
254
|
-
if self.is_root:
|
|
255
|
-
root = self
|
|
256
|
-
else:
|
|
257
|
-
assert self.root
|
|
258
|
-
root = self.root
|
|
259
261
|
self_ = self
|
|
262
|
+
opts = self.opts
|
|
263
|
+
label_postfix_merge_symbol = self.opts.label_postfix_merge_symbol
|
|
260
264
|
while True:
|
|
261
|
-
if
|
|
265
|
+
if self_ is self and opts.word_prefix_symbol and postfix.startswith(opts.word_prefix_symbol):
|
|
266
|
+
arc = opts.word_prefix_symbol
|
|
267
|
+
elif postfix == label_postfix_merge_symbol:
|
|
262
268
|
arc = postfix
|
|
263
|
-
postfix_ = ""
|
|
264
269
|
else:
|
|
265
270
|
arc = postfix[:1]
|
|
266
|
-
|
|
271
|
+
postfix_ = postfix[len(arc) :]
|
|
267
272
|
if arc in self_.arcs:
|
|
268
273
|
child = self_.arcs[arc]
|
|
269
274
|
else:
|
|
270
|
-
child = PrefixTree(
|
|
275
|
+
child = PrefixTree(prefix=self_.prefix + arc, opts=opts)
|
|
271
276
|
self_.arcs[arc] = child
|
|
272
|
-
if arc ==
|
|
277
|
+
if arc == label_postfix_merge_symbol and not postfix_:
|
|
273
278
|
self_.bpe_finished = True
|
|
274
|
-
if postfix_:
|
|
275
|
-
self_ = child
|
|
276
|
-
postfix = postfix_
|
|
277
|
-
else:
|
|
279
|
+
if not postfix_:
|
|
278
280
|
child.finished = True
|
|
279
281
|
return child
|
|
282
|
+
self_ = child
|
|
283
|
+
postfix = postfix_
|
|
280
284
|
|
|
281
285
|
|
|
286
|
+
@dataclass
|
|
282
287
|
class Hyp:
|
|
283
288
|
"""
|
|
284
289
|
Represents a hypothesis in the search.
|
|
285
290
|
"""
|
|
286
291
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
:param list[str] bpe_sym_history:
|
|
290
|
-
:param PrefixTree cur_node:
|
|
291
|
-
"""
|
|
292
|
-
self.bpe_sym_history = bpe_sym_history
|
|
293
|
-
self.cur_node = cur_node
|
|
292
|
+
bpe_sym_history: List[str]
|
|
293
|
+
cur_node: PrefixTree
|
|
294
294
|
|
|
295
295
|
|
|
296
296
|
class CharSyncSearch:
|
|
@@ -305,9 +305,15 @@ class CharSyncSearch:
|
|
|
305
305
|
:param word_pos:
|
|
306
306
|
"""
|
|
307
307
|
self.bpe = bpe
|
|
308
|
+
self.opts = bpe.opts
|
|
308
309
|
self.word = word
|
|
309
310
|
self.word_pos = word_pos
|
|
310
|
-
self.hyps: List[Hyp] = [
|
|
311
|
+
self.hyps: List[Hyp] = [
|
|
312
|
+
Hyp(
|
|
313
|
+
bpe_sym_history=[],
|
|
314
|
+
cur_node=bpe if self.opts.word_prefix_symbol is None else bpe.arcs[self.opts.word_prefix_symbol],
|
|
315
|
+
)
|
|
316
|
+
]
|
|
311
317
|
self.final_bpe_seqs: Optional[List[List[str]]] = None
|
|
312
318
|
|
|
313
319
|
def _get_finished(self):
|
|
@@ -329,10 +335,17 @@ class CharSyncSearch:
|
|
|
329
335
|
if next_node:
|
|
330
336
|
new_hyps.append(
|
|
331
337
|
Hyp(
|
|
332
|
-
bpe_sym_history=hyp.bpe_sym_history
|
|
338
|
+
bpe_sym_history=hyp.bpe_sym_history
|
|
339
|
+
+ [hyp.cur_node.prefix + self.opts.label_postfix_merge_symbol],
|
|
333
340
|
cur_node=next_node,
|
|
334
341
|
)
|
|
335
342
|
)
|
|
343
|
+
if self.opts.word_prefix_symbol is not None and hyp.cur_node.finished:
|
|
344
|
+
next_node = self.bpe.arcs.get(char)
|
|
345
|
+
if next_node:
|
|
346
|
+
new_hyps.append(
|
|
347
|
+
Hyp(bpe_sym_history=hyp.bpe_sym_history + [hyp.cur_node.prefix], cur_node=next_node)
|
|
348
|
+
)
|
|
336
349
|
next_node = hyp.cur_node.arcs.get(char)
|
|
337
350
|
if next_node:
|
|
338
351
|
new_hyps.append(Hyp(bpe_sym_history=hyp.bpe_sym_history, cur_node=next_node))
|
|
@@ -349,20 +362,15 @@ class CharSyncSearch:
|
|
|
349
362
|
return self.final_bpe_seqs
|
|
350
363
|
|
|
351
364
|
|
|
365
|
+
@dataclass
|
|
352
366
|
class HypInPos:
|
|
353
367
|
"""
|
|
354
368
|
Represents a hypothesis in the search.
|
|
355
369
|
"""
|
|
356
370
|
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
:param PrefixTree cur_node:
|
|
361
|
-
:param int pos:
|
|
362
|
-
"""
|
|
363
|
-
self.bpe_sym_history = bpe_sym_history
|
|
364
|
-
self.cur_node = cur_node
|
|
365
|
-
self.pos = pos
|
|
371
|
+
bpe_sym_history: List[str]
|
|
372
|
+
cur_node: PrefixTree
|
|
373
|
+
pos: int
|
|
366
374
|
|
|
367
375
|
|
|
368
376
|
class DepthFirstSearch:
|
|
@@ -377,11 +385,18 @@ class DepthFirstSearch:
|
|
|
377
385
|
:param sampler:
|
|
378
386
|
"""
|
|
379
387
|
self.bpe = bpe
|
|
388
|
+
self.opts = bpe.opts
|
|
380
389
|
self.word = word
|
|
381
390
|
self.sampler = sampler
|
|
382
391
|
self.hyps: List[HypInPos] = []
|
|
383
392
|
self.final_bpe_seq: Optional[List[str]] = None
|
|
384
|
-
self._add_hyp(
|
|
393
|
+
self._add_hyp(
|
|
394
|
+
HypInPos(
|
|
395
|
+
bpe_sym_history=[],
|
|
396
|
+
cur_node=bpe if self.opts.word_prefix_symbol is None else bpe.arcs[self.opts.word_prefix_symbol],
|
|
397
|
+
pos=0,
|
|
398
|
+
)
|
|
399
|
+
)
|
|
385
400
|
|
|
386
401
|
def _add_hyp(self, hyp: HypInPos):
|
|
387
402
|
if hyp.pos >= len(self.word):
|
|
@@ -402,16 +417,26 @@ class DepthFirstSearch:
|
|
|
402
417
|
if next_node:
|
|
403
418
|
new_hyps.append(
|
|
404
419
|
HypInPos(
|
|
405
|
-
bpe_sym_history=hyp.bpe_sym_history
|
|
420
|
+
bpe_sym_history=hyp.bpe_sym_history
|
|
421
|
+
+ [hyp.cur_node.prefix + self.opts.label_postfix_merge_symbol],
|
|
406
422
|
cur_node=next_node,
|
|
407
423
|
pos=hyp.pos + 1,
|
|
408
424
|
)
|
|
409
425
|
)
|
|
426
|
+
if self.opts.word_prefix_symbol is not None and hyp.cur_node.finished:
|
|
427
|
+
next_node = self.bpe.arcs.get(char)
|
|
428
|
+
if next_node:
|
|
429
|
+
new_hyps.append(
|
|
430
|
+
HypInPos(
|
|
431
|
+
bpe_sym_history=hyp.bpe_sym_history + [hyp.cur_node.prefix], cur_node=next_node, pos=hyp.pos + 1
|
|
432
|
+
)
|
|
433
|
+
)
|
|
410
434
|
next_node = hyp.cur_node.arcs.get(char)
|
|
411
435
|
if next_node:
|
|
412
436
|
new_hyps.append(HypInPos(bpe_sym_history=hyp.bpe_sym_history, cur_node=next_node, pos=hyp.pos + 1))
|
|
413
437
|
|
|
414
438
|
# Note that the order we check them will make this a depth-first or breadth-first search.
|
|
439
|
+
# We pop(-1) from the hyps list. So the last entry we add here will be the next one we expand.
|
|
415
440
|
if self.sampler and self.sampler():
|
|
416
441
|
new_hyps = list(reversed(new_hyps))
|
|
417
442
|
for hyp in new_hyps:
|
|
@@ -431,13 +456,22 @@ class SamplingBytePairEncoder:
|
|
|
431
456
|
Will randomly sample from any possible BPE split.
|
|
432
457
|
"""
|
|
433
458
|
|
|
434
|
-
def __init__(
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
:
|
|
438
|
-
|
|
439
|
-
:
|
|
440
|
-
:
|
|
459
|
+
def __init__(
|
|
460
|
+
self,
|
|
461
|
+
*,
|
|
462
|
+
labels: List[str],
|
|
463
|
+
breadth_prob: float,
|
|
464
|
+
rnd: numpy.random.RandomState,
|
|
465
|
+
unknown_label: Optional[str] = None,
|
|
466
|
+
opts: BpeOpts,
|
|
467
|
+
):
|
|
468
|
+
"""
|
|
469
|
+
:param labels: vocab
|
|
470
|
+
:param breadth_prob: 1.0 will lead to breadth-first search, 0.0 to depth-first search.
|
|
471
|
+
other values are stochastic.
|
|
472
|
+
:param rnd:
|
|
473
|
+
:param unknown_label:
|
|
474
|
+
:param opts:
|
|
441
475
|
"""
|
|
442
476
|
self.labels = labels
|
|
443
477
|
self.unknown_label = unknown_label
|
|
@@ -445,9 +479,10 @@ class SamplingBytePairEncoder:
|
|
|
445
479
|
assert unknown_label in self.labels
|
|
446
480
|
self.breadth_prob = breadth_prob
|
|
447
481
|
self.rnd = rnd
|
|
482
|
+
self.opts = opts
|
|
448
483
|
|
|
449
484
|
# build prefix tree
|
|
450
|
-
bpe = PrefixTree()
|
|
485
|
+
bpe = PrefixTree(opts=opts)
|
|
451
486
|
for bpe_sym in labels:
|
|
452
487
|
bpe.add(bpe_sym)
|
|
453
488
|
self._bpe_prefix_tree = bpe
|
|
@@ -514,9 +549,10 @@ def _demo():
|
|
|
514
549
|
|
|
515
550
|
vocab = Vocabulary(vocab_file=args.vocab, unknown_label=None)
|
|
516
551
|
rnd = numpy.random.RandomState(args.seed)
|
|
552
|
+
opts = BpeOpts(label_postfix_merge_symbol=BpePostMergeSymbol)
|
|
517
553
|
|
|
518
554
|
if args.input:
|
|
519
|
-
bpe_prefix_tree = PrefixTree()
|
|
555
|
+
bpe_prefix_tree = PrefixTree(opts=opts)
|
|
520
556
|
for bpe_sym in vocab.labels:
|
|
521
557
|
bpe_prefix_tree.add(bpe_sym)
|
|
522
558
|
|
|
@@ -533,7 +569,9 @@ def _demo():
|
|
|
533
569
|
print("%s: %s" % (word, " ".join(greedy)))
|
|
534
570
|
return
|
|
535
571
|
|
|
536
|
-
bpe = SamplingBytePairEncoder(
|
|
572
|
+
bpe = SamplingBytePairEncoder(
|
|
573
|
+
labels=vocab.labels, breadth_prob=args.breadth_prob, rnd=rnd, unknown_label=args.unk, opts=opts
|
|
574
|
+
)
|
|
537
575
|
print("Reading from stdin:")
|
|
538
576
|
while True:
|
|
539
577
|
try:
|
|
@@ -638,9 +638,9 @@ def test_expand_env_vars():
|
|
|
638
638
|
|
|
639
639
|
|
|
640
640
|
def test_bpe_PrefixTree():
|
|
641
|
-
from returnn.util.bpe import PrefixTree, BpePostMergeSymbol
|
|
641
|
+
from returnn.util.bpe import PrefixTree, BpeOpts, BpePostMergeSymbol
|
|
642
642
|
|
|
643
|
-
tree = PrefixTree()
|
|
643
|
+
tree = PrefixTree(opts=BpeOpts(label_postfix_merge_symbol=BpePostMergeSymbol))
|
|
644
644
|
tree.add("hello")
|
|
645
645
|
tree.add("helo" + BpePostMergeSymbol)
|
|
646
646
|
assert not tree.finished and not tree.bpe_finished
|
|
@@ -663,6 +663,136 @@ def test_bpe_PrefixTree():
|
|
|
663
663
|
assert set(node_o_post.arcs.keys()) == set()
|
|
664
664
|
|
|
665
665
|
|
|
666
|
+
def test_bpe_PrefixTree_word_prefix():
|
|
667
|
+
from returnn.util.bpe import PrefixTree, BpeOpts
|
|
668
|
+
|
|
669
|
+
tree = PrefixTree(opts=BpeOpts(word_prefix_symbol="▁"))
|
|
670
|
+
tree.add("▁hello")
|
|
671
|
+
tree.add("▁hel")
|
|
672
|
+
tree.add("lo")
|
|
673
|
+
tree.add("▁hi")
|
|
674
|
+
assert not tree.finished and not tree.bpe_finished
|
|
675
|
+
assert set(tree.arcs.keys()) == {"▁", "l"}
|
|
676
|
+
node = tree.arcs["▁"]
|
|
677
|
+
assert not node.finished and not node.bpe_finished
|
|
678
|
+
assert set(node.arcs.keys()) == {"h"}
|
|
679
|
+
node = node.arcs["h"]
|
|
680
|
+
assert not node.finished and not node.bpe_finished
|
|
681
|
+
assert set(node.arcs.keys()) == {"e", "i"}
|
|
682
|
+
node_ = node.arcs["i"]
|
|
683
|
+
assert node_.finished and not node_.bpe_finished and not node_.arcs
|
|
684
|
+
node = node.arcs["e"]
|
|
685
|
+
assert not node.finished and not node.bpe_finished
|
|
686
|
+
assert set(node.arcs.keys()) == {"l"}
|
|
687
|
+
node = node.arcs["l"]
|
|
688
|
+
assert node.finished and not node.bpe_finished
|
|
689
|
+
assert set(node.arcs.keys()) == {"l"}
|
|
690
|
+
node = node.arcs["l"]
|
|
691
|
+
assert not node.finished and not node.bpe_finished
|
|
692
|
+
assert set(node.arcs.keys()) == {"o"}
|
|
693
|
+
node = node.arcs["o"]
|
|
694
|
+
assert node.finished and not node.bpe_finished and not node.arcs
|
|
695
|
+
|
|
696
|
+
|
|
697
|
+
def test_bpe_DepthFirstSearch():
|
|
698
|
+
import itertools
|
|
699
|
+
from returnn.util.bpe import PrefixTree, BpeOpts, DepthFirstSearch
|
|
700
|
+
|
|
701
|
+
tree = PrefixTree(opts=BpeOpts(label_postfix_merge_symbol="@@"))
|
|
702
|
+
tree.add("llo")
|
|
703
|
+
tree.add("helo@@")
|
|
704
|
+
tree.add("he@@")
|
|
705
|
+
|
|
706
|
+
dfs = DepthFirstSearch(tree, "hello")
|
|
707
|
+
assert_equal(dfs.search(), ["he@@", "llo"])
|
|
708
|
+
dfs = DepthFirstSearch(tree, "helo")
|
|
709
|
+
assert_equal(dfs.search(), None)
|
|
710
|
+
dfs = DepthFirstSearch(tree, "x")
|
|
711
|
+
assert_equal(dfs.search(), None)
|
|
712
|
+
dfs = DepthFirstSearch(tree, "llo")
|
|
713
|
+
assert_equal(dfs.search(), ["llo"])
|
|
714
|
+
|
|
715
|
+
tree.add("hello")
|
|
716
|
+
dfs = DepthFirstSearch(tree, "hello")
|
|
717
|
+
assert_equal(dfs.search(), ["hello"])
|
|
718
|
+
dfs = DepthFirstSearch(tree, "hello", sampler=lambda: True)
|
|
719
|
+
assert_equal(dfs.search(), ["he@@", "llo"])
|
|
720
|
+
|
|
721
|
+
tree.add("hel@@")
|
|
722
|
+
tree.add("lo")
|
|
723
|
+
dfs = DepthFirstSearch(tree, "hello")
|
|
724
|
+
assert_equal(dfs.search(), ["hello"])
|
|
725
|
+
dfs = DepthFirstSearch(tree, "hello", sampler=lambda: True)
|
|
726
|
+
assert_equal(dfs.search(), ["he@@", "llo"])
|
|
727
|
+
dfs = DepthFirstSearch(tree, "hello", sampler=lambda _it=itertools.count(): next(_it) in {3})
|
|
728
|
+
assert_equal(dfs.search(), ["hel@@", "lo"])
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
def test_bpe_DepthFirstSearch_word_prefix():
|
|
732
|
+
import itertools
|
|
733
|
+
from returnn.util.bpe import PrefixTree, BpeOpts, DepthFirstSearch
|
|
734
|
+
|
|
735
|
+
tree = PrefixTree(opts=BpeOpts(word_prefix_symbol="▁"))
|
|
736
|
+
tree.add("▁hello")
|
|
737
|
+
tree.add("▁hel")
|
|
738
|
+
tree.add("lo")
|
|
739
|
+
|
|
740
|
+
search = DepthFirstSearch(tree, "hello")
|
|
741
|
+
assert_equal(search.search(), ["▁hello"])
|
|
742
|
+
search = DepthFirstSearch(tree, "hello", sampler=lambda: True)
|
|
743
|
+
assert_equal(search.search(), ["▁hel", "lo"])
|
|
744
|
+
|
|
745
|
+
tree.add("▁he")
|
|
746
|
+
tree.add("llo")
|
|
747
|
+
search = DepthFirstSearch(tree, "hello", sampler=lambda: True)
|
|
748
|
+
assert_equal(search.search(), ["▁he", "llo"])
|
|
749
|
+
search = DepthFirstSearch(tree, "hello", sampler=lambda _it=itertools.count(): next(_it) in {3})
|
|
750
|
+
assert_equal(search.search(), ["▁hel", "lo"])
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
def test_bpe_CharSyncSearch():
|
|
754
|
+
from returnn.util.bpe import PrefixTree, BpeOpts, CharSyncSearch
|
|
755
|
+
|
|
756
|
+
tree = PrefixTree(opts=BpeOpts(label_postfix_merge_symbol="@@"))
|
|
757
|
+
tree.add("llo")
|
|
758
|
+
tree.add("helo@@")
|
|
759
|
+
tree.add("he@@")
|
|
760
|
+
|
|
761
|
+
search = CharSyncSearch(tree, "hello")
|
|
762
|
+
assert_equal(search.search(), [["he@@", "llo"]])
|
|
763
|
+
search = CharSyncSearch(tree, "helo")
|
|
764
|
+
assert_equal(search.search(), [])
|
|
765
|
+
search = CharSyncSearch(tree, "x")
|
|
766
|
+
assert_equal(search.search(), [])
|
|
767
|
+
search = CharSyncSearch(tree, "llo")
|
|
768
|
+
assert_equal(search.search(), [["llo"]])
|
|
769
|
+
|
|
770
|
+
tree.add("hello")
|
|
771
|
+
search = CharSyncSearch(tree, "hello")
|
|
772
|
+
assert_equal(search.search(), [["he@@", "llo"], ["hello"]])
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
def test_bpe_CharSyncSearch_word_prefix():
|
|
776
|
+
from returnn.util.bpe import PrefixTree, BpeOpts, CharSyncSearch
|
|
777
|
+
|
|
778
|
+
tree = PrefixTree(opts=BpeOpts(word_prefix_symbol="▁"))
|
|
779
|
+
tree.add("▁hello")
|
|
780
|
+
tree.add("▁hel")
|
|
781
|
+
tree.add("lo")
|
|
782
|
+
tree.add("▁hi")
|
|
783
|
+
|
|
784
|
+
search = CharSyncSearch(tree, "hello")
|
|
785
|
+
assert_equal(search.search(), [["▁hel", "lo"], ["▁hello"]])
|
|
786
|
+
search = CharSyncSearch(tree, "helo")
|
|
787
|
+
assert_equal(search.search(), [])
|
|
788
|
+
search = CharSyncSearch(tree, "x")
|
|
789
|
+
assert_equal(search.search(), [])
|
|
790
|
+
search = CharSyncSearch(tree, "lo")
|
|
791
|
+
assert_equal(search.search(), [])
|
|
792
|
+
search = CharSyncSearch(tree, "hi")
|
|
793
|
+
assert_equal(search.search(), [["▁hi"]])
|
|
794
|
+
|
|
795
|
+
|
|
666
796
|
def test_file_cache():
|
|
667
797
|
from returnn.util.file_cache import FileCache, CachedFile
|
|
668
798
|
|
|
@@ -96,7 +96,7 @@ def main():
|
|
|
96
96
|
print("Words: num %i, first %r" % (len(words), words[0]))
|
|
97
97
|
|
|
98
98
|
print("Build BPE prefix tree...")
|
|
99
|
-
bpe = bpe_utils.PrefixTree()
|
|
99
|
+
bpe = bpe_utils.PrefixTree(opts=bpe_utils.BpeOpts(label_postfix_merge_symbol=bpe_utils.BpePostMergeSymbol))
|
|
100
100
|
for bpe_sym in bpe_syms:
|
|
101
101
|
bpe.add(bpe_sym)
|
|
102
102
|
|
|
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.20240620.64807 → returnn-1.20240620.201955}/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.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-chunking-blstm.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-contribrnn-lstm.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-maxgradnorm-lstm.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-native-lstm-lowmem.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-native-lstm.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-native-lstm2.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-native-lstm2.12ax.tuned.config
RENAMED
|
File without changes
|
{returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-neural-transducer.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-rec-explicit-lstm.config
RENAMED
|
File without changes
|
{returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-rec-explicit-rnn.config
RENAMED
|
File without changes
|
|
File without changes
|
{returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-search-compiled-graph.py
RENAMED
|
File without changes
|
{returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-tf-vanilla-lstm.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20240620.64807 → returnn-1.20240620.201955}/demos/demo-upd-mult-model.lstm.12ax.config
RENAMED
|
File without changes
|