returnn 1.20241212.105204__tar.gz → 1.20241213.155203__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 (469) hide show
  1. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/PKG-INFO +1 -1
  2. returnn-1.20241213.155203/_setup_info_generated.py +2 -0
  3. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/_backend.py +9 -15
  4. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/array_.py +14 -4
  5. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/attention.py +12 -1
  6. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/dims.py +11 -0
  7. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/_backend.py +22 -15
  8. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/layers/basic.py +4 -3
  9. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/frontend/_backend.py +20 -21
  10. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn.egg-info/PKG-INFO +1 -1
  11. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_rf_array.py +40 -0
  12. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_rf_attention.py +50 -0
  13. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_rf_encoder_conformer.py +10 -9
  14. returnn-1.20241212.105204/_setup_info_generated.py +0 -2
  15. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/.editorconfig +0 -0
  16. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/.gitignore +0 -0
  17. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/.gitmodules +0 -0
  18. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/.kateconfig +0 -0
  19. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/CHANGELOG.md +0 -0
  20. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/CODEOWNERS +0 -0
  21. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/CONTRIBUTING.md +0 -0
  22. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/LICENSE +0 -0
  23. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/MANIFEST.in +0 -0
  24. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/README.rst +0 -0
  25. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/__init__.py +0 -0
  26. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/12AX.cluster_map +0 -0
  27. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/_setup_returnn_env.py +0 -0
  28. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-fwd.config +0 -0
  29. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-horovod-mpi.py +0 -0
  30. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-horovod-mpi.py.sh +0 -0
  31. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-horovod-mpi.sh +0 -0
  32. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-hyper-param-tuning.config +0 -0
  33. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-iter-dataset.py +0 -0
  34. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-list-devices.py +0 -0
  35. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-lua-torch-layer.config +0 -0
  36. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-pretrain.config +0 -0
  37. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-record-and-push-to-webserver.py +0 -0
  38. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-returnn-as-framework.py +0 -0
  39. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-rf-pt-benchmark.py +0 -0
  40. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-rf.config +0 -0
  41. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-rhn-enwik8.config +0 -0
  42. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-sprint-interface.py +0 -0
  43. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-tf-att-copy.config +0 -0
  44. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-tf-attention.config +0 -0
  45. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
  46. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
  47. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-tf-enc-dec.config +0 -0
  48. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-tf-hard-att-copy.config +0 -0
  49. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-tf-lstm-benchmark.py +0 -0
  50. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
  51. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
  52. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-tf-native-lstm.12ax.config +0 -0
  53. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-tf-native-lstm2.12ax.config +0 -0
  54. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
  55. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-tf-neural-transducer.12ax.config +0 -0
  56. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-tf-rec-explicit-lstm.config +0 -0
  57. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-tf-rec-explicit-rnn.config +0 -0
  58. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-tf-rec-self-att.config +0 -0
  59. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-tf-search-compiled-graph.py +0 -0
  60. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
  61. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-timit-lstm-ctc.config +0 -0
  62. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-torch.config +0 -0
  63. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
  64. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/demo.sh +0 -0
  65. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
  66. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
  67. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
  68. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/IAM/README.txt +0 -0
  69. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/IAM/chars.txt +0 -0
  70. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/IAM/config_demo +0 -0
  71. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/IAM/config_fwd +0 -0
  72. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/IAM/config_real +0 -0
  73. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
  74. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/IAM/decode.py +0 -0
  75. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
  76. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/IAM/go.sh +0 -0
  77. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/IAM/lines.txt +0 -0
  78. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/IAM/split/eval.txt +0 -0
  79. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/IAM/split/train.txt +0 -0
  80. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/IAM/split/valid.txt +0 -0
  81. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/README.md +0 -0
  82. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/artificial/create_test_h5.py +0 -0
  83. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/artificial/forwardconfig +0 -0
  84. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/artificial/go.sh +0 -0
  85. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/artificial/trainconfig +0 -0
  86. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
  87. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
  88. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/artificial_rgb/go.sh +0 -0
  89. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
  90. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/pyproject.toml +0 -0
  91. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/requirements.txt +0 -0
  92. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/__init__.py +0 -0
  93. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/__main__.py +0 -0
  94. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/__old_mod_loader__.py +0 -0
  95. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/__setup__.py +0 -0
  96. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/config.py +0 -0
  97. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/__init__.py +0 -0
  98. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/audio.py +0 -0
  99. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/basic.py +0 -0
  100. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/bundle_file.py +0 -0
  101. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/cached.py +0 -0
  102. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/cached2.py +0 -0
  103. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/distrib_files.py +0 -0
  104. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/generating.py +0 -0
  105. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/hdf.py +0 -0
  106. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/lm.py +0 -0
  107. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/map.py +0 -0
  108. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/meta.py +0 -0
  109. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/multi_proc.py +0 -0
  110. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/normalization_data.py +0 -0
  111. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/numpy_dump.py +0 -0
  112. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/postprocessing.py +0 -0
  113. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/raw_wav.py +0 -0
  114. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/sprint.py +0 -0
  115. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/stereo.py +0 -0
  116. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/util/__init__.py +0 -0
  117. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/util/feature_extraction.py +0 -0
  118. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/util/strings.py +0 -0
  119. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/datasets/util/vocabulary.py +0 -0
  120. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/engine/__init__.py +0 -0
  121. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/engine/base.py +0 -0
  122. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/engine/batch.py +0 -0
  123. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/__init__.py +0 -0
  124. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/__main__.py +0 -0
  125. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/.git +0 -0
  126. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
  127. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
  128. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
  129. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
  130. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
  131. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
  132. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
  133. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
  134. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
  135. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
  136. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
  137. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
  138. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
  139. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
  140. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
  141. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
  142. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
  143. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
  144. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
  145. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
  146. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
  147. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
  148. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
  149. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
  150. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/__init__.py +0 -0
  151. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/graph_editor/README.md +0 -0
  152. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/graph_editor/__init__.py +0 -0
  153. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/graph_editor/edit.py +0 -0
  154. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/graph_editor/reroute.py +0 -0
  155. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/graph_editor/select.py +0 -0
  156. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/graph_editor/subgraph.py +0 -0
  157. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/graph_editor/transform.py +0 -0
  158. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/extern/graph_editor/util.py +0 -0
  159. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/forward_iface.py +0 -0
  160. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/__init__.py +0 -0
  161. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/_native/__init__.py +0 -0
  162. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/_native/backend.cpp +0 -0
  163. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/_native/backend.hpp +0 -0
  164. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/_native/module.cpp +0 -0
  165. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/_native/module.hpp +0 -0
  166. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/_native/py_utils.hpp +0 -0
  167. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/_native/tensor_ops.cpp +0 -0
  168. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/_native/tensor_ops.hpp +0 -0
  169. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/_numpy_backend.py +0 -0
  170. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/_random_journal.py +0 -0
  171. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/_utils.py +0 -0
  172. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/audio/__init__.py +0 -0
  173. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/audio/mel.py +0 -0
  174. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/audio/specaugment.py +0 -0
  175. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/backend.py +0 -0
  176. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/build_from_dict.py +0 -0
  177. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/cond.py +0 -0
  178. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/const.py +0 -0
  179. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/container.py +0 -0
  180. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/control_flow_ctx.py +0 -0
  181. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/conv.py +0 -0
  182. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/conversions/__init__.py +0 -0
  183. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/conversions/espnet_e_branchformer.py +0 -0
  184. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/conversions/hf_llama.py +0 -0
  185. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/conversions/torch_nn.py +0 -0
  186. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/decoder/__init__.py +0 -0
  187. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/decoder/transformer.py +0 -0
  188. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/device.py +0 -0
  189. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/dropout.py +0 -0
  190. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/dtype.py +0 -0
  191. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/encoder/__init__.py +0 -0
  192. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/encoder/base.py +0 -0
  193. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/encoder/conformer.py +0 -0
  194. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/encoder/e_branchformer.py +0 -0
  195. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/encoder/transformer.py +0 -0
  196. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/gradient.py +0 -0
  197. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/graph.py +0 -0
  198. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/hooks.py +0 -0
  199. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/init.py +0 -0
  200. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/label_smoothing.py +0 -0
  201. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/linear.py +0 -0
  202. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/loop.py +0 -0
  203. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/loss.py +0 -0
  204. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/math_.py +0 -0
  205. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/matmul.py +0 -0
  206. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/module.py +0 -0
  207. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/normalization.py +0 -0
  208. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/parameter.py +0 -0
  209. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/parametrizations.py +0 -0
  210. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/parametrize.py +0 -0
  211. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/piecewise_linear.py +0 -0
  212. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/rand.py +0 -0
  213. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/rec.py +0 -0
  214. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/reduce.py +0 -0
  215. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/run_ctx.py +0 -0
  216. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/signal.py +0 -0
  217. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/state.py +0 -0
  218. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/stepwise_scheduler.py +0 -0
  219. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/tensor_array.py +0 -0
  220. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/frontend/types.py +0 -0
  221. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/import_/__init__.py +0 -0
  222. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/import_/common.py +0 -0
  223. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/import_/git.py +0 -0
  224. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/import_/import_.py +0 -0
  225. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/learning_rate_control.py +0 -0
  226. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/log.py +0 -0
  227. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/native_op.cpp +0 -0
  228. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/native_op.py +0 -0
  229. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/pretrain.py +0 -0
  230. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/sprint/__init__.py +0 -0
  231. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/sprint/cache.py +0 -0
  232. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/sprint/control.py +0 -0
  233. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/sprint/error_signals.py +0 -0
  234. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/sprint/extern_interface.py +0 -0
  235. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/sprint/interface.py +0 -0
  236. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tensor/README.md +0 -0
  237. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tensor/__init__.py +0 -0
  238. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tensor/_dim_extra.py +0 -0
  239. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tensor/_tensor_extra.py +0 -0
  240. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tensor/_tensor_mixin_base.py +0 -0
  241. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tensor/_tensor_op_overloads.py +0 -0
  242. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tensor/control_flow_ctx.py +0 -0
  243. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tensor/dim.py +0 -0
  244. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tensor/marked_dim.py +0 -0
  245. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tensor/tensor.py +0 -0
  246. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tensor/tensor_dict.py +0 -0
  247. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tensor/utils.py +0 -0
  248. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/__init__.py +0 -0
  249. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/compat.py +0 -0
  250. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/data_pipeline.py +0 -0
  251. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/distributed.py +0 -0
  252. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/engine.py +0 -0
  253. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/README.md +0 -0
  254. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/__init__.py +0 -0
  255. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/_utils.py +0 -0
  256. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/cond.py +0 -0
  257. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
  258. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
  259. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/dims.py +0 -0
  260. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/layer.py +0 -0
  261. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/loop.py +0 -0
  262. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/make_layer.py +0 -0
  263. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/masked_computation.py +0 -0
  264. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
  265. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
  266. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/frontend_low_level/__init__.py +0 -0
  267. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/frontend_low_level/_backend.py +0 -0
  268. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/horovod.py +0 -0
  269. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/hyper_param_tuning.py +0 -0
  270. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/layers/__init__.py +0 -0
  271. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/layers/base.py +0 -0
  272. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/layers/rec.py +0 -0
  273. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/layers/segmental_model.py +0 -0
  274. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/layers/signal_processing.py +0 -0
  275. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/layers/variable.py +0 -0
  276. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/native_op.py +0 -0
  277. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/network.py +0 -0
  278. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/sprint.py +0 -0
  279. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/updater.py +0 -0
  280. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/util/__init__.py +0 -0
  281. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/util/basic.py +0 -0
  282. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/util/data.py +0 -0
  283. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/util/gradient_checkpoint.py +0 -0
  284. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/util/ken_lm.py +0 -0
  285. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/tf/util/open_fst.py +0 -0
  286. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/README.md +0 -0
  287. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/__init__.py +0 -0
  288. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/data/__init__.py +0 -0
  289. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/data/extern_data.py +0 -0
  290. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/data/pipeline.py +0 -0
  291. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/data/queued_data_iter.py +0 -0
  292. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
  293. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/data/tensor_utils.py +0 -0
  294. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/distributed.py +0 -0
  295. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/engine.py +0 -0
  296. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/frontend/__init__.py +0 -0
  297. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/frontend/_rand.py +0 -0
  298. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/frontend/bridge.py +0 -0
  299. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/frontend/raw_ops.py +0 -0
  300. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/optim/README.md +0 -0
  301. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/optim/__init__.py +0 -0
  302. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/optim/lion.py +0 -0
  303. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/updater.py +0 -0
  304. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/util/README.md +0 -0
  305. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/util/__init__.py +0 -0
  306. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/util/array_.py +0 -0
  307. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/util/debug_inf_nan.py +0 -0
  308. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/util/diagnose_gpu.py +0 -0
  309. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/util/exception_helper.py +0 -0
  310. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/util/gradient_checkpoint.py +0 -0
  311. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/util/module.py +0 -0
  312. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/torch/util/scaled_gradient.py +0 -0
  313. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/__init__.py +0 -0
  314. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/basic.py +0 -0
  315. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/better_exchook.py +0 -0
  316. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/bpe.py +0 -0
  317. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/debug.py +0 -0
  318. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/debug_helpers.py +0 -0
  319. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/file_cache.py +0 -0
  320. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/fsa.py +0 -0
  321. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/literal_py_to_pickle.py +0 -0
  322. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/math.py +0 -0
  323. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
  324. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/native_code_compiler.py +0 -0
  325. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/pprint.py +0 -0
  326. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/py-to-pickle.cpp +0 -0
  327. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/py_compat.py +0 -0
  328. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/py_ext_mod_compiler.py +0 -0
  329. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/result_with_reason.py +0 -0
  330. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/sig_proc.py +0 -0
  331. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/task_system.py +0 -0
  332. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/train_proc_manager.py +0 -0
  333. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn/util/watch_memory.py +0 -0
  334. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn.egg-info/SOURCES.txt +0 -0
  335. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn.egg-info/dependency_links.txt +0 -0
  336. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/returnn.egg-info/top_level.txt +0 -0
  337. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/rnn.py +0 -0
  338. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/setup.cfg +0 -0
  339. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/setup.py +0 -0
  340. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/DummySprintExec.py +0 -0
  341. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/PyCharm-inspection-profile.xml +0 -0
  342. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/PyCharm.idea/.gitignore +0 -0
  343. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/PyCharm.idea/.name +0 -0
  344. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
  345. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
  346. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
  347. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
  348. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
  349. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/PyCharm.idea/misc.xml +0 -0
  350. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/PyCharm.idea/modules.xml +0 -0
  351. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/PyCharm.idea/returnn.iml +0 -0
  352. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
  353. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/_set_num_threads1.py +0 -0
  354. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/_setup_returnn_env.py +0 -0
  355. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/_setup_test_env.py +0 -0
  356. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/bpe-unicode-demo.codes +0 -0
  357. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/bpe-unicode-demo.vocab +0 -0
  358. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/lexicon_opt.fst +0 -0
  359. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/lexicon_opt.isyms +0 -0
  360. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/lexicon_opt.jpg +0 -0
  361. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/lexicon_opt.osyms +0 -0
  362. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/lint_common.py +0 -0
  363. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/pycharm-inspect.py +0 -0
  364. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/pylint.py +0 -0
  365. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/returnn-as-framework.py +0 -0
  366. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/rf_utils.py +0 -0
  367. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/spelling.dic +0 -0
  368. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_Config.py +0 -0
  369. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_Dataset.py +0 -0
  370. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_Fsa.py +0 -0
  371. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_GeneratingDataset.py +0 -0
  372. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_HDFDataset.py +0 -0
  373. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_LearningRateControl.py +0 -0
  374. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_Log.py +0 -0
  375. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_MultiProcDataset.py +0 -0
  376. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_Pretrain.py +0 -0
  377. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_ResNet.py +0 -0
  378. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_SprintDataset.py +0 -0
  379. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_SprintInterface.py +0 -0
  380. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_TFEngine.py +0 -0
  381. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_TFNativeOp.py +0 -0
  382. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_TFNetworkLayer.py +0 -0
  383. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_TFNetworkRecLayer.py +0 -0
  384. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_TFNetworkSigProcLayer.py +0 -0
  385. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_TFUpdater.py +0 -0
  386. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_TFUtil.py +0 -0
  387. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_TF_determinism.py +0 -0
  388. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_TaskSystem.py +0 -0
  389. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_TaskSystem_SharedMem.py +0 -0
  390. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_TranslationDataset.py +0 -0
  391. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_Util.py +0 -0
  392. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_demos.py +0 -0
  393. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_fork_exec.py +0 -0
  394. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_hdf_dump.py +0 -0
  395. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_rf_base.py +0 -0
  396. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_rf_cond.py +0 -0
  397. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_rf_const.py +0 -0
  398. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_rf_container.py +0 -0
  399. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_rf_conv.py +0 -0
  400. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_rf_decoder_transformer.py +0 -0
  401. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_rf_gradient.py +0 -0
  402. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_rf_label_smoothing.py +0 -0
  403. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_rf_loop.py +0 -0
  404. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_rf_math.py +0 -0
  405. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_rf_normalization.py +0 -0
  406. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_rf_piecewise_linear.py +0 -0
  407. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_rf_rec.py +0 -0
  408. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_rf_reduce.py +0 -0
  409. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_rf_signal.py +0 -0
  410. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_tensor.py +0 -0
  411. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_tools.py +0 -0
  412. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_torch_dataset.py +0 -0
  413. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_torch_engine.py +0 -0
  414. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_torch_frontend.py +0 -0
  415. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_torch_internal_frontend.py +0 -0
  416. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/test_torch_util.py +0 -0
  417. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tests/torch_utils.py +0 -0
  418. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/_setup_returnn_env.py +0 -0
  419. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/analyze-dataset-batches.py +0 -0
  420. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/bliss-collect-seq-lens.py +0 -0
  421. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/bliss-dump-text.py +0 -0
  422. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/bliss-get-segment-names.py +0 -0
  423. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/bliss-to-ogg-zip.py +0 -0
  424. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/bpe-create-lexicon.py +0 -0
  425. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/calculate-word-error-rate.py +0 -0
  426. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/cleanup-old-models.py +0 -0
  427. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/collect-orth-symbols.py +0 -0
  428. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/collect-words.py +0 -0
  429. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/compile_native_op.py +0 -0
  430. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/compile_tf_graph.py +0 -0
  431. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/debug-dump-search-scores.py +0 -0
  432. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/debug-plot-search-scores.py +0 -0
  433. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/dump-dataset-raw-strings.py +0 -0
  434. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/dump-dataset.py +0 -0
  435. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/dump-forward-stats.py +0 -0
  436. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/dump-forward.py +0 -0
  437. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/dump-network-json.py +0 -0
  438. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/dump-pickle.py +0 -0
  439. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/extract_state_tying_from_dataset.py +0 -0
  440. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/get-attention-weights.py +0 -0
  441. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/get-best-model-epoch.py +0 -0
  442. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/hdf_dump.py +0 -0
  443. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/hdf_dump_translation_dataset.py +0 -0
  444. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/import-blocks-mt-model.py +0 -0
  445. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/import-t2t-mt-model.py +0 -0
  446. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/lattice_rescorer/.gitignore +0 -0
  447. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/lattice_rescorer/Makefile +0 -0
  448. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/lattice_rescorer/README.md +0 -0
  449. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/lattice_rescorer/example/README.md +0 -0
  450. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/lattice_rescorer/example/libs_list +0 -0
  451. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
  452. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
  453. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
  454. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/lattice_rescorer/example/state_vars_list +0 -0
  455. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/lattice_rescorer/example/tensor_names_list +0 -0
  456. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/lattice_rescorer/file.h +0 -0
  457. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
  458. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
  459. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/lattice_rescorer/main.cc +0 -0
  460. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/lattice_rescorer/rescorer.h +0 -0
  461. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/lattice_rescorer/vocabulary.cc +0 -0
  462. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/lattice_rescorer/vocabulary.h +0 -0
  463. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/tf_avg_checkpoints.py +0 -0
  464. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/tf_inspect_checkpoint.py +0 -0
  465. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/tf_inspect_summary_log.py +0 -0
  466. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/torch_avg_checkpoints.py +0 -0
  467. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/torch_export_to_onnx.py +0 -0
  468. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/tools/torch_inspect_checkpoint.py +0 -0
  469. {returnn-1.20241212.105204 → returnn-1.20241213.155203}/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.20241212.105204
