returnn 1.20240808.234227__tar.gz → 1.20240826.132634__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 (459) hide show
  1. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/PKG-INFO +1 -1
  2. returnn-1.20240826.132634/_setup_info_generated.py +2 -0
  3. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/_backend.py +9 -0
  4. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/array_.py +43 -8
  5. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/math_.py +9 -0
  6. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/frontend_layers/_backend.py +5 -0
  7. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/frontend/_backend.py +8 -0
  8. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/updater.py +1 -1
  9. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/debug.py +49 -26
  10. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn.egg-info/PKG-INFO +1 -1
  11. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_rf_array.py +70 -0
  12. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_rf_math.py +16 -0
  13. returnn-1.20240808.234227/_setup_info_generated.py +0 -2
  14. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/.editorconfig +0 -0
  15. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/.gitignore +0 -0
  16. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/.gitmodules +0 -0
  17. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/.kateconfig +0 -0
  18. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/CHANGELOG.md +0 -0
  19. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/CODEOWNERS +0 -0
  20. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/CONTRIBUTING.md +0 -0
  21. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/LICENSE +0 -0
  22. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/MANIFEST.in +0 -0
  23. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/README.rst +0 -0
  24. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/__init__.py +0 -0
  25. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/12AX.cluster_map +0 -0
  26. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/_setup_returnn_env.py +0 -0
  27. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-fwd.config +0 -0
  28. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-horovod-mpi.py +0 -0
  29. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-horovod-mpi.py.sh +0 -0
  30. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-horovod-mpi.sh +0 -0
  31. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-hyper-param-tuning.config +0 -0
  32. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-iter-dataset.py +0 -0
  33. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-list-devices.py +0 -0
  34. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-lua-torch-layer.config +0 -0
  35. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-pretrain.config +0 -0
  36. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-record-and-push-to-webserver.py +0 -0
  37. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-returnn-as-framework.py +0 -0
  38. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-rf-pt-benchmark.py +0 -0
  39. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-rf.config +0 -0
  40. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-rhn-enwik8.config +0 -0
  41. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-sprint-interface.py +0 -0
  42. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-tf-att-copy.config +0 -0
  43. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-tf-attention.config +0 -0
  44. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
  45. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
  46. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-tf-enc-dec.config +0 -0
  47. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-tf-hard-att-copy.config +0 -0
  48. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-tf-lstm-benchmark.py +0 -0
  49. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
  50. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
  51. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-tf-native-lstm.12ax.config +0 -0
  52. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-tf-native-lstm2.12ax.config +0 -0
  53. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
  54. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-tf-neural-transducer.12ax.config +0 -0
  55. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-tf-rec-explicit-lstm.config +0 -0
  56. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-tf-rec-explicit-rnn.config +0 -0
  57. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-tf-rec-self-att.config +0 -0
  58. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-tf-search-compiled-graph.py +0 -0
  59. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
  60. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-timit-lstm-ctc.config +0 -0
  61. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-torch.config +0 -0
  62. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
  63. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/demo.sh +0 -0
  64. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
  65. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
  66. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
  67. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/IAM/README.txt +0 -0
  68. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/IAM/chars.txt +0 -0
  69. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/IAM/config_demo +0 -0
  70. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/IAM/config_fwd +0 -0
  71. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/IAM/config_real +0 -0
  72. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
  73. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/IAM/decode.py +0 -0
  74. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
  75. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/IAM/go.sh +0 -0
  76. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/IAM/lines.txt +0 -0
  77. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/IAM/split/eval.txt +0 -0
  78. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/IAM/split/train.txt +0 -0
  79. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/IAM/split/valid.txt +0 -0
  80. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/README.md +0 -0
  81. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/artificial/create_test_h5.py +0 -0
  82. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/artificial/forwardconfig +0 -0
  83. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/artificial/go.sh +0 -0
  84. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/artificial/trainconfig +0 -0
  85. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
  86. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
  87. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/artificial_rgb/go.sh +0 -0
  88. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
  89. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/pyproject.toml +0 -0
  90. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/requirements.txt +0 -0
  91. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/__init__.py +0 -0
  92. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/__main__.py +0 -0
  93. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/__old_mod_loader__.py +0 -0
  94. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/__setup__.py +0 -0
  95. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/config.py +0 -0
  96. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/__init__.py +0 -0
  97. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/audio.py +0 -0
  98. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/basic.py +0 -0
  99. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/bundle_file.py +0 -0
  100. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/cached.py +0 -0
  101. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/cached2.py +0 -0
  102. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/distrib_files.py +0 -0
  103. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/generating.py +0 -0
  104. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/hdf.py +0 -0
  105. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/lm.py +0 -0
  106. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/map.py +0 -0
  107. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/meta.py +0 -0
  108. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/multi_proc.py +0 -0
  109. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/normalization_data.py +0 -0
  110. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/numpy_dump.py +0 -0
  111. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/postprocessing.py +0 -0
  112. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/raw_wav.py +0 -0
  113. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/sprint.py +0 -0
  114. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/stereo.py +0 -0
  115. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/util/__init__.py +0 -0
  116. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/util/feature_extraction.py +0 -0
  117. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/util/strings.py +0 -0
  118. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/datasets/util/vocabulary.py +0 -0
  119. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/engine/__init__.py +0 -0
  120. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/engine/base.py +0 -0
  121. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/engine/batch.py +0 -0
  122. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/__init__.py +0 -0
  123. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/__main__.py +0 -0
  124. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/.git +0 -0
  125. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
  126. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
  127. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
  128. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
  129. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
  130. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
  131. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
  132. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
  133. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
  134. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
  135. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
  136. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
  137. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
  138. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
  139. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
  140. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
  141. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
  142. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
  143. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
  144. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
  145. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
  146. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
  147. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
  148. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
  149. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/__init__.py +0 -0
  150. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/graph_editor/README.md +0 -0
  151. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/graph_editor/__init__.py +0 -0
  152. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/graph_editor/edit.py +0 -0
  153. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/graph_editor/reroute.py +0 -0
  154. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/graph_editor/select.py +0 -0
  155. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/graph_editor/subgraph.py +0 -0
  156. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/graph_editor/transform.py +0 -0
  157. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/extern/graph_editor/util.py +0 -0
  158. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/forward_iface.py +0 -0
  159. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/__init__.py +0 -0
  160. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/_native/__init__.py +0 -0
  161. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/_native/backend.cpp +0 -0
  162. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/_native/backend.hpp +0 -0
  163. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/_native/module.cpp +0 -0
  164. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/_native/module.hpp +0 -0
  165. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/_native/py_utils.hpp +0 -0
  166. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/_native/tensor_ops.cpp +0 -0
  167. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/_native/tensor_ops.hpp +0 -0
  168. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/_numpy_backend.py +0 -0
  169. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/_random_journal.py +0 -0
  170. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/_utils.py +0 -0
  171. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/attention.py +0 -0
  172. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/audio/__init__.py +0 -0
  173. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/audio/mel.py +0 -0
  174. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/audio/specaugment.py +0 -0
  175. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/backend.py +0 -0
  176. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/build_from_dict.py +0 -0
  177. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/cond.py +0 -0
  178. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/const.py +0 -0
  179. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/container.py +0 -0
  180. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/control_flow_ctx.py +0 -0
  181. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/conv.py +0 -0
  182. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/conversions/__init__.py +0 -0
  183. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/conversions/hf_llama.py +0 -0
  184. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/decoder/__init__.py +0 -0
  185. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/decoder/transformer.py +0 -0
  186. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/device.py +0 -0
  187. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/dims.py +0 -0
  188. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/dropout.py +0 -0
  189. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/dtype.py +0 -0
  190. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/encoder/__init__.py +0 -0
  191. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/encoder/base.py +0 -0
  192. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/encoder/conformer.py +0 -0
  193. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/gradient.py +0 -0
  194. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/graph.py +0 -0
  195. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/hooks.py +0 -0
  196. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/init.py +0 -0
  197. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/label_smoothing.py +0 -0
  198. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/linear.py +0 -0
  199. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/loop.py +0 -0
  200. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/loss.py +0 -0
  201. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/matmul.py +0 -0
  202. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/module.py +0 -0
  203. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/normalization.py +0 -0
  204. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/parameter.py +0 -0
  205. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/parametrizations.py +0 -0
  206. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/parametrize.py +0 -0
  207. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/piecewise_linear.py +0 -0
  208. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/rand.py +0 -0
  209. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/rec.py +0 -0
  210. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/reduce.py +0 -0
  211. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/run_ctx.py +0 -0
  212. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/signal.py +0 -0
  213. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/state.py +0 -0
  214. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/stepwise_scheduler.py +0 -0
  215. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/tensor_array.py +0 -0
  216. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/frontend/types.py +0 -0
  217. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/import_/__init__.py +0 -0
  218. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/import_/common.py +0 -0
  219. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/import_/git.py +0 -0
  220. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/import_/import_.py +0 -0
  221. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/learning_rate_control.py +0 -0
  222. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/log.py +0 -0
  223. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/native_op.cpp +0 -0
  224. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/native_op.py +0 -0
  225. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/pretrain.py +0 -0
  226. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/sprint/__init__.py +0 -0
  227. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/sprint/cache.py +0 -0
  228. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/sprint/control.py +0 -0
  229. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/sprint/error_signals.py +0 -0
  230. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/sprint/extern_interface.py +0 -0
  231. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/sprint/interface.py +0 -0
  232. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tensor/README.md +0 -0
  233. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tensor/__init__.py +0 -0
  234. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tensor/_dim_extra.py +0 -0
  235. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tensor/_tensor_extra.py +0 -0
  236. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tensor/_tensor_mixin_base.py +0 -0
  237. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tensor/_tensor_op_overloads.py +0 -0
  238. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tensor/control_flow_ctx.py +0 -0
  239. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tensor/dim.py +0 -0
  240. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tensor/marked_dim.py +0 -0
  241. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tensor/tensor.py +0 -0
  242. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tensor/tensor_dict.py +0 -0
  243. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tensor/utils.py +0 -0
  244. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/__init__.py +0 -0
  245. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/compat.py +0 -0
  246. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/data_pipeline.py +0 -0
  247. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/distributed.py +0 -0
  248. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/engine.py +0 -0
  249. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/frontend_layers/README.md +0 -0
  250. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/frontend_layers/__init__.py +0 -0
  251. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/frontend_layers/_utils.py +0 -0
  252. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/frontend_layers/cond.py +0 -0
  253. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
  254. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
  255. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/frontend_layers/dims.py +0 -0
  256. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/frontend_layers/layer.py +0 -0
  257. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/frontend_layers/loop.py +0 -0
  258. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/frontend_layers/make_layer.py +0 -0
  259. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/frontend_layers/masked_computation.py +0 -0
  260. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
  261. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
  262. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/frontend_low_level/__init__.py +0 -0
  263. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/frontend_low_level/_backend.py +0 -0
  264. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/horovod.py +0 -0
  265. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/hyper_param_tuning.py +0 -0
  266. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/layers/__init__.py +0 -0
  267. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/layers/base.py +0 -0
  268. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/layers/basic.py +0 -0
  269. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/layers/rec.py +0 -0
  270. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/layers/segmental_model.py +0 -0
  271. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/layers/signal_processing.py +0 -0
  272. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/layers/variable.py +0 -0
  273. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/native_op.py +0 -0
  274. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/network.py +0 -0
  275. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/sprint.py +0 -0
  276. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/updater.py +0 -0
  277. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/util/__init__.py +0 -0
  278. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/util/basic.py +0 -0
  279. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/util/data.py +0 -0
  280. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/util/gradient_checkpoint.py +0 -0
  281. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/util/ken_lm.py +0 -0
  282. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/tf/util/open_fst.py +0 -0
  283. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/README.md +0 -0
  284. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/__init__.py +0 -0
  285. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/data/__init__.py +0 -0
  286. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/data/extern_data.py +0 -0
  287. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/data/pipeline.py +0 -0
  288. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/data/queued_data_iter.py +0 -0
  289. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
  290. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/data/tensor_utils.py +0 -0
  291. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/distributed.py +0 -0
  292. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/engine.py +0 -0
  293. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/frontend/__init__.py +0 -0
  294. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/frontend/_rand.py +0 -0
  295. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/frontend/bridge.py +0 -0
  296. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/frontend/raw_ops.py +0 -0
  297. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/util/README.md +0 -0
  298. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/util/__init__.py +0 -0
  299. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/util/array_.py +0 -0
  300. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/util/diagnose_gpu.py +0 -0
  301. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/util/gradient_checkpoint.py +0 -0
  302. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/torch/util/scaled_gradient.py +0 -0
  303. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/__init__.py +0 -0
  304. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/basic.py +0 -0
  305. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/better_exchook.py +0 -0
  306. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/bpe.py +0 -0
  307. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/debug_helpers.py +0 -0
  308. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/file_cache.py +0 -0
  309. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/fsa.py +0 -0
  310. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/literal_py_to_pickle.py +0 -0
  311. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/math.py +0 -0
  312. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
  313. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/native_code_compiler.py +0 -0
  314. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/pprint.py +0 -0
  315. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/py-to-pickle.cpp +0 -0
  316. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/py_compat.py +0 -0
  317. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/py_ext_mod_compiler.py +0 -0
  318. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/result_with_reason.py +0 -0
  319. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/sig_proc.py +0 -0
  320. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/task_system.py +0 -0
  321. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/train_proc_manager.py +0 -0
  322. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn/util/watch_memory.py +0 -0
  323. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn.egg-info/SOURCES.txt +0 -0
  324. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn.egg-info/dependency_links.txt +0 -0
  325. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/returnn.egg-info/top_level.txt +0 -0
  326. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/rnn.py +0 -0
  327. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/setup.cfg +0 -0
  328. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/setup.py +0 -0
  329. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/DummySprintExec.py +0 -0
  330. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/PyCharm-inspection-profile.xml +0 -0
  331. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/PyCharm.idea/.gitignore +0 -0
  332. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/PyCharm.idea/.name +0 -0
  333. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
  334. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
  335. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
  336. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
  337. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
  338. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/PyCharm.idea/misc.xml +0 -0
  339. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/PyCharm.idea/modules.xml +0 -0
  340. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/PyCharm.idea/returnn.iml +0 -0
  341. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
  342. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/_set_num_threads1.py +0 -0
  343. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/_setup_returnn_env.py +0 -0
  344. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/_setup_test_env.py +0 -0
  345. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/bpe-unicode-demo.codes +0 -0
  346. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/bpe-unicode-demo.vocab +0 -0
  347. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/lexicon_opt.fst +0 -0
  348. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/lexicon_opt.isyms +0 -0
  349. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/lexicon_opt.jpg +0 -0
  350. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/lexicon_opt.osyms +0 -0
  351. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/lint_common.py +0 -0
  352. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/pycharm-inspect.py +0 -0
  353. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/pylint.py +0 -0
  354. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/returnn-as-framework.py +0 -0
  355. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/rf_utils.py +0 -0
  356. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/spelling.dic +0 -0
  357. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_Config.py +0 -0
  358. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_Dataset.py +0 -0
  359. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_Fsa.py +0 -0
  360. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_GeneratingDataset.py +0 -0
  361. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_HDFDataset.py +0 -0
  362. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_LearningRateControl.py +0 -0
  363. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_Log.py +0 -0
  364. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_MultiProcDataset.py +0 -0
  365. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_Pretrain.py +0 -0
  366. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_ResNet.py +0 -0
  367. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_SprintDataset.py +0 -0
  368. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_SprintInterface.py +0 -0
  369. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_TFEngine.py +0 -0
  370. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_TFNativeOp.py +0 -0
  371. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_TFNetworkLayer.py +0 -0
  372. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_TFNetworkRecLayer.py +0 -0
  373. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_TFNetworkSigProcLayer.py +0 -0
  374. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_TFUpdater.py +0 -0
  375. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_TFUtil.py +0 -0
  376. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_TF_determinism.py +0 -0
  377. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_TaskSystem.py +0 -0
  378. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_TaskSystem_SharedMem.py +0 -0
  379. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_TranslationDataset.py +0 -0
  380. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_Util.py +0 -0
  381. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_demos.py +0 -0
  382. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_fork_exec.py +0 -0
  383. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_hdf_dump.py +0 -0
  384. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_rf_attention.py +0 -0
  385. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_rf_base.py +0 -0
  386. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_rf_cond.py +0 -0
  387. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_rf_const.py +0 -0
  388. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_rf_container.py +0 -0
  389. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_rf_conv.py +0 -0
  390. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_rf_decoder_transformer.py +0 -0
  391. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_rf_encoder_conformer.py +0 -0
  392. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_rf_gradient.py +0 -0
  393. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_rf_label_smoothing.py +0 -0
  394. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_rf_loop.py +0 -0
  395. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_rf_normalization.py +0 -0
  396. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_rf_piecewise_linear.py +0 -0
  397. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_rf_rec.py +0 -0
  398. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_rf_reduce.py +0 -0
  399. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_rf_signal.py +0 -0
  400. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_tensor.py +0 -0
  401. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_tools.py +0 -0
  402. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_torch_dataset.py +0 -0
  403. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_torch_engine.py +0 -0
  404. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_torch_frontend.py +0 -0
  405. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_torch_internal_frontend.py +0 -0
  406. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/test_torch_util.py +0 -0
  407. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tests/torch_utils.py +0 -0
  408. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/_setup_returnn_env.py +0 -0
  409. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/analyze-dataset-batches.py +0 -0
  410. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/bliss-collect-seq-lens.py +0 -0
  411. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/bliss-dump-text.py +0 -0
  412. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/bliss-get-segment-names.py +0 -0
  413. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/bliss-to-ogg-zip.py +0 -0
  414. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/bpe-create-lexicon.py +0 -0
  415. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/calculate-word-error-rate.py +0 -0
  416. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/cleanup-old-models.py +0 -0
  417. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/collect-orth-symbols.py +0 -0
  418. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/collect-words.py +0 -0
  419. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/compile_native_op.py +0 -0
  420. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/compile_tf_graph.py +0 -0
  421. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/debug-dump-search-scores.py +0 -0
  422. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/debug-plot-search-scores.py +0 -0
  423. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/dump-dataset-raw-strings.py +0 -0
  424. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/dump-dataset.py +0 -0
  425. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/dump-forward-stats.py +0 -0
  426. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/dump-forward.py +0 -0
  427. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/dump-network-json.py +0 -0
  428. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/dump-pickle.py +0 -0
  429. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/extract_state_tying_from_dataset.py +0 -0
  430. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/get-attention-weights.py +0 -0
  431. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/get-best-model-epoch.py +0 -0
  432. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/hdf_dump.py +0 -0
  433. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/hdf_dump_translation_dataset.py +0 -0
  434. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/import-blocks-mt-model.py +0 -0
  435. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/import-t2t-mt-model.py +0 -0
  436. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/lattice_rescorer/.gitignore +0 -0
  437. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/lattice_rescorer/Makefile +0 -0
  438. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/lattice_rescorer/README.md +0 -0
  439. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/lattice_rescorer/example/README.md +0 -0
  440. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/lattice_rescorer/example/libs_list +0 -0
  441. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
  442. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
  443. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
  444. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/lattice_rescorer/example/state_vars_list +0 -0
  445. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/lattice_rescorer/example/tensor_names_list +0 -0
  446. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/lattice_rescorer/file.h +0 -0
  447. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
  448. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
  449. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/lattice_rescorer/main.cc +0 -0
  450. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/lattice_rescorer/rescorer.h +0 -0
  451. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/lattice_rescorer/vocabulary.cc +0 -0
  452. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/lattice_rescorer/vocabulary.h +0 -0
  453. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/tf_avg_checkpoints.py +0 -0
  454. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/tf_inspect_checkpoint.py +0 -0
  455. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/tf_inspect_summary_log.py +0 -0
  456. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/torch_avg_checkpoints.py +0 -0
  457. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/torch_export_to_onnx.py +0 -0
  458. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/tools/torch_inspect_checkpoint.py +0 -0
  459. {returnn-1.20240808.234227 → returnn-1.20240826.132634}/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.20240808.234227
