returnn 1.20241023.152824__tar.gz → 1.20241026.3853__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 (468) hide show
  1. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/PKG-INFO +1 -1
  2. returnn-1.20241026.3853/_setup_info_generated.py +2 -0
  3. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/__main__.py +4 -0
  4. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/meta.py +105 -1
  5. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/engine/base.py +6 -0
  6. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/engine.py +6 -3
  7. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn.egg-info/PKG-INFO +1 -1
  8. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_Dataset.py +63 -2
  9. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_torch_engine.py +177 -0
  10. returnn-1.20241023.152824/_setup_info_generated.py +0 -2
  11. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/.editorconfig +0 -0
  12. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/.gitignore +0 -0
  13. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/.gitmodules +0 -0
  14. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/.kateconfig +0 -0
  15. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/CHANGELOG.md +0 -0
  16. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/CODEOWNERS +0 -0
  17. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/CONTRIBUTING.md +0 -0
  18. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/LICENSE +0 -0
  19. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/MANIFEST.in +0 -0
  20. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/README.rst +0 -0
  21. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/__init__.py +0 -0
  22. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/12AX.cluster_map +0 -0
  23. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/_setup_returnn_env.py +0 -0
  24. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-fwd.config +0 -0
  25. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-horovod-mpi.py +0 -0
  26. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-horovod-mpi.py.sh +0 -0
  27. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-horovod-mpi.sh +0 -0
  28. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-hyper-param-tuning.config +0 -0
  29. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-iter-dataset.py +0 -0
  30. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-list-devices.py +0 -0
  31. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-lua-torch-layer.config +0 -0
  32. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-pretrain.config +0 -0
  33. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-record-and-push-to-webserver.py +0 -0
  34. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-returnn-as-framework.py +0 -0
  35. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-rf-pt-benchmark.py +0 -0
  36. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-rf.config +0 -0
  37. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-rhn-enwik8.config +0 -0
  38. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-sprint-interface.py +0 -0
  39. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-tf-att-copy.config +0 -0
  40. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-tf-attention.config +0 -0
  41. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
  42. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
  43. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-tf-enc-dec.config +0 -0
  44. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-tf-hard-att-copy.config +0 -0
  45. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-tf-lstm-benchmark.py +0 -0
  46. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
  47. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
  48. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-tf-native-lstm.12ax.config +0 -0
  49. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-tf-native-lstm2.12ax.config +0 -0
  50. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
  51. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-tf-neural-transducer.12ax.config +0 -0
  52. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-tf-rec-explicit-lstm.config +0 -0
  53. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-tf-rec-explicit-rnn.config +0 -0
  54. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-tf-rec-self-att.config +0 -0
  55. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-tf-search-compiled-graph.py +0 -0
  56. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
  57. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-timit-lstm-ctc.config +0 -0
  58. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-torch.config +0 -0
  59. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
  60. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/demo.sh +0 -0
  61. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
  62. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
  63. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
  64. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/IAM/README.txt +0 -0
  65. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/IAM/chars.txt +0 -0
  66. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/IAM/config_demo +0 -0
  67. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/IAM/config_fwd +0 -0
  68. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/IAM/config_real +0 -0
  69. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
  70. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/IAM/decode.py +0 -0
  71. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
  72. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/IAM/go.sh +0 -0
  73. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/IAM/lines.txt +0 -0
  74. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/IAM/split/eval.txt +0 -0
  75. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/IAM/split/train.txt +0 -0
  76. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/IAM/split/valid.txt +0 -0
  77. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/README.md +0 -0
  78. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/artificial/create_test_h5.py +0 -0
  79. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/artificial/forwardconfig +0 -0
  80. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/artificial/go.sh +0 -0
  81. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/artificial/trainconfig +0 -0
  82. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
  83. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
  84. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/artificial_rgb/go.sh +0 -0
  85. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
  86. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/pyproject.toml +0 -0
  87. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/requirements.txt +0 -0
  88. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/__init__.py +0 -0
  89. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/__old_mod_loader__.py +0 -0
  90. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/__setup__.py +0 -0
  91. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/config.py +0 -0
  92. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/__init__.py +0 -0
  93. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/audio.py +0 -0
  94. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/basic.py +0 -0
  95. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/bundle_file.py +0 -0
  96. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/cached.py +0 -0
  97. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/cached2.py +0 -0
  98. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/distrib_files.py +0 -0
  99. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/generating.py +0 -0
  100. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/hdf.py +0 -0
  101. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/lm.py +0 -0
  102. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/map.py +0 -0
  103. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/multi_proc.py +0 -0
  104. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/normalization_data.py +0 -0
  105. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/numpy_dump.py +0 -0
  106. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/postprocessing.py +0 -0
  107. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/raw_wav.py +0 -0
  108. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/sprint.py +0 -0
  109. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/stereo.py +0 -0
  110. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/util/__init__.py +0 -0
  111. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/util/feature_extraction.py +0 -0
  112. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/util/strings.py +0 -0
  113. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/datasets/util/vocabulary.py +0 -0
  114. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/engine/__init__.py +0 -0
  115. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/engine/batch.py +0 -0
  116. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/__init__.py +0 -0
  117. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/__main__.py +0 -0
  118. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/.git +0 -0
  119. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
  120. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
  121. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
  122. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
  123. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
  124. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
  125. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
  126. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
  127. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
  128. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
  129. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
  130. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
  131. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
  132. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
  133. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
  134. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
  135. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
  136. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
  137. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
  138. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
  139. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
  140. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
  141. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
  142. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
  143. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/__init__.py +0 -0
  144. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/graph_editor/README.md +0 -0
  145. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/graph_editor/__init__.py +0 -0
  146. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/graph_editor/edit.py +0 -0
  147. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/graph_editor/reroute.py +0 -0
  148. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/graph_editor/select.py +0 -0
  149. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/graph_editor/subgraph.py +0 -0
  150. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/graph_editor/transform.py +0 -0
  151. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/extern/graph_editor/util.py +0 -0
  152. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/forward_iface.py +0 -0
  153. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/__init__.py +0 -0
  154. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/_backend.py +0 -0
  155. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/_native/__init__.py +0 -0
  156. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/_native/backend.cpp +0 -0
  157. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/_native/backend.hpp +0 -0
  158. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/_native/module.cpp +0 -0
  159. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/_native/module.hpp +0 -0
  160. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/_native/py_utils.hpp +0 -0
  161. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/_native/tensor_ops.cpp +0 -0
  162. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/_native/tensor_ops.hpp +0 -0
  163. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/_numpy_backend.py +0 -0
  164. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/_random_journal.py +0 -0
  165. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/_utils.py +0 -0
  166. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/array_.py +0 -0
  167. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/attention.py +0 -0
  168. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/audio/__init__.py +0 -0
  169. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/audio/mel.py +0 -0
  170. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/audio/specaugment.py +0 -0
  171. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/backend.py +0 -0
  172. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/build_from_dict.py +0 -0
  173. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/cond.py +0 -0
  174. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/const.py +0 -0
  175. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/container.py +0 -0
  176. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/control_flow_ctx.py +0 -0
  177. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/conv.py +0 -0
  178. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/conversions/__init__.py +0 -0
  179. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/conversions/espnet_e_branchformer.py +0 -0
  180. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/conversions/hf_llama.py +0 -0
  181. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/conversions/torch_nn.py +0 -0
  182. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/decoder/__init__.py +0 -0
  183. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/decoder/transformer.py +0 -0
  184. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/device.py +0 -0
  185. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/dims.py +0 -0
  186. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/dropout.py +0 -0
  187. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/dtype.py +0 -0
  188. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/encoder/__init__.py +0 -0
  189. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/encoder/base.py +0 -0
  190. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/encoder/conformer.py +0 -0
  191. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/encoder/e_branchformer.py +0 -0
  192. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/encoder/transformer.py +0 -0
  193. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/gradient.py +0 -0
  194. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/graph.py +0 -0
  195. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/hooks.py +0 -0
  196. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/init.py +0 -0
  197. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/label_smoothing.py +0 -0
  198. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/linear.py +0 -0
  199. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/loop.py +0 -0
  200. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/loss.py +0 -0
  201. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/math_.py +0 -0
  202. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/matmul.py +0 -0
  203. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/module.py +0 -0
  204. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/normalization.py +0 -0
  205. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/parameter.py +0 -0
  206. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/parametrizations.py +0 -0
  207. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/parametrize.py +0 -0
  208. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/piecewise_linear.py +0 -0
  209. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/rand.py +0 -0
  210. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/rec.py +0 -0
  211. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/reduce.py +0 -0
  212. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/run_ctx.py +0 -0
  213. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/signal.py +0 -0
  214. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/state.py +0 -0
  215. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/stepwise_scheduler.py +0 -0
  216. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/tensor_array.py +0 -0
  217. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/frontend/types.py +0 -0
  218. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/import_/__init__.py +0 -0
  219. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/import_/common.py +0 -0
  220. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/import_/git.py +0 -0
  221. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/import_/import_.py +0 -0
  222. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/learning_rate_control.py +0 -0
  223. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/log.py +0 -0
  224. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/native_op.cpp +0 -0
  225. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/native_op.py +0 -0
  226. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/pretrain.py +0 -0
  227. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/sprint/__init__.py +0 -0
  228. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/sprint/cache.py +0 -0
  229. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/sprint/control.py +0 -0
  230. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/sprint/error_signals.py +0 -0
  231. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/sprint/extern_interface.py +0 -0
  232. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/sprint/interface.py +0 -0
  233. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tensor/README.md +0 -0
  234. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tensor/__init__.py +0 -0
  235. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tensor/_dim_extra.py +0 -0
  236. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tensor/_tensor_extra.py +0 -0
  237. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tensor/_tensor_mixin_base.py +0 -0
  238. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tensor/_tensor_op_overloads.py +0 -0
  239. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tensor/control_flow_ctx.py +0 -0
  240. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tensor/dim.py +0 -0
  241. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tensor/marked_dim.py +0 -0
  242. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tensor/tensor.py +0 -0
  243. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tensor/tensor_dict.py +0 -0
  244. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tensor/utils.py +0 -0
  245. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/__init__.py +0 -0
  246. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/compat.py +0 -0
  247. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/data_pipeline.py +0 -0
  248. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/distributed.py +0 -0
  249. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/engine.py +0 -0
  250. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/README.md +0 -0
  251. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/__init__.py +0 -0
  252. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/_backend.py +0 -0
  253. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/_utils.py +0 -0
  254. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/cond.py +0 -0
  255. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
  256. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
  257. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/dims.py +0 -0
  258. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/layer.py +0 -0
  259. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/loop.py +0 -0
  260. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/make_layer.py +0 -0
  261. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/masked_computation.py +0 -0
  262. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
  263. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
  264. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/frontend_low_level/__init__.py +0 -0
  265. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/frontend_low_level/_backend.py +0 -0
  266. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/horovod.py +0 -0
  267. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/hyper_param_tuning.py +0 -0
  268. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/layers/__init__.py +0 -0
  269. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/layers/base.py +0 -0
  270. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/layers/basic.py +0 -0
  271. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/layers/rec.py +0 -0
  272. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/layers/segmental_model.py +0 -0
  273. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/layers/signal_processing.py +0 -0
  274. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/layers/variable.py +0 -0
  275. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/native_op.py +0 -0
  276. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/network.py +0 -0
  277. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/sprint.py +0 -0
  278. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/updater.py +0 -0
  279. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/util/__init__.py +0 -0
  280. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/util/basic.py +0 -0
  281. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/util/data.py +0 -0
  282. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/util/gradient_checkpoint.py +0 -0
  283. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/util/ken_lm.py +0 -0
  284. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/tf/util/open_fst.py +0 -0
  285. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/README.md +0 -0
  286. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/__init__.py +0 -0
  287. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/data/__init__.py +0 -0
  288. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/data/extern_data.py +0 -0
  289. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/data/pipeline.py +0 -0
  290. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/data/queued_data_iter.py +0 -0
  291. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
  292. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/data/tensor_utils.py +0 -0
  293. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/distributed.py +0 -0
  294. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/frontend/__init__.py +0 -0
  295. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/frontend/_backend.py +0 -0
  296. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/frontend/_rand.py +0 -0
  297. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/frontend/bridge.py +0 -0
  298. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/frontend/raw_ops.py +0 -0
  299. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/optim/README.md +0 -0
  300. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/optim/__init__.py +0 -0
  301. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/optim/lion.py +0 -0
  302. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/updater.py +0 -0
  303. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/util/README.md +0 -0
  304. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/util/__init__.py +0 -0
  305. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/util/array_.py +0 -0
  306. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/util/diagnose_gpu.py +0 -0
  307. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/util/exception_helper.py +0 -0
  308. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/util/gradient_checkpoint.py +0 -0
  309. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/util/module.py +0 -0
  310. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/torch/util/scaled_gradient.py +0 -0
  311. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/__init__.py +0 -0
  312. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/basic.py +0 -0
  313. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/better_exchook.py +0 -0
  314. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/bpe.py +0 -0
  315. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/debug.py +0 -0
  316. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/debug_helpers.py +0 -0
  317. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/file_cache.py +0 -0
  318. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/fsa.py +0 -0
  319. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/literal_py_to_pickle.py +0 -0
  320. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/math.py +0 -0
  321. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
  322. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/native_code_compiler.py +0 -0
  323. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/pprint.py +0 -0
  324. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/py-to-pickle.cpp +0 -0
  325. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/py_compat.py +0 -0
  326. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/py_ext_mod_compiler.py +0 -0
  327. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/result_with_reason.py +0 -0
  328. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/sig_proc.py +0 -0
  329. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/task_system.py +0 -0
  330. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/train_proc_manager.py +0 -0
  331. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn/util/watch_memory.py +0 -0
  332. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn.egg-info/SOURCES.txt +0 -0
  333. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn.egg-info/dependency_links.txt +0 -0
  334. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/returnn.egg-info/top_level.txt +0 -0
  335. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/rnn.py +0 -0
  336. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/setup.cfg +0 -0
  337. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/setup.py +0 -0
  338. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/DummySprintExec.py +0 -0
  339. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/PyCharm-inspection-profile.xml +0 -0
  340. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/PyCharm.idea/.gitignore +0 -0
  341. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/PyCharm.idea/.name +0 -0
  342. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
  343. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
  344. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
  345. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
  346. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
  347. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/PyCharm.idea/misc.xml +0 -0
  348. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/PyCharm.idea/modules.xml +0 -0
  349. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/PyCharm.idea/returnn.iml +0 -0
  350. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
  351. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/_set_num_threads1.py +0 -0
  352. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/_setup_returnn_env.py +0 -0
  353. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/_setup_test_env.py +0 -0
  354. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/bpe-unicode-demo.codes +0 -0
  355. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/bpe-unicode-demo.vocab +0 -0
  356. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/lexicon_opt.fst +0 -0
  357. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/lexicon_opt.isyms +0 -0
  358. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/lexicon_opt.jpg +0 -0
  359. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/lexicon_opt.osyms +0 -0
  360. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/lint_common.py +0 -0
  361. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/pycharm-inspect.py +0 -0
  362. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/pylint.py +0 -0
  363. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/returnn-as-framework.py +0 -0
  364. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/rf_utils.py +0 -0
  365. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/spelling.dic +0 -0
  366. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_Config.py +0 -0
  367. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_Fsa.py +0 -0
  368. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_GeneratingDataset.py +0 -0
  369. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_HDFDataset.py +0 -0
  370. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_LearningRateControl.py +0 -0
  371. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_Log.py +0 -0
  372. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_MultiProcDataset.py +0 -0
  373. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_Pretrain.py +0 -0
  374. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_ResNet.py +0 -0
  375. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_SprintDataset.py +0 -0
  376. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_SprintInterface.py +0 -0
  377. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_TFEngine.py +0 -0
  378. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_TFNativeOp.py +0 -0
  379. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_TFNetworkLayer.py +0 -0
  380. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_TFNetworkRecLayer.py +0 -0
  381. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_TFNetworkSigProcLayer.py +0 -0
  382. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_TFUpdater.py +0 -0
  383. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_TFUtil.py +0 -0
  384. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_TF_determinism.py +0 -0
  385. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_TaskSystem.py +0 -0
  386. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_TaskSystem_SharedMem.py +0 -0
  387. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_TranslationDataset.py +0 -0
  388. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_Util.py +0 -0
  389. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_demos.py +0 -0
  390. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_fork_exec.py +0 -0
  391. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_hdf_dump.py +0 -0
  392. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_rf_array.py +0 -0
  393. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_rf_attention.py +0 -0
  394. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_rf_base.py +0 -0
  395. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_rf_cond.py +0 -0
  396. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_rf_const.py +0 -0
  397. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_rf_container.py +0 -0
  398. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_rf_conv.py +0 -0
  399. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_rf_decoder_transformer.py +0 -0
  400. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_rf_encoder_conformer.py +0 -0
  401. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_rf_gradient.py +0 -0
  402. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_rf_label_smoothing.py +0 -0
  403. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_rf_loop.py +0 -0
  404. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_rf_math.py +0 -0
  405. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_rf_normalization.py +0 -0
  406. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_rf_piecewise_linear.py +0 -0
  407. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_rf_rec.py +0 -0
  408. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_rf_reduce.py +0 -0
  409. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_rf_signal.py +0 -0
  410. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_tensor.py +0 -0
  411. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_tools.py +0 -0
  412. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_torch_dataset.py +0 -0
  413. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_torch_frontend.py +0 -0
  414. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_torch_internal_frontend.py +0 -0
  415. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/test_torch_util.py +0 -0
  416. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tests/torch_utils.py +0 -0
  417. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/_setup_returnn_env.py +0 -0
  418. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/analyze-dataset-batches.py +0 -0
  419. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/bliss-collect-seq-lens.py +0 -0
  420. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/bliss-dump-text.py +0 -0
  421. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/bliss-get-segment-names.py +0 -0
  422. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/bliss-to-ogg-zip.py +0 -0
  423. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/bpe-create-lexicon.py +0 -0
  424. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/calculate-word-error-rate.py +0 -0
  425. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/cleanup-old-models.py +0 -0
  426. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/collect-orth-symbols.py +0 -0
  427. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/collect-words.py +0 -0
  428. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/compile_native_op.py +0 -0
  429. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/compile_tf_graph.py +0 -0
  430. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/debug-dump-search-scores.py +0 -0
  431. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/debug-plot-search-scores.py +0 -0
  432. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/dump-dataset-raw-strings.py +0 -0
  433. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/dump-dataset.py +0 -0
  434. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/dump-forward-stats.py +0 -0
  435. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/dump-forward.py +0 -0
  436. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/dump-network-json.py +0 -0
  437. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/dump-pickle.py +0 -0
  438. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/extract_state_tying_from_dataset.py +0 -0
  439. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/get-attention-weights.py +0 -0
  440. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/get-best-model-epoch.py +0 -0
  441. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/hdf_dump.py +0 -0
  442. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/hdf_dump_translation_dataset.py +0 -0
  443. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/import-blocks-mt-model.py +0 -0
  444. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/import-t2t-mt-model.py +0 -0
  445. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/lattice_rescorer/.gitignore +0 -0
  446. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/lattice_rescorer/Makefile +0 -0
  447. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/lattice_rescorer/README.md +0 -0
  448. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/lattice_rescorer/example/README.md +0 -0
  449. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/lattice_rescorer/example/libs_list +0 -0
  450. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
  451. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
  452. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
  453. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/lattice_rescorer/example/state_vars_list +0 -0
  454. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/lattice_rescorer/example/tensor_names_list +0 -0
  455. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/lattice_rescorer/file.h +0 -0
  456. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
  457. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
  458. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/lattice_rescorer/main.cc +0 -0
  459. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/lattice_rescorer/rescorer.h +0 -0
  460. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/lattice_rescorer/vocabulary.cc +0 -0
  461. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/lattice_rescorer/vocabulary.h +0 -0
  462. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/tf_avg_checkpoints.py +0 -0
  463. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/tf_inspect_checkpoint.py +0 -0
  464. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/tf_inspect_summary_log.py +0 -0
  465. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/torch_avg_checkpoints.py +0 -0
  466. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/torch_export_to_onnx.py +0 -0
  467. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/tools/torch_inspect_checkpoint.py +0 -0
  468. {returnn-1.20241023.152824 → returnn-1.20241026.3853}/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.20241023.152824
