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.

Files changed (463) hide show
  1. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/PKG-INFO +1 -1
  2. returnn-1.20240918.234323/_setup_info_generated.py +2 -0
  3. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/audio.py +1 -1
  4. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/cached.py +1 -1
  5. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/hdf.py +30 -14
  6. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/array_.py +8 -7
  7. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/layers/basic.py +0 -1
  8. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/engine.py +3 -0
  9. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn.egg-info/PKG-INFO +1 -1
  10. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_HDFDataset.py +245 -1
  11. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_array.py +22 -0
  12. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/dump-dataset.py +5 -0
  13. returnn-1.20240917.180949/_setup_info_generated.py +0 -2
  14. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/.editorconfig +0 -0
  15. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/.gitignore +0 -0
  16. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/.gitmodules +0 -0
  17. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/.kateconfig +0 -0
  18. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/CHANGELOG.md +0 -0
  19. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/CODEOWNERS +0 -0
  20. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/CONTRIBUTING.md +0 -0
  21. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/LICENSE +0 -0
  22. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/MANIFEST.in +0 -0
  23. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/README.rst +0 -0
  24. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/__init__.py +0 -0
  25. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/12AX.cluster_map +0 -0
  26. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/_setup_returnn_env.py +0 -0
  27. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-fwd.config +0 -0
  28. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-horovod-mpi.py +0 -0
  29. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-horovod-mpi.py.sh +0 -0
  30. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-horovod-mpi.sh +0 -0
  31. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-hyper-param-tuning.config +0 -0
  32. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-iter-dataset.py +0 -0
  33. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-list-devices.py +0 -0
  34. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-lua-torch-layer.config +0 -0
  35. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-pretrain.config +0 -0
  36. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-record-and-push-to-webserver.py +0 -0
  37. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-returnn-as-framework.py +0 -0
  38. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-rf-pt-benchmark.py +0 -0
  39. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-rf.config +0 -0
  40. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-rhn-enwik8.config +0 -0
  41. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-sprint-interface.py +0 -0
  42. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-att-copy.config +0 -0
  43. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-attention.config +0 -0
  44. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
  45. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
  46. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-enc-dec.config +0 -0
  47. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-hard-att-copy.config +0 -0
  48. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-lstm-benchmark.py +0 -0
  49. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
  50. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
  51. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-native-lstm.12ax.config +0 -0
  52. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-native-lstm2.12ax.config +0 -0
  53. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
  54. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-neural-transducer.12ax.config +0 -0
  55. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-rec-explicit-lstm.config +0 -0
  56. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-rec-explicit-rnn.config +0 -0
  57. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-rec-self-att.config +0 -0
  58. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-search-compiled-graph.py +0 -0
  59. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
  60. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-timit-lstm-ctc.config +0 -0
  61. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-torch.config +0 -0
  62. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
  63. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/demo.sh +0 -0
  64. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
  65. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
  66. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
  67. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/README.txt +0 -0
  68. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/chars.txt +0 -0
  69. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/config_demo +0 -0
  70. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/config_fwd +0 -0
  71. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/config_real +0 -0
  72. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
  73. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/decode.py +0 -0
  74. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
  75. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/go.sh +0 -0
  76. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/lines.txt +0 -0
  77. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/split/eval.txt +0 -0
  78. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/split/train.txt +0 -0
  79. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/IAM/split/valid.txt +0 -0
  80. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/README.md +0 -0
  81. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/artificial/create_test_h5.py +0 -0
  82. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/artificial/forwardconfig +0 -0
  83. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/artificial/go.sh +0 -0
  84. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/artificial/trainconfig +0 -0
  85. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
  86. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
  87. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/artificial_rgb/go.sh +0 -0
  88. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
  89. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/pyproject.toml +0 -0
  90. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/requirements.txt +0 -0
  91. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/__init__.py +0 -0
  92. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/__main__.py +0 -0
  93. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/__old_mod_loader__.py +0 -0
  94. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/__setup__.py +0 -0
  95. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/config.py +0 -0
  96. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/__init__.py +0 -0
  97. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/basic.py +0 -0
  98. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/bundle_file.py +0 -0
  99. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/cached2.py +0 -0
  100. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/distrib_files.py +0 -0
  101. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/generating.py +0 -0
  102. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/lm.py +0 -0
  103. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/map.py +0 -0
  104. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/meta.py +0 -0
  105. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/multi_proc.py +0 -0
  106. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/normalization_data.py +0 -0
  107. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/numpy_dump.py +0 -0
  108. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/postprocessing.py +0 -0
  109. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/raw_wav.py +0 -0
  110. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/sprint.py +0 -0
  111. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/stereo.py +0 -0
  112. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/util/__init__.py +0 -0
  113. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/util/feature_extraction.py +0 -0
  114. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/util/strings.py +0 -0
  115. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/datasets/util/vocabulary.py +0 -0
  116. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/engine/__init__.py +0 -0
  117. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/engine/base.py +0 -0
  118. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/engine/batch.py +0 -0
  119. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/__init__.py +0 -0
  120. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/__main__.py +0 -0
  121. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/.git +0 -0
  122. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
  123. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
  124. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
  125. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
  126. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
  127. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
  128. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
  129. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
  130. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
  131. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
  132. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
  133. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
  134. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
  135. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
  136. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
  137. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
  138. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
  139. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
  140. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
  141. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
  142. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
  143. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
  144. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
  145. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
  146. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/__init__.py +0 -0
  147. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/graph_editor/README.md +0 -0
  148. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/graph_editor/__init__.py +0 -0
  149. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/graph_editor/edit.py +0 -0
  150. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/graph_editor/reroute.py +0 -0
  151. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/graph_editor/select.py +0 -0
  152. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/graph_editor/subgraph.py +0 -0
  153. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/graph_editor/transform.py +0 -0
  154. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/extern/graph_editor/util.py +0 -0
  155. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/forward_iface.py +0 -0
  156. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/__init__.py +0 -0
  157. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_backend.py +0 -0
  158. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_native/__init__.py +0 -0
  159. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_native/backend.cpp +0 -0
  160. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_native/backend.hpp +0 -0
  161. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_native/module.cpp +0 -0
  162. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_native/module.hpp +0 -0
  163. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_native/py_utils.hpp +0 -0
  164. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_native/tensor_ops.cpp +0 -0
  165. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_native/tensor_ops.hpp +0 -0
  166. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_numpy_backend.py +0 -0
  167. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_random_journal.py +0 -0
  168. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/_utils.py +0 -0
  169. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/attention.py +0 -0
  170. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/audio/__init__.py +0 -0
  171. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/audio/mel.py +0 -0
  172. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/audio/specaugment.py +0 -0
  173. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/backend.py +0 -0
  174. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/build_from_dict.py +0 -0
  175. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/cond.py +0 -0
  176. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/const.py +0 -0
  177. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/container.py +0 -0
  178. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/control_flow_ctx.py +0 -0
  179. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/conv.py +0 -0
  180. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/conversions/__init__.py +0 -0
  181. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/conversions/espnet_e_branchformer.py +0 -0
  182. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/conversions/hf_llama.py +0 -0
  183. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/conversions/torch_nn.py +0 -0
  184. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/decoder/__init__.py +0 -0
  185. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/decoder/transformer.py +0 -0
  186. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/device.py +0 -0
  187. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/dims.py +0 -0
  188. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/dropout.py +0 -0
  189. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/dtype.py +0 -0
  190. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/encoder/__init__.py +0 -0
  191. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/encoder/base.py +0 -0
  192. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/encoder/conformer.py +0 -0
  193. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/encoder/e_branchformer.py +0 -0
  194. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/gradient.py +0 -0
  195. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/graph.py +0 -0
  196. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/hooks.py +0 -0
  197. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/init.py +0 -0
  198. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/label_smoothing.py +0 -0
  199. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/linear.py +0 -0
  200. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/loop.py +0 -0
  201. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/loss.py +0 -0
  202. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/math_.py +0 -0
  203. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/matmul.py +0 -0
  204. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/module.py +0 -0
  205. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/normalization.py +0 -0
  206. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/parameter.py +0 -0
  207. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/parametrizations.py +0 -0
  208. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/parametrize.py +0 -0
  209. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/piecewise_linear.py +0 -0
  210. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/rand.py +0 -0
  211. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/rec.py +0 -0
  212. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/reduce.py +0 -0
  213. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/run_ctx.py +0 -0
  214. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/signal.py +0 -0
  215. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/state.py +0 -0
  216. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/stepwise_scheduler.py +0 -0
  217. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/tensor_array.py +0 -0
  218. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/frontend/types.py +0 -0
  219. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/import_/__init__.py +0 -0
  220. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/import_/common.py +0 -0
  221. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/import_/git.py +0 -0
  222. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/import_/import_.py +0 -0
  223. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/learning_rate_control.py +0 -0
  224. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/log.py +0 -0
  225. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/native_op.cpp +0 -0
  226. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/native_op.py +0 -0
  227. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/pretrain.py +0 -0
  228. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/sprint/__init__.py +0 -0
  229. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/sprint/cache.py +0 -0
  230. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/sprint/control.py +0 -0
  231. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/sprint/error_signals.py +0 -0
  232. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/sprint/extern_interface.py +0 -0
  233. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/sprint/interface.py +0 -0
  234. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/README.md +0 -0
  235. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/__init__.py +0 -0
  236. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/_dim_extra.py +0 -0
  237. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/_tensor_extra.py +0 -0
  238. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/_tensor_mixin_base.py +0 -0
  239. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/_tensor_op_overloads.py +0 -0
  240. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/control_flow_ctx.py +0 -0
  241. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/dim.py +0 -0
  242. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/marked_dim.py +0 -0
  243. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/tensor.py +0 -0
  244. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/tensor_dict.py +0 -0
  245. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tensor/utils.py +0 -0
  246. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/__init__.py +0 -0
  247. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/compat.py +0 -0
  248. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/data_pipeline.py +0 -0
  249. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/distributed.py +0 -0
  250. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/engine.py +0 -0
  251. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/README.md +0 -0
  252. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/__init__.py +0 -0
  253. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/_backend.py +0 -0
  254. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/_utils.py +0 -0
  255. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/cond.py +0 -0
  256. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
  257. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
  258. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/dims.py +0 -0
  259. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/layer.py +0 -0
  260. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/loop.py +0 -0
  261. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/make_layer.py +0 -0
  262. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/masked_computation.py +0 -0
  263. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
  264. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
  265. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_low_level/__init__.py +0 -0
  266. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/frontend_low_level/_backend.py +0 -0
  267. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/horovod.py +0 -0
  268. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/hyper_param_tuning.py +0 -0
  269. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/layers/__init__.py +0 -0
  270. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/layers/base.py +0 -0
  271. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/layers/rec.py +0 -0
  272. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/layers/segmental_model.py +0 -0
  273. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/layers/signal_processing.py +0 -0
  274. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/layers/variable.py +0 -0
  275. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/native_op.py +0 -0
  276. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/network.py +0 -0
  277. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/sprint.py +0 -0
  278. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/updater.py +0 -0
  279. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/util/__init__.py +0 -0
  280. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/util/basic.py +0 -0
  281. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/util/data.py +0 -0
  282. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/util/gradient_checkpoint.py +0 -0
  283. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/util/ken_lm.py +0 -0
  284. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/tf/util/open_fst.py +0 -0
  285. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/README.md +0 -0
  286. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/__init__.py +0 -0
  287. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/data/__init__.py +0 -0
  288. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/data/extern_data.py +0 -0
  289. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/data/pipeline.py +0 -0
  290. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/data/queued_data_iter.py +0 -0
  291. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
  292. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/data/tensor_utils.py +0 -0
  293. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/distributed.py +0 -0
  294. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/frontend/__init__.py +0 -0
  295. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/frontend/_backend.py +0 -0
  296. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/frontend/_rand.py +0 -0
  297. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/frontend/bridge.py +0 -0
  298. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/frontend/raw_ops.py +0 -0
  299. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/updater.py +0 -0
  300. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/util/README.md +0 -0
  301. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/util/__init__.py +0 -0
  302. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/util/array_.py +0 -0
  303. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/util/diagnose_gpu.py +0 -0
  304. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/util/gradient_checkpoint.py +0 -0
  305. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/util/module.py +0 -0
  306. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/torch/util/scaled_gradient.py +0 -0
  307. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/__init__.py +0 -0
  308. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/basic.py +0 -0
  309. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/better_exchook.py +0 -0
  310. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/bpe.py +0 -0
  311. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/debug.py +0 -0
  312. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/debug_helpers.py +0 -0
  313. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/file_cache.py +0 -0
  314. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/fsa.py +0 -0
  315. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/literal_py_to_pickle.py +0 -0
  316. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/math.py +0 -0
  317. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
  318. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/native_code_compiler.py +0 -0
  319. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/pprint.py +0 -0
  320. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/py-to-pickle.cpp +0 -0
  321. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/py_compat.py +0 -0
  322. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/py_ext_mod_compiler.py +0 -0
  323. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/result_with_reason.py +0 -0
  324. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/sig_proc.py +0 -0
  325. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/task_system.py +0 -0
  326. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/train_proc_manager.py +0 -0
  327. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn/util/watch_memory.py +0 -0
  328. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn.egg-info/SOURCES.txt +0 -0
  329. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn.egg-info/dependency_links.txt +0 -0
  330. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/returnn.egg-info/top_level.txt +0 -0
  331. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/rnn.py +0 -0
  332. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/setup.cfg +0 -0
  333. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/setup.py +0 -0
  334. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/DummySprintExec.py +0 -0
  335. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm-inspection-profile.xml +0 -0
  336. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/.gitignore +0 -0
  337. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/.name +0 -0
  338. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
  339. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
  340. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
  341. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
  342. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
  343. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/misc.xml +0 -0
  344. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/modules.xml +0 -0
  345. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/returnn.iml +0 -0
  346. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
  347. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/_set_num_threads1.py +0 -0
  348. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/_setup_returnn_env.py +0 -0
  349. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/_setup_test_env.py +0 -0
  350. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/bpe-unicode-demo.codes +0 -0
  351. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/bpe-unicode-demo.vocab +0 -0
  352. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/lexicon_opt.fst +0 -0
  353. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/lexicon_opt.isyms +0 -0
  354. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/lexicon_opt.jpg +0 -0
  355. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/lexicon_opt.osyms +0 -0
  356. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/lint_common.py +0 -0
  357. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/pycharm-inspect.py +0 -0
  358. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/pylint.py +0 -0
  359. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/returnn-as-framework.py +0 -0
  360. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/rf_utils.py +0 -0
  361. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/spelling.dic +0 -0
  362. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_Config.py +0 -0
  363. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_Dataset.py +0 -0
  364. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_Fsa.py +0 -0
  365. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_GeneratingDataset.py +0 -0
  366. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_LearningRateControl.py +0 -0
  367. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_Log.py +0 -0
  368. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_MultiProcDataset.py +0 -0
  369. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_Pretrain.py +0 -0
  370. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_ResNet.py +0 -0
  371. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_SprintDataset.py +0 -0
  372. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_SprintInterface.py +0 -0
  373. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TFEngine.py +0 -0
  374. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TFNativeOp.py +0 -0
  375. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TFNetworkLayer.py +0 -0
  376. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TFNetworkRecLayer.py +0 -0
  377. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TFNetworkSigProcLayer.py +0 -0
  378. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TFUpdater.py +0 -0
  379. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TFUtil.py +0 -0
  380. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TF_determinism.py +0 -0
  381. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TaskSystem.py +0 -0
  382. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TaskSystem_SharedMem.py +0 -0
  383. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_TranslationDataset.py +0 -0
  384. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_Util.py +0 -0
  385. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_demos.py +0 -0
  386. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_fork_exec.py +0 -0
  387. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_hdf_dump.py +0 -0
  388. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_attention.py +0 -0
  389. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_base.py +0 -0
  390. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_cond.py +0 -0
  391. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_const.py +0 -0
  392. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_container.py +0 -0
  393. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_conv.py +0 -0
  394. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_decoder_transformer.py +0 -0
  395. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_encoder_conformer.py +0 -0
  396. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_gradient.py +0 -0
  397. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_label_smoothing.py +0 -0
  398. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_loop.py +0 -0
  399. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_math.py +0 -0
  400. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_normalization.py +0 -0
  401. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_piecewise_linear.py +0 -0
  402. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_rec.py +0 -0
  403. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_reduce.py +0 -0
  404. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_rf_signal.py +0 -0
  405. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_tensor.py +0 -0
  406. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_tools.py +0 -0
  407. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_torch_dataset.py +0 -0
  408. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_torch_engine.py +0 -0
  409. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_torch_frontend.py +0 -0
  410. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_torch_internal_frontend.py +0 -0
  411. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/test_torch_util.py +0 -0
  412. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tests/torch_utils.py +0 -0
  413. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/_setup_returnn_env.py +0 -0
  414. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/analyze-dataset-batches.py +0 -0
  415. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/bliss-collect-seq-lens.py +0 -0
  416. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/bliss-dump-text.py +0 -0
  417. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/bliss-get-segment-names.py +0 -0
  418. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/bliss-to-ogg-zip.py +0 -0
  419. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/bpe-create-lexicon.py +0 -0
  420. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/calculate-word-error-rate.py +0 -0
  421. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/cleanup-old-models.py +0 -0
  422. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/collect-orth-symbols.py +0 -0
  423. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/collect-words.py +0 -0
  424. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/compile_native_op.py +0 -0
  425. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/compile_tf_graph.py +0 -0
  426. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/debug-dump-search-scores.py +0 -0
  427. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/debug-plot-search-scores.py +0 -0
  428. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/dump-dataset-raw-strings.py +0 -0
  429. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/dump-forward-stats.py +0 -0
  430. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/dump-forward.py +0 -0
  431. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/dump-network-json.py +0 -0
  432. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/dump-pickle.py +0 -0
  433. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/extract_state_tying_from_dataset.py +0 -0
  434. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/get-attention-weights.py +0 -0
  435. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/get-best-model-epoch.py +0 -0
  436. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/hdf_dump.py +0 -0
  437. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/hdf_dump_translation_dataset.py +0 -0
  438. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/import-blocks-mt-model.py +0 -0
  439. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/import-t2t-mt-model.py +0 -0
  440. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/.gitignore +0 -0
  441. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/Makefile +0 -0
  442. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/README.md +0 -0
  443. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/example/README.md +0 -0
  444. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/example/libs_list +0 -0
  445. {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
  446. {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
  447. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
  448. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/example/state_vars_list +0 -0
  449. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/example/tensor_names_list +0 -0
  450. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/file.h +0 -0
  451. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
  452. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
  453. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/main.cc +0 -0
  454. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/rescorer.h +0 -0
  455. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/vocabulary.cc +0 -0
  456. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/lattice_rescorer/vocabulary.h +0 -0
  457. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/tf_avg_checkpoints.py +0 -0
  458. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/tf_inspect_checkpoint.py +0 -0
  459. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/tf_inspect_summary_log.py +0 -0
  460. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/torch_avg_checkpoints.py +0 -0
  461. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/torch_export_to_onnx.py +0 -0
  462. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/torch_inspect_checkpoint.py +0 -0
  463. {returnn-1.20240917.180949 → returnn-1.20240918.234323}/tools/torch_inspect_checkpoint_and_opt.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20240917.180949
3
+ Version: 1.20240918.234323
4
4
  Summary: The RWTH extensible training framework for universal recurrent neural networks
5
5
  Home-page: https://github.com/rwth-i6/returnn/
6
6
  Author: Albert Zeyer
@@ -0,0 +1,2 @@
1
+ version = '1.20240918.234323'
2
+ long_version = '1.20240918.234323+git.9c0f6a9'
@@ -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(255)]
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=True):
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
- print("parsing file", filename, file=log.v5)
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, as HDFDataset assumes 'classes' 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.get_size_tensor() - 1, axis=in_dim) # [B]
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
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20240917.180949
3
+ Version: 1.20240918.234323
4
4
  Summary: The RWTH extensible training framework for universal recurrent neural networks
5
5
  Home-page: https://github.com/rwth-i6/returnn/
6
6
  Author: Albert Zeyer
@@ -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)
@@ -1,2 +0,0 @@
1
- version = '1.20240917.180949'
2
- long_version = '1.20240917.180949+git.6964c19'