3
+ Version: 1.20241213.155203
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.20241213.155203'
2
+ long_version = '1.20241213.155203+git.64d234b'
@@ -496,21 +496,6 @@ class Backend(Generic[T]):
496
496
  """
497
497
  raise NotImplementedError
498
498
 
499
- @staticmethod
500
- def cum_concat_step(source: Tensor, *, prev_accum: Tensor, axis: Dim, out_spatial_dim: Dim) -> Tensor:
501
- """
502
- Concatenates all previous frames over a time-axis.
503
- See RETURNN :class:`CumConcatLayer` for details.
504
-
505
- :param source: same dims as prev_accum except for the accum axis
506
- :param prev_accum: previous accumulated tensor, shape {..., axis}
507
- :param axis: the axis to accumulate over
508
- :param out_spatial_dim: the spatial dim of the output will be this dim. like axis+1.
509
- :return: accumulated. accumulated shape {..., out_spatial_dim},
510
- same shape as prev_accum with axis replaced by out_spatial_dim.
511
- """
512
- raise NotImplementedError
513
-
514
499
  @staticmethod
515
500
  def stack(sources: Sequence[Tensor], *, out_dim: Dim) -> Tensor:
516
501
  """
@@ -1095,6 +1080,15 @@ class Backend(Generic[T]):
1095
1080
  out.raw_tensor = source.raw_tensor