3
+ Version: 1.20241026.3853
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.20241026.003853'
2
+ long_version = '1.20241026.003853+git.98e9755'
@@ -576,6 +576,10 @@ def execute_main_task():
576
576
  assert data, "set forward_data"
577
577
  else:
578
578
  data = init_dataset(config.opt_typed_value("forward_data"))
579
+ # engine.epoch is usually the epoch of the loaded checkpoint,
580
+ # or what EngineBase.get_epoch_model will return.
581
+ # You can have both load and load_epoch, where load points to the checkpoint,
582
+ # and load_epoch is some other epoch, which you will get here for the dataset.
579
583
  data.init_seq_order(epoch=engine.epoch or 1)
580
584
  forward_callback = config.typed_value("forward_callback")
581
585
  assert forward_callback, "no forward_callback specified"
@@ -1875,7 +1875,7 @@ class VariableDataset(Dataset):
1875
1875
 
1876
1876
  def init_seq_order(self, epoch=None, seq_list=None, seq_order=None):
1877
1877
  """init seq order"""
1878
- super().init_seq_order()
1878
+ super().init_seq_order(epoch=epoch, seq_list=seq_list, seq_order=seq_order)
1879
1879
  if epoch is None:
1880
1880
  if seq_list is not None or seq_order is not None:
1881
1881
  raise ValueError(f"{self}: epoch is None, but given seq_list or seq_order, not supported")
@@ -1973,6 +1973,110 @@ class VariableDataset(Dataset):
1973
1973
  return self._dataset.is_data_sparse(key)
1974
1974
 
1975
1975
 
1976
+ class MultiEpochDataset(CachedDataset2):
1977
+ """
1978
+ It wraps some dataset, where one outer epoch corresponds to multiple epochs in the inner wrapped dataset.
1979
+
1980
+ This can be useful when the inner dataset uses partition_epoch, and we want to cover the whole full epoch.
1981
+
1982
+ One specific example when the data is distributed over multiple files,
1983
+ and for reasonable performance, you want to have the data copied to the local disk,
1984
+ but all data together is too large to fit on the local disk.
1985
+ Then :class:`DistributeFilesDataset` is the logical choice,
1986
+ which solves these issues.
1987
+ However, you must use some partition_epoch in :class:`DistributeFilesDataset`
1988
+ such that it will not load all data at once.
1989
+ To cover all the data, you can use this :class:`MultiEpochDataset`
1990
+ and set multi_epoch = partition_epoch of the inner dataset.
1991
+ """
1992
+
1993
+ def __init__(self, *, dataset: Dict[str, Any], multi_epoch: int, **kwargs):
1994
+ """
1995
+ :param dataset: the inner wrapped dataset
1996
+ :param multi_epoch: how much inner epochs correspond to one outer epoch
1997
+ """
1998
+ super().__init__(**kwargs)
1999
+ self._dataset = init_dataset(dataset, parent_dataset=self)
2000
+ assert self._dataset
2001
+ self._multi_epoch = multi_epoch
2002
+ self.num_inputs = self._dataset.num_inputs
2003
+ self.num_outputs = self._dataset.num_outputs
2004
+ self.labels = self._dataset.labels
2005
+ self._cur_inner_start_epoch: Optional[int] = None
2006
+ self._cur_inner_epoch_offset = 0
2007
+ self._cur_inner_epoch_seq_idx_offset = 0
2008
+ self._epoch_have_predefined_seq_order = False
2009
+
2010
+ def init_seq_order(self, epoch=None, seq_list=None, seq_order=None):
2011
+ """init seq order"""
2012
+ super().init_seq_order(epoch=epoch, seq_list=seq_list, seq_order=seq_order)
2013
+ self._epoch_have_predefined_seq_order = bool(seq_list or seq_order)
2014
+ # epoch is 1-based
2015
+ self._cur_inner_start_epoch = ((epoch - 1) * self._multi_epoch + 1) if epoch is not None else None
2016
+ self._cur_inner_epoch_offset = 0
2017
+ self._cur_inner_epoch_seq_idx_offset = 0
2018
+ self._dataset.init_seq_order(epoch=self._cur_inner_start_epoch, seq_list=seq_list, seq_order=seq_order)
2019
+
2020
+ def finish_epoch(self, *, free_resources: bool = False):
2021
+ """finish epoch"""
2022
+ super().finish_epoch(free_resources=free_resources)
2023
+ self._dataset.finish_epoch(free_resources=free_resources)
2024
+
2025
+ def get_all_tags(self) -> List[str]:
2026
+ """all tags"""
2027
+ return self._dataset.get_all_tags()
2028
+
2029
+ def get_total_num_seqs(self, *, fast: bool = False) -> int:
2030
+ """total num seqs"""
2031
+ return self._dataset.get_total_num_seqs(fast=fast)
2032
+
2033
+ def get_data_keys(self) -> List[str]:
2034
+ """data keys"""
2035
+ return self._dataset.get_data_keys()
2036
+
2037
+ def get_target_list(self) -> List[str]:
2038
+ """target list"""
2039
+ return self._dataset.get_target_list()
2040
+
2041
+ def _collect_single_seq(self, seq_idx: int) -> Optional[DatasetSeq]:
2042
+ assert seq_idx >= self._cur_inner_epoch_seq_idx_offset
2043
+ sub_seq_idx = seq_idx - self._cur_inner_epoch_seq_idx_offset
2044
+ if not self._dataset.is_less_than_num_seqs(sub_seq_idx):
2045
+ if self._epoch_have_predefined_seq_order:
2046
+ return None # predefined seq order, so no multi-epoch handling
2047
+ if self._cur_inner_start_epoch is None:
2048
+ return None # there was no epoch given, so no multi-epoch handling
2049
+ self._cur_inner_epoch_offset += 1
2050
+ if self._cur_inner_epoch_offset >= self._multi_epoch:
2051
+ return None # we are done
2052
+ self._dataset.init_seq_order(epoch=self._cur_inner_start_epoch + self._cur_inner_epoch_offset)
2053
+ self._cur_inner_epoch_seq_idx_offset = seq_idx
2054
+ sub_seq_idx = 0
2055
+ assert self._dataset.is_less_than_num_seqs(sub_seq_idx) # expect that the sub epoch has some seqs
2056
+ self._dataset.load_seqs(sub_seq_idx, sub_seq_idx + 1)
2057
+ data = {}
2058
+ for key in self.get_data_keys():
2059
+ data[key] = self._dataset.get_data(sub_seq_idx, key)
2060
+ seq_tag = self._dataset.get_tag(sub_seq_idx)
2061
+ return DatasetSeq(seq_idx=seq_idx, seq_tag=seq_tag, features=data)
2062
+
2063
+ def get_data_dim(self, key: str) -> int:
2064
+ """data dim"""
2065
+ return self._dataset.get_data_dim(key)
2066
+
2067
+ def get_data_shape(self, data_key: str) -> List[int]:
2068
+ """data shape"""
2069
+ return self._dataset.get_data_shape(data_key)
2070
+
2071
+ def get_data_dtype(self, key: str) -> str:
2072
+ """data dtype"""
2073
+ return self._dataset.get_data_dtype(key)
2074
+
2075
+ def is_data_sparse(self, key: str) -> bool:
2076
+ """is data sparse"""
2077
+ return self._dataset.is_data_sparse(key)
2078
+
2079
+
1976
2080
  class AnythingDataset(Dataset):