3
+ Version: 1.20240826.132634
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.20240826.132634'
2
+ long_version = '1.20240826.132634+git.8b552f5'
@@ -1014,6 +1014,15 @@ class Backend(Generic[T]):
1014
1014
  return start + weight * (end - start)
1015
1015
  return rf.combine_bc(start, "+", rf.combine_bc(weight, "*", rf.combine_bc(end, "-", start)))
1016
1016
 
1017
+ @staticmethod
1018
+ def cumsum(source: Tensor, *, spatial_dim: Dim) -> Tensor:
1019
+ """
1020
+ :param source:
1021
+ :param spatial_dim:
1022
+ :return: cumsum over spatial dim
1023
+ """
1024
+ raise NotImplementedError
1025
+
1017
1026
  @staticmethod
1018
1027
  def matmul(a: Tensor[T], b: Tensor[T], *, reduce: Union[Dim, Sequence[Dim]], use_mask: bool = True) -> Tensor[T]:
1019
1028
  """
@@ -520,19 +520,53 @@ def masked_select(
520
520
  tensor: Tensor, *, mask: Tensor, dims: Sequence[Dim], out_dim: Optional[Dim] = None
521
521
  ) -> Tuple[Tensor, Dim]:
522
522
  """
523
+ This will pack the tensor based on the mask.
523
524
  In TF, this is ``boolean_mask``.
