returnn 1.20241217.122516__tar.gz → 1.20241219.123408__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.20241217.122516/returnn.egg-info → returnn-1.20241219.123408}/PKG-INFO +1 -1
  2. returnn-1.20241219.123408/_setup_info_generated.py +2 -0
  3. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/__main__.py +5 -5
  4. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/_backend.py +5 -2
  5. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/array_.py +21 -14
  6. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/frontend_layers/_backend.py +1 -1
  7. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/engine.py +14 -9
  8. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/frontend/_backend.py +59 -18
  9. {returnn-1.20241217.122516 → returnn-1.20241219.123408/returnn.egg-info}/PKG-INFO +1 -1
  10. returnn-1.20241217.122516/_setup_info_generated.py +0 -2
  11. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/.editorconfig +0 -0
  12. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/.gitignore +0 -0
  13. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/.gitmodules +0 -0
  14. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/.kateconfig +0 -0
  15. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/CHANGELOG.md +0 -0
  16. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/CODEOWNERS +0 -0
  17. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/CONTRIBUTING.md +0 -0
  18. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/LICENSE +0 -0
  19. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/MANIFEST.in +0 -0
  20. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/README.rst +0 -0
  21. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/__init__.py +0 -0
  22. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/12AX.cluster_map +0 -0
  23. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/_setup_returnn_env.py +0 -0
  24. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-fwd.config +0 -0
  25. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-horovod-mpi.py +0 -0
  26. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-horovod-mpi.py.sh +0 -0
  27. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-horovod-mpi.sh +0 -0
  28. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-hyper-param-tuning.config +0 -0
  29. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-iter-dataset.py +0 -0
  30. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-list-devices.py +0 -0
  31. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-lua-torch-layer.config +0 -0
  32. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-pretrain.config +0 -0
  33. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-record-and-push-to-webserver.py +0 -0
  34. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-returnn-as-framework.py +0 -0
  35. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-rf-pt-benchmark.py +0 -0
  36. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-rf.config +0 -0
  37. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-rhn-enwik8.config +0 -0
  38. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-sprint-interface.py +0 -0
  39. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-tf-att-copy.config +0 -0
  40. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-tf-attention.config +0 -0
  41. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
  42. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
  43. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-tf-enc-dec.config +0 -0
  44. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-tf-hard-att-copy.config +0 -0
  45. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-tf-lstm-benchmark.py +0 -0
  46. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
  47. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
  48. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-tf-native-lstm.12ax.config +0 -0
  49. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-tf-native-lstm2.12ax.config +0 -0
  50. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
  51. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-tf-neural-transducer.12ax.config +0 -0
  52. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-tf-rec-explicit-lstm.config +0 -0
  53. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-tf-rec-explicit-rnn.config +0 -0
  54. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-tf-rec-self-att.config +0 -0
  55. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-tf-search-compiled-graph.py +0 -0
  56. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
  57. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-timit-lstm-ctc.config +0 -0
  58. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-torch.config +0 -0
  59. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
  60. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/demo.sh +0 -0
  61. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
  62. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
  63. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
  64. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/IAM/README.txt +0 -0
  65. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/IAM/chars.txt +0 -0
  66. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/IAM/config_demo +0 -0
  67. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/IAM/config_fwd +0 -0
  68. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/IAM/config_real +0 -0
  69. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
  70. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/IAM/decode.py +0 -0
  71. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
  72. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/IAM/go.sh +0 -0
  73. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/IAM/lines.txt +0 -0
  74. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/IAM/split/eval.txt +0 -0
  75. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/IAM/split/train.txt +0 -0
  76. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/IAM/split/valid.txt +0 -0
  77. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/README.md +0 -0
  78. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/artificial/create_test_h5.py +0 -0
  79. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/artificial/forwardconfig +0 -0
  80. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/artificial/go.sh +0 -0
  81. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/artificial/trainconfig +0 -0
  82. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
  83. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
  84. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/artificial_rgb/go.sh +0 -0
  85. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
  86. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/pyproject.toml +0 -0
  87. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/requirements.txt +0 -0
  88. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/__init__.py +0 -0
  89. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/__old_mod_loader__.py +0 -0
  90. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/__setup__.py +0 -0
  91. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/config.py +0 -0
  92. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/__init__.py +0 -0
  93. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/audio.py +0 -0
  94. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/basic.py +0 -0
  95. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/bundle_file.py +0 -0
  96. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/cached.py +0 -0
  97. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/cached2.py +0 -0
  98. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/distrib_files.py +0 -0
  99. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/generating.py +0 -0
  100. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/hdf.py +0 -0
  101. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/lm.py +0 -0
  102. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/map.py +0 -0
  103. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/meta.py +0 -0
  104. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/multi_proc.py +0 -0
  105. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/normalization_data.py +0 -0
  106. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/numpy_dump.py +0 -0
  107. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/postprocessing.py +0 -0
  108. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/raw_wav.py +0 -0
  109. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/sprint.py +0 -0
  110. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/stereo.py +0 -0
  111. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/util/__init__.py +0 -0
  112. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/util/feature_extraction.py +0 -0
  113. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/util/strings.py +0 -0
  114. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/datasets/util/vocabulary.py +0 -0
  115. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/engine/__init__.py +0 -0
  116. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/engine/base.py +0 -0
  117. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/engine/batch.py +0 -0
  118. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/__init__.py +0 -0
  119. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/__main__.py +0 -0
  120. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/.git +0 -0
  121. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
  122. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
  123. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
  124. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
  125. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
  126. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
  127. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
  128. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
  129. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
  130. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
  131. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
  132. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
  133. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
  134. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
  135. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
  136. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
  137. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
  138. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
  139. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
  140. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
  141. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
  142. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
  143. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
  144. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
  145. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/__init__.py +0 -0
  146. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/graph_editor/README.md +0 -0
  147. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/graph_editor/__init__.py +0 -0
  148. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/graph_editor/edit.py +0 -0
  149. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/graph_editor/reroute.py +0 -0
  150. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/graph_editor/select.py +0 -0
  151. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/graph_editor/subgraph.py +0 -0
  152. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/graph_editor/transform.py +0 -0
  153. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/extern/graph_editor/util.py +0 -0
  154. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/forward_iface.py +0 -0
  155. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/__init__.py +0 -0
  156. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/_native/__init__.py +0 -0
  157. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/_native/backend.cpp +0 -0
  158. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/_native/backend.hpp +0 -0
  159. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/_native/module.cpp +0 -0
  160. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/_native/module.hpp +0 -0
  161. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/_native/py_utils.hpp +0 -0
  162. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/_native/tensor_ops.cpp +0 -0
  163. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/_native/tensor_ops.hpp +0 -0
  164. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/_numpy_backend.py +0 -0
  165. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/_random_journal.py +0 -0
  166. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/_utils.py +0 -0
  167. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/attention.py +0 -0
  168. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/audio/__init__.py +0 -0
  169. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/audio/mel.py +0 -0
  170. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/audio/specaugment.py +0 -0
  171. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/backend.py +0 -0
  172. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/build_from_dict.py +0 -0
  173. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/cond.py +0 -0
  174. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/const.py +0 -0
  175. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/container.py +0 -0
  176. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/control_flow_ctx.py +0 -0
  177. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/conv.py +0 -0
  178. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/conversions/__init__.py +0 -0
  179. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/conversions/espnet_e_branchformer.py +0 -0
  180. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/conversions/hf_llama.py +0 -0
  181. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/conversions/torch_nn.py +0 -0
  182. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/decoder/__init__.py +0 -0
  183. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/decoder/transformer.py +0 -0
  184. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/device.py +0 -0
  185. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/dims.py +0 -0
  186. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/dropout.py +0 -0
  187. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/dtype.py +0 -0
  188. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/encoder/__init__.py +0 -0
  189. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/encoder/base.py +0 -0
  190. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/encoder/conformer.py +0 -0
  191. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/encoder/e_branchformer.py +0 -0
  192. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/encoder/transformer.py +0 -0
  193. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/gradient.py +0 -0
  194. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/graph.py +0 -0
  195. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/hooks.py +0 -0
  196. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/init.py +0 -0
  197. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/label_smoothing.py +0 -0
  198. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/linear.py +0 -0
  199. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/loop.py +0 -0
  200. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/loss.py +0 -0
  201. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/math_.py +0 -0
  202. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/matmul.py +0 -0
  203. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/module.py +0 -0
  204. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/normalization.py +0 -0
  205. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/parameter.py +0 -0
  206. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/parametrizations.py +0 -0
  207. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/parametrize.py +0 -0
  208. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/piecewise_linear.py +0 -0
  209. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/rand.py +0 -0
  210. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/rec.py +0 -0
  211. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/reduce.py +0 -0
  212. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/run_ctx.py +0 -0
  213. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/signal.py +0 -0
  214. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/state.py +0 -0
  215. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/stepwise_scheduler.py +0 -0
  216. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/tensor_array.py +0 -0
  217. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/frontend/types.py +0 -0
  218. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/import_/__init__.py +0 -0
  219. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/import_/common.py +0 -0
  220. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/import_/git.py +0 -0
  221. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/import_/import_.py +0 -0
  222. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/learning_rate_control.py +0 -0
  223. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/log.py +0 -0
  224. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/native_op.cpp +0 -0
  225. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/native_op.py +0 -0
  226. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/pretrain.py +0 -0
  227. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/sprint/__init__.py +0 -0
  228. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/sprint/cache.py +0 -0
  229. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/sprint/control.py +0 -0
  230. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/sprint/error_signals.py +0 -0
  231. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/sprint/extern_interface.py +0 -0
  232. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/sprint/interface.py +0 -0
  233. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tensor/README.md +0 -0
  234. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tensor/__init__.py +0 -0
  235. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tensor/_dim_extra.py +0 -0
  236. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tensor/_tensor_extra.py +0 -0
  237. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tensor/_tensor_mixin_base.py +0 -0
  238. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tensor/_tensor_op_overloads.py +0 -0
  239. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tensor/control_flow_ctx.py +0 -0
  240. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tensor/dim.py +0 -0
  241. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tensor/marked_dim.py +0 -0
  242. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tensor/tensor.py +0 -0
  243. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tensor/tensor_dict.py +0 -0
  244. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tensor/utils.py +0 -0
  245. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/__init__.py +0 -0
  246. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/compat.py +0 -0
  247. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/data_pipeline.py +0 -0
  248. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/distributed.py +0 -0
  249. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/engine.py +0 -0
  250. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/frontend_layers/README.md +0 -0
  251. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/frontend_layers/__init__.py +0 -0
  252. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/frontend_layers/_utils.py +0 -0
  253. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/frontend_layers/cond.py +0 -0
  254. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
  255. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
  256. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/frontend_layers/dims.py +0 -0
  257. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/frontend_layers/layer.py +0 -0
  258. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/frontend_layers/loop.py +0 -0
  259. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/frontend_layers/make_layer.py +0 -0
  260. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/frontend_layers/masked_computation.py +0 -0
  261. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
  262. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
  263. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/frontend_low_level/__init__.py +0 -0
  264. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/frontend_low_level/_backend.py +0 -0
  265. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/horovod.py +0 -0
  266. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/hyper_param_tuning.py +0 -0
  267. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/layers/__init__.py +0 -0
  268. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/layers/base.py +0 -0
  269. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/layers/basic.py +0 -0
  270. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/layers/rec.py +0 -0
  271. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/layers/segmental_model.py +0 -0
  272. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/layers/signal_processing.py +0 -0
  273. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/layers/variable.py +0 -0
  274. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/native_op.py +0 -0
  275. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/network.py +0 -0
  276. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/sprint.py +0 -0
  277. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/updater.py +0 -0
  278. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/util/__init__.py +0 -0
  279. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/util/basic.py +0 -0
  280. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/util/data.py +0 -0
  281. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/util/gradient_checkpoint.py +0 -0
  282. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/util/ken_lm.py +0 -0
  283. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/tf/util/open_fst.py +0 -0
  284. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/README.md +0 -0
  285. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/__init__.py +0 -0
  286. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/data/__init__.py +0 -0
  287. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/data/extern_data.py +0 -0
  288. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/data/pipeline.py +0 -0
  289. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/data/queued_data_iter.py +0 -0
  290. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
  291. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/data/tensor_utils.py +0 -0
  292. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/distributed.py +0 -0
  293. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/frontend/__init__.py +0 -0
  294. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/frontend/_rand.py +0 -0
  295. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/frontend/bridge.py +0 -0
  296. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/frontend/raw_ops.py +0 -0
  297. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/optim/README.md +0 -0
  298. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/optim/__init__.py +0 -0
  299. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/optim/lion.py +0 -0
  300. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/updater.py +0 -0
  301. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/util/README.md +0 -0
  302. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/util/__init__.py +0 -0
  303. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/util/array_.py +0 -0
  304. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/util/debug_inf_nan.py +0 -0
  305. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/util/diagnose_gpu.py +0 -0
  306. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/util/exception_helper.py +0 -0
  307. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/util/gradient_checkpoint.py +0 -0
  308. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/util/module.py +0 -0
  309. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/torch/util/scaled_gradient.py +0 -0
  310. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/__init__.py +0 -0
  311. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/basic.py +0 -0
  312. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/better_exchook.py +0 -0
  313. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/bpe.py +0 -0
  314. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/debug.py +0 -0
  315. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/debug_helpers.py +0 -0
  316. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/file_cache.py +0 -0
  317. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/fsa.py +0 -0
  318. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/literal_py_to_pickle.py +0 -0
  319. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/math.py +0 -0
  320. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
  321. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/native_code_compiler.py +0 -0
  322. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/pprint.py +0 -0
  323. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/py-to-pickle.cpp +0 -0
  324. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/py_compat.py +0 -0
  325. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/py_ext_mod_compiler.py +0 -0
  326. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/result_with_reason.py +0 -0
  327. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/sig_proc.py +0 -0
  328. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/task_system.py +0 -0
  329. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/train_proc_manager.py +0 -0
  330. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn/util/watch_memory.py +0 -0
  331. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn.egg-info/SOURCES.txt +0 -0
  332. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn.egg-info/dependency_links.txt +0 -0
  333. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/returnn.egg-info/top_level.txt +0 -0
  334. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/rnn.py +0 -0
  335. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/setup.cfg +0 -0
  336. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/setup.py +0 -0
  337. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/DummySprintExec.py +0 -0
  338. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/PyCharm-inspection-profile.xml +0 -0
  339. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/PyCharm.idea/.gitignore +0 -0
  340. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/PyCharm.idea/.name +0 -0
  341. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
  342. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
  343. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
  344. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
  345. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
  346. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/PyCharm.idea/misc.xml +0 -0
  347. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/PyCharm.idea/modules.xml +0 -0
  348. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/PyCharm.idea/returnn.iml +0 -0
  349. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
  350. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/_set_num_threads1.py +0 -0
  351. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/_setup_returnn_env.py +0 -0
  352. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/_setup_test_env.py +0 -0
  353. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/bpe-unicode-demo.codes +0 -0
  354. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/bpe-unicode-demo.vocab +0 -0
  355. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/lexicon_opt.fst +0 -0
  356. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/lexicon_opt.isyms +0 -0
  357. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/lexicon_opt.jpg +0 -0
  358. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/lexicon_opt.osyms +0 -0
  359. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/lint_common.py +0 -0
  360. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/pycharm-inspect.py +0 -0
  361. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/pylint.py +0 -0
  362. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/returnn-as-framework.py +0 -0
  363. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/rf_utils.py +0 -0
  364. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/spelling.dic +0 -0
  365. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_Config.py +0 -0
  366. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_Dataset.py +0 -0
  367. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_Fsa.py +0 -0
  368. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_GeneratingDataset.py +0 -0
  369. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_HDFDataset.py +0 -0
  370. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_LearningRateControl.py +0 -0
  371. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_Log.py +0 -0
  372. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_MultiProcDataset.py +0 -0
  373. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_Pretrain.py +0 -0
  374. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_ResNet.py +0 -0
  375. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_SprintDataset.py +0 -0
  376. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_SprintInterface.py +0 -0
  377. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_TFEngine.py +0 -0
  378. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_TFNativeOp.py +0 -0
  379. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_TFNetworkLayer.py +0 -0
  380. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_TFNetworkRecLayer.py +0 -0
  381. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_TFNetworkSigProcLayer.py +0 -0
  382. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_TFUpdater.py +0 -0
  383. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_TFUtil.py +0 -0
  384. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_TF_determinism.py +0 -0
  385. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_TaskSystem.py +0 -0
  386. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_TaskSystem_SharedMem.py +0 -0
  387. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_TranslationDataset.py +0 -0
  388. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_Util.py +0 -0
  389. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_demos.py +0 -0
  390. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_fork_exec.py +0 -0
  391. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_hdf_dump.py +0 -0
  392. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_rf_array.py +0 -0
  393. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_rf_attention.py +0 -0
  394. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_rf_base.py +0 -0
  395. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_rf_cond.py +0 -0
  396. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_rf_const.py +0 -0
  397. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_rf_container.py +0 -0
  398. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_rf_conv.py +0 -0
  399. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_rf_decoder_transformer.py +0 -0
  400. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_rf_encoder_conformer.py +0 -0
  401. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_rf_gradient.py +0 -0
  402. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_rf_label_smoothing.py +0 -0
  403. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_rf_loop.py +0 -0
  404. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_rf_math.py +0 -0
  405. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_rf_normalization.py +0 -0
  406. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_rf_piecewise_linear.py +0 -0
  407. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_rf_rec.py +0 -0
  408. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_rf_reduce.py +0 -0
  409. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_rf_signal.py +0 -0
  410. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_tensor.py +0 -0
  411. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_tools.py +0 -0
  412. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_torch_dataset.py +0 -0
  413. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_torch_engine.py +0 -0
  414. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_torch_frontend.py +0 -0
  415. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_torch_internal_frontend.py +0 -0
  416. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/test_torch_util.py +0 -0
  417. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tests/torch_utils.py +0 -0
  418. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/_setup_returnn_env.py +0 -0
  419. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/analyze-dataset-batches.py +0 -0
  420. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/bliss-collect-seq-lens.py +0 -0
  421. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/bliss-dump-text.py +0 -0
  422. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/bliss-get-segment-names.py +0 -0
  423. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/bliss-to-ogg-zip.py +0 -0
  424. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/bpe-create-lexicon.py +0 -0
  425. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/calculate-word-error-rate.py +0 -0
  426. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/cleanup-old-models.py +0 -0
  427. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/collect-orth-symbols.py +0 -0
  428. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/collect-words.py +0 -0
  429. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/compile_native_op.py +0 -0
  430. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/compile_tf_graph.py +0 -0
  431. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/debug-dump-search-scores.py +0 -0
  432. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/debug-plot-search-scores.py +0 -0
  433. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/dump-dataset-raw-strings.py +0 -0
  434. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/dump-dataset.py +0 -0
  435. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/dump-forward-stats.py +0 -0
  436. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/dump-forward.py +0 -0
  437. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/dump-network-json.py +0 -0
  438. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/dump-pickle.py +0 -0
  439. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/extract_state_tying_from_dataset.py +0 -0
  440. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/get-attention-weights.py +0 -0
  441. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/get-best-model-epoch.py +0 -0
  442. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/hdf_dump.py +0 -0
  443. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/hdf_dump_translation_dataset.py +0 -0
  444. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/import-blocks-mt-model.py +0 -0
  445. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/import-t2t-mt-model.py +0 -0
  446. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/lattice_rescorer/.gitignore +0 -0
  447. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/lattice_rescorer/Makefile +0 -0
  448. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/lattice_rescorer/README.md +0 -0
  449. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/lattice_rescorer/example/README.md +0 -0
  450. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/lattice_rescorer/example/libs_list +0 -0
  451. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
  452. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
  453. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
  454. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/lattice_rescorer/example/state_vars_list +0 -0
  455. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/lattice_rescorer/example/tensor_names_list +0 -0
  456. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/lattice_rescorer/file.h +0 -0
  457. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
  458. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
  459. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/lattice_rescorer/main.cc +0 -0
  460. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/lattice_rescorer/rescorer.h +0 -0
  461. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/lattice_rescorer/vocabulary.cc +0 -0
  462. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/lattice_rescorer/vocabulary.h +0 -0
  463. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/tf_avg_checkpoints.py +0 -0
  464. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/tf_inspect_checkpoint.py +0 -0
  465. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/tf_inspect_summary_log.py +0 -0
  466. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/torch_avg_checkpoints.py +0 -0
  467. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/torch_export_to_onnx.py +0 -0
  468. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/tools/torch_inspect_checkpoint.py +0 -0
  469. {returnn-1.20241217.122516 → returnn-1.20241219.123408}/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.20241217.122516