1977
2081
  """
1978
2082
  An infinite dataset, creating dummy (zero) data on the fly,
@@ -266,6 +266,12 @@ class EngineBase:
266
266
  """
267
267
  return self.pretrain and self.epoch == self.pretrain.get_train_num_epochs() + 1
268
268
 
269
+ def set_epoch(self, epoch: int):
270
+ """
271
+ Set the current epoch.
272
+ """
273
+ self.epoch = epoch
274
+
269
275
  def forward_with_callback(self, *, dataset: Dataset, callback: ForwardCallbackIface):
270
276
  """
271
277
  Iterate through the dataset, calling `forward_step` from user config,
@@ -225,6 +225,11 @@ class Engine(EngineBase):
225
225
  self._train_step_func = self.config.typed_value("train_step")
226
226
  assert self._train_step_func, "train_step not defined"
227
227
 
228
+ def set_epoch(self, epoch: int):
229
+ """set epoch"""
230
+ super().set_epoch(epoch)
231
+ self._epoch_mp_shared.value = epoch
232
+
228
233
  def train(self):
229
234
  """
230
235
  Main training loop.
@@ -243,9 +248,7 @@ class Engine(EngineBase):
243
248
  )
244
249
  self.epoch = self._start_epoch - 1
245
250
  while self.epoch + 1 <= self._final_epoch:
246
- self.epoch += 1
247
- self._epoch_mp_shared.value = self.epoch
248
-
251
+ self.set_epoch(self.epoch + 1)
249
252
  self.init_train_epoch()
250
253
  self.train_epoch()
251
254
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20241023.152824
3
+ Version: 1.20241026.3853
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
@@ -18,12 +18,12 @@ from returnn.util.basic import NumbersDict
18
18
  from returnn.util import better_exchook
19
19
 
20
20
 
21
- def dummy_iter_dataset(dataset: Dataset) -> List[DatasetSeq]:
21
+ def dummy_iter_dataset(dataset: Dataset, *, epoch: int = 1) -> List[DatasetSeq]:
22
22
  """
23
23
  :param Dataset dataset:
24
24
  :return: seqs
25
25
  """
26
- dataset.init_seq_order(epoch=1)
26
+ dataset.init_seq_order(epoch=epoch)
27
27
  data_keys = dataset.get_data_keys()
28
28
  seq_idx = 0
29
29
  seqs = []
@@ -1147,6 +1147,67 @@ def test_PostprocessingDataset():
1147
1147
  assert func(2) == 21
1148
1148
 
1149
1149
 
1150
+ def test_MultiEpochDataset():
1151
+ from returnn.datasets.meta import MultiEpochDataset
1152
+ from returnn.datasets.cached2 import CachedDataset2
1153
+
1154
+ in_dim, out_dim = 11, 7
1155
+ seq_len = 5
1156
+ inner_num_seqs = 10
1157
+
1158
+ class _MyDataset(CachedDataset2):
1159
+ def __init__(self):
1160
+ super().__init__()
1161
+ self.num_inputs = in_dim
1162
+ self.num_outputs = {"classes": out_dim}
1163
+
1164
+ # noinspection PyShadowingNames
1165
+ def init_seq_order(self, epoch=None, seq_list=None, seq_order=None):
1166
+ """init seq order"""
1167
+ super().init_seq_order(epoch=epoch, seq_list=seq_list, seq_order=seq_order)
1168
+ self._num_seqs = inner_num_seqs
1169
+
1170
+ def _collect_single_seq(self, seq_idx: int) -> Optional[DatasetSeq]:
1171
+ if seq_idx >= self._num_seqs:
1172
+ return None
1173
+ return DatasetSeq(
1174
+ seq_idx=seq_idx,
1175
+ seq_tag=repr({"epoch": self.epoch, "seq_idx": seq_idx}),
1176
+ features=numpy.zeros((seq_len, in_dim)),
1177
+ targets={"classes": numpy.zeros((seq_len,), dtype=numpy.int32)},
1178
+ )
1179
+
1180
+ inner_dataset = _MyDataset()
1181
+ inner_dataset.initialize()
1182
+
1183
+ multi_epoch = 3
1184
+ dataset = MultiEpochDataset(dataset=inner_dataset, multi_epoch=multi_epoch)
1185
+ for outer_epoch in [1, 7]:
1186
+ seqs = dummy_iter_dataset(dataset, epoch=outer_epoch)
1187
+ assert len(seqs) == inner_num_seqs * multi_epoch
1188
+ outer_seq_idx = 0
1189
+ sub_ep = (outer_epoch - 1) * multi_epoch + 1 # 1-based
1190
+ sub_seq_idx = 0
1191
+ for seq in seqs:
1192
+ assert outer_seq_idx == seq.seq_idx
1193
+ assert seq.features["data"].shape == (seq_len, in_dim)
1194
+ assert seq.features["classes"].shape == (seq_len,)
1195
+ print("seq:", seq.seq_tag)
1196
+ d = eval(seq.seq_tag) # seq tag is dict repr
1197
+ assert isinstance(d, dict)
1198
+ assert d["epoch"] == sub_ep
1199
+ assert d["seq_idx"] == sub_seq_idx
1200
+ # Calc next expected values.
1201
+ if sub_seq_idx >= inner_num_seqs - 1:
1202
+ sub_seq_idx = 0
1203
+ sub_ep += 1
1204
+ else:
1205
+ sub_seq_idx += 1
1206
+ outer_seq_idx += 1
1207
+ assert outer_seq_idx == len(seqs)
1208
+ assert sub_ep == outer_epoch * multi_epoch + 1 and sub_seq_idx == 0
1209
+
1210
+
1150
1211
  if __name__ == "__main__":