524
525
  The inverse of this is :func:`masked_scatter`.
525
526
 
527
+ Related: :func:`pack_padded`, which uses :func:`sequence_mask` as the mask.
528
+
526
529
  :param tensor:
527
530
  :param mask:
528
- :param dims: the order of the dims defines the format. those dims should be exactly the dims of the mask.
529
- :param out_dim:
530
- :return: tensor where all dims in mask/dims are removed and replaced by a new dim.
531
- the new dim is also returned.
532
- if mask==True for all elements, the returned tensor would be simply the flattened input tensor.
533
- """
534
- # noinspection PyProtectedMember
535
- return tensor._raw_backend.masked_select(tensor, mask=mask, dims=dims, out_dim=out_dim)
531
+ :param dims: The same or a subset of the dims of ``mask``.
532
+ The order of the dims defines the packed format (in ``out_dim``).
533
+ If only a single dim is given, only this dim is packed, while all other dims are kept as is.
534
+ :param out_dim: packed ``dims`` into this dim. Automatically created if not given, and then returned.
535
+ :return: Tensor where all ``dims`` are removed and replaced by a new dim (``out_dim``).
536
+ The new dim (``out_dim``) is also returned.
537
+ If mask==True for all elements, the returned tensor would be simply the flattened input tensor.
538
+ """
539
+ mask_dims_set = set(mask.dims)
540
+ dims_set = set(dims)
541
+ if not dims_set.issubset(mask_dims_set):
542
+ raise ValueError(f"masked_select: dims {dims} not subset of mask dims {mask.dims}")
543
+ if not dims_set:
544
+ raise ValueError(f"masked_select: dims {dims} empty")
545
+ if dims_set == mask_dims_set:
546
+ # noinspection PyProtectedMember
547
+ return tensor._raw_backend.masked_select(tensor, mask=mask, dims=dims, out_dim=out_dim)
548
+ # Separate implementation for the case where we have a subset of the mask dims, specifically one single dim.
549
+ # See https://github.com/rwth-i6/returnn/issues/1605 for discussion.
550
+ if len(dims) != 1:
551
+ # Please check https://github.com/rwth-i6/returnn/issues/1605 when you need this.
552
+ raise NotImplementedError(f"masked_select: dims {dims} len {len(dims)} > 1 not supported")
553
+ (in_dim,) = dims
554
+ in_dim: Dim
555
+ mask = mask.copy_masked(mask_value=False, dims=dims)
556
+ idxs = rf.cumsum(rf.cast(mask, "int32"), spatial_dim=in_dim) # [T,B] -> idx in T' + 1
557
+ new_size = rf.gather(idxs, indices=in_dim.get_size_tensor() - 1, axis=in_dim) # [B]
558
+ if out_dim is None:
559
+ out_dim = Dim(new_size, name="masked_select")
560
+ elif out_dim.dyn_size_ext is None:
561
+ out_dim.dyn_size_ext = new_size
562
+ elif out_dim.dyn_size_ext is not None and out_dim.dyn_size_ext.raw_tensor is None:
563
+ out_dim.dyn_size_ext.raw_tensor = new_size.raw_tensor
564
+ new_time = rf.reduce_max(new_size, axis=new_size.dims) # T'
565
+ idxs = rf.where(mask, idxs - 1, new_time) # new_time is the padding idx
566
+ ext_out_dim = out_dim + 1 # one more for the padded data
567
+ ext_res = rf.scatter(tensor, indices=idxs, indices_dim=in_dim, out_dim=ext_out_dim)
568
+ res, _ = rf.slice(ext_res, axis=ext_out_dim, size=out_dim)
569
+ return res, out_dim
536
570
 