3
+ Version: 1.20241219.123408
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.20241219.123408'
2
+ long_version = '1.20241219.123408+git.037d844'
@@ -577,16 +577,16 @@ def execute_main_task():
577
577
  assert data, "set forward_data"
578
578
  else:
579
579
  data = init_dataset(config.opt_typed_value("forward_data"))
580
- # engine.epoch is usually the epoch of the loaded checkpoint,
581
- # or what EngineBase.get_epoch_model will return.
582
- # You can have both load and load_epoch, where load points to the checkpoint,
583
- # and load_epoch is some other epoch, which you will get here for the dataset.
584
- data.init_seq_order(epoch=engine.epoch or 1)
585
580
  forward_callback = config.typed_value("forward_callback")
586
581
  assert forward_callback, "no forward_callback specified"
587
582
  if callable(forward_callback):
588
583
  forward_callback = forward_callback()
589
584
  allow_skipping_seqs = config.bool("allow_skipping_seqs_in_forward", False)
585
+ # engine.epoch is usually the epoch of the loaded checkpoint,
586
+ # or what EngineBase.get_epoch_model will return.
587
+ # You can have both load and load_epoch, where load points to the checkpoint,
588
+ # and load_epoch is some other epoch, which you will get here for the dataset.
589
+ # data.init_seq_order will be called inside. (Maybe the dataset is first moved to a subproc.)
590
590
  engine.forward_with_callback(
591
591
  dataset=data, callback=forward_callback, allow_skipping_seqs=allow_skipping_seqs
592
592
  )