1096
1081
  return out
1097
1082
 
1083
+ @staticmethod
1084
+ def set_sparse_dim(source: Tensor, sparse_dim: Dim) -> Tensor:
1085
+ """set sparse dim"""
1086
+ # This default implementation works fine as long as the backend
1087
+ # does not have special treatments of Tensor and dim tags itself (like TF net dict backend).
1088
+ out = source.copy()
1089
+ out.sparse_dim = sparse_dim
1090
+ return out
1091
+
1098
1092
  _AllowedReduceModes = {"sum", "max", "min", "mean", "logsumexp", "any", "all", "argmin", "argmax"}
1099
1093
 
1100
1094
  @staticmethod
@@ -367,6 +367,7 @@ def concat(
367
367
  *sources: Tuple[Tensor, Dim],
368
368
  allow_broadcast: bool = False,
369
369
  out_dim: Optional[Dim] = None,
370
+ handle_dynamic_dims: Optional[bool] = None,
370
371
  ) -> Tuple[Tensor, Dim]:
371
372
  """
372
373
  Concatenates multiple sources in the specified dimension.
@@ -376,6 +377,7 @@ def concat(
376
377
  :param sources: list of (tensor, dim) pairs. dim is the axis to concatenate on.
377
378
  :param allow_broadcast: if True, the sources can have different dims, and the result will be broadcasted.
378
379
  :param out_dim: reuse existing dim for the resulting concatenated dim, if given
380
+ :param handle_dynamic_dims:
379
381
  :return: concatenated tensor, out_dim
380
382
  """
