returnn 1.20230719.125702__tar.gz → 1.20230727.163234__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.
- {returnn-1.20230719.125702/returnn.egg-info → returnn-1.20230727.163234}/PKG-INFO +1 -1
- returnn-1.20230727.163234/_setup_info_generated.py +2 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-rf.config +1 -1
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-torch.config +2 -1
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/run_ctx.py +3 -10
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/tensor_dict.py +46 -19
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/native_op.py +1 -1
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/engine.py +2 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234/returnn.egg-info}/PKG-INFO +1 -1
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/rf_utils.py +4 -4
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_demos.py +64 -4
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/torch_export_to_onnx.py +44 -10
- returnn-1.20230719.125702/_setup_info_generated.py +0 -2
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/.editorconfig +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/.gitignore +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/.gitmodules +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/.kateconfig +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/CHANGELOG.md +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/CODEOWNERS +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/CONTRIBUTING.md +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/LICENSE +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/MANIFEST.in +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/README.rst +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/12AX.cluster_map +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/_setup_returnn_env.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-fwd.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-horovod-mpi.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-horovod-mpi.py.sh +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-horovod-mpi.sh +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-hyper-param-tuning.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-iter-dataset.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-list-devices.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-lua-torch-layer.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-pretrain.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-record-and-push-to-webserver.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-returnn-as-framework.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-rhn-enwik8.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-sprint-interface.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-att-copy.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-attention.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-enc-dec.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-hard-att-copy.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-lstm-benchmark.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-native-lstm.12ax.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-native-lstm2.12ax.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-neural-transducer.12ax.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-rec-explicit-lstm.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-rec-explicit-rnn.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-rec-self-att.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-search-compiled-graph.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-timit-lstm-ctc.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo.sh +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/README.txt +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/chars.txt +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/config_demo +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/config_fwd +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/config_real +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/decode.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/go.sh +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/lines.txt +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/split/eval.txt +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/split/train.txt +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/split/valid.txt +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/README.md +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/artificial/create_test_h5.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/artificial/forwardconfig +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/artificial/go.sh +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/artificial/trainconfig +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/artificial_rgb/go.sh +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/pyproject.toml +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/requirements.txt +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/__main__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/__old_mod_loader__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/__setup__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/config.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/audio.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/basic.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/bundle_file.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/cached.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/cached2.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/generating.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/hdf.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/lm.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/map.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/meta.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/multi_proc.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/normalization_data.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/numpy_dump.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/raw_wav.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/sprint.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/stereo.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/util/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/util/feature_extraction.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/util/vocabulary.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/engine/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/engine/base.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/engine/batch.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/__main__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/.git +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/graph_editor/README.md +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/graph_editor/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/graph_editor/edit.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/graph_editor/reroute.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/graph_editor/select.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/graph_editor/subgraph.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/graph_editor/transform.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/graph_editor/util.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/forward_iface.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/_backend.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/_numpy_backend.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/_utils.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/array_.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/attention.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/cond.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/const.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/container.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/control_flow_ctx.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/conv.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/device.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/dims.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/dropout.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/dtype.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/encoder/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/encoder/base.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/encoder/conformer.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/gradient.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/init.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/linear.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/loop.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/loss.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/math_.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/matmul.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/module.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/normalization.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/parameter.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/rand.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/rec.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/reduce.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/signal.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/state.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/tensor_array.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/types.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/import_/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/import_/common.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/import_/git.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/import_/import_.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/learning_rate_control.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/log.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/native_op.cpp +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/native_op.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/pretrain.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/sprint/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/sprint/cache.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/sprint/control.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/sprint/error_signals.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/sprint/extern_interface.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/sprint/interface.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/README.md +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/_dim_extra.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/_tensor_extra.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/_tensor_mixin_base.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/_tensor_op_overloads.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/control_flow_ctx.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/dim.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/marked_dim.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/tensor.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/utils.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/compat.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/data_pipeline.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/distributed.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/engine.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/_backend.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/_utils.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/cond.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/dims.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/layer.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/make_layer.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_low_level/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_low_level/_backend.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/horovod.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/hyper_param_tuning.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/layers/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/layers/base.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/layers/basic.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/layers/rec.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/layers/segmental_model.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/layers/signal_processing.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/layers/variable.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/network.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/sprint.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/updater.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/util/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/util/basic.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/util/data.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/util/gradient_checkpoint.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/util/ken_lm.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/util/open_fst.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/README.md +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/data/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/data/pipeline.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/data/tensor_utils.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/distributed.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/frontend/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/frontend/_backend.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/frontend/_rand.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/frontend/bridge.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/functional/README.md +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/functional/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/updater.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/__init__.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/basic.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/better_exchook.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/bpe.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/debug.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/debug_helpers.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/fsa.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/literal_py_to_pickle.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/pprint.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/py-to-pickle.cpp +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/py_compat.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/sig_proc.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/task_system.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn.egg-info/SOURCES.txt +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn.egg-info/dependency_links.txt +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn.egg-info/top_level.txt +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/rnn.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/setup.cfg +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/setup.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/DummySprintExec.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm-inspection-profile.xml +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/.gitignore +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/.name +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/misc.xml +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/modules.xml +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/returnn.iml +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/_set_num_threads1.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/_setup_returnn_env.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/_setup_test_env.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/bpe-unicode-demo.codes +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/bpe-unicode-demo.vocab +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/lexicon_opt.fst +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/lexicon_opt.isyms +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/lexicon_opt.jpg +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/lexicon_opt.osyms +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/lint_common.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/pycharm-inspect.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/pylint.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/returnn-as-framework.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/spelling.dic +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_Config.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_Dataset.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_Fsa.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_GeneratingDataset.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_HDFDataset.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_LearningRateControl.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_Log.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_MultiProcDataset.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_PTDataset.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_Pretrain.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_ResNet.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_SprintDataset.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_SprintInterface.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TFEngine.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TFNativeOp.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TFNetworkLayer.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TFNetworkRecLayer.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TFNetworkSigProcLayer.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TFUpdater.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TFUtil.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TF_determinism.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TaskSystem.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TaskSystem_SharedMem.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TranslationDataset.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_Util.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_fork_exec.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_hdf_dump.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_array.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_attention.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_base.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_cond.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_const.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_container.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_conv.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_encoder_conformer.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_loop.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_math.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_normalization.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_rec.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_reduce.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_signal.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_tensor.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_tools.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_torch_engine.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_torch_frontend.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_torch_internal_frontend.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/_setup_returnn_env.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/analyze-dataset-batches.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/bliss-collect-seq-lens.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/bliss-dump-text.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/bliss-get-segment-names.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/bliss-to-ogg-zip.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/bpe-create-lexicon.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/calculate-word-error-rate.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/cleanup-old-models.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/collect-orth-symbols.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/collect-words.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/compile_native_op.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/compile_tf_graph.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/debug-dump-search-scores.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/debug-plot-search-scores.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/dump-dataset-raw-strings.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/dump-dataset.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/dump-forward-stats.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/dump-forward.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/dump-network-json.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/dump-pickle.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/extract_state_tying_from_dataset.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/get-attention-weights.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/get-best-model-epoch.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/hdf_dump.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/hdf_dump_translation_dataset.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/import-blocks-mt-model.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/import-t2t-mt-model.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/.gitignore +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/Makefile +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/README.md +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/example/README.md +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/example/libs_list +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/example/state_vars_list +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/example/tensor_names_list +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/file.h +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/main.cc +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/rescorer.h +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/vocabulary.cc +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/vocabulary.h +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/tf_avg_checkpoints.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/tf_inspect_checkpoint.py +0 -0
- {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/tf_inspect_summary_log.py +0 -0
|
@@ -23,7 +23,7 @@ in_dim = Dim(9, name="in")
|
|
|
23
23
|
out_dim = Dim(2, name="out")
|
|
24
24
|
extern_data = {
|
|
25
25
|
"data": {"dims": (batch_dim, time_dim, in_dim), "dtype": "float32"},
|
|
26
|
-
"classes": {"dims": (batch_dim, time_dim), "sparse_dim": out_dim, "dtype": "int32"},
|
|
26
|
+
"classes": {"dims": (batch_dim, time_dim), "sparse_dim": out_dim, "dtype": "int32", "available_for_inference": False},
|
|
27
27
|
}
|
|
28
28
|
model_outputs = {
|
|
29
29
|
"output": {"dims": (batch_dim, time_dim, out_dim), "dtype": "float32"},
|
|
@@ -24,7 +24,7 @@ num_inputs = 9
|
|
|
24
24
|
num_outputs = 2
|
|
25
25
|
extern_data = {
|
|
26
26
|
"data": {"dim": num_inputs},
|
|
27
|
-
"classes": {"dim": num_outputs, "sparse": True},
|
|
27
|
+
"classes": {"dim": num_outputs, "sparse": True, "available_for_inference": False},
|
|
28
28
|
}
|
|
29
29
|
model_outputs = {
|
|
30
30
|
"output": {"dim": num_outputs},
|
|
@@ -64,6 +64,7 @@ def forward_step(*, model: Model, extern_data: TensorDict):
|
|
|
64
64
|
"""
|
|
65
65
|
data = extern_data["data"]
|
|
66
66
|
out = model(data.raw_tensor)
|
|
67
|
+
rf.get_run_ctx().expected_outputs["output"].dims[1].dyn_size_ext.raw_tensor = data.dims[1].dyn_size_ext.raw_tensor
|
|
67
68
|
rf.get_run_ctx().mark_as_default_output(tensor=out)
|
|
68
69
|
|
|
69
70
|
|
|
@@ -8,7 +8,6 @@ or forwarding loop.
|
|
|
8
8
|
|
|
9
9
|
from __future__ import annotations
|
|
10
10
|
from typing import Optional, Union, Any, Sequence, Dict
|
|
11
|
-
import logging
|
|
12
11
|
from dataclasses import dataclass
|
|
13
12
|
from returnn.tensor import Tensor, Dim, TensorDict
|
|
14
13
|
import returnn.frontend as rf
|
|
@@ -400,16 +399,10 @@ def _output_tensor_from_raw(raw_tensor, *, dims: Sequence[Dim], name: str) -> Te
|
|
|
400
399
|
# however, otherwise, it is ambiguous, so we print a warning that we always use the highest dim size.
|
|
401
400
|
for axis, dim in enumerate(tensor.dims):
|
|
402
401
|
if dim.dyn_size_ext and dim.dyn_size_ext.raw_tensor is None:
|
|
403
|
-
|
|
404
|
-
dim_value = rf.convert_to_tensor(dim_value_raw, dims=())
|
|
405
|
-
dim_value = rf.cast(dim_value, dtype=dim.dyn_size_ext.dtype)
|
|
402
|
+
# Only non-scalar dyn sizes matter.
|
|
406
403
|
if dim.dyn_size_ext.dims:
|
|
407
|
-
|
|
408
|
-
logging.warning(
|
|
404
|
+
raise Exception(
|
|
409
405
|
f"Output {name!r} {tensor}: Cannot infer dynamic size for dim {dim}. "
|
|
410
|
-
f"
|
|
406
|
+
f"You must explicitly specify the dyn size by assigning `{dim}.dyn_size_ext.raw_tensor = ...`."
|
|
411
407
|
)
|
|
412
|
-
else:
|
|
413
|
-
dyn_size = dim_value
|
|
414
|
-
dim.dyn_size_ext.raw_tensor = dyn_size.raw_tensor
|
|
415
408
|
return tensor
|
|
@@ -75,60 +75,87 @@ class TensorDict:
|
|
|
75
75
|
return TensorDict({k: v.copy_template() for k, v in self.data.items()})
|
|
76
76
|
|
|
77
77
|
def as_raw_tensor_dict(
|
|
78
|
-
self,
|
|
78
|
+
self,
|
|
79
|
+
*,
|
|
80
|
+
include_const_sizes: bool = False,
|
|
81
|
+
include_scalar_dyn_sizes: bool = True,
|
|
82
|
+
exclude_duplicate_dims: bool = False,
|
|
83
|
+
expected_value_type: Union[Type, Sequence[Type]] = object,
|
|
79
84
|
) -> Dict[str, Any]:
|
|
80
85
|
"""
|
|
81
86
|
:return: dict of raw tensors, including any sequence lengths / dynamic sizes
|
|
82
87
|
"""
|
|
88
|
+
assert not (include_const_sizes and not include_scalar_dyn_sizes)
|
|
89
|
+
visited_dims = set()
|
|
83
90
|
out = {}
|
|
84
91
|
for key, value in self.data.items():
|
|
85
92
|
assert key not in out
|
|
86
93
|
assert isinstance(
|
|
87
|
-
value.raw_tensor,
|
|
88
|
-
), f"key {key} {value}: unexpected {type(value.raw_tensor)}, expected {
|
|
94
|
+
value.raw_tensor, expected_value_type
|
|
95
|
+
), f"key {key} {value}: unexpected {type(value.raw_tensor)}, expected {expected_value_type}"
|
|
89
96
|
out[key] = value.raw_tensor
|
|
90
97
|
for i, dim in enumerate(value.dims):
|
|
98
|
+
if exclude_duplicate_dims and dim in visited_dims:
|
|
99
|
+
continue
|
|
91
100
|
key_ = f"{key}:size{i}"
|
|
92
101
|
assert key_ not in out
|
|
93
102
|
if dim.is_batch_dim() and (not dim.dyn_size_ext or dim.dyn_size_ext.raw_tensor is None):
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
103
|
+
if include_scalar_dyn_sizes:
|
|
104
|
+
dim_value = dim.get_dim_value()
|
|
105
|
+
assert isinstance(
|
|
106
|
+
dim_value, expected_value_type
|
|
107
|
+
), f"key {key_} {dim}: unexpected {type(dim_value)}, expected {expected_value_type}"
|
|
108
|
+
out[key_] = dim_value
|
|
99
109
|
elif dim.dyn_size_ext:
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
110
|
+
if include_scalar_dyn_sizes or dim.dyn_size_ext.dims:
|
|
111
|
+
assert isinstance(dim.dyn_size_ext.raw_tensor, expected_value_type), (
|
|
112
|
+
f"key {key_} {dim} {dim.dyn_size_ext}:"
|
|
113
|
+
f" unexpected {type(dim.dyn_size_ext.raw_tensor)}, expected {expected_value_type}"
|
|
114
|
+
)
|
|
115
|
+
out[key_] = dim.dyn_size_ext.raw_tensor
|
|
105
116
|
elif dim.size is not None:
|
|
106
|
-
if include_const_sizes:
|
|
117
|
+
if include_scalar_dyn_sizes and include_const_sizes:
|
|
107
118
|
assert isinstance(
|
|
108
|
-
dim.size,
|
|
109
|
-
), f"key {key_} {dim}: unexpected {type(dim.size)}, expected {
|
|
119
|
+
dim.size, expected_value_type
|
|
120
|
+
), f"key {key_} {dim}: unexpected {type(dim.size)}, expected {expected_value_type}"
|
|
110
121
|
out[key_] = dim.size
|
|
111
122
|
else:
|
|
112
123
|
raise Exception(f"cannot handle dim: {dim}")
|
|
124
|
+
visited_dims.add(dim)
|
|
113
125
|
return out
|
|
114
126
|
|
|
115
|
-
def assign_from_raw_tensor_dict_(
|
|
127
|
+
def assign_from_raw_tensor_dict_(
|
|
128
|
+
self,
|
|
129
|
+
raw_tensor_dict: Dict[str, Any],
|
|
130
|
+
*,
|
|
131
|
+
with_scalar_dyn_sizes: bool = True,
|
|
132
|
+
duplicate_dims_are_excluded: bool = False,
|
|
133
|
+
):
|
|
116
134
|
"""
|
|
117
135
|
:param raw_tensor_dict: dict of raw tensors, including any sequence lengths / dynamic sizes
|
|
136
|
+
:param with_scalar_dyn_sizes: `include_scalar_dyn_sizes` was used in :func:`as_raw_tensor_dict`
|
|
137
|
+
:param duplicate_dims_are_excluded: `exclude_duplicate_dims` was used in :func:`as_raw_tensor_dict`
|
|
118
138
|
"""
|
|
139
|
+
visited_dims = set()
|
|
119
140
|
for key, value in self.data.items():
|
|
120
141
|
assert key in raw_tensor_dict
|
|
121
142
|
value.raw_tensor = raw_tensor_dict[key]
|
|
122
143
|
for i, dim in enumerate(value.dims):
|
|
144
|
+
if duplicate_dims_are_excluded and dim in visited_dims:
|
|
145
|
+
continue
|
|
123
146
|
key_ = f"{key}:size{i}"
|
|
124
147
|
if dim.is_batch_dim() and not dim.dyn_size_ext:
|
|
125
148
|
dim.dyn_size_ext = Tensor("batch", [], dtype="int32")
|
|
126
149
|
if dim.dyn_size_ext:
|
|
127
|
-
|
|
128
|
-
|
|
150
|
+
if not with_scalar_dyn_sizes and not dim.dyn_size_ext.dims:
|
|
151
|
+
pass
|
|
152
|
+
else:
|
|
153
|
+
assert key_ in raw_tensor_dict, f"keys: f{raw_tensor_dict.keys()}"
|
|
154
|
+
dim.dyn_size_ext.raw_tensor = raw_tensor_dict[key_]
|
|
129
155
|
else:
|
|
130
156
|
if key_ in raw_tensor_dict:
|
|
131
157
|
assert dim.size == raw_tensor_dict[key_]
|
|
158
|
+
visited_dims.add(dim)
|
|
132
159
|
|
|
133
160
|
|
|
134
161
|
def _convert_to_tensor(opts: _TensorT, *, name: Optional[str] = None) -> Tensor:
|
|
@@ -267,7 +267,7 @@ class OpMaker(object):
|
|
|
267
267
|
if(c->num_outputs() != %(num_outputs)i)
|
|
268
268
|
return errors::InvalidArgument("wrong number of outputs. required %(num_outputs)i but got ", c->num_outputs());
|
|
269
269
|
%(code_set_out_shape)s
|
|
270
|
-
return Status
|
|
270
|
+
return Status();
|
|
271
271
|
})
|
|
272
272
|
""" % {
|
|
273
273
|
"num_inputs": len(in_info),
|
|
@@ -533,6 +533,8 @@ class Engine(EngineBase):
|
|
|
533
533
|
raise TypeError(f"get_model returned {model} of type {type(model)}, expected rf.Module or torch.nn.Module")
|
|
534
534
|
assert isinstance(self._pt_model, torch.nn.Module)
|
|
535
535
|
print("Model:", self._pt_model, file=log.v4)
|
|
536
|
+
num_params = sum([parameter.numel() for parameter in self._pt_model.parameters()])
|
|
537
|
+
print(f"net params #: {num_params}", file=log.v2)
|
|
536
538
|
|
|
537
539
|
if checkpoint_state is not None:
|
|
538
540
|
self._pt_model.load_state_dict(checkpoint_state["model"])
|
|
@@ -89,7 +89,7 @@ def run_model(
|
|
|
89
89
|
|
|
90
90
|
def run_model_torch(extern_data: TensorDict, get_model: rf.GetModelFunc, forward_step: rf.StepFunc) -> TensorDict:
|
|
91
91
|
"""run"""
|
|
92
|
-
extern_data_raw = extern_data.as_raw_tensor_dict(
|
|
92
|
+
extern_data_raw = extern_data.as_raw_tensor_dict(expected_value_type=numpy.ndarray)
|
|
93
93
|
rf.select_backend_torch()
|
|
94
94
|
rf.set_random_seed(42)
|
|
95
95
|
|
|
@@ -111,7 +111,7 @@ def run_model_torch(extern_data: TensorDict, get_model: rf.GetModelFunc, forward
|
|
|
111
111
|
|
|
112
112
|
def run_model_net_dict_tf(extern_data: TensorDict, get_model: rf.GetModelFunc, forward_step: rf.StepFunc) -> TensorDict:
|
|
113
113
|
"""run"""
|
|
114
|
-
extern_data_raw = extern_data.as_raw_tensor_dict(
|
|
114
|
+
extern_data_raw = extern_data.as_raw_tensor_dict(expected_value_type=numpy.ndarray)
|
|
115
115
|
extern_data.reset_content()
|
|
116
116
|
rf.select_backend_returnn_layers_tf()
|
|
117
117
|
rf.set_random_seed(42)
|
|
@@ -159,9 +159,9 @@ def run_model_net_dict_tf(extern_data: TensorDict, get_model: rf.GetModelFunc, f
|
|
|
159
159
|
layer = net.get_layer(layer_name)
|
|
160
160
|
outputs_tf.data[k] = layer.output.copy()
|
|
161
161
|
|
|
162
|
-
fetches = outputs_tf.as_raw_tensor_dict(
|
|
162
|
+
fetches = outputs_tf.as_raw_tensor_dict(expected_value_type=tf.Tensor)
|
|
163
163
|
assert set(extern_data.data.keys()) == set(net.extern_data.data.keys())
|
|
164
|
-
extern_data_tf_placeholders = net.extern_data.as_raw_tensor_dict(
|
|
164
|
+
extern_data_tf_placeholders = net.extern_data.as_raw_tensor_dict(expected_value_type=tf.Tensor)
|
|
165
165
|
assert set(extern_data_tf_placeholders.keys()) == set(extern_data_raw.keys())
|
|
166
166
|
feed_dict = {extern_data_tf_placeholders[k]: v for k, v in extern_data_raw.items()}
|
|
167
167
|
|
|
@@ -149,7 +149,13 @@ def test_demo_torch_task12ax():
|
|
|
149
149
|
assert_less(fer, 0.02)
|
|
150
150
|
|
|
151
151
|
|
|
152
|
-
def _test_torch_export_to_onnx(cfg_filename: str):
|
|
152
|
+
def _test_torch_export_to_onnx(cfg_filename: str) -> str:
|
|
153
|
+
"""
|
|
154
|
+
Executes the demo passed as a parameter and returns the ONNX exported model as a filename.
|
|
155
|
+
|
|
156
|
+
:param cfg_filename: Demo filename, either "demos/demo-rf.config" or "demos/demo-torch.config".
|
|
157
|
+
:return: Filename representing the ONNX model location.
|
|
158
|
+
"""
|
|
153
159
|
cleanup_tmp_models(cfg_filename)
|
|
154
160
|
out = run(py, "rnn.py", cfg_filename, "--num_epochs", "1", "--device", "cpu")
|
|
155
161
|
out_pt_model = re.search(r"\nSave model under (.*)\n", out, re.MULTILINE)
|
|
@@ -159,15 +165,69 @@ def _test_torch_export_to_onnx(cfg_filename: str):
|
|
|
159
165
|
out_onnx_model = out_pt_model.replace(".pt", ".onnx")
|
|
160
166
|
run(py, "tools/torch_export_to_onnx.py", cfg_filename, out_pt_model, out_onnx_model, print_stdout=True)
|
|
161
167
|
|
|
168
|
+
return out_onnx_model
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def _test_torch_onnx_inference_no_seq_lens(out_onnx_model: str):
|
|
172
|
+
"""
|
|
173
|
+
Tests the inference of the torch demo with an ONNX model passed as parameter.
|
|
174
|
+
"""
|
|
175
|
+
import onnxruntime as ort
|
|
176
|
+
|
|
177
|
+
torch.manual_seed(42)
|
|
178
|
+
# Set arbitrary values to pass to the model, respecting the input size (9).
|
|
179
|
+
dummy_data = torch.randn([3, 50, 9])
|
|
180
|
+
|
|
181
|
+
session = ort.InferenceSession(out_onnx_model)
|
|
182
|
+
outputs_onnx = session.run(
|
|
183
|
+
None,
|
|
184
|
+
{
|
|
185
|
+
"data": dummy_data.numpy(),
|
|
186
|
+
},
|
|
187
|
+
)
|
|
188
|
+
print("*** Result:", torch.FloatTensor(outputs_onnx[0]))
|
|
189
|
+
print("*** Batch size:", torch.IntTensor(outputs_onnx[1]))
|
|
190
|
+
print("*** Sequence lengths:", torch.IntTensor(outputs_onnx[2]))
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
def _test_torch_onnx_inference_seq_lens_in_out(out_onnx_model: str):
|
|
194
|
+
"""
|
|
195
|
+
Tests the inference of the torch demo with an ONNX model passed as parameter.
|
|
196
|
+
"""
|
|
197
|
+
print(out_onnx_model)
|
|
198
|
+
import onnxruntime as ort
|
|
199
|
+
|
|
200
|
+
torch.manual_seed(42)
|
|
201
|
+
# Set arbitrary values to pass to the model, respecting the input size (9).
|
|
202
|
+
dummy_data = torch.randn([3, 50, 9])
|
|
203
|
+
dummy_seq_lens = torch.tensor([27, 50, 43], dtype=torch.int32)
|
|
204
|
+
|
|
205
|
+
session = ort.InferenceSession(out_onnx_model)
|
|
206
|
+
outputs_onnx = session.run(
|
|
207
|
+
None,
|
|
208
|
+
{
|
|
209
|
+
"data": dummy_data.numpy(),
|
|
210
|
+
"data:size1": dummy_seq_lens.numpy(),
|
|
211
|
+
},
|
|
212
|
+
)
|
|
213
|
+
out_result = torch.FloatTensor(outputs_onnx[0])
|
|
214
|
+
out_seq_lens = torch.IntTensor(outputs_onnx[1])
|
|
215
|
+
print("*** Result:", out_result)
|
|
216
|
+
print("*** Sequence lengths:", out_seq_lens)
|
|
217
|
+
|
|
218
|
+
assert out_result.shape == torch.Size([3, 50, 2])
|
|
219
|
+
|
|
162
220
|
|
|
163
221
|
@unittest.skipIf(not torch, "no PyTorch")
|
|
164
222
|
def test_demo_torch_export_to_onnx():
|
|
165
|
-
_test_torch_export_to_onnx("demos/demo-torch.config")
|
|
223
|
+
out_onnx_model = _test_torch_export_to_onnx("demos/demo-torch.config")
|
|
224
|
+
_test_torch_onnx_inference_seq_lens_in_out(out_onnx_model)
|
|
166
225
|
|
|
167
226
|
|
|
168
227
|
@unittest.skipIf(not torch, "no PyTorch")
|
|
169
|
-
def
|
|
170
|
-
_test_torch_export_to_onnx("demos/demo-rf.config")
|
|
228
|
+
def test_demo_rf_export_to_onnx():
|
|
229
|
+
out_onnx_model = _test_torch_export_to_onnx("demos/demo-rf.config")
|
|
230
|
+
_test_torch_onnx_inference_seq_lens_in_out(out_onnx_model)
|
|
171
231
|
|
|
172
232
|
|
|
173
233
|
@unittest.skipIf(not torch, "no PyTorch")
|
|
@@ -1,8 +1,33 @@
|
|
|
1
1
|
"""
|
|
2
|
-
Converts a module
|
|
2
|
+
Converts a RF/PT module to ONNX.
|
|
3
|
+
|
|
4
|
+
For that, it uses `get_model(*, epoch, step, **_other_kwargs)` which must be available in the config
|
|
3
5
|
and creates dummy data to be forwarded to the model.
|
|
4
6
|
|
|
5
|
-
Since get_model() can return either a torch.nn.Module or a rf.Module, both cases
|
|
7
|
+
Since `get_model(...)` can return either a torch.nn.Module or a rf.Module, both cases are handled.
|
|
8
|
+
|
|
9
|
+
`extern_data` defines the inputs.
|
|
10
|
+
- It strips away all entries with available_for_inference=False.
|
|
11
|
+
- Dynamic dimensions with dyn_size_ext being a scalar are excluded.
|
|
12
|
+
- If dynamic dims occur multiple times, only the first occurence is kept.
|
|
13
|
+
Note that the order depends on the order of the dict, as it is defined (not sorted alphabetically).
|
|
14
|
+
|
|
15
|
+
`model_outputs` defines the output dimensions.
|
|
16
|
+
- Dynamic dimensions with dyn_size_ext being a scalar are excluded.
|
|
17
|
+
|
|
18
|
+
For RASR, we usually expect that the input and output are always of the format [B, T, D] (batch, time, dim).
|
|
19
|
+
We distinguish three cases on RASR side:
|
|
20
|
+
|
|
21
|
+
- Input without sequence length are provided, output also without sequence lengths:
|
|
22
|
+
Define the input time dimension in `extern_data` to have `dyn_size_ext` being a scalar,
|
|
23
|
+
and same for `model_outputs`.
|
|
24
|
+
|
|
25
|
+
- Input with sequence length are provided, output without sequence lengths,
|
|
26
|
+
meaning that RASR expects that the outputs have the same sequence length as the inputs:
|
|
27
|
+
Define the output time dimension in `model_outputs` to have `dyn_size_ext` being a scalar.
|
|
28
|
+
|
|
29
|
+
- Input with sequence length are provided, output with sequence lengths:
|
|
30
|
+
The input and output time dimensions are as usual, having `dyn_size_ext` of shape [B].
|
|
6
31
|
"""
|
|
7
32
|
|
|
8
33
|
from __future__ import annotations
|
|
@@ -83,10 +108,10 @@ class ForwardModulePT(torch.nn.Module):
|
|
|
83
108
|
Wrapper to forward_step from the config.
|
|
84
109
|
"""
|
|
85
110
|
extern_data = self.extern_data.copy_template()
|
|
86
|
-
extern_data.assign_from_raw_tensor_dict_(data)
|
|
111
|
+
extern_data.assign_from_raw_tensor_dict_(data, with_scalar_dyn_sizes=False, duplicate_dims_are_excluded=True)
|
|
87
112
|
self.forward_step_func(model=self.model, extern_data=extern_data)
|
|
88
113
|
_check_matching_outputs()
|
|
89
|
-
return rf.get_run_ctx().outputs.as_raw_tensor_dict()
|
|
114
|
+
return rf.get_run_ctx().outputs.as_raw_tensor_dict(include_scalar_dyn_sizes=False)
|
|
90
115
|
|
|
91
116
|
|
|
92
117
|
class ForwardModuleRF(_RFModuleAsPTModule):
|
|
@@ -110,16 +135,16 @@ class ForwardModuleRF(_RFModuleAsPTModule):
|
|
|
110
135
|
Wrapper to forward_step from the config.
|
|
111
136
|
"""
|
|
112
137
|
extern_data = self.extern_data.copy_template()
|
|
113
|
-
extern_data.assign_from_raw_tensor_dict_(data)
|
|
138
|
+
extern_data.assign_from_raw_tensor_dict_(data, with_scalar_dyn_sizes=False, duplicate_dims_are_excluded=True)
|
|
114
139
|
self.forward_step_func(model=self.rf_module, extern_data=extern_data)
|
|
115
140
|
_check_matching_outputs()
|
|
116
|
-
return rf.get_run_ctx().outputs.as_raw_tensor_dict()
|
|
141
|
+
return rf.get_run_ctx().outputs.as_raw_tensor_dict(include_scalar_dyn_sizes=False)
|
|
117
142
|
|
|
118
143
|
|
|
119
144
|
def _check_matching_outputs():
|
|
120
145
|
rf.get_run_ctx().check_outputs_complete()
|
|
121
146
|
model_outputs_raw_keys = set(_get_model_outputs_raw_keys())
|
|
122
|
-
outputs_raw = rf.get_run_ctx().outputs.as_raw_tensor_dict()
|
|
147
|
+
outputs_raw = rf.get_run_ctx().outputs.as_raw_tensor_dict(include_scalar_dyn_sizes=False)
|
|
123
148
|
outputs_raw_keys = set(outputs_raw.keys())
|
|
124
149
|
assert model_outputs_raw_keys == outputs_raw_keys, (
|
|
125
150
|
f"Model outputs raw keys and output raw keys from forward_step don't match.\n"
|
|
@@ -138,7 +163,7 @@ def _get_model_outputs_raw_keys():
|
|
|
138
163
|
for k, v in model_outputs.data.items():
|
|
139
164
|
model_outputs_raw_keys.append(k)
|
|
140
165
|
for i, dim in enumerate(v.dims):
|
|
141
|
-
if dim.
|
|
166
|
+
if dim.dyn_size_ext and dim.dyn_size_ext.dims:
|
|
142
167
|
model_outputs_raw_keys.append(f"{k}:size{i}")
|
|
143
168
|
return model_outputs_raw_keys
|
|
144
169
|
|
|
@@ -147,7 +172,7 @@ def main():
|
|
|
147
172
|
"""
|
|
148
173
|
Main entry point
|
|
149
174
|
"""
|
|
150
|
-
parser = argparse.ArgumentParser(description=
|
|
175
|
+
parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
|
|
151
176
|
parser.add_argument(
|
|
152
177
|
"config",
|
|
153
178
|
type=str,
|
|
@@ -193,10 +218,13 @@ def main():
|
|
|
193
218
|
extern_data = TensorDict()
|
|
194
219
|
extern_data.update(extern_data_dict, auto_convert=True)
|
|
195
220
|
extern_data.reset_content()
|
|
221
|
+
for k, v in list(extern_data.data.items()):
|
|
222
|
+
if not v.available_for_inference:
|
|
223
|
+
del extern_data.data[k]
|
|
196
224
|
|
|
197
225
|
tensor_dict_fill_random_numpy_(extern_data)
|
|
198
226
|
tensor_dict_numpy_to_torch_(extern_data)
|
|
199
|
-
extern_data_raw = extern_data.as_raw_tensor_dict()
|
|
227
|
+
extern_data_raw = extern_data.as_raw_tensor_dict(include_scalar_dyn_sizes=False, exclude_duplicate_dims=True)
|
|
200
228
|
model_outputs_raw_keys = _get_model_outputs_raw_keys()
|
|
201
229
|
|
|
202
230
|
if is_pt_module:
|
|
@@ -214,6 +242,8 @@ def main():
|
|
|
214
242
|
for k, v in list(extern_data.data.items()) + list(model_outputs.data.items()):
|
|
215
243
|
dynamic_axes[k] = {i: dim.name for i, dim in enumerate(v.dims) if dim.is_dynamic() or dim.is_batch_dim()}
|
|
216
244
|
for i, dim in enumerate(v.dims):
|
|
245
|
+
if dim.dyn_size_ext and dim.dyn_size_ext.dims == ():
|
|
246
|
+
continue
|
|
217
247
|
if dim.dyn_size_ext:
|
|
218
248
|
dynamic_axes[f"{k}:size{i}"] = {
|
|
219
249
|
j: dim_.name
|
|
@@ -221,6 +251,10 @@ def main():
|
|
|
221
251
|
if dim_.is_dynamic() or dim_.is_batch_dim()
|
|
222
252
|
}
|
|
223
253
|
|
|
254
|
+
print("*** Input names:", list(extern_data_raw.keys()))
|
|
255
|
+
print("*** Output names:", model_outputs_raw_keys)
|
|
256
|
+
print("*** Dynamic axes:", dynamic_axes)
|
|
257
|
+
|
|
224
258
|
export_func(
|
|
225
259
|
pt_model_fwd,
|
|
226
260
|
(extern_data_raw, {}),
|
|
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.20230719.125702 → returnn-1.20230727.163234}/demos/demo-hyper-param-tuning.config
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20230719.125702 → returnn-1.20230727.163234}/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
|
{returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-chunking-blstm.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-contribrnn-lstm.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-maxgradnorm-lstm.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-native-lstm-lowmem.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-native-lstm.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-native-lstm2.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-native-lstm2.12ax.tuned.config
RENAMED
|
File without changes
|
{returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-neural-transducer.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-rec-explicit-lstm.config
RENAMED
|
File without changes
|
{returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-rec-explicit-rnn.config
RENAMED
|
File without changes
|
|
File without changes
|
{returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-search-compiled-graph.py
RENAMED
|
File without changes
|
{returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-vanilla-lstm.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
{returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-upd-mult-model.lstm.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
{returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png
RENAMED
|
File without changes
|
{returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png
RENAMED
|
File without changes
|
{returnn-1.20230719.125702 → returnn-1.20230727.163234}/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.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/create_IAM_dataset.py
RENAMED
|
File without changes
|
|
File without changes
|
{returnn-1.20230719.125702 → returnn-1.20230727.163234}/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.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/artificial/create_test_h5.py
RENAMED
|
File without changes
|
{returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/artificial/forwardconfig
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|