@@ -478,7 +478,7 @@ class Backend(Generic[T]):
478
478
  source: Tensor,
479
479
  *,
480
480
  axes: Sequence[Dim],
481
- padding: Sequence[Tuple[Union[Dim, int], Union[Dim, int]]],
481
+ padding: Sequence[Tuple[Union[Dim, int, Tensor], Union[Dim, int, Tensor]]],
482
482
  out_dims: Sequence[Dim],
483
483
  handle_dynamic_dims: bool,
484
484
  mode: str = "constant",
@@ -1165,11 +1165,14 @@ class Backend(Generic[T]):
1165
1165
  raise NotImplementedError
1166
1166
 
1167
1167
  @staticmethod
1168
- def masked_scatter(source: Tensor, *, mask: Tensor, dims: Sequence[Dim], in_dim: Dim) -> Tensor:
1168
+ def masked_scatter(
1169
+ source: Tensor, backup: Optional[Tensor] = None, *, mask: Tensor, dims: Sequence[Dim], in_dim: Dim
1170
+ ) -> Tensor:
1169
1171
  """
1170
1172
  The inverse of :func:`masked_select`.
1171
1173
 
1172
1174
  :param source: [in_dim, F...]
1175
+ :param backup: [dims..., F...] (or subset of those dims). zero if not given.
1173
1176
  :param mask: [dims...] -> bool (e.g. [B,T])
1174
1177
  :param dims: the order of the dims defines the format. those dims should be exactly the dims of the mask.
1175
1178
  :param in_dim: the dim of the source which should be scattered into the mask.
@@ -412,7 +412,7 @@ def pad(
412
412
  source: Tensor,
413
413
  *,
414
414
  axes: Sequence[Dim],
415
- padding: Sequence[Tuple[Union[Dim, int], Union[Dim, int]]],
415
+ padding: Sequence[Tuple[Union[Dim, int, Tensor], Union[Dim, int, Tensor]]],
416
416
  out_dims: Optional[Sequence[Dim]] = None,
417
417
  mode: str = "constant",
418
418
  value: Optional[Union[rf.RawTensorTypes, Tensor]] = None,
@@ -436,13 +436,6 @@ def pad(
436
436
  if handle_dynamic_dims is None:
437
437
  handle_dynamic_dims = _pad_handle_dynamic_dims_default(axes, padding, mode=mode)
438
438
  if not out_dims:
439
- if handle_dynamic_dims:
440
- for left, right in padding:
441
- if isinstance(left, Dim):
442
- assert not left.need_masking(), f"padding {padding} does not support dynamic left padding"
443
- if isinstance(right, Dim):
444
- assert not right.need_masking(), f"padding {padding} does not support dynamic right padding"
445
- # Note that even dynamic middle dims is not exactly correct...
446
439
  out_dims = [left + middle + right for middle, (left, right) in zip(axes, padding)]
447
440
  # noinspection PyProtectedMember
448
441
  return (
@@ -480,10 +473,7 @@ def _pad_handle_dynamic_dims_default(
480
473
  global _pad_handle_dynamic_dims_shown_warning
481
474
  if not _pad_handle_dynamic_dims_shown_warning:
482
475
  for middle, (left, right) in zip(pad_axes, padding):
483
- middle: Dim
484
- if not middle.need_masking() and (isinstance(left, int) or not left.need_masking()):
485
- continue
486
- if mode != "circular" and isinstance(right, int) and right == 0:
476
+ if not _pad_need_dyn_dim_handling(middle, left, right, mode=mode):
487
477
  continue
488
478
 
489
479
  logging.getLogger("returnn.frontend").warning(
@@ -498,6 +488,20 @@ def _pad_handle_dynamic_dims_default(
498
488
  return False
499
489
 
500
490
 
491
+ def _pad_need_dyn_dim_handling(
492
+ middle: Dim, left: Union[Dim, int, Tensor], right: Union[Dim, int, Tensor], *, mode: str
493
+ ) -> bool:
494
+ if (
495
+ not middle.need_masking()
496
+ and (isinstance(left, int) or (isinstance(left, Dim) and not left.need_masking()))
497
+ or (isinstance(left, Tensor) and not left.dims)
498
+ ):
499
+ return False
500
+ if mode != "circular" and isinstance(right, int) and right == 0:
501
+ return False
502
+ return True
503
+
504
+
501
505
  def cum_concat_step(
502
506
  source: Tensor, *, prev_accum: Tensor, axis: Dim, out_spatial_dim: Optional[Dim] = None
503
507
  ) -> Tuple[Tensor, Dim]:
@@ -598,18 +602,21 @@ def masked_select(
598
602
  return res, out_dim
599
603
 
600
604
 
601
- def masked_scatter(source: Tensor, *, mask: Tensor, dims: Sequence[Dim], in_dim: Dim) -> Tensor:
605
+ def masked_scatter(
606
+ source: Tensor, backup: Optional[Tensor] = None, *, mask: Tensor, dims: Sequence[Dim], in_dim: Dim
607
+ ) -> Tensor:
602
608
  """