381
383
  assert sources
@@ -385,6 +387,9 @@ def concat(
385
387
  assert src.dims_set - {dim} == dims, f"concat {sources}, need allow_broadcast=True"
386
388
  if not out_dim:
387
389
  out_dim = sum(d for _, d in sources)
390
+ if handle_dynamic_dims is None or handle_dynamic_dims:
391
+ for src, dim in sources[:-1]:
392
+ assert dim.is_static(), f"concat {sources}, dim {dim} is not static, not yet implemented..."
388
393
  # noinspection PyProtectedMember
389
394
  return sources[0][0]._raw_backend.concat(*sources, allow_broadcast=allow_broadcast, out_dim=out_dim), out_dim
390
395
 
@@ -507,13 +512,18 @@ def cum_concat_step(
507
512
  :return: (accumulated, out_spatial_dim). accumulated shape {..., out_spatial_dim},
508
513
  same shape as prev_accum with axis replaced by out_spatial_dim.
509
514
  """
515
+ # Note: Before, we had a backend function just for this.
516
+ # In case of TF-layers, this was using CumConcatLayer.
517
+ # This would allow for automatic optimization when inside a RecLayer.
518
+ # However, we don't really need this for eager frameworks,
519
+ # and we want to simplify this for now,
520
+ # using pure RF code.
510
521
  if not out_spatial_dim:
511
522
  out_spatial_dim = axis + 1
512
- # noinspection PyProtectedMember
513
- return (
514
- source._raw_backend.cum_concat_step(source, prev_accum=prev_accum, axis=axis, out_spatial_dim=out_spatial_dim),
515
- out_spatial_dim,
523
+ out, (out_spatial_dim,) = rf.pad(
524
+ prev_accum, axes=[axis], padding=[(0, 1)], out_dims=[out_spatial_dim], value=source, handle_dynamic_dims=True
516
525
  )
526
+ return out, out_spatial_dim
517
527
 
518
528
 
519
529
  def stack(sources: Sequence[Tensor], *, out_dim: Optional[Dim] = None) -> Tuple[Tensor, Dim]:
@@ -862,13 +862,24 @@ def _make_indices(
862
862
  query_spatial_dim_m1 = query_spatial_dim - 1
863
863
  q_pos_vec = rf.range_over_dim(query_spatial_dim_m1) # [q_len-1]
864
864
 
865
+ # The masking in the output is quite custom (left+right masking), so our seq lens don't make sense,
866
+ # and might even cause to fail some tests (that e.g. max(q_seq_len+k_seq_len-1) == shape).
867
+ out_spatial_dim = Dim(
868
+ query_spatial_dim_m1.get_dim_value_tensor() + key_value_spatial_dim.get_dim_value_tensor(),
869
+ name=f"2*{query_spatial_dim.description}-1"
870
+ if (query_spatial_dim == key_value_spatial_dim)
871
+ else f"{query_spatial_dim.description}+{key_value_spatial_dim.description}-1",
872
+ )
873
+
865
874
  # We want to have all distances as in rf.combine_bc(kv_pos_vec, "-", q_pos_vec) with shape [q_len,kv_len].
866
875
  # We want to store only non-duplicates.
867
876
  # The min value is with kv_pos=0, q_pos=q_len-1: -(q_len-1)
868
877
  # The max value is with kv_pos=kv_len-1, q_pos=0: k_len-1
869
- indices, out_spatial_dim = rf.concat(
878
+ indices, _ = rf.concat(
870
879
  (q_pos_vec - query_spatial_dim_m1.get_dim_value_tensor(), query_spatial_dim_m1),
871
880
  (kv_pos_vec, key_value_spatial_dim),
881
+ out_dim=out_spatial_dim,
882
+ handle_dynamic_dims=False,
872
883
  )
873
884
  if query_offset is not None:
874
885
  indices = indices - query_offset
@@ -15,6 +15,7 @@ __all__ = [
15
15
  "range_over_dim_strided",
16
16
  "range_over_merged_dims",
17
17
  "replace_dim",
18
+ "set_sparse_dim",
18
19
  "dim_match_priority_when_needed",
19
20
  "num_elements_of_shape",
20
21
  "masked_fraction_of_shape",
@@ -94,6 +95,16 @@ def replace_dim(source: Tensor, *, in_dim: Dim, out_dim: Optional[Dim] = None) -
94
95
  return source._raw_backend.replace_dim(source, in_dim=in_dim, out_dim=out_dim), out_dim
95
96
 
96
97
 
98
+ def set_sparse_dim(source: Tensor, sparse_dim: Dim) -> Tensor:
99
+ """
100
+ :param source:
101
+ :param sparse_dim:
102
+ :return: source with sparse_dim set
103
+ """
104
+ # noinspection PyProtectedMember
105
+ return source._raw_backend.set_sparse_dim(source, sparse_dim)
106
+
107
+
97
108
  def dim_match_priority_when_needed(dim: Dim, *other_dims: Dim) -> Dim:
98
109
  """
99
110
  :return: maybe copy of dim with higher match_priority if needed to distinguish from other_dims
@@ -342,7 +342,20 @@ class ReturnnLayersBackend(Backend[Layer]):
342
342
  opts = {}
343
343
  if allow_broadcast:
344
344
  opts["allow_broadcast"] = True
345
- out_dim = sum(d for _, d in sources)
345
+ dim_deps = rfl.get_dim_deps(out_dim)
346
+ sources_dims = set()
347
+ for source, _ in sources:
348
+ sources_dims.update(source.dims)
349
+ need_explicit_dim_deps = False
350
+ for dim in dim_deps:
351
+ if dim not in sources_dims:
352
+ need_explicit_dim_deps = True
353
+ break
354
+ if need_explicit_dim_deps:
355
+ source0 = rfl.make_layer(
356
+ {"class": "copy", "from": sources[0][0], "extra_deps": dim_deps}, name="concat_extra_dim_deps"
357
+ )
358
+ sources = ((source0, sources[0][1]),) + sources[1:]
346
359
  return rfl.make_layer(
347
360
  {"class": "concat", "from": sources, "out_dim": out_dim, **opts},
348
361
  name="concat",
@@ -375,20 +388,6 @@ class ReturnnLayersBackend(Backend[Layer]):
375
388
  name="pad",
376
389
  )
377
390
 
378
- @staticmethod
379
- def cum_concat_step(source: Tensor, *, prev_accum: Tensor, axis: Dim, out_spatial_dim: Dim) -> Tensor:
380
- """cum_concat_step"""
381
- return rfl.make_layer(
382
- {
383
- "class": "cum_concat",
384
- "from": source,
385
- "state": {"state": prev_accum},
386
- "out_spatial_dim": out_spatial_dim,
387
- "axis": axis,
388
- },
389
- name="cum_concat",
390
- )
391
-
392
391
  @staticmethod
393
392
  def activation(tensor: Tensor, func: str) -> Tensor:
394
393
  """activation"""
@@ -774,6 +773,14 @@ class ReturnnLayersBackend(Backend[Layer]):
774
773
  {"class": "reinterpret_data", "set_dim_tags": {in_dim: out_dim}, "from": source}, name="new_dim"
775
774
  )
776
775
 
776
+ @staticmethod
777
+ def set_sparse_dim(source: Tensor, sparse_dim: Dim) -> Tensor:
778
+ """set sparse dim"""
779
+ return rfl.make_layer(
780
+ {"class": "reinterpret_data", "set_sparse": True, "set_sparse_dim": sparse_dim, "from": source},
781
+ name="set_sparse_dim",
782
+ )
783
+
777
784
  @staticmethod
778
785
  def reduce(source: Tensor, *, mode: str, axis: Union[Dim, Sequence[Dim]], use_mask: bool = True) -> Tensor:
779
786
  """Reduce"""
@@ -517,11 +517,12 @@ class ConcatLayer(LayerBase):
517
517
  dimension = 0
518
518
  for tag in concat_dim_tags:
519
519
  dimension += tag.dimension
520
+ sum_concat_dim_tags: Dim = sum(concat_dim_tags)
520
521
  if not out_dim:
521
- out_dim = sum(concat_dim_tags)
522
+ out_dim = sum_concat_dim_tags
522
523
  assert isinstance(out_dim, Dim)
523
- else:
524
- sum(concat_dim_tags).declare_same_as(out_dim)
524
+ elif not out_dim.is_dim_known():
525
+ sum_concat_dim_tags.declare_same_as(out_dim)
525
526
  assert out_dim.dimension == dimension
526
527
 
527
528
  def _as_common(x, axis):
@@ -452,9 +452,6 @@ class TorchBackend(Backend[torch.Tensor]):
452
452
  ) -> Tensor:
453
453
  """pad"""
454
454
  assert len(out_dims) == len(axes) == len(padding)
455
- out = source.copy_template_new_dim_tags(
456
- [out_dims[axes.index(dim)] if dim in axes else dim for dim in source.dim_tags], keep_special_axes=True
457
- )
458
455
  remaining_dims = set(axes)
459
456
  raw_pad = []
460
457
  for dim in reversed(source.dims):
@@ -469,10 +466,24 @@ class TorchBackend(Backend[torch.Tensor]):
469
466
  ]
470
467
  if not remaining_dims:
471
468
  break
472
- if isinstance(value, Tensor):
473
- assert value.dims == (), f"value {value} must be a scalar"
474
- value = value.raw_tensor
475
- out.raw_tensor = torch.nn.functional.pad(source.raw_tensor, pad=raw_pad, mode=mode, value=value)
469
+ # Use torch.nn.functional.pad if possible.
470
+ if (isinstance(value, Tensor) and value.dims == ()) or (not isinstance(value, Tensor)):
471
+ if isinstance(value, Tensor):
472
+ assert value.dims == ()
473
+ value = value.raw_tensor
474
+ out = source.copy_template_new_dim_tags(
475
+ [out_dims[axes.index(dim)] if dim in axes else dim for dim in source.dim_tags], keep_special_axes=True
476
+ )
477
+ out.raw_tensor = torch.nn.functional.pad(source.raw_tensor, pad=raw_pad, mode=mode, value=value)
478
+ else: # Fallback to concat.
479
+ assert isinstance(value, Tensor)
480
+ assert all(dim in source.dims and dim not in axes for dim in value.dims)
481
+ assert len(axes) == 1 # not implemented otherwise currently...
482
+ ext_dim = Dim(1, name="ext")
483
+ value_ext = rf.expand_dim(value, ext_dim)
484
+ out = TorchBackend.concat(
485
+ (source, axes[0]), (value_ext, ext_dim), allow_broadcast=True, out_dim=out_dims[0]
486
+ )
476
487
  if any(dim.need_masking() for dim in out_dims) and handle_dynamic_dims:
477
488
  if all(right == 0 for right in raw_pad[1::2]) and mode != "circular":
478
489
  pass # no masking needed
@@ -490,24 +501,12 @@ class TorchBackend(Backend[torch.Tensor]):
490
501
  rf.copy_to_device((left + middle).dyn_size_ext, out.device),
491
502
  )
492
503
  out.raw_tensor = torch.where(
493
- mask.copy_compatible_to(out, check_dtype=False, check_sparse=False).raw_tensor,
504
+ mask.copy_compatible_to_dims_raw(out.dims),
494
505
  out.raw_tensor,
495
- value,
506
+ value.copy_compatible_to_dims_raw(out.dims) if isinstance(value, Tensor) else value,
496
507
  )
497
508
  return out
498
509
 
499
- @staticmethod
500
- def cum_concat_step(source: Tensor, *, prev_accum: Tensor, axis: Dim, out_spatial_dim: Dim) -> Tensor:
501
- """cum concat step"""
502
- out = prev_accum.copy_template_replace_dim_tag(
503
- axis=prev_accum.get_axis_from_description(axis),
504
- new_dim_tag=out_spatial_dim,
505
- name=f"{source.name}/cum_concat_step",
506
- )
507
- source_raw = source.copy_compatible_to_dims_raw(prev_accum.dims)
508
- out.raw_tensor = torch.cat((prev_accum.raw_tensor, source_raw), dim=prev_accum.get_axis_from_description(axis))
509
- return out
510
-
511
510
  @staticmethod