537
571
 
538
572
  def masked_scatter(source: Tensor, *, mask: Tensor, dims: Sequence[Dim], in_dim: Dim) -> Tensor:
@@ -553,6 +587,7 @@ def sequence_mask(dims: Union[Dim, Sequence[Dim]], *, device: Optional[str] = No
553
587
  """
554
588
  :param dims:
555
589
  :param device:
590
+ :return: mask based on the sequence lengths
556
591
  """
557
592
  if isinstance(dims, Dim):
558
593
  dims = [dims]
@@ -69,6 +69,7 @@ __all__ = [
69
69
  "log_softmax",
70
70
  "gating",
71
71
  "lerp",
72
+ "cumsum",
72
73
  ]
73
74
 
74
75
 
@@ -612,3 +613,11 @@ def lerp(
612
613
  """
613
614
  # noinspection PyProtectedMember
614
615
  return start._raw_backend.lerp(start, end, weight, allow_broadcast_all_sources=allow_broadcast_all_sources)
616
+
617
+
618
+ def cumsum(source: Tensor, *, spatial_dim: Dim) -> Tensor:
619
+ """
620
+ Applies cumsum.
621
+ """
622
+ # noinspection PyProtectedMember
623
+ return source._raw_backend.cumsum(source, spatial_dim=spatial_dim)
@@ -730,6 +730,11 @@ class ReturnnLayersBackend(Backend[Layer]):
730
730
  name="clip_by_value",
731
731
  )
732
732
 
733
+ @staticmethod
734
+ def cumsum(source: Tensor, *, spatial_dim: Dim) -> Tensor:
735
+ """cumsum"""
736
+ return rfl.make_layer({"class": "cumsum", "from": source, "axis": spatial_dim}, name="cumsum")
737
+
733
738
  @staticmethod
734
739
  def matmul(a: Tensor, b: Tensor, *, reduce: Union[Dim, Sequence[Dim]], use_mask: bool = True) -> Tensor:
735
740
  """matmul"""
@@ -1192,6 +1192,14 @@ class TorchBackend(Backend[torch.Tensor]):
1192
1192
  )
1193
1193
  return out
1194
1194
 
1195
+ @staticmethod
1196
+ def cumsum(source: Tensor, *, spatial_dim: Dim) -> Tensor:
1197
+ """cumsum"""
1198
+ axis = source.get_axis_from_description(spatial_dim)
1199
+ out = source.copy_template("cumsum")
1200
+ out.raw_tensor = torch.cumsum(source.raw_tensor, dim=axis, dtype=source.raw_tensor.dtype)
1201
+ return out
1202
+
1195
1203
  @staticmethod
1196
1204
  def matmul(a: _TT, b: _TT, *, reduce: Union[Dim, Sequence[Dim]], use_mask: bool = True) -> _TT:
1197
1205
  """
@@ -79,7 +79,7 @@ def _get_class_init_kwargs(optim_class):
79
79
  return optim_class_init_kwargs
80
80
 
81
81
 
82
- class Updater(object):
82
+ class Updater:
83
83
  """
84
84
  Wraps a torch.optim.Optimizer, and extends it by some further functionality.
85
85
  """
@@ -3,8 +3,8 @@ Some generic debugging utilities.
3
3
  """
4
4
 
5
5
  from __future__ import annotations
6
- from typing import TYPE_CHECKING, Optional, Union, Any, Sequence, Callable, Tuple, List, Dict
7
- from types import FunctionType
6
+ from typing import TYPE_CHECKING, Optional, Union, Any, Collection, Sequence, Callable, Tuple, List, Dict, TextIO
7
+ from types import FunctionType, CodeType, FrameType
8
8
  import os
9
9
  import sys
10
10
  import signal
@@ -54,13 +54,19 @@ def auto_exclude_all_new_threads(func):
54
54
  return wrapped
55
55
 
56
56
 
57
- def dump_all_thread_tracebacks(exclude_thread_ids=None, exclude_self=False):
57
+ def dump_all_thread_tracebacks(
58
+ *, exclude_thread_ids: Optional[Collection[int]] = None, exclude_self: bool = False, file: Optional[TextIO] = None
59
+ ):
58
60
  """
59
- :param set[int] exclude_thread_ids:
60
- :param bool exclude_self:
61
+ :param exclude_thread_ids:
62
+ :param exclude_self:
63
+ :param file:
61
64
  """
62
65
  if exclude_thread_ids is None:
63
66
  exclude_thread_ids = set()
67
+ if file is None:
68
+ file = sys.stdout
69
+
64
70
  from returnn.util.better_exchook import print_tb
65
71
  import threading
66
72
 
@@ -68,7 +74,7 @@ def dump_all_thread_tracebacks(exclude_thread_ids=None, exclude_self=False):
68
74
  exclude_thread_ids = set(list(exclude_thread_ids) + [threading.current_thread().ident])
69
75
 
70
76
  if hasattr(sys, "_current_frames"):
71
- print("")
77
+ print("", file=file)
72
78
  threads = {t.ident: t for t in threading.enumerate()}
73
79
  # noinspection PyProtectedMember
74
80
  for tid, stack in sorted(sys._current_frames().items()):
@@ -89,17 +95,17 @@ def dump_all_thread_tracebacks(exclude_thread_ids=None, exclude_self=False):
89
95
  tags += [str(thread_)]
90
96
  else:
91
97
  tags += ["unknown with id %i" % tid]
92
- print("Thread %s:" % ", ".join(tags))
98
+ print("Thread %s:" % ", ".join(tags), file=file)
93
99
  if tid in global_exclude_thread_ids:
94
- print("(Auto-ignored traceback.)")
100
+ print("(Auto-ignored traceback.)", file=file)
95
101
  elif tid in exclude_thread_ids:
96
- print("(Excluded thread.)")
102
+ print("(Excluded thread.)", file=file)
97
103
  else:
98
- print_tb(stack, file=sys.stdout)
99
- print("")
100
- print("That were all threads.")
104
+ print_tb(stack, file=file)
105
+ print("", file=file)
106
+ print("That were all threads.", file=file)
101
107
  else:
102
- print("Does not have sys._current_frames, cannot get thread tracebacks.")
108
+ print("Does not have sys._current_frames, cannot get thread tracebacks.", file=file)
103
109
 
104
110
 
105
111
  def setup_warn_with_traceback():
@@ -132,6 +138,7 @@ def init_better_exchook():
132
138
  but adds some special handling for the main thread.
133
139
  """
134
140
  from returnn.util.better_exchook import better_exchook
141
+ from returnn.log import log
135
142
 
136
143
  def excepthook(exc_type, exc_obj, exc_tb):
137
144
  """
@@ -139,6 +146,8 @@ def init_better_exchook():
139
146
  :param exc_obj:
140
147
  :param exc_tb:
141
148
  """
149
+ file = log.v1 or sys.stdout
150
+
142
151
  # noinspection PyBroadException
143
152
  try:
144
153
  # noinspection PyUnresolvedReferences,PyProtectedMember
@@ -153,7 +162,10 @@ def init_better_exchook():
153
162
  return
154
163
  # An unhandled exception in the main thread. This means that we are going to quit now.
155
164
  sys.exited = True
156
- print("Unhandled exception %s in thread %s, proc %i." % (exc_type, threading.current_thread(), os.getpid()))
165
+ print(
166
+ "Unhandled exception %s in thread %s, proc %i." % (exc_type, threading.current_thread(), os.getpid()),
167
+ file=file,
168
+ )
157
169
  if exc_type is KeyboardInterrupt:
158
170
  return
159
171
 
@@ -164,9 +176,9 @@ def init_better_exchook():
164
176
  # We are the main thread and we got an exit-exception. This is likely fatal.
165
177
  # This usually means an exit. (We ignore non-daemon threads and procs here.)
166
178
  # Print the stack of all other threads.
167
- dump_all_thread_tracebacks(exclude_thread_ids={main_thread_id})
179
+ dump_all_thread_tracebacks(exclude_thread_ids={main_thread_id}, file=file)
168
180
 
169
- better_exchook(exc_type, exc_obj, exc_tb, file=sys.stdout)
181
+ better_exchook(exc_type, exc_obj, exc_tb, file=file)
170
182
 
171
183
  sys.excepthook = excepthook
172
184
 
@@ -574,6 +586,15 @@ class PyTracer:
574
586
  check_py_traces_rf_to_pt_equal(trace_my_impl.captured_locals, trace_ref_impl.captured_locals, [...])
575
587
 
576
588
  See also :func:`check_py_traces_rf_to_pt_equal` to compare the traces.
589
+
590
+ This class uses the Python :func:`sys.settrace` mechanism to trace the locals.
591
+ It accesses ``frame.f_locals`` to get the local variables.
592
+ Note that this behavior is slightly buggy in versions of CPython <3.13,
593
+ see for example:
594
+ https://github.com/python/cpython/issues/113939
595
+ https://github.com/python/cpython/issues/74929
596
+ And thus the behavior might be different depending on the Python version.
597
+ In Python >=3.13, you likely get a few more locals than before.
577
598
  """
578
599
 
579
600
  def __init__(
@@ -583,13 +604,14 @@ class PyTracer:
583
604
  :param funcs_to_trace_list: list of functions to trace the locals. only those functions will be traced.
584
605
  :param capture_type: only capture variables of this type, e.g. torch.Tensor.
585
606
  """
586
- self.funcs_to_trace_list = []
587
- for func in funcs_to_trace_list:
588
- # E.g. when the function was decorated, see functools.wraps.
607
+
608
+ def _get_func_code(func: FunctionType) -> CodeType:
589
609
  while getattr(func, "__wrapped__", None) is not None:
590
610
  func = func.__wrapped__
591
- self.funcs_to_trace_list.append(func)
592
- self._code_obj_to_func = {func.__code__: func for func in self.funcs_to_trace_list}
611
+ return func.__code__
612
+
613
+ self.funcs_to_trace_list = funcs_to_trace_list
614
+ self._code_obj_to_func = {_get_func_code(func): func for func in self.funcs_to_trace_list}
593
615
  self.capture_type = capture_type
594
616
 
595
617
  self._prev_trace_func = None
@@ -611,7 +633,7 @@ class PyTracer:
611
633
  sys.settrace(self._prev_trace_func)
612
634
  self._prev_trace_func = None
613
635
 
614
- def __call__(self, frame, event, arg) -> Optional[PyTracer]:
636
+ def __call__(self, frame: FrameType, event, arg) -> Optional[PyTracer]:
615
637
  """
616
638
  Trace func to get intermediate outputs.
617
639
  """
@@ -623,16 +645,19 @@ class PyTracer:
623
645
  if event == "call":
624
646
  self.captured_locals.setdefault(func, []).append({})
625
647
  else:
648
+ # Note that accessing frame.f_locals is not always totally accurate.
649
+ # See the corresponding comment in our class docstring.
626
650
  for k, v in frame.f_locals.items():
627
651
  if not isinstance(v, self.capture_type):
628
652
  continue
629
653
  prev = self.captured_locals[func][-1].get(k, None)
630
654
  if prev is None or prev[-1] is not v:
655
+ var_ls = self.captured_locals[func][-1].setdefault(k, [])
631
656
  print(
632
657
  f"{func.__qualname__}[{len(self.captured_locals[func]) - 1}]"
633
- f" {type(v).__qualname__} var changed: {k} = {v}"
658
+ f" ({type(v).__qualname__}) {k}[{len(var_ls)}] = {v}"
634
659
  )
635
- self.captured_locals[func][-1].setdefault(k, []).append(v)
660
+ var_ls.append(v)
636
661
  return self
637
662
  return prev_trace_func_res
638
663
 
@@ -675,8 +700,6 @@ def check_py_traces_rf_to_pt_equal(
675
700
  dummy_forward_compat_kwargs = {f"_random_forward_compat_arg_{random.randint(0, 1_000_000)}": "please"}
676
701
 
677
702
  def _get_entry(trace, func, i, name, j):
678
- while getattr(func, "__wrapped__", None) is not None:
679
- func = func.__wrapped__
680
703
  return trace[func][i][name][j]
681
704
 
682
705
  def _resolve_dim(dim: Union[Dim, str]) -> Dim:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20240808.234227
3
+ Version: 1.20240826.132634
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
@@ -33,6 +33,76 @@ def test_pack_padded():
33
33
  run_model(extern_data, lambda *, epoch, step: _Net(), _forward_step)
34
34
 
35
35
 
36
+ def test_masked_select():
37
+ time_dim = Dim(Tensor("time", [batch_dim], dtype="int32"))
38
+ in_dim = Dim(7, name="in")
39
+ extern_data = TensorDict(
40
+ {
41
+ "data": Tensor("data", [batch_dim, time_dim, in_dim], dtype="float32"),
42
+ "mask": Tensor("mask", [batch_dim, time_dim], dtype="bool"),
43
+ }
44
+ )
45
+
46
+ # noinspection PyShadowingNames
47
+ def _forward_step(*, extern_data: TensorDict, **_kwargs):
48
+ x = extern_data["data"]
49
+ mask = extern_data["mask"]
50
+ out, pack_dim = rf.masked_select(x, mask=mask, dims=[batch_dim, time_dim])
51
+ out.mark_as_default_output(shape=(pack_dim, in_dim))
52
+
53
+ run_model(extern_data, lambda *, epoch, step: rf.Module(), _forward_step)
54
+
55
+
56
+ def test_masked_select_single_dim():
57
+ # https://github.com/rwth-i6/returnn/issues/1605
58
+ time_dim = Dim(Tensor("time", [batch_dim], dtype="int32"))
59
+ in_dim = Dim(7, name="in")
60
+ extern_data = TensorDict(
61
+ {
62
+ "data": Tensor("data", [batch_dim, time_dim, in_dim], dtype="float32"),
63
+ "mask": Tensor("mask", [batch_dim, time_dim], dtype="bool"),
64
+ }
65
+ )
66
+
67
+ # noinspection PyShadowingNames
68
+ def _forward_step(*, extern_data: TensorDict, **_kwargs):
69
+ x = extern_data["data"]
70
+ mask = extern_data["mask"]
71
+ out, pack_dim = rf.masked_select(x, mask=mask, dims=[time_dim])
72
+ out.mark_as_default_output(shape=(batch_dim, pack_dim, in_dim))
73
+ pack_dim.dyn_size_ext.mark_as_output("out_size", shape=[batch_dim])
74
+ x.mark_as_output("input", shape=[batch_dim, time_dim, in_dim])
75
+ mask.mark_as_output("mask", shape=[batch_dim, time_dim])
76
+ time_dim.dyn_size_ext.mark_as_output("in_size", shape=[batch_dim])
77
+
78
+ res = run_model(extern_data, lambda *, epoch, step: rf.Module(), _forward_step, test_tensorflow=False)
79
+ for k, v in res.data.items():
80
+ print(f"{k} {v} = {v.raw_tensor}")
81
+ num_batches = res["input"].raw_tensor.shape[0]
82
+ have_non_zero = False
83
+ have_less = False
84
+ for b in range(num_batches):
85
+ in_size = res["in_size"].raw_tensor[b]
86
+ out_size = res["out_size"].raw_tensor[b]
87
+ print(f"batch {b}, in_size {in_size}, out_size {out_size}")
88
+ assert 0 <= out_size <= in_size
89
+ if out_size > 0:
90
+ have_non_zero = True
91
+ if out_size < in_size:
92
+ have_less = True
93
+ c = 0
94
+ for t in range(in_size):
95
+ if res["mask"].raw_tensor[b, t]:
96
+ c += 1
97
+ assert c == out_size
98
+ t_ = 0
99
+ for t in range(in_size):
100
+ if res["mask"].raw_tensor[b, t]:
101
+ assert (res["input"].raw_tensor[b, t] == res["output"].raw_tensor[b, t_]).all()
102
+ t_ += 1
103
+ assert have_non_zero and have_less # just that the test case covered all cases
104
+
105
+
36
106
  def test_reshape():
37
107
  time_dim = Dim(Tensor("time", [batch_dim], dtype="int32"))
38
108
  in_dim = Dim(7, name="in")
@@ -109,3 +109,19 @@ def test_log_sigmoid():
109
109
  out.mark_as_default_output(shape=(batch_dim, time_dim, in_dim))
110
110
 
111
111
  run_model(extern_data, lambda *, epoch, step: rf.Module(), _forward_step)
112
+
113
+
114
+ def test_cumsum():
115
+ time_dim = Dim(Tensor("time", [batch_dim], dtype="int32"))
116
+ extern_data = TensorDict(
117
+ {
118
+ "data": Tensor("data", [batch_dim, time_dim], dtype="int32"),
119
+ }
120
+ )
121
+
122
+ # noinspection PyShadowingNames
123
+ def _forward_step(*, model: rf.Module, extern_data: TensorDict):
124
+ out = rf.cumsum(extern_data["data"], spatial_dim=time_dim)
125
+ out.mark_as_default_output(shape=(batch_dim, time_dim))
126
+
127
+ run_model(extern_data, lambda *, epoch, step: rf.Module(), _forward_step)
@@ -1,2 +0,0 @@
1
- version = '1.20240808.234227'
2
- long_version = '1.20240808.234227+git.d773e45'