returnn 1.20240917.180949__tar.gz → 1.20240918.234323__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.20240917.180949 → returnn-1.20240918.234323}/PKG-INFO +1 -1
- returnn-1.20240918.234323/_setup_info_generated.py +2 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/audio.py +1 -1
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/cached.py +1 -1
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/hdf.py +30 -14
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/array_.py +8 -7
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/layers/basic.py +0 -1
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/engine.py +3 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn.egg-info/PKG-INFO +1 -1
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_HDFDataset.py +245 -1
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_array.py +22 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/dump-dataset.py +5 -0
- returnn-1.20240917.180949/_setup_info_generated.py +0 -2
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/.editorconfig +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/.gitignore +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/.gitmodules +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/.kateconfig +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/CHANGELOG.md +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/CODEOWNERS +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/CONTRIBUTING.md +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/LICENSE +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/MANIFEST.in +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/README.rst +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/12AX.cluster_map +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/_setup_returnn_env.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-fwd.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-horovod-mpi.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-horovod-mpi.py.sh +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-horovod-mpi.sh +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-hyper-param-tuning.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-iter-dataset.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-list-devices.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-lua-torch-layer.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-pretrain.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-record-and-push-to-webserver.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-returnn-as-framework.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-rf-pt-benchmark.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-rf.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-rhn-enwik8.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-sprint-interface.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-att-copy.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-attention.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-enc-dec.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-hard-att-copy.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-lstm-benchmark.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-native-lstm.12ax.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-native-lstm2.12ax.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-neural-transducer.12ax.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-rec-explicit-lstm.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-rec-explicit-rnn.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-rec-self-att.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-search-compiled-graph.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-timit-lstm-ctc.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-torch.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo.sh +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/README.txt +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/chars.txt +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/config_demo +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/config_fwd +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/config_real +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/decode.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/go.sh +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/lines.txt +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/split/eval.txt +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/split/train.txt +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/split/valid.txt +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/README.md +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/artificial/create_test_h5.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/artificial/forwardconfig +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/artificial/go.sh +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/artificial/trainconfig +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/artificial_rgb/go.sh +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/pyproject.toml +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/requirements.txt +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/__main__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/__old_mod_loader__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/__setup__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/config.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/basic.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/bundle_file.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/cached2.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/distrib_files.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/generating.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/lm.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/map.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/meta.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/multi_proc.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/normalization_data.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/numpy_dump.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/postprocessing.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/raw_wav.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/sprint.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/stereo.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/util/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/util/feature_extraction.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/util/strings.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/util/vocabulary.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/engine/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/engine/base.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/engine/batch.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/__main__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/.git +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/graph_editor/README.md +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/graph_editor/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/graph_editor/edit.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/graph_editor/reroute.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/graph_editor/select.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/graph_editor/subgraph.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/graph_editor/transform.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/graph_editor/util.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/forward_iface.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_backend.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_native/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_native/backend.cpp +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_native/backend.hpp +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_native/module.cpp +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_native/module.hpp +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_native/py_utils.hpp +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_native/tensor_ops.cpp +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_native/tensor_ops.hpp +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_numpy_backend.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_random_journal.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_utils.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/attention.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/audio/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/audio/mel.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/audio/specaugment.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/backend.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/build_from_dict.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/cond.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/const.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/container.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/control_flow_ctx.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/conv.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/conversions/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/conversions/espnet_e_branchformer.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/conversions/hf_llama.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/conversions/torch_nn.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/decoder/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/decoder/transformer.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/device.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/dims.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/dropout.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/dtype.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/encoder/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/encoder/base.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/encoder/conformer.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/encoder/e_branchformer.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/gradient.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/graph.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/hooks.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/init.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/label_smoothing.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/linear.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/loop.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/loss.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/math_.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/matmul.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/module.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/normalization.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/parameter.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/parametrizations.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/parametrize.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/piecewise_linear.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/rand.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/rec.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/reduce.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/run_ctx.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/signal.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/state.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/stepwise_scheduler.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/tensor_array.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/types.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/import_/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/import_/common.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/import_/git.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/import_/import_.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/learning_rate_control.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/log.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/native_op.cpp +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/native_op.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/pretrain.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/sprint/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/sprint/cache.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/sprint/control.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/sprint/error_signals.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/sprint/extern_interface.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/sprint/interface.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/README.md +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/_dim_extra.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/_tensor_extra.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/_tensor_mixin_base.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/_tensor_op_overloads.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/control_flow_ctx.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/dim.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/marked_dim.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/tensor.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/tensor_dict.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/utils.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/compat.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/data_pipeline.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/distributed.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/engine.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/README.md +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/_backend.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/_utils.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/cond.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/dims.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/layer.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/loop.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/make_layer.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/masked_computation.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_low_level/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_low_level/_backend.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/horovod.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/hyper_param_tuning.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/layers/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/layers/base.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/layers/rec.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/layers/segmental_model.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/layers/signal_processing.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/layers/variable.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/native_op.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/network.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/sprint.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/updater.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/util/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/util/basic.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/util/data.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/util/gradient_checkpoint.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/util/ken_lm.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/util/open_fst.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/README.md +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/data/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/data/extern_data.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/data/pipeline.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/data/queued_data_iter.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/data/tensor_utils.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/distributed.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/frontend/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/frontend/_backend.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/frontend/_rand.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/frontend/bridge.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/frontend/raw_ops.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/updater.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/util/README.md +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/util/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/util/array_.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/util/diagnose_gpu.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/util/gradient_checkpoint.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/util/module.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/util/scaled_gradient.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/__init__.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/basic.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/better_exchook.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/bpe.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/debug.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/debug_helpers.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/file_cache.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/fsa.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/literal_py_to_pickle.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/math.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/native_code_compiler.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/pprint.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/py-to-pickle.cpp +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/py_compat.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/py_ext_mod_compiler.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/result_with_reason.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/sig_proc.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/task_system.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/train_proc_manager.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/watch_memory.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn.egg-info/SOURCES.txt +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn.egg-info/dependency_links.txt +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn.egg-info/top_level.txt +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/rnn.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/setup.cfg +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/setup.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/DummySprintExec.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm-inspection-profile.xml +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/.gitignore +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/.name +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/misc.xml +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/modules.xml +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/returnn.iml +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/_set_num_threads1.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/_setup_returnn_env.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/_setup_test_env.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/bpe-unicode-demo.codes +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/bpe-unicode-demo.vocab +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/lexicon_opt.fst +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/lexicon_opt.isyms +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/lexicon_opt.jpg +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/lexicon_opt.osyms +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/lint_common.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/pycharm-inspect.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/pylint.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/returnn-as-framework.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/rf_utils.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/spelling.dic +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_Config.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_Dataset.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_Fsa.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_GeneratingDataset.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_LearningRateControl.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_Log.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_MultiProcDataset.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_Pretrain.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_ResNet.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_SprintDataset.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_SprintInterface.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TFEngine.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TFNativeOp.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TFNetworkLayer.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TFNetworkRecLayer.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TFNetworkSigProcLayer.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TFUpdater.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TFUtil.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TF_determinism.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TaskSystem.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TaskSystem_SharedMem.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TranslationDataset.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_Util.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_demos.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_fork_exec.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_hdf_dump.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_attention.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_base.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_cond.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_const.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_container.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_conv.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_decoder_transformer.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_encoder_conformer.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_gradient.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_label_smoothing.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_loop.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_math.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_normalization.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_piecewise_linear.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_rec.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_reduce.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_signal.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_tensor.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_tools.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_torch_dataset.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_torch_engine.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_torch_frontend.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_torch_internal_frontend.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_torch_util.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/torch_utils.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/_setup_returnn_env.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/analyze-dataset-batches.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/bliss-collect-seq-lens.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/bliss-dump-text.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/bliss-get-segment-names.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/bliss-to-ogg-zip.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/bpe-create-lexicon.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/calculate-word-error-rate.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/cleanup-old-models.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/collect-orth-symbols.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/collect-words.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/compile_native_op.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/compile_tf_graph.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/debug-dump-search-scores.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/debug-plot-search-scores.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/dump-dataset-raw-strings.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/dump-forward-stats.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/dump-forward.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/dump-network-json.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/dump-pickle.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/extract_state_tying_from_dataset.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/get-attention-weights.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/get-best-model-epoch.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/hdf_dump.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/hdf_dump_translation_dataset.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/import-blocks-mt-model.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/import-t2t-mt-model.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/.gitignore +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/Makefile +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/README.md +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/example/README.md +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/example/libs_list +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/example/state_vars_list +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/example/tensor_names_list +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/file.h +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/main.cc +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/rescorer.h +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/vocabulary.cc +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/vocabulary.h +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/tf_avg_checkpoints.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/tf_inspect_checkpoint.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/tf_inspect_summary_log.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/torch_avg_checkpoints.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/torch_export_to_onnx.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/torch_inspect_checkpoint.py +0 -0
- {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/torch_inspect_checkpoint_and_opt.py +0 -0
|
@@ -146,7 +146,7 @@ class OggZipDataset(CachedDataset2):
|
|
|
146
146
|
# However, some other code might expect that the labels are all strings, not bytes,
|
|
147
147
|
# and the API requires the labels to be strings.
|
|
148
148
|
# The code in Dataset.serialize_data tries to decode this case as utf8 (if possible).
|
|
149
|
-
self.labels["orth"] = [chr(i) for i in range(
|
|
149
|
+
self.labels["orth"] = [chr(i) for i in range(256)]
|
|
150
150
|
if self.targets:
|
|
151
151
|
self.num_outputs["classes"] = [self.targets.num_labels, 1]
|
|
152
152
|
if self.feature_extractor:
|
|
@@ -222,7 +222,7 @@ class CachedDataset(Dataset):
|
|
|
222
222
|
assert start >= 0
|
|
223
223
|
assert start <= end
|
|
224
224
|
|
|
225
|
-
if self.is_cached(start, end, blocking=
|
|
225
|
+
if self.is_cached(start, end, blocking=False):
|
|
226
226
|
return
|
|
227
227
|
|
|
228
228
|
if self.cache_byte_size_limit_at_start > 0: # If the cache is enabled.
|
|
@@ -94,23 +94,12 @@ class HDFDataset(CachedDataset):
|
|
|
94
94
|
from returnn.util.basic import cf
|
|
95
95
|
|
|
96
96
|
filename = cf(filename)
|
|
97
|
+
print("parsing file", filename, file=log.v5)
|
|
97
98
|
fin = h5py.File(filename, "r")
|
|
98
|
-
if "targets" in fin:
|
|
99
|
-
self.labels = {
|
|
100
|
-
k: [self._decode(item) for item in fin["targets/labels"][k][...].tolist()]
|
|
101
|
-
for k in fin["targets/labels"]
|
|
102
|
-
}
|
|
103
|
-
if not self.labels and "labels" in fin:
|
|
104
|
-
labels = [item.split("\0")[0] for item in fin["labels"][...].tolist()] # type: typing.List[str]
|
|
105
|
-
self.labels = {"classes": labels}
|
|
106
|
-
assert len(self.labels["classes"]) == len(labels), (
|
|
107
|
-
"expected " + str(len(self.labels["classes"])) + " got " + str(len(labels))
|
|
108
|
-
)
|
|
109
99
|
self.files.append(filename)
|
|
110
100
|
self.h5_files.append(fin)
|
|
111
101
|
self.cached_h5_datasets.append({})
|
|
112
|
-
|
|
113
|
-
if "times" in fin:
|
|
102
|
+
if attr_times in fin:
|
|
114
103
|
if self.timestamps is None:
|
|
115
104
|
self.timestamps = fin[attr_times][...]
|
|
116
105
|
else:
|
|
@@ -119,10 +108,36 @@ class HDFDataset(CachedDataset):
|
|
|
119
108
|
if len(self.files) >= 2:
|
|
120
109
|
prev_target_keys = self.target_keys
|
|
121
110
|
if "targets" in fin:
|
|
111
|
+
# Note: Earlier RETURNN versions used "targets/labels" to determine target_keys.
|
|
112
|
+
# https://github.com/rwth-i6/returnn/blob/c2d8fed877022d1ac1bf68b801604733db51223e/HDFDataset.py#L60
|
|
122
113
|
self.target_keys = sorted(set(fin["targets/data"].keys()) | set(fin["targets/size"].attrs.keys()))
|
|
123
114
|
else:
|
|
115
|
+
# Actually this "classes" target key is never used.
|
|
116
|
+
# Only if there are "targets" in the HDF file, we use the keys from there.
|
|
117
|
+
# HDFDataset.get_target_list() returns an empty list,
|
|
118
|
+
# and HDFDataset.get_data_keys() uses get_target_list() + optional ["data"].
|
|
119
|
+
# HDFDataset.get_target_list() returns self.targets.keys().
|
|
120
|
+
# self.targets is set below but only if "targets" in fin,
|
|
121
|
+
# which is not the case here.
|
|
122
|
+
# However, for historical reasons, the shape of seq_lengths (and seq_start)
|
|
123
|
+
# will count with this dummy target key,
|
|
124
|
+
# although the seq_lengths/seq_start values are never used.
|
|
125
|
+
# Thus, we cannot change this now, because then we couldn't handle old HDF files anymore.
|
|
124
126
|
self.target_keys = ["classes"]
|
|
125
127
|
|
|
128
|
+
if "targets" in fin:
|
|
129
|
+
for k in fin["targets/labels"]:
|
|
130
|
+
if k not in self.labels:
|
|
131
|
+
self.labels[k] = [self._decode(item) for item in fin["targets/labels"][k][...].tolist()]
|
|
132
|
+
# Note: "labels" in fin was not usd since quite a while in most HDFs
|
|
133
|
+
# (which I can tell because the code was broken and would have resulted in an exception,
|
|
134
|
+
# specifically self._decode was missing, and it used item.split("\0")[0] instead,
|
|
135
|
+
# which does not work because we get bytes since Python 3, thus the split would not work).
|
|
136
|
+
# However, SimpleHDFWriter might have written it if the provided data has it,
|
|
137
|
+
# thus those are the labels for "data", not for "classes", as we had it earlier.
|
|
138
|
+
if "labels" in fin and "data" not in self.labels and "inputs" in fin:
|
|
139
|
+
self.labels["data"] = [self._decode(item) for item in fin["labels"][...].tolist()]
|
|
140
|
+
|
|
126
141
|
seq_lengths = fin[attr_seqLengths][...] # shape (num_seqs,num_target_keys + 1)
|
|
127
142
|
num_input_keys = 1 if "inputs" in fin else 0
|
|
128
143
|
if len(seq_lengths.shape) == 1:
|
|
@@ -1110,7 +1125,8 @@ class SimpleHDFWriter:
|
|
|
1110
1125
|
# seq_length idx represents (seq_idx,data_key_idx),
|
|
1111
1126
|
# where data_key_idx == 0 is for the main input data,
|
|
1112
1127
|
# and otherwise data_key_idx == 1 + sorted(self._prepared_extra).index(data_key).
|
|
1113
|
-
# data_key_idx must allow for 2 entries by default,
|
|
1128
|
+
# data_key_idx must allow for 2 entries by default,
|
|
1129
|
+
# as HDFDataset assumes 'classes' by default, as long as there is no targets/data or targets/labels.
|
|
1114
1130
|
if extend_existing_file:
|
|
1115
1131
|
self._seq_lengths = self._file["seqLengths"]
|
|
1116
1132
|
else:
|
|
@@ -549,14 +549,16 @@ def masked_select(
|
|
|
549
549
|
return tensor._raw_backend.masked_select(tensor, mask=mask, dims=dims, out_dim=out_dim)
|
|
550
550
|
# Separate implementation for the case where we have a subset of the mask dims, specifically one single dim.
|
|
551
551
|
# See https://github.com/rwth-i6/returnn/issues/1605 for discussion.
|
|
552
|
-
if len(dims) != 1:
|
|
553
|
-
# Please check https://github.com/rwth-i6/returnn/issues/1605 when you need this.
|
|
554
|
-
raise NotImplementedError(f"masked_select: dims {dims} len {len(dims)} > 1 not supported")
|
|
555
|
-
(in_dim,) = dims
|
|
556
|
-
in_dim: Dim
|
|
557
552
|
mask = mask.copy_masked(mask_value=False, dims=dims)
|
|
553
|
+
if len(dims) > 1:
|
|
554
|
+
# Flatten it, in the specified order.
|
|
555
|
+
tensor, in_dim = rf.merge_dims(tensor, dims=dims)
|
|
556
|
+
mask, _ = rf.merge_dims(mask, dims=dims, out_dim=in_dim)
|
|
557
|
+
else:
|
|
558
|
+
(in_dim,) = dims
|
|
559
|
+
in_dim: Dim
|
|
558
560
|
idxs = rf.cumsum(rf.cast(mask, "int32"), spatial_dim=in_dim) # [T,B] -> idx in T' + 1
|
|
559
|
-
new_size = rf.gather(idxs, indices=in_dim.
|
|
561
|
+
new_size = rf.gather(idxs, indices=in_dim.get_dim_value_tensor() - 1, axis=in_dim) # [B]
|
|
560
562
|
if out_dim is None:
|
|
561
563
|
out_dim = Dim(new_size, name="masked_select")
|
|
562
564
|
elif out_dim.dyn_size_ext is None:
|
|
@@ -620,7 +622,6 @@ def pack_padded(
|
|
|
620
622
|
"""
|
|
621
623
|
assert not enforce_sorted # not implemented yet...
|
|
622
624
|
mask = rf.sequence_mask(dims, device=source.device)
|
|
623
|
-
assert mask.dims_set == set(dims)
|
|
624
625
|
# Note: We could already calculate out_dim here, as follows:
|
|
625
626
|
# out_dim = Dim(rf.num_elements_of_shape(dims), name="packed")
|
|
626
627
|
# This could trigger a more efficient calculation path in masked_select,
|
|
@@ -4589,7 +4589,6 @@ class MergeDimsLayer(_ConcatInputLayer):
|
|
|
4589
4589
|
or input_data.feature_dim_axis_or_unspecified is not NotSpecified
|
|
4590
4590
|
):
|
|
4591
4591
|
data.feature_dim_axis = new_feature_dim_axis # explicitly set
|
|
4592
|
-
data.dim = data.batch_shape[data.feature_dim_axis] if data.feature_dim_axis is not None else None
|
|
4593
4592
|
|
|
4594
4593
|
if input_data.batch_dim_axis in axes and data.batch:
|
|
4595
4594
|
for axis in axes:
|
|
@@ -1086,6 +1086,9 @@ class Engine(EngineBase):
|
|
|
1086
1086
|
step_idx = 0
|
|
1087
1087
|
for extern_data_raw in data_loader:
|
|
1088
1088
|
step_begin_time = time.time()
|
|
1089
|
+
if self._forward_step_expected_outputs:
|
|
1090
|
+
# Also resets any dyn dims, which might have been set in the prev step.
|
|
1091
|
+
self._forward_step_expected_outputs.reset_content()
|
|
1089
1092
|
extern_data = extern_data_util.raw_dict_to_extern_data(
|
|
1090
1093
|
extern_data_raw, extern_data_template=self.extern_data, device=self._device
|
|
1091
1094
|
)
|
|
@@ -4,7 +4,7 @@ tests for HDF dataset
|
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
from typing import Dict, Any
|
|
7
|
+
from typing import Dict, Any, List, Tuple, Optional
|
|
8
8
|
import os
|
|
9
9
|
import sys
|
|
10
10
|
import _setup_test_env # noqa
|
|
@@ -254,6 +254,8 @@ def test_SimpleHDFWriter():
|
|
|
254
254
|
seq_lens = seq_lens1 + seq_lens2
|
|
255
255
|
|
|
256
256
|
dataset = HDFDataset(files=[fn])
|
|
257
|
+
assert dataset.get_data_keys() == ["data"]
|
|
258
|
+
assert dataset.get_target_list() == []
|
|
257
259
|
reader = DatasetTestReader(dataset=dataset)
|
|
258
260
|
reader.read_all()
|
|
259
261
|
assert "data" in reader.data_keys # "classes" might be in there as well, although not really correct/existing
|
|
@@ -480,6 +482,248 @@ def test_SimpleHDFWriter_swmr():
|
|
|
480
482
|
writer.close() # Should not matter.
|
|
481
483
|
|
|
482
484
|
|
|
485
|
+
def test_SimpleHDFWriter_labels():
|
|
486
|
+
fn = get_test_tmp_file(suffix=".hdf")
|
|
487
|
+
os.remove(fn) # SimpleHDFWriter expects that the file does not exist
|
|
488
|
+
n_dim = 3
|
|
489
|
+
writer = SimpleHDFWriter(filename=fn, dim=n_dim, labels=[" ", "a", "b"])
|
|
490
|
+
seq_lens = [2, 3]
|
|
491
|
+
writer.insert_batch(
|
|
492
|
+
inputs=numpy.random.normal(size=(len(seq_lens), max(seq_lens), n_dim)).astype("float32"),
|
|
493
|
+
seq_len=seq_lens,
|
|
494
|
+
seq_tag=["seq-%i" % i for i in range(len(seq_lens))],
|
|
495
|
+
)
|
|
496
|
+
writer.close()
|
|
497
|
+
|
|
498
|
+
old_dataset = Old2018HDFDataset()
|
|
499
|
+
old_dataset.add_file(fn)
|
|
500
|
+
old_dataset.initialize()
|
|
501
|
+
print("Old dataset:", old_dataset)
|
|
502
|
+
print("Old dataset outputs:", old_dataset.num_outputs)
|
|
503
|
+
print("Old dataset target keys:", old_dataset.target_keys)
|
|
504
|
+
old_dataset.init_seq_order(epoch=1)
|
|
505
|
+
old_dataset.load_seqs(0, 1)
|
|
506
|
+
|
|
507
|
+
dataset = HDFDataset(files=[fn])
|
|
508
|
+
print("Dataset:")
|
|
509
|
+
print(" input:", dataset.num_inputs, "x", dataset.window)
|
|
510
|
+
print(" output:", dataset.num_outputs)
|
|
511
|
+
print(" ", dataset.len_info(fast=True) or "no info")
|
|
512
|
+
print("Dataset keys:", dataset.get_data_keys())
|
|
513
|
+
print("Dataset target keys:", dataset.get_target_list())
|
|
514
|
+
print("Dataset labels:", ", ".join(f"{k!r}: {v[:3]}... len {len(v)}" for k, v in dataset.labels.items()) or "None")
|
|
515
|
+
assert dataset.get_data_keys() == ["data"]
|
|
516
|
+
assert dataset.get_target_list() == []
|
|
517
|
+
|
|
518
|
+
assert dataset.labels["data"] == [" ", "a", "b"]
|
|
519
|
+
reader = DatasetTestReader(dataset=dataset)
|
|
520
|
+
reader.read_all()
|
|
521
|
+
assert reader.data_keys == ["data"]
|
|
522
|
+
assert reader.data_sparse["data"] is False
|
|
523
|
+
assert list(reader.data_shape["data"]) == [n_dim]
|
|
524
|
+
assert reader.data_dtype["data"] == "float32"
|
|
525
|
+
assert len(seq_lens) == reader.num_seqs
|
|
526
|
+
for i, seq_len in enumerate(seq_lens):
|
|
527
|
+
assert reader.seq_lens[i]["data"] == seq_len
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
class Old2018HDFDataset(CachedDataset):
|
|
531
|
+
"""
|
|
532
|
+
Copied and adapted from an early RETURNN version:
|
|
533
|
+
2018-03-09: https://github.com/rwth-i6/returnn/blob/c2d8fed877022d1ac1bf68b801604733db51223e/HDFDataset.py
|
|
534
|
+
|
|
535
|
+
(Not really fully functional here though... we just use it to test whether loading works.)
|
|
536
|
+
|
|
537
|
+
Some version history:
|
|
538
|
+
2015-01-05: https://github.com/rwth-i6/returnn/blob/3be0fe0906212d1ffdd93807c0a3854a38842eb8/Dataset.py
|
|
539
|
+
2015-08-04: https://github.com/rwth-i6/returnn/blob/995e87184abc6e07256417cb533163ac0a7d7dd8/HDFDataset.py
|
|
540
|
+
2018-03-09: https://github.com/rwth-i6/returnn/blob/c2d8fed877022d1ac1bf68b801604733db51223e/HDFDataset.py
|
|
541
|
+
"""
|
|
542
|
+
|
|
543
|
+
def __init__(self, **kwargs):
|
|
544
|
+
super(Old2018HDFDataset, self).__init__(cache_byte_size=100, **kwargs)
|
|
545
|
+
self.files: List[str] = []
|
|
546
|
+
self.file_start = [0]
|
|
547
|
+
self.file_seq_start: List[List[int]] = []
|
|
548
|
+
self.file_index: List[int] = []
|
|
549
|
+
self.data_dtype: Dict[str, str] = {}
|
|
550
|
+
self.data_sparse: Dict[str, bool] = {}
|
|
551
|
+
|
|
552
|
+
# Copied from old base CachedDataset
|
|
553
|
+
self._seq_lengths: List[Tuple[int, int]] = [] # uses real seq idx
|
|
554
|
+
self.tags: List[str] = [] # uses real seq idx
|
|
555
|
+
self.tag_idx: Dict[str, int] = {} # map of tag -> real-seq-idx
|
|
556
|
+
self.targets = {}
|
|
557
|
+
self.target_keys = []
|
|
558
|
+
|
|
559
|
+
# Copied from old base Dataset
|
|
560
|
+
self._num_codesteps: Optional[int] = None # Num output frames, could be different from input, seq2seq, ctc.
|
|
561
|
+
|
|
562
|
+
def add_file(self, filename):
|
|
563
|
+
"""
|
|
564
|
+
Setups data:
|
|
565
|
+
self.seq_lengths
|
|
566
|
+
self.file_index
|
|
567
|
+
self.file_start
|
|
568
|
+
self.file_seq_start
|
|
569
|
+
Use load_seqs() to load the actual data.
|
|
570
|
+
:type filename: str
|
|
571
|
+
"""
|
|
572
|
+
fin = h5py.File(filename, "r")
|
|
573
|
+
decode = lambda s: s if isinstance(s, str) else s.decode("utf-8")
|
|
574
|
+
if "targets" in fin:
|
|
575
|
+
self.labels = {
|
|
576
|
+
k: [decode(item).split("\0")[0] for item in fin["targets/labels"][k][...].tolist()]
|
|
577
|
+
for k in fin["targets/labels"]
|
|
578
|
+
}
|
|
579
|
+
if not self.labels:
|
|
580
|
+
labels = [decode(item).split("\0")[0] for item in fin["labels"][...].tolist()]
|
|
581
|
+
""":type: list[str]"""
|
|
582
|
+
self.labels = {"classes": labels}
|
|
583
|
+
assert len(self.labels["classes"]) == len(labels), (
|
|
584
|
+
"expected " + str(len(self.labels["classes"])) + " got " + str(len(labels))
|
|
585
|
+
)
|
|
586
|
+
tags = [decode(item).split("\0")[0] for item in fin["seqTags"][...].tolist()]
|
|
587
|
+
""" :type: list[str] """
|
|
588
|
+
self.files.append(filename)
|
|
589
|
+
if "times" in fin:
|
|
590
|
+
if self.timestamps is None:
|
|
591
|
+
self.timestamps = fin[attr_times][...]
|
|
592
|
+
else:
|
|
593
|
+
self.timestamps = numpy.concatenate(
|
|
594
|
+
[self.timestamps, fin[attr_times][...]], axis=0
|
|
595
|
+
) # .extend(fin[attr_times][...].tolist())
|
|
596
|
+
seq_lengths = fin[attr_seqLengths][...]
|
|
597
|
+
if "targets" in fin:
|
|
598
|
+
self.target_keys = sorted(fin["targets/labels"].keys())
|
|
599
|
+
else:
|
|
600
|
+
self.target_keys = ["classes"]
|
|
601
|
+
|
|
602
|
+
if len(seq_lengths.shape) == 1:
|
|
603
|
+
seq_lengths = numpy.array(zip(*[seq_lengths.tolist() for i in range(len(self.target_keys) + 1)]))
|
|
604
|
+
|
|
605
|
+
seq_start = [numpy.zeros((seq_lengths.shape[1],), "int64")]
|
|
606
|
+
if not self._seq_start:
|
|
607
|
+
self._seq_start = [numpy.zeros((seq_lengths.shape[1],), "int64")]
|
|
608
|
+
for l in seq_lengths:
|
|
609
|
+
self._seq_lengths.append(numpy.array(l))
|
|
610
|
+
seq_start.append(seq_start[-1] + l)
|
|
611
|
+
self.tags += tags
|
|
612
|
+
self.file_seq_start.append(seq_start)
|
|
613
|
+
nseqs = len(seq_start) - 1
|
|
614
|
+
for i in range(nseqs):
|
|
615
|
+
self.tag_idx[tags[i]] = i + self._num_seqs
|
|
616
|
+
self._num_seqs += nseqs
|
|
617
|
+
self.file_index.extend([len(self.files) - 1] * nseqs)
|
|
618
|
+
self.file_start.append(self.file_start[-1] + nseqs)
|
|
619
|
+
self._num_timesteps += sum([s[0] for s in seq_lengths])
|
|
620
|
+
if self._num_codesteps is None:
|
|
621
|
+
self._num_codesteps = [0 for i in range(1, len(seq_lengths[0]))]
|
|
622
|
+
for i in range(1, len(seq_lengths[0])):
|
|
623
|
+
self._num_codesteps[i - 1] += sum([s[i] for s in seq_lengths])
|
|
624
|
+
if len(fin["inputs"].shape) == 1: # sparse
|
|
625
|
+
num_inputs = [fin.attrs[attr_inputPattSize], 1]
|
|
626
|
+
else:
|
|
627
|
+
num_inputs = [fin["inputs"].shape[1], len(fin["inputs"].shape)] # fin.attrs[attr_inputPattSize]
|
|
628
|
+
if self.num_inputs == 0:
|
|
629
|
+
self.num_inputs = num_inputs[0]
|
|
630
|
+
assert self.num_inputs == num_inputs[0], "wrong input dimension in file %s (expected %s got %s)" % (
|
|
631
|
+
filename,
|
|
632
|
+
self.num_inputs,
|
|
633
|
+
num_inputs[0],
|
|
634
|
+
)
|
|
635
|
+
if "targets/size" in fin:
|
|
636
|
+
num_outputs = {
|
|
637
|
+
k: [fin["targets/size"].attrs[k], len(fin["targets/data"][k].shape)] for k in fin["targets/size"].attrs
|
|
638
|
+
}
|
|
639
|
+
else:
|
|
640
|
+
num_outputs = {"classes": fin.attrs["numLabels"]}
|
|
641
|
+
num_outputs["data"] = num_inputs
|
|
642
|
+
if not self.num_outputs:
|
|
643
|
+
self.num_outputs = num_outputs
|
|
644
|
+
assert self.num_outputs == num_outputs, "wrong dimensions in file %s (expected %s got %s)" % (
|
|
645
|
+
filename,
|
|
646
|
+
self.num_outputs,
|
|
647
|
+
num_outputs,
|
|
648
|
+
)
|
|
649
|
+
if "targets" in fin:
|
|
650
|
+
for name in fin["targets/data"]:
|
|
651
|
+
tdim = 1 if len(fin["targets/data"][name].shape) == 1 else fin["targets/data"][name].shape[1]
|
|
652
|
+
self.data_dtype[name] = str(fin["targets/data"][name].dtype) if tdim > 1 else "int32"
|
|
653
|
+
self.targets[name] = None
|
|
654
|
+
else:
|
|
655
|
+
self.targets = {"classes": numpy.zeros((self._num_timesteps,))}
|
|
656
|
+
self.data_dtype["classes"] = "int32"
|
|
657
|
+
self.data_dtype["data"] = fin["inputs"].dtype
|
|
658
|
+
assert len(self.target_keys) == len(self._seq_lengths[0]) - 1
|
|
659
|
+
fin.close()
|
|
660
|
+
|
|
661
|
+
def _load_seqs(self, start, end):
|
|
662
|
+
"""
|
|
663
|
+
Load data sequences.
|
|
664
|
+
As a side effect, will modify / fill-up:
|
|
665
|
+
self.alloc_intervals
|
|
666
|
+
self.targets
|
|
667
|
+
self.chars
|
|
668
|
+
|
|
669
|
+
:param int start: start sorted seq idx
|
|
670
|
+
:param int end: end sorted seq idx
|
|
671
|
+
"""
|
|
672
|
+
assert start < self.num_seqs
|
|
673
|
+
assert end <= self.num_seqs
|
|
674
|
+
selection = self.insert_alloc_interval(start, end)
|
|
675
|
+
assert len(selection) <= end - start, (
|
|
676
|
+
"DEBUG: more sequences requested (" + str(len(selection)) + ") as required (" + str(end - start) + ")"
|
|
677
|
+
)
|
|
678
|
+
file_info: List[List[int]] = [[] for l in range(len(self.files))]
|
|
679
|
+
# file_info[i] is (sorted seq idx from selection, real seq idx)
|
|
680
|
+
for idc in selection:
|
|
681
|
+
ids = self._seq_index[idc]
|
|
682
|
+
file_info[self.file_index[ids]].append((idc, ids))
|
|
683
|
+
self.preload_set.add(ids)
|
|
684
|
+
for i in range(len(self.files)):
|
|
685
|
+
if len(file_info[i]) == 0:
|
|
686
|
+
continue
|
|
687
|
+
print("loading file %d/%d" % (i + 1, len(self.files)), self.files[i], file=log.v4)
|
|
688
|
+
fin = h5py.File(self.files[i], "r")
|
|
689
|
+
for idc, ids in file_info[i]:
|
|
690
|
+
s = ids - self.file_start[i]
|
|
691
|
+
p = self.file_seq_start[i][s]
|
|
692
|
+
l = self._seq_lengths[ids]
|
|
693
|
+
if "targets" in fin:
|
|
694
|
+
for k in fin["targets/data"]:
|
|
695
|
+
if self.targets[k] is None:
|
|
696
|
+
self.targets[k] = numpy.zeros((self._num_codesteps[self.target_keys.index(k)],)) - 1
|
|
697
|
+
ldx = self.target_keys.index(k) + 1
|
|
698
|
+
self.targets[k][self.get_seq_start(idc)[ldx] : self.get_seq_start(idc)[ldx] + l[ldx]] = fin[
|
|
699
|
+
"targets/data/" + k
|
|
700
|
+
][p[ldx] : p[ldx] + l[ldx]]
|
|
701
|
+
self._set_alloc_intervals_data(idc, data=fin["inputs"][p[0] : p[0] + l[0]][...])
|
|
702
|
+
fin.close()
|
|
703
|
+
gc.collect()
|
|
704
|
+
assert self.is_cached(start, end)
|
|
705
|
+
|
|
706
|
+
def _get_seq_length_by_real_idx(self, real_seq_idx):
|
|
707
|
+
return self._seq_lengths[real_seq_idx]
|
|
708
|
+
|
|
709
|
+
def get_tag(self, sorted_seq_idx):
|
|
710
|
+
ids = self._seq_index[self._index_map[sorted_seq_idx]]
|
|
711
|
+
return self.tags[ids]
|
|
712
|
+
|
|
713
|
+
def is_data_sparse(self, key):
|
|
714
|
+
if key in self.num_outputs:
|
|
715
|
+
return self.num_outputs[key][1] == 1
|
|
716
|
+
if self.get_data_dtype(key).startswith("int"):
|
|
717
|
+
return True
|
|
718
|
+
return False
|
|
719
|
+
|
|
720
|
+
def get_data_dtype(self, key):
|
|
721
|
+
return self.data_dtype[key]
|
|
722
|
+
|
|
723
|
+
def len_info(self):
|
|
724
|
+
return ", ".join(["HDF dataset", "sequences: %i" % self.num_seqs, "frames: %i" % self.get_num_timesteps()])
|
|
725
|
+
|
|
726
|
+
|
|
483
727
|
def dummy_iter_dataset(dataset: Dataset) -> int:
|
|
484
728
|
"""
|
|
485
729
|
:param Dataset dataset:
|
|
@@ -33,6 +33,28 @@ def test_pack_padded():
|
|
|
33
33
|
run_model(extern_data, lambda *, epoch, step: _Net(), _forward_step)
|
|
34
34
|
|
|
35
35
|
|
|
36
|
+
def test_pack_padded_md():
|
|
37
|
+
batch_dim = Dim(3, name="batch")
|
|
38
|
+
hyps_dim = Dim(5, name="hyps")
|
|
39
|
+
hyps_spatial_dim = Dim(Tensor("hyps_spatial", [batch_dim, hyps_dim], dtype="int32"))
|
|
40
|
+
vocab_dim = Dim(1000, name="vocab")
|
|
41
|
+
extern_data = TensorDict(
|
|
42
|
+
{"labels": Tensor("labels", [batch_dim, hyps_dim, hyps_spatial_dim], dtype="int32", sparse_dim=vocab_dim)}
|
|
43
|
+
)
|
|
44
|
+
hyps_packed_spatial_dim = Dim(None, name="hyps_packed_spatial")
|
|
45
|
+
|
|
46
|
+
# noinspection PyShadowingNames
|
|
47
|
+
def _forward_step(*, extern_data: TensorDict, **_kwargs):
|
|
48
|
+
labels = extern_data["labels"]
|
|
49
|
+
assert hyps_spatial_dim in labels.dims
|
|
50
|
+
assert hyps_spatial_dim.dyn_size_ext.dims == (batch_dim, hyps_dim)
|
|
51
|
+
labels_, _ = rf.pack_padded(labels, dims=[hyps_dim, hyps_spatial_dim], out_dim=hyps_packed_spatial_dim)
|
|
52
|
+
assert hyps_packed_spatial_dim.dyn_size_ext.dims == (batch_dim,)
|
|
53
|
+
labels_.mark_as_default_output(shape=[batch_dim, hyps_packed_spatial_dim])
|
|
54
|
+
|
|
55
|
+
run_model(extern_data, lambda **_kwargs: rf.Module(), _forward_step, test_tensorflow=False)
|
|
56
|
+
|
|
57
|
+
|
|
36
58
|
def test_masked_select():
|
|
37
59
|
time_dim = Dim(Tensor("time", [batch_dim], dtype="int32"))
|
|
38
60
|
in_dim = Dim(7, name="in")
|
|
@@ -48,6 +48,11 @@ def dump_dataset(options):
|
|
|
48
48
|
dataset.init_seq_order(epoch=options.epoch, seq_list=seq_list)
|
|
49
49
|
print("Dataset keys:", dataset.get_data_keys(), file=log.v3)
|
|
50
50
|
print("Dataset target keys:", dataset.get_target_list(), file=log.v3)
|
|
51
|
+
print(
|
|
52
|
+
"Dataset labels:",
|
|
53
|
+
", ".join(f"{k!r}: {v[:3]}... len {len(v)}" for k, v in dataset.labels.items()) or "None",
|
|
54
|
+
file=log.v3,
|
|
55
|
+
)
|
|
51
56
|
assert options.key in dataset.get_data_keys()
|
|
52
57
|
max_seq_length = NumbersDict(options.max_seq_length)
|
|
53
58
|
min_seq_length = NumbersDict(options.min_seq_length)
|
|
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.20240917.180949 → returnn-1.20240918.234323}/demos/demo-hyper-param-tuning.config
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20240917.180949 → returnn-1.20240918.234323}/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.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-chunking-blstm.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-contribrnn-lstm.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-maxgradnorm-lstm.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-native-lstm-lowmem.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-native-lstm.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-native-lstm2.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-native-lstm2.12ax.tuned.config
RENAMED
|
File without changes
|
{returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-neural-transducer.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-rec-explicit-lstm.config
RENAMED
|
File without changes
|
{returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-rec-explicit-rnn.config
RENAMED
|
File without changes
|
|
File without changes
|
{returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-search-compiled-graph.py
RENAMED
|
File without changes
|
{returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-vanilla-lstm.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-upd-mult-model.lstm.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
{returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png
RENAMED
|
File without changes
|
{returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png
RENAMED
|
File without changes
|
{returnn-1.20240917.180949 → returnn-1.20240918.234323}/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.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/create_IAM_dataset.py
RENAMED
|
File without changes
|
|
File without changes
|
{returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/features/raw/demo.h5
RENAMED
|
File without changes
|