512
511
  def stack(sources: Sequence[Tensor], *, out_dim: Dim) -> Tensor:
513
512
  """stack"""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20241212.105204
3
+ Version: 1.20241213.155203
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
@@ -275,6 +275,46 @@ def test_pad_time_right():
275
275
  assert all(out_.raw_tensor[b, seq_len] == 1.0)
276
276
 
277
277
 
278
+ def test_pad_time_right_non_scalar():
279
+ time_dim = Dim(Tensor("time", [batch_dim], dtype="int32"))
280
+ in_dim = Dim(7, name="in")
281
+ extern_data = TensorDict(
282
+ {
283
+ "data": Tensor("data", [batch_dim, time_dim, in_dim], dtype="float32"),
284
+ "value": Tensor("value", [batch_dim], dtype="float32"),
285
+ }
286
+ )
287
+
288
+ # noinspection PyShadowingNames
289
+ def _forward_step(*, extern_data: TensorDict, **_kwargs):
290
+ data, value = extern_data["data"], extern_data["value"]
291
+ data.mark_as_output("data", shape=(batch_dim, time_dim, in_dim))
292
+ value.mark_as_output("value", shape=(batch_dim,))
293
+ out, (new_time,) = rf.pad(data, axes=[time_dim], padding=[(0, 1)], value=value)
294
+ out.mark_as_default_output(shape=(batch_dim, new_time, in_dim))
295
+
296
+ # TF-layers currently does not support this.
297
+ res = run_model(extern_data, lambda **_kwargs: rf.Module(), _forward_step, test_tensorflow=False)
298
+ data_: Tensor = res["data"]
299
+ value_: Tensor = res["value"]
300
+ out_: Tensor = res["output"]
301
+ assert data_.dims == (batch_dim, time_dim, in_dim)
302
+ new_time_dim = out_.dims[1]
303
+ assert out_.dims == (batch_dim, new_time_dim, in_dim) and new_time_dim != time_dim
304
+ assert time_dim.dyn_size_ext.dims == new_time_dim.dyn_size_ext.dims == (batch_dim,)
305
+ batch_size = batch_dim.get_dim_value()
306
+ assert batch_size > 1
307
+ assert len(set(time_dim.dyn_size_ext.raw_tensor)) > 1 # not all the same
308
+ for b in range(batch_size):
309
+ seq_len = time_dim.dyn_size_ext.raw_tensor[b]
310
+ new_seq_len = new_time_dim.dyn_size_ext.raw_tensor[b]
311
+ print(f"batch {b}, seq_len {seq_len}, new_seq_len {new_seq_len}")
312
+ assert new_seq_len == seq_len + 1
313
+ np.testing.assert_allclose(data_.raw_tensor[b, :seq_len], out_.raw_tensor[b, :seq_len])
314
+ print(out_.raw_tensor[b])
315
+ assert all(out_.raw_tensor[b, seq_len] == value_.raw_tensor[b])
316
+
317
+
278
318
  def test_stack():
279
319
  batch_dim_ = Dim(3, name="batch")
280
320
  time_dim = Dim(5, name="time")
@@ -542,6 +542,27 @@ def test_relative_positional_encoding():
542
542
  run_model(extern_data, lambda *, epoch, step: _Net(), _forward_step)
543
543
 
544
544
 
