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