1151
1212
  better_exchook.install()
1152
1213
  if len(sys.argv) <= 1:
@@ -294,6 +294,183 @@ def test_forward_beam_seq_lens():
294
294
  assert len(max_sizes) > 1
295
295
 
296
296
 
297
+ def test_torch_engine_forward_dataset_epoch():
298
+ import tempfile
299
+ import shutil
300
+ import atexit
301
+ import os
302
+ import returnn
303
+
304
+ model_dir_name = tempfile.mkdtemp()
305
+ assert model_dir_name and os.path.isdir(model_dir_name) and not os.listdir(model_dir_name)
306
+ atexit.register(lambda: shutil.rmtree(model_dir_name))
307
+
308
+ in_dim, out_dim = 9, 13
309
+
310
+ def _get_model(**_kwargs):
311
+ return torch.nn.Linear(in_dim, out_dim)
312
+
313
+ epoch = 17
314
+ filename = Engine.epoch_model_filename(f"{model_dir_name}/model", epoch=epoch) + ".pt"
315
+
316
+ # That's how RETURNN now saves the model (2024-10-25).
317
+ # Maybe leave it like this for the test, even when RETURNN itself changes it,
318
+ # so that we also test that we still support this format.
319
+ torch.save(
320
+ {
321
+ "model": _get_model().state_dict(), # some random model
322
+ "epoch": epoch,
323
+ "step": 123,
324
+ "effective_learning_rate": 0.13,
325
+ "returnn_version": returnn.__long_version__,
326
+ },
327
+ filename,
328
+ )
329
+
330
+ recent_seen_seq_idx: Optional[int] = None
331
+
332
+ class _ForwardCallback(ForwardCallbackIface):
333
+ def process_seq(self, *, seq_tag: str, outputs: TensorDict):
334
+ print("*** forward callback process seq", seq_tag)
335
+ d = eval(seq_tag) # we prepared the dataset this way that we get some dict repr here...
336
+ assert isinstance(d, dict)
337
+ assert d["epoch"] == epoch
338
+ nonlocal recent_seen_seq_idx
339
+ seq_idx = d["seq_idx"]
340
+ if seq_idx == 0:
341
+ assert recent_seen_seq_idx is None
342
+ else:
343
+ assert recent_seen_seq_idx is not None
344
+ assert seq_idx == recent_seen_seq_idx + 1
345
+ recent_seen_seq_idx = seq_idx
346
+
347
+ forward_callback = _ForwardCallback()
348
+
349
+ def _forward_step(*, extern_data: TensorDict, **_kwargs):
350
+ print("*** forward step", extern_data)
351
+ data = extern_data["data"]
352
+ # Doesn't matter what we set as output here, not used...
353
+ # (Without output, maybe RETURNN complains, so put sth.)
354
+ # We just use the seq_tag in the forward callback, which is anyway available.
355
+ data.mark_as_default_output(shape=data.dims)
356
+
357
+ config = Config(
358
+ dict(
359
+ task="forward",
360
+ batch_size=50,
361
+ extern_data={"data": {"dim": in_dim}},
362
+ get_model=_get_model,
363
+ load=filename,
364
+ forward_step=_forward_step,
365
+ torch_dataloader_opts=dict(num_workers=0), # simplifies the test
366
+ )
367
+ )
368
+
369
+ from returnn.datasets.cached2 import CachedDataset2
370
+ from returnn.datasets.basic import DatasetSeq
371
+
372
+ num_seqs = 10
373
+
374
+ class _MyDataset(CachedDataset2):
375
+ def __init__(self):
376
+ super().__init__()
377
+ self.num_inputs = in_dim
378
+ self.num_outputs = {"classes": out_dim}
379
+
380
+ # noinspection PyShadowingNames
381
+ def init_seq_order(self, epoch=None, seq_list=None, seq_order=None):
382
+ """init seq order"""
383
+ super().init_seq_order(epoch=epoch, seq_list=seq_list, seq_order=seq_order)
384
+ self._num_seqs = num_seqs
385
+
386
+ def _collect_single_seq(self, seq_idx: int) -> Optional[DatasetSeq]:
387
+ if seq_idx >= self._num_seqs:
388
+ return None
389
+ return DatasetSeq(
390
+ seq_idx=seq_idx,
391
+ seq_tag=repr({"epoch": self.epoch, "seq_idx": seq_idx}),
392
+ features=numpy.zeros((10, in_dim)),
393
+ targets={"classes": numpy.zeros((10,), dtype=numpy.int32)},
394
+ )
395
+
396
+ dataset = _MyDataset()
397
+ dataset.initialize()
398
+
399
+ with global_config_ctx(config):
400
+ engine = Engine(config=config)
401
+ engine.init_network_from_config()
402
+ # We expect that the engine epoch is set to the epoch of the checkpoint.
403
+ assert engine.epoch == epoch
404
+
405
+ for epoch in [3, 7, 11]:
406
+ engine.set_epoch(epoch)
407
+ assert engine.epoch == epoch
408
+ dataset.init_seq_order(epoch=epoch)
409
+ assert dataset.num_seqs == num_seqs
410
+ recent_seen_seq_idx = None
411
+ engine.forward_with_callback(callback=forward_callback, dataset=dataset)
412
+ assert recent_seen_seq_idx == num_seqs - 1
413
+
414
+
415
+ def test_torch_engine_forward_load_epoch():
416
+ import tempfile
417
+ import shutil
418
+ import atexit
419
+ import os
420
+ import returnn
421
+
422
+ model_dir_name = tempfile.mkdtemp()
423
+ assert model_dir_name and os.path.isdir(model_dir_name) and not os.listdir(model_dir_name)
424
+ atexit.register(lambda: shutil.rmtree(model_dir_name))
425
+
426
+ in_dim, out_dim = 9, 13
427
+
428
+ def _get_model(**_kwargs):
429
+ return torch.nn.Linear(in_dim, out_dim)
430
+
431
+ epoch = 17
432
+ load_epoch = 11 # some other epoch
433
+ filename = Engine.epoch_model_filename(f"{model_dir_name}/model", epoch=epoch) + ".pt"
434
+
435
+ # That's how RETURNN now saves the model (2024-10-25).
436
+ # Maybe leave it like this for the test, even when RETURNN itself changes it,
437
+ # so that we also test that we still support this format.
438
+ torch.save(
439
+ {
440
+ "model": _get_model().state_dict(), # some random model
441
+ "epoch": epoch,
442
+ "step": 123,
443
+ "effective_learning_rate": 0.13,
444
+ "returnn_version": returnn.__long_version__,
445
+ },
446
+ filename,
447
+ )
448
+
449
+ def _forward_step(*, extern_data: TensorDict, **_kwargs):
450
+ print("*** forward step", extern_data)
451
+ data = extern_data["data"]
452
+ data.mark_as_default_output(shape=data.dims) # dummy...
453
+
454
+ config = Config(
455
+ dict(
456
+ task="forward",
457
+ batch_size=50,
458
+ extern_data={"data": {"dim": in_dim}},
459
+ get_model=_get_model,
460
+ load=filename,
461
+ load_epoch=load_epoch,
462
+ forward_step=_forward_step,
463
+ torch_dataloader_opts=dict(num_workers=0), # simplifies the test
464
+ )
465
+ )
466
+
467
+ with global_config_ctx(config):
468
+ engine = Engine(config=config)
469
+ engine.init_network_from_config()
470
+ # We expect that even though we loaded the checkpoint, we now have the load_epoch.
471
+ assert engine.epoch == load_epoch
472
+
473
+
297
474
  def test_min_seq_len():
298
475
  from returnn.datasets.generating import DummyDataset
299
476
 
@@ -1,2 +0,0 @@
1
- version = '1.20241023.152824'
2
- long_version = '1.20241023.152824+git.f0afcc3'