545
+ def test_relative_positional_encoding_cross():
546
+ enc_spatial_dim = Dim(Tensor("enc_spatial", [batch_dim], dtype="int32"))
547
+ dec_spatial_dim = Dim(Tensor("dec_spatial", [batch_dim], dtype="int32"))
548
+ in_dim = Dim(8, name="in")
549
+ extern_data = TensorDict(
550
+ {
551
+ "enc": Tensor("enc", [batch_dim, enc_spatial_dim, in_dim], dtype="float32"),
552
+ "dec": Tensor("dec", [batch_dim, dec_spatial_dim, in_dim], dtype="float32"),
553
+ }
554
+ )
555
+
556
+ # noinspection PyShadowingNames
557
+ def _forward_step(**_kwargs):
558
+ out, dim = rf.relative_positional_encoding(
559
+ key_value_spatial_dim=enc_spatial_dim, query_spatial_dim=dec_spatial_dim, feat_dim=in_dim
560
+ )
561
+ out.mark_as_default_output(shape=(dim, in_dim))
562
+
563
+ run_model(extern_data, lambda **_kwargs: rf.Module(), _forward_step)
564
+
565
+
545
566
  def test_rel_pos_self_attention():
546
567
  time_dim = Dim(Tensor("time", [batch_dim], dtype="int32"))
547
568
  in_dim = Dim(8, name="in")
@@ -550,6 +571,7 @@ def test_rel_pos_self_attention():
550
571
  "data": Tensor("data", [batch_dim, time_dim, in_dim], dtype="float32"),
551
572
  }
552
573
  )
574
+ check_batching = False
553
575
 
554
576
  class _Net(rf.Module):
555
577
  def __init__(self):
@@ -565,6 +587,32 @@ def test_rel_pos_self_attention():
565
587
 
566
588
  def __call__(self, x: Tensor, *, axis: Dim) -> Tensor:
567
589
  """forward"""
590
+ nonlocal check_batching
591
+ if check_batching:
592
+ assert rf.is_executing_eagerly()
593
+ assert batch_dim in x.dims and axis != batch_dim
594
+ y = self.self_att(x, axis=axis)
595
+ for b in range(batch_dim.get_dim_value()):
596
+ x_b = rf.gather(x, axis=batch_dim, indices=b)
597
+ assert batch_dim in axis.dyn_size_ext.dims # current assumption...
598
+ seq_len = rf.gather(axis.dyn_size_ext, axis=batch_dim, indices=b)
599
+ axis_b = Dim(seq_len)
600
+ # Note: The current order (replace_dim and then slice) is somewhat dependent
601
+ # on the current internal behavior of gather and replace_dim,
602
+ # which might change at some point...
603
+ x_b, _ = rf.replace_dim(x_b, in_dim=axis, out_dim=axis_b)
604
+ x_b, _ = rf.slice(x_b, axis=axis_b, start=0, end=seq_len, out_dim=axis_b)
605
+ y_b = self.self_att(x_b, axis=axis_b)
606
+ y_b_ = rf.gather(y, axis=batch_dim, indices=b)
607
+ y_b_, _ = rf.replace_dim(y_b_, in_dim=axis, out_dim=axis_b)
608
+ y_b_, _ = rf.slice(y_b_, axis=axis_b, start=0, end=seq_len, out_dim=axis_b)
609
+ y_b_ = y_b_.copy_transpose(y_b.dims)
610
+ # Assuming PyTorch...
611
+ np.testing.assert_almost_equal(
612
+ y_b.raw_tensor.cpu().detach().numpy(), y_b_.raw_tensor.cpu().detach().numpy(), decimal=5
613
+ )
614
+ return y
615
+
568
616
  return self.self_att(x, axis=axis)
569
617
 
570
618
  # noinspection PyShadowingNames
@@ -573,6 +621,8 @@ def test_rel_pos_self_attention():
573
621
  out.mark_as_default_output(shape=(batch_dim, time_dim, model.out_dim))
574
622
 
575
623
  run_model(extern_data, lambda *, epoch, step: _Net(), _forward_step)
624
+ check_batching = True
625
+ run_model(extern_data, lambda *, epoch, step: _Net(), _forward_step, test_tensorflow=False)
576
626
 
577
627
 
578
628
  def test_sinusoidal_positional_encoding():
@@ -359,15 +359,16 @@ def test_e_branchformer():
359
359
  (batch_dim, num_heads_dim, enc_spatial_dim, key_dim_per_head),
360
360
  ),
361
361
  # Check RelPositionalEncoding vs our relative_positional_encoding
362
- (
363
- (rf.RelPosSelfAttention.__call__, 0, "pos_emb", 0),
364
- (RelPositionMultiHeadedAttention.forward, 0, "pos_emb", 0),
365
- lambda x, **_: _tensor(
366
- _reorder_rel_pos_emb_espnet_to_rf(x.squeeze(dim=0)),
367
- "pos_emb",
368
- [enc_spatial_dim - 1 + enc_spatial_dim, model_dim],
369
- ),
370
- ),
362
+ # Currently disabled this check, as the dim tags are different now...
363
+ # (
364
+ # (rf.RelPosSelfAttention.__call__, 0, "pos_emb", 0),
365
+ # (RelPositionMultiHeadedAttention.forward, 0, "pos_emb", 0),
366
+ # lambda x, **_: _tensor(
367
+ # _reorder_rel_pos_emb_espnet_to_rf(x.squeeze(dim=0)),
368
+ # "pos_emb",
369
+ # [enc_spatial_dim - 1 + enc_spatial_dim, model_dim],
370
+ # ),
371
+ # ),
371
372
  (
372
373
  (EBranchformerLayer.__call__, 0, "x_mhsa", 0),
373
374
  (EBranchformerEncoderLayer.forward, 0, "x_att", 0),
@@ -1,2 +0,0 @@
1
- version = '1.20241212.105204'
2
- long_version = '1.20241212.105204+git.af4c1fb'