603
609
  The inverse of :func:`masked_select`.
604
610
 
605
611
  :param source: [in_dim, F...]
612
+ :param backup: [dims..., F...] (or subset of those dims). zero if not given.
606
613
  :param mask: [dims...] -> bool (e.g. [B,T])
607
614
  :param dims: the order of the dims defines the format. those dims should be exactly the dims of the mask.
608
615
  :param in_dim: the dim of the source which should be scattered into the mask.
609
616
  :return: [dims..., F...]
610
617
  """
611
618
  # noinspection PyProtectedMember
612
- return source._raw_backend.masked_scatter(source, mask=mask, dims=dims, in_dim=in_dim)
619
+ return source._raw_backend.masked_scatter(source, backup=backup, mask=mask, dims=dims, in_dim=in_dim)
613
620
 
614
621
 
615
622
  def sequence_mask(dims: Union[Dim, Sequence[Dim]], *, device: Optional[str] = None) -> Tensor:
@@ -366,7 +366,7 @@ class ReturnnLayersBackend(Backend[Layer]):
366
366
  source: Tensor,
367
367
  *,
368
368
  axes: Sequence[Dim],
369
- padding: Sequence[Tuple[Union[Dim, int], Union[Dim, int]]],
369
+ padding: Sequence[Tuple[Union[Dim, int, Tensor], Union[Dim, int, Tensor]]],
370
370
  out_dims: Sequence[Dim],
371
371
  handle_dynamic_dims: bool,
372
372
  mode: str = "constant",
@@ -1169,15 +1169,20 @@ class Engine(EngineBase):
1169
1169
  self._maybe_reset_dev_memory_caches()
1170
1170
  self._reset_dev_memory_stats()
1171
1171
 
1172
- if dataset.supports_seq_order_sorting():
1173
- # We can sort it. Sort it in reverse to make sure that we have enough memory right at the beginning.
1174
- print("Dataset supports sorting, i.e. it will be sorted for optimal performance.", file=log.v3)
1175
- dataset.seq_ordering = "sorted_reverse"
1176
- else:
1177
- print(
1178
- "Dataset does not support sorting, i.e. it will not be sorted for optimal performance.",
1179
- file=log.v3,
1180
- )
1172
+ if dataset_init_epoch:
1173
+ if not self.config.bool("sort_dataset", True):
1174
+ pass
1175
+ elif dataset.seq_ordering == "sorted_reverse":
1176
+ pass
1177
+ elif dataset.supports_seq_order_sorting():
1178
+ # We can sort it. Sort it in reverse to make sure that we have enough memory right at the beginning.
1179
+ print("Dataset supports sorting, i.e. it will be sorted for optimal performance.", file=log.v3)
1180
+ dataset.seq_ordering = "sorted_reverse"
1181
+ else:
1182
+ print(
1183
+ "Dataset does not support sorting, i.e. it will not be sorted for optimal performance.",
1184
+ file=log.v3,
1185
+ )
1181
1186
 
1182
1187
  if allow_skipping_seqs:
1183
1188
  # Dangerous! If you enable this, you could lose sequences,
@@ -444,7 +444,7 @@ class TorchBackend(Backend[torch.Tensor]):
444
444
  source: Tensor,
445
445
  *,
446
446
  axes: Sequence[Dim],
447
- padding: Sequence[Tuple[Union[Dim, int], Union[Dim, int]]],
447
+ padding: Sequence[Tuple[Union[Dim, int, Tensor], Union[Dim, int, Tensor]]],
448
448
  out_dims: Sequence[Dim],
449
449
  handle_dynamic_dims: bool,
450
450
  mode: str = "constant",
@@ -459,14 +459,31 @@ class TorchBackend(Backend[torch.Tensor]):
459
459
  raw_pad += [0, 0]
460
460
  continue
461
461
  remaining_dims.remove(dim)
462
- pad_ = padding[axes.index(dim)]
463
- raw_pad += [
464
- pad_[0].get_dim_value() if isinstance(pad_[0], Dim) else pad_[0],
465
- pad_[1].get_dim_value() if isinstance(pad_[1], Dim) else pad_[1],
466
- ]
462
+ left, right = padding[axes.index(dim)]
463
+ if isinstance(left, Dim):
464
+ if handle_dynamic_dims:
465
+ assert not left.need_masking(), f"pad: left {left} needs masking, not supported currently"
466
+ left_ = left.get_dim_value()
467
+ elif isinstance(left, Tensor):
468
+ if handle_dynamic_dims:
469
+ assert not left.dims, f"pad: left {left} needs masking, not supported currently"
470
+ left_ = torch.max(left.raw_tensor)
471
+ elif isinstance(left, int):
472
+ left_ = left
473
+ else:
474
+ raise TypeError(f"pad: invalid left {left!r}")
475
+ if isinstance(right, Dim):
476
+ right_ = right.get_dim_value()
477
+ elif isinstance(right, Tensor):
478
+ right_ = torch.max(right.raw_tensor)
479
+ elif isinstance(right, int):
480
+ right_ = right
481
+ else:
482
+ raise TypeError(f"pad: invalid right {right!r}")
483
+ raw_pad += [left_, right_]
467
484
  if not remaining_dims:
468
485
  break
469
- # Use torch.nn.functional.pad if possible.
486
+ # Use torch.nn.functional.pad if possible. It's possible for scalar `value` (or None).
470
487
  if (isinstance(value, Tensor) and value.dims == ()) or (not isinstance(value, Tensor)):
471
488
  if isinstance(value, Tensor):
472
489
  assert value.dims == ()
@@ -476,7 +493,7 @@ class TorchBackend(Backend[torch.Tensor]):
476
493
  )
477
494
  out.raw_tensor = torch.nn.functional.pad(source.raw_tensor, pad=raw_pad, mode=mode, value=value)
478
495
  else: # Fallback to concat.
479
- assert isinstance(value, Tensor)
496
+ assert isinstance(value, Tensor) and value.dims # non-scalar
480
497
  assert all(dim in source.dims and dim not in axes for dim in value.dims)
481
498
  assert len(axes) == 1 # not implemented otherwise currently...
482
499
  ext_dim = Dim(1, name="ext")
@@ -493,12 +510,23 @@ class TorchBackend(Backend[torch.Tensor]):
493
510
  f"pad: mode {mode} not implemented with dynamic dims and handle_dynamic_dims=True"
494
511
  )
495
512
  for out_dim, middle, (left, right) in zip(out_dims, axes, padding):
496
- if middle.need_masking() or (isinstance(left, Dim) and left.need_masking()):
497
- if isinstance(right, Dim) or right > 0:
513
+ if (
514
+ middle.need_masking()
515
+ or (isinstance(left, Dim) and left.need_masking())
516
+ or (isinstance(left, Tensor) and left.dims)
517
+ ):
518
+ if isinstance(left, Dim):
519
+ left = left.get_size_tensor(device=out.device)
520
+ assert isinstance(left, (int, Tensor))
521
+ if (
522
+ isinstance(right, Dim)
523
+ or (isinstance(right, int) and right > 0)
524
+ or isinstance(right, Tensor)
525
+ ):
498
526
  mask = rf.compare_bc(
499
527
  rf.range_over_dim(out_dim, device=out.device),
500
528
  "<",
501
- rf.copy_to_device((left + middle).dyn_size_ext, out.device),
529
+ left + middle.get_size_tensor(device=out.device),
502
530
  )
503
531
  out.raw_tensor = torch.where(
504
532
  mask.copy_compatible_to_dims_raw(out.dims),
@@ -1714,24 +1742,37 @@ class TorchBackend(Backend[torch.Tensor]):
1714
1742
  return out, out_dim
1715
1743
 
1716
1744
  @staticmethod
1717
- def masked_scatter(source: Tensor, *, mask: Tensor, dims: Sequence[Dim], in_dim: Dim) -> Tensor:
1745
+ def masked_scatter(
1746
+ source: Tensor, backup: Optional[Tensor] = None, *, mask: Tensor, dims: Sequence[Dim], in_dim: Dim
1747
+ ) -> Tensor:
1718
1748
  """masked scatter"""
1719
1749
  assert mask.dtype == "bool"
1720
1750
  assert set(mask.dims) == set(dims)
1721
1751
  assert in_dim in source.dims
1722
1752
  remaining_dims = [d for d in source.dims if d not in mask.dims and d != in_dim]
1723
1753
  source_templ_dims = (in_dim,) + tuple(remaining_dims)
1724
- tensor_templ_dims = tuple(dims) + tuple(remaining_dims)
1725
1754
  source_raw = source.copy_compatible_to_dims_raw(source_templ_dims)
1726
- mask_raw = mask.copy_compatible_to_dims_raw(tensor_templ_dims)
1727
- out_shape = [d.get_dim_value() for d in tensor_templ_dims]
1728
- out_raw = torch.zeros(out_shape, dtype=source_raw.dtype, device=source_raw.device)
1755
+
1756
+ out_dims = tuple(dims) + tuple(remaining_dims)
1757
+ if backup is None:
1758
+ out_shape = [d.get_dim_value() for d in out_dims]
1759
+ out_raw = torch.zeros(out_shape, dtype=source_raw.dtype, device=source_raw.device)
1760
+ else:
1761
+ assert set(backup.dims).issubset(out_dims), f"backup dims {backup.dims} not subset of out dims {out_dims}"
1762
+ for d in out_dims:
1763
+ if d not in backup.dims:
1764
+ backup = rf.expand_dim(backup, dim=d)
1765
+ out_dims = backup.dims
1766
+ out_raw = backup.raw_tensor.clone() # we operate inplace below
1767
+
1768
+ mask_raw = mask.copy_compatible_to_dims_raw(out_dims)
1729
1769
  out_raw.masked_scatter_(mask_raw, source_raw)
1730
1770
  return Tensor(
1731
1771
  "masked_scatter",
1732
- dims=tensor_templ_dims,
1733
- dtype=source.dtype,
1772
+ dims=out_dims,
1773
+ dtype=TorchBackend.get_dtype_name_raw(out_raw),
1734
1774
  sparse_dim=source.sparse_dim,
1775
+ feature_dim=source.feature_dim,
1735
1776
  raw_tensor=out_raw,
1736
1777
  )
1737
1778
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20241217.122516
3
+ Version: 1.20241219.123408
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
@@ -1,2 +0,0 @@
1
- version = '1.20241217.122516'
2
- long_version = '1.20241217.122516+git.d51e906'