returnn 1.20240925.152757__tar.gz → 1.20240926.134856__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 (464) hide show
  1. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/PKG-INFO +1 -1
  2. returnn-1.20240926.134856/_setup_info_generated.py +2 -0
  3. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/audio.py +3 -1
  4. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/_backend.py +9 -0
  5. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/array_.py +96 -3
  6. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/decoder/transformer.py +9 -1
  7. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/math_.py +7 -0
  8. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/run_ctx.py +2 -2
  9. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tensor/_dim_extra.py +0 -1
  10. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/frontend_low_level/_backend.py +8 -0
  11. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/frontend/_backend.py +42 -4
  12. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn.egg-info/PKG-INFO +1 -1
  13. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_rf_array.py +32 -0
  14. returnn-1.20240925.152757/_setup_info_generated.py +0 -2
  15. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/.editorconfig +0 -0
  16. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/.gitignore +0 -0
  17. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/.gitmodules +0 -0
  18. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/.kateconfig +0 -0
  19. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/CHANGELOG.md +0 -0
  20. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/CODEOWNERS +0 -0
  21. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/CONTRIBUTING.md +0 -0
  22. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/LICENSE +0 -0
  23. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/MANIFEST.in +0 -0
  24. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/README.rst +0 -0
  25. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/__init__.py +0 -0
  26. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/12AX.cluster_map +0 -0
  27. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/_setup_returnn_env.py +0 -0
  28. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-fwd.config +0 -0
  29. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-horovod-mpi.py +0 -0
  30. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-horovod-mpi.py.sh +0 -0
  31. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-horovod-mpi.sh +0 -0
  32. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-hyper-param-tuning.config +0 -0
  33. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-iter-dataset.py +0 -0
  34. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-list-devices.py +0 -0
  35. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-lua-torch-layer.config +0 -0
  36. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-pretrain.config +0 -0
  37. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-record-and-push-to-webserver.py +0 -0
  38. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-returnn-as-framework.py +0 -0
  39. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-rf-pt-benchmark.py +0 -0
  40. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-rf.config +0 -0
  41. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-rhn-enwik8.config +0 -0
  42. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-sprint-interface.py +0 -0
  43. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-tf-att-copy.config +0 -0
  44. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-tf-attention.config +0 -0
  45. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
  46. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
  47. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-tf-enc-dec.config +0 -0
  48. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-tf-hard-att-copy.config +0 -0
  49. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-tf-lstm-benchmark.py +0 -0
  50. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
  51. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
  52. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-tf-native-lstm.12ax.config +0 -0
  53. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-tf-native-lstm2.12ax.config +0 -0
  54. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
  55. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-tf-neural-transducer.12ax.config +0 -0
  56. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-tf-rec-explicit-lstm.config +0 -0
  57. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-tf-rec-explicit-rnn.config +0 -0
  58. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-tf-rec-self-att.config +0 -0
  59. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-tf-search-compiled-graph.py +0 -0
  60. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
  61. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-timit-lstm-ctc.config +0 -0
  62. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-torch.config +0 -0
  63. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
  64. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/demo.sh +0 -0
  65. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
  66. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
  67. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
  68. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/IAM/README.txt +0 -0
  69. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/IAM/chars.txt +0 -0
  70. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/IAM/config_demo +0 -0
  71. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/IAM/config_fwd +0 -0
  72. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/IAM/config_real +0 -0
  73. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
  74. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/IAM/decode.py +0 -0
  75. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
  76. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/IAM/go.sh +0 -0
  77. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/IAM/lines.txt +0 -0
  78. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/IAM/split/eval.txt +0 -0
  79. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/IAM/split/train.txt +0 -0
  80. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/IAM/split/valid.txt +0 -0
  81. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/README.md +0 -0
  82. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/artificial/create_test_h5.py +0 -0
  83. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/artificial/forwardconfig +0 -0
  84. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/artificial/go.sh +0 -0
  85. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/artificial/trainconfig +0 -0
  86. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
  87. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
  88. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/artificial_rgb/go.sh +0 -0
  89. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
  90. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/pyproject.toml +0 -0
  91. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/requirements.txt +0 -0
  92. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/__init__.py +0 -0
  93. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/__main__.py +0 -0
  94. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/__old_mod_loader__.py +0 -0
  95. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/__setup__.py +0 -0
  96. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/config.py +0 -0
  97. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/__init__.py +0 -0
  98. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/basic.py +0 -0
  99. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/bundle_file.py +0 -0
  100. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/cached.py +0 -0
  101. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/cached2.py +0 -0
  102. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/distrib_files.py +0 -0
  103. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/generating.py +0 -0
  104. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/hdf.py +0 -0
  105. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/lm.py +0 -0
  106. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/map.py +0 -0
  107. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/meta.py +0 -0
  108. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/multi_proc.py +0 -0
  109. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/normalization_data.py +0 -0
  110. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/numpy_dump.py +0 -0
  111. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/postprocessing.py +0 -0
  112. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/raw_wav.py +0 -0
  113. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/sprint.py +0 -0
  114. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/stereo.py +0 -0
  115. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/util/__init__.py +0 -0
  116. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/util/feature_extraction.py +0 -0
  117. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/util/strings.py +0 -0
  118. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/datasets/util/vocabulary.py +0 -0
  119. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/engine/__init__.py +0 -0
  120. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/engine/base.py +0 -0
  121. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/engine/batch.py +0 -0
  122. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/__init__.py +0 -0
  123. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/__main__.py +0 -0
  124. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/.git +0 -0
  125. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
  126. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
  127. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
  128. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
  129. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
  130. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
  131. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
  132. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
  133. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
  134. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
  135. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
  136. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
  137. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
  138. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
  139. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
  140. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
  141. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
  142. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
  143. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
  144. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
  145. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
  146. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
  147. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
  148. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
  149. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/__init__.py +0 -0
  150. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/graph_editor/README.md +0 -0
  151. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/graph_editor/__init__.py +0 -0
  152. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/graph_editor/edit.py +0 -0
  153. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/graph_editor/reroute.py +0 -0
  154. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/graph_editor/select.py +0 -0
  155. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/graph_editor/subgraph.py +0 -0
  156. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/graph_editor/transform.py +0 -0
  157. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/extern/graph_editor/util.py +0 -0
  158. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/forward_iface.py +0 -0
  159. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/__init__.py +0 -0
  160. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/_native/__init__.py +0 -0
  161. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/_native/backend.cpp +0 -0
  162. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/_native/backend.hpp +0 -0
  163. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/_native/module.cpp +0 -0
  164. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/_native/module.hpp +0 -0
  165. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/_native/py_utils.hpp +0 -0
  166. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/_native/tensor_ops.cpp +0 -0
  167. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/_native/tensor_ops.hpp +0 -0
  168. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/_numpy_backend.py +0 -0
  169. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/_random_journal.py +0 -0
  170. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/_utils.py +0 -0
  171. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/attention.py +0 -0
  172. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/audio/__init__.py +0 -0
  173. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/audio/mel.py +0 -0
  174. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/audio/specaugment.py +0 -0
  175. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/backend.py +0 -0
  176. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/build_from_dict.py +0 -0
  177. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/cond.py +0 -0
  178. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/const.py +0 -0
  179. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/container.py +0 -0
  180. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/control_flow_ctx.py +0 -0
  181. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/conv.py +0 -0
  182. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/conversions/__init__.py +0 -0
  183. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/conversions/espnet_e_branchformer.py +0 -0
  184. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/conversions/hf_llama.py +0 -0
  185. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/conversions/torch_nn.py +0 -0
  186. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/decoder/__init__.py +0 -0
  187. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/device.py +0 -0
  188. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/dims.py +0 -0
  189. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/dropout.py +0 -0
  190. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/dtype.py +0 -0
  191. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/encoder/__init__.py +0 -0
  192. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/encoder/base.py +0 -0
  193. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/encoder/conformer.py +0 -0
  194. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/encoder/e_branchformer.py +0 -0
  195. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/encoder/transformer.py +0 -0
  196. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/gradient.py +0 -0
  197. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/graph.py +0 -0
  198. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/hooks.py +0 -0
  199. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/init.py +0 -0
  200. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/label_smoothing.py +0 -0
  201. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/linear.py +0 -0
  202. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/loop.py +0 -0
  203. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/loss.py +0 -0
  204. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/matmul.py +0 -0
  205. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/module.py +0 -0
  206. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/normalization.py +0 -0
  207. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/parameter.py +0 -0
  208. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/parametrizations.py +0 -0
  209. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/parametrize.py +0 -0
  210. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/piecewise_linear.py +0 -0
  211. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/rand.py +0 -0
  212. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/rec.py +0 -0
  213. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/reduce.py +0 -0
  214. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/signal.py +0 -0
  215. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/state.py +0 -0
  216. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/stepwise_scheduler.py +0 -0
  217. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/tensor_array.py +0 -0
  218. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/frontend/types.py +0 -0
  219. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/import_/__init__.py +0 -0
  220. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/import_/common.py +0 -0
  221. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/import_/git.py +0 -0
  222. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/import_/import_.py +0 -0
  223. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/learning_rate_control.py +0 -0
  224. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/log.py +0 -0
  225. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/native_op.cpp +0 -0
  226. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/native_op.py +0 -0
  227. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/pretrain.py +0 -0
  228. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/sprint/__init__.py +0 -0
  229. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/sprint/cache.py +0 -0
  230. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/sprint/control.py +0 -0
  231. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/sprint/error_signals.py +0 -0
  232. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/sprint/extern_interface.py +0 -0
  233. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/sprint/interface.py +0 -0
  234. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tensor/README.md +0 -0
  235. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tensor/__init__.py +0 -0
  236. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tensor/_tensor_extra.py +0 -0
  237. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tensor/_tensor_mixin_base.py +0 -0
  238. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tensor/_tensor_op_overloads.py +0 -0
  239. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tensor/control_flow_ctx.py +0 -0
  240. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tensor/dim.py +0 -0
  241. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tensor/marked_dim.py +0 -0
  242. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tensor/tensor.py +0 -0
  243. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tensor/tensor_dict.py +0 -0
  244. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tensor/utils.py +0 -0
  245. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/__init__.py +0 -0
  246. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/compat.py +0 -0
  247. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/data_pipeline.py +0 -0
  248. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/distributed.py +0 -0
  249. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/engine.py +0 -0
  250. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/frontend_layers/README.md +0 -0
  251. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/frontend_layers/__init__.py +0 -0
  252. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/frontend_layers/_backend.py +0 -0
  253. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/frontend_layers/_utils.py +0 -0
  254. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/frontend_layers/cond.py +0 -0
  255. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
  256. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
  257. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/frontend_layers/dims.py +0 -0
  258. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/frontend_layers/layer.py +0 -0
  259. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/frontend_layers/loop.py +0 -0
  260. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/frontend_layers/make_layer.py +0 -0
  261. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/frontend_layers/masked_computation.py +0 -0
  262. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
  263. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
  264. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/frontend_low_level/__init__.py +0 -0
  265. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/horovod.py +0 -0
  266. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/hyper_param_tuning.py +0 -0
  267. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/layers/__init__.py +0 -0
  268. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/layers/base.py +0 -0
  269. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/layers/basic.py +0 -0
  270. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/layers/rec.py +0 -0
  271. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/layers/segmental_model.py +0 -0
  272. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/layers/signal_processing.py +0 -0
  273. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/layers/variable.py +0 -0
  274. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/native_op.py +0 -0
  275. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/network.py +0 -0
  276. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/sprint.py +0 -0
  277. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/updater.py +0 -0
  278. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/util/__init__.py +0 -0
  279. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/util/basic.py +0 -0
  280. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/util/data.py +0 -0
  281. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/util/gradient_checkpoint.py +0 -0
  282. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/util/ken_lm.py +0 -0
  283. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/tf/util/open_fst.py +0 -0
  284. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/README.md +0 -0
  285. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/__init__.py +0 -0
  286. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/data/__init__.py +0 -0
  287. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/data/extern_data.py +0 -0
  288. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/data/pipeline.py +0 -0
  289. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/data/queued_data_iter.py +0 -0
  290. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
  291. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/data/tensor_utils.py +0 -0
  292. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/distributed.py +0 -0
  293. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/engine.py +0 -0
  294. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/frontend/__init__.py +0 -0
  295. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/frontend/_rand.py +0 -0
  296. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/frontend/bridge.py +0 -0
  297. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/frontend/raw_ops.py +0 -0
  298. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/updater.py +0 -0
  299. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/util/README.md +0 -0
  300. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/util/__init__.py +0 -0
  301. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/util/array_.py +0 -0
  302. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/util/diagnose_gpu.py +0 -0
  303. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/util/gradient_checkpoint.py +0 -0
  304. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/util/module.py +0 -0
  305. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/torch/util/scaled_gradient.py +0 -0
  306. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/__init__.py +0 -0
  307. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/basic.py +0 -0
  308. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/better_exchook.py +0 -0
  309. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/bpe.py +0 -0
  310. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/debug.py +0 -0
  311. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/debug_helpers.py +0 -0
  312. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/file_cache.py +0 -0
  313. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/fsa.py +0 -0
  314. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/literal_py_to_pickle.py +0 -0
  315. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/math.py +0 -0
  316. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
  317. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/native_code_compiler.py +0 -0
  318. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/pprint.py +0 -0
  319. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/py-to-pickle.cpp +0 -0
  320. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/py_compat.py +0 -0
  321. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/py_ext_mod_compiler.py +0 -0
  322. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/result_with_reason.py +0 -0
  323. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/sig_proc.py +0 -0
  324. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/task_system.py +0 -0
  325. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/train_proc_manager.py +0 -0
  326. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn/util/watch_memory.py +0 -0
  327. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn.egg-info/SOURCES.txt +0 -0
  328. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn.egg-info/dependency_links.txt +0 -0
  329. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/returnn.egg-info/top_level.txt +0 -0
  330. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/rnn.py +0 -0
  331. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/setup.cfg +0 -0
  332. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/setup.py +0 -0
  333. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/DummySprintExec.py +0 -0
  334. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/PyCharm-inspection-profile.xml +0 -0
  335. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/PyCharm.idea/.gitignore +0 -0
  336. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/PyCharm.idea/.name +0 -0
  337. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
  338. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
  339. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
  340. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
  341. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
  342. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/PyCharm.idea/misc.xml +0 -0
  343. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/PyCharm.idea/modules.xml +0 -0
  344. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/PyCharm.idea/returnn.iml +0 -0
  345. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
  346. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/_set_num_threads1.py +0 -0
  347. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/_setup_returnn_env.py +0 -0
  348. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/_setup_test_env.py +0 -0
  349. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/bpe-unicode-demo.codes +0 -0
  350. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/bpe-unicode-demo.vocab +0 -0
  351. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/lexicon_opt.fst +0 -0
  352. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/lexicon_opt.isyms +0 -0
  353. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/lexicon_opt.jpg +0 -0
  354. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/lexicon_opt.osyms +0 -0
  355. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/lint_common.py +0 -0
  356. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/pycharm-inspect.py +0 -0
  357. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/pylint.py +0 -0
  358. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/returnn-as-framework.py +0 -0
  359. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/rf_utils.py +0 -0
  360. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/spelling.dic +0 -0
  361. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_Config.py +0 -0
  362. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_Dataset.py +0 -0
  363. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_Fsa.py +0 -0
  364. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_GeneratingDataset.py +0 -0
  365. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_HDFDataset.py +0 -0
  366. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_LearningRateControl.py +0 -0
  367. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_Log.py +0 -0
  368. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_MultiProcDataset.py +0 -0
  369. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_Pretrain.py +0 -0
  370. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_ResNet.py +0 -0
  371. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_SprintDataset.py +0 -0
  372. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_SprintInterface.py +0 -0
  373. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_TFEngine.py +0 -0
  374. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_TFNativeOp.py +0 -0
  375. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_TFNetworkLayer.py +0 -0
  376. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_TFNetworkRecLayer.py +0 -0
  377. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_TFNetworkSigProcLayer.py +0 -0
  378. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_TFUpdater.py +0 -0
  379. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_TFUtil.py +0 -0
  380. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_TF_determinism.py +0 -0
  381. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_TaskSystem.py +0 -0
  382. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_TaskSystem_SharedMem.py +0 -0
  383. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_TranslationDataset.py +0 -0
  384. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_Util.py +0 -0
  385. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_demos.py +0 -0
  386. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_fork_exec.py +0 -0
  387. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_hdf_dump.py +0 -0
  388. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_rf_attention.py +0 -0
  389. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_rf_base.py +0 -0
  390. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_rf_cond.py +0 -0
  391. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_rf_const.py +0 -0
  392. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_rf_container.py +0 -0
  393. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_rf_conv.py +0 -0
  394. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_rf_decoder_transformer.py +0 -0
  395. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_rf_encoder_conformer.py +0 -0
  396. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_rf_gradient.py +0 -0
  397. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_rf_label_smoothing.py +0 -0
  398. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_rf_loop.py +0 -0
  399. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_rf_math.py +0 -0
  400. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_rf_normalization.py +0 -0
  401. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_rf_piecewise_linear.py +0 -0
  402. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_rf_rec.py +0 -0
  403. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_rf_reduce.py +0 -0
  404. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_rf_signal.py +0 -0
  405. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_tensor.py +0 -0
  406. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_tools.py +0 -0
  407. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_torch_dataset.py +0 -0
  408. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_torch_engine.py +0 -0
  409. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_torch_frontend.py +0 -0
  410. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_torch_internal_frontend.py +0 -0
  411. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/test_torch_util.py +0 -0
  412. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tests/torch_utils.py +0 -0
  413. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/_setup_returnn_env.py +0 -0
  414. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/analyze-dataset-batches.py +0 -0
  415. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/bliss-collect-seq-lens.py +0 -0
  416. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/bliss-dump-text.py +0 -0
  417. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/bliss-get-segment-names.py +0 -0
  418. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/bliss-to-ogg-zip.py +0 -0
  419. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/bpe-create-lexicon.py +0 -0
  420. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/calculate-word-error-rate.py +0 -0
  421. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/cleanup-old-models.py +0 -0
  422. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/collect-orth-symbols.py +0 -0
  423. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/collect-words.py +0 -0
  424. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/compile_native_op.py +0 -0
  425. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/compile_tf_graph.py +0 -0
  426. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/debug-dump-search-scores.py +0 -0
  427. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/debug-plot-search-scores.py +0 -0
  428. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/dump-dataset-raw-strings.py +0 -0
  429. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/dump-dataset.py +0 -0
  430. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/dump-forward-stats.py +0 -0
  431. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/dump-forward.py +0 -0
  432. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/dump-network-json.py +0 -0
  433. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/dump-pickle.py +0 -0
  434. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/extract_state_tying_from_dataset.py +0 -0
  435. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/get-attention-weights.py +0 -0
  436. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/get-best-model-epoch.py +0 -0
  437. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/hdf_dump.py +0 -0
  438. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/hdf_dump_translation_dataset.py +0 -0
  439. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/import-blocks-mt-model.py +0 -0
  440. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/import-t2t-mt-model.py +0 -0
  441. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/lattice_rescorer/.gitignore +0 -0
  442. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/lattice_rescorer/Makefile +0 -0
  443. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/lattice_rescorer/README.md +0 -0
  444. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/lattice_rescorer/example/README.md +0 -0
  445. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/lattice_rescorer/example/libs_list +0 -0
  446. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
  447. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
  448. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
  449. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/lattice_rescorer/example/state_vars_list +0 -0
  450. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/lattice_rescorer/example/tensor_names_list +0 -0
  451. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/lattice_rescorer/file.h +0 -0
  452. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
  453. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
  454. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/lattice_rescorer/main.cc +0 -0
  455. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/lattice_rescorer/rescorer.h +0 -0
  456. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/lattice_rescorer/vocabulary.cc +0 -0
  457. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/lattice_rescorer/vocabulary.h +0 -0
  458. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/tf_avg_checkpoints.py +0 -0
  459. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/tf_inspect_checkpoint.py +0 -0
  460. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/tf_inspect_summary_log.py +0 -0
  461. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/torch_avg_checkpoints.py +0 -0
  462. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/torch_export_to_onnx.py +0 -0
  463. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/tools/torch_inspect_checkpoint.py +0 -0
  464. {returnn-1.20240925.152757 → returnn-1.20240926.134856}/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.20240925.152757
3
+ Version: 1.20240926.134856
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.20240926.134856'
2
+ long_version = '1.20240926.134856+git.1fcaadd'
@@ -63,7 +63,9 @@ class OggZipDataset(CachedDataset2):
63
63
  :param str|list[str]|((str)->str)|None targets_post_process: :func:`get_post_processor_function`,
64
64
  applied on orth
65
65
  :param bool use_cache_manager: uses :func:`returnn.util.basic.cf`
66
- :param str|None segment_file: .txt or .gz text file containing sequence tags that will be used as whitelist
66
+ :param str|None segment_file: .txt or .gz text file containing sequence tags that will be used as whitelist.
67
+ Note: This is somewhat deprecated, as we also support ``seq_list_filter_file`` (via the base class),
68
+ which does the same but more universally.
67
69
  :param bool zip_audio_files_have_name_as_prefix:
68
70
  :param float|int|None fixed_random_subset:
69
71
  Value in [0,1] to specify the fraction, or integer >=1 which specifies number of seqs.
@@ -921,6 +921,8 @@ class Backend(Generic[T]):
921
921
  *,
922
922
  indices: Tensor,
923
923
  indices_dim: Union[Dim, Sequence[Dim]],
924
+ mode: str,
925
+ fill_value: Union[int, float],
924
926
  out_dim: Union[Dim, Sequence[Dim]],
925
927
  ) -> Tensor:
926
928
  """
@@ -932,6 +934,8 @@ class Backend(Generic[T]):
932
934
  :param source: [batch_dims..., indices_dim(s)..., feature_dims...]
933
935
  :param indices: [batch_dims..., indices_dim(s)...] -> out_dim
934
936
  :param indices_dim:
937
+ :param mode: "sum" or "max" or "min"
938
+ :param fill_value:
935
939
  :param out_dim:
936
940
  :return: [batch_dims..., out_dim, feature_dims...]
937
941
  """
@@ -983,6 +987,11 @@ class Backend(Generic[T]):
983
987
  """
984
988
  raise NotImplementedError
985
989
 
990
+ @staticmethod
991
+ def is_finite(x: Tensor) -> Tensor:
992
+ """is finite"""
993
+ raise NotImplementedError
994
+
986
995
  @staticmethod
987
996
  def clip_by_value(
988
997
  x: Tensor,
@@ -24,6 +24,7 @@ __all__ = [
24
24
  "reshape",
25
25
  "split",
26
26
  "expand_dim",
27
+ "expand_dims",
27
28
  "squeeze",
28
29
  "window",
29
30
  "concat",
@@ -37,6 +38,7 @@ __all__ = [
37
38
  "pack_padded",
38
39
  "gather",
39
40
  "scatter",
41
+ "scatter_argmax",
40
42
  "slice",
41
43
  "shift_right",
42
44
  "reverse_sequence",
@@ -48,7 +50,7 @@ __all__ = [
48
50
 
49
51
 
50
52
  def convert_to_tensor(
51
- value: Union[Tensor, T, RawTensorTypes],
53
+ value: Union[Tensor, T, RawTensorTypes, list, tuple],
52
54
  *,
53
55
  dims: Sequence[Dim] = None,
54
56
  dtype: Optional[str] = None,
@@ -73,6 +75,8 @@ def convert_to_tensor(
73
75
  """
74
76
  if isinstance(value, Tensor): # fast path
75
77
  return value
78
+ if isinstance(value, (tuple, list)):
79
+ value = numpy.array(value, dtype=dtype)
76
80
  if dims is None and shape is not None:
77
81
  dims = shape # old code
78
82
  if isinstance(value, (int, float, complex, bool, str, numpy.number)):
@@ -257,6 +261,15 @@ def expand_dim(source: Tensor, dim: Dim) -> Tensor:
257
261
  return source._raw_backend.expand_dim(source, dim=dim)
258
262
 
259
263
 
264
+ def expand_dims(source: Tensor, dims: Sequence[Dim]) -> Tensor:
265
+ """
266
+ Expand multiple dims, via :func:`expand_dim`.
267
+ """
268
+ for dim in dims:
269
+ source = expand_dim(source, dim)
270
+ return source
271
+
272
+
260
273
  def squeeze(source: Tensor, axis: Dim) -> Tensor:
261
274
  """
262
275
  Removes the axis with dimension of extend 1 from the source.
@@ -680,17 +693,24 @@ def scatter(
680
693
  *,
681
694
  indices: Tensor,
682
695
  indices_dim: Union[Dim, Sequence[Dim]],
696
+ mode: str = "sum",
697
+ fill_value: Optional[Union[int, float]] = None,
683
698
  out_dim: Optional[Union[Dim, Sequence[Dim]]] = None,
684
699
  ) -> Tensor:
685
700
  """
686
701
  Scatters into new zero-tensor.
687
702
  If entries in indices are duplicated, the corresponding values in source will be added together
688
- (scatter_add in PyTorch).
703
+ (scatter_add in PyTorch)
704
+ with mode=="sum",
705
+ or otherwise it will take the max/min.
706
+
689
707
  (TF segment_sum can be implemented via this.)
690
708
 
691
709
  :param source: [batch_dims..., indices_dim(s)..., feature_dims...]
692
710
  :param indices: [batch_dims..., indices_dim(s)...] -> out_dim
693
711
  :param indices_dim:
712
+ :param mode: "sum" or "max" or "min". also see :func:`scatter_argmax`.
713
+ :param fill_value:
694
714
  :param out_dim: The indices target dim.
695
715
  If not given, will be automatically determined as the sparse_dim from indices.
696
716
  If multiple out dims, use indices into the merged out dims,
@@ -700,8 +720,81 @@ def scatter(
700
720
  if not out_dim:
701
721
  assert isinstance(indices, Tensor) and indices.sparse_dim
702
722
  out_dim = indices.sparse_dim
723
+ if fill_value is None:
724
+ if mode == "sum":
725
+ fill_value = 0
726
+ elif mode == "max":
727
+ if "int" in source.dtype:
728
+ import numpy
729
+
730
+ fill_value = numpy.iinfo(source.raw_tensor.dtype).min
731
+ else:
732
+ fill_value = float("-inf")
733
+ elif mode == "min":
734
+ if "int" in source.dtype:
735
+ import numpy
736
+
737
+ fill_value = numpy.iinfo(source.raw_tensor.dtype).max
738
+ else:
739
+ fill_value = float("inf")
740
+ else:
741
+ raise ValueError(f"scatter: invalid mode {mode!r}")
703
742
  # noinspection PyProtectedMember
704
- return source._raw_backend.scatter(source, indices=indices, indices_dim=indices_dim, out_dim=out_dim)
743
+ return source._raw_backend.scatter(
744
+ source, indices=indices, indices_dim=indices_dim, mode=mode, fill_value=fill_value, out_dim=out_dim
745
+ )
746
+
747
+
748
+ def scatter_argmax(
749
+ source: Tensor,
750
+ *,
751
+ indices: Tensor,
752
+ indices_dim: Union[Dim, Sequence[Dim]],
753
+ invalid_idx: int = -1,
754
+ out_dim: Optional[Union[Dim, Sequence[Dim]]] = None,
755
+ ) -> Tensor:
756
+ """
757
+ Get the index in src which has the max value for each index in index.
758
+
759
+ This is like :func:`scatter` with ``mode="argmax"``.
760
+
761
+ :param source: [batch_dims..., indices_dim(s)..., feature_dims...]
762
+ :param indices: [batch_dims..., indices_dim(s)...] -> out_dim
763
+ :param indices_dim:
764
+ :param invalid_idx: in case some of the output entries are never set (via ``indices``),
765
+ this will be used as the value.
766
+ :param out_dim: The indices target dim.
767
+ :return: [batch_dims..., out_dim(s)..., feature_dims...]
768
+ """
769
+ import numpy
770
+
771
+ if not out_dim:
772
+ assert isinstance(indices, Tensor) and indices.sparse_dim
773
+ out_dim = indices.sparse_dim
774
+
775
+ # For the shape comments, use [B,I,F] for shorter source, [B,O,F] for shorter output.
776
+ # use scatter to get the max value for each index
777
+ out_max = rf.scatter(source, indices=indices, indices_dim=indices_dim, mode="max", out_dim=out_dim) # [B,O,F]
778
+ src_max = rf.gather(out_max, indices=indices, axis=out_dim) # [B,I,F] -> max value or invalid_value
779
+
780
+ max_invalid_idx = numpy.iinfo(indices.dtype).max
781
+
782
+ # then use gather to get the max value back to src.
783
+ # then mask the src with the max value.
784
+ src_max_mask = src_max == source
785
+ src_max_mask = src_max_mask.copy_masked(False)
786
+ src_indices = rf.where(
787
+ src_max_mask, rf.range_over_dim(indices_dim, dtype=indices.dtype, device=source.device), max_invalid_idx
788
+ ) # [B,I,F] -> I
789
+
790
+ # now scatter the min of src_indices into tensor
791
+ out = rf.scatter(
792
+ src_indices, indices=indices, indices_dim=indices_dim, mode="min", fill_value=invalid_idx, out_dim=out_dim
793
+ ) # [B,O,F] -> I or invalid_idx or max_invalid_idx
794
+
795
+ if max_invalid_idx != invalid_idx:
796
+ out = rf.where(out != max_invalid_idx, out, invalid_idx) # [B,O,F] -> I or invalid_idx
797
+ return out
705
798
 
706
799
 
707
800
  # noinspection PyShadowingBuiltins
@@ -441,6 +441,7 @@ class FeedForwardGated(rf.Module):
441
441
  ff_dim: Optional[Union[Dim, int]] = NotSpecified,
442
442
  dropout: float = 0.1,
443
443
  activation: Union[Callable[[Tensor], Tensor], Dict[str, Any], rf.Module] = rf.swish,
444
+ gate_activation: Union[Callable[[Tensor], Tensor], Dict[str, Any], rf.Module] = rf.identity,
444
445
  with_bias: bool = False,
445
446
  ):
446
447
  """
@@ -474,11 +475,18 @@ class FeedForwardGated(rf.Module):
474
475
  activation = rf.build_from_dict(activation)
475
476
  elif not callable(activation):
476
477
  raise TypeError(f"{self}: unexpected activation type {activation!r}")
478
+ if gate_activation is NotSpecified:
479
+ gate_activation = rf.identity
480
+ elif isinstance(gate_activation, dict):
481
+ gate_activation = rf.build_from_dict(gate_activation)
482
+ elif not callable(gate_activation):
483
+ raise TypeError(f"{self}: unexpected gate_activation type {gate_activation!r}")
477
484
 
478
485
  self.out_dim = out_dim
479
486
  self.dropout = dropout
480
487
  self.dropout_broadcast = rf.dropout_broadcast_default()
481
488
  self.activation = activation
489
+ self.gate_activation = gate_activation
482
490
 
483
491
  # Factor 2 because we concatenate the two paths.
484
492
  self.linear_ff = rf.Linear(out_dim, 2 * ff_dim, with_bias=with_bias)
@@ -488,7 +496,7 @@ class FeedForwardGated(rf.Module):
488
496
  """forward"""
489
497
  x_ff1 = self.linear_ff(inp)
490
498
  x_ff1a, x_ff1b = rf.split(x_ff1, axis=self.linear_ff.out_dim, out_dims=[self.linear_out.in_dim] * 2)
491
- x_act = self.activation(x_ff1a) * x_ff1b
499
+ x_act = self.activation(x_ff1a) * self.gate_activation(x_ff1b)
492
500
  x_drop = rf.dropout(x_act, self.dropout, axis=self.dropout_broadcast and self.linear_out.in_dim)
493
501
  x_ff2 = self.linear_out(x_drop)
494
502
  return x_ff2
@@ -37,6 +37,7 @@ __all__ = [
37
37
  "logical_not",
38
38
  "opt_logical_or",
39
39
  "opt_logical_and",
40
+ "is_finite",
40
41
  "maximum",
41
42
  "minimum",
42
43
  "clip_by_value",
@@ -361,6 +362,12 @@ def opt_logical_and(a: Union[Tensor, bool], b: Union[Tensor, bool]) -> Union[Ten
361
362
  return combine(a, "logical_and", b)
362
363
 
363
364
 
365
+ def is_finite(a: Tensor) -> Tensor:
366
+ """is finite"""
367
+ # noinspection PyProtectedMember
368
+ return a._raw_backend.is_finite(a)
369
+
370
+
364
371
  def maximum(a: Tensor, b: Union[Tensor, _RawTensorTypes], *other_tensors) -> Tensor:
365
372
  """maximum"""
366
373
  if not other_tensors:
@@ -275,8 +275,8 @@ class RunCtx:
275
275
  if dims is None and expected_output:
276
276
  dims = expected_output.dims
277
277
  if dims is not None and expected_output:
278
- assert (
279
- expected_output.dims == dims
278
+ assert expected_output.dims == tuple(
279
+ dims
280
280
  ), f"mark_as_output: {name!r} dims mismatch from expected output, given {dims}, expected {expected_output}"
281
281
 
282
282
  if not isinstance(tensor, Tensor):
@@ -2301,7 +2301,6 @@ class _DimMixin:
2301
2301
  value = {"dim": self.dimension}
2302
2302
  if self.kind is not None:
2303
2303
  value["kind"] = self.kind.name
2304
- assert self.derived_from_op is None # not handled yet for hashing...
2305
2304
  return value
2306
2305
 
2307
2306
 
@@ -554,6 +554,14 @@ class TFBackend(Backend[tf.Tensor]):
554
554
  out_data.raw_tensor = y
555
555
  return out_data
556
556
 
557
+ @staticmethod
558
+ def is_finite(x: Tensor) -> Tensor:
559
+ """is finite"""
560
+ out = x.copy_template("is_finite", dtype="bool")
561
+ with tf_util.same_control_flow_ctx(x):
562
+ out.raw_tensor = tf.math.is_finite(x.raw_tensor)
563
+ return out
564
+
557
565
  @staticmethod
558
566
  def clip_by_value(
559
567
  x: Tensor,
@@ -1015,6 +1015,8 @@ class TorchBackend(Backend[torch.Tensor]):
1015
1015
  *,
1016
1016
  indices: Tensor,
1017
1017
  indices_dim: Union[Dim, Sequence[Dim]],
1018
+ mode: str,
1019
+ fill_value: Union[int, float],
1018
1020
  out_dim: Union[Dim, Sequence[Dim]],
1019
1021
  ) -> Tensor:
1020
1022
  """
@@ -1026,6 +1028,8 @@ class TorchBackend(Backend[torch.Tensor]):
1026
1028
  :param source: [batch_dims..., indices_dim(s)..., feature_dims...]
1027
1029
  :param indices: [batch_dims..., indices_dim(s)...] -> out_dim
1028
1030
  :param indices_dim:
1031
+ :param mode: "sum", "max", "min"
1032
+ :param fill_value:
1029
1033
  :param out_dim:
1030
1034
  :return: [batch_dims..., out_dim, feature_dims...]
1031
1035
  """
@@ -1065,8 +1069,29 @@ class TorchBackend(Backend[torch.Tensor]):
1065
1069
  )
1066
1070
  out_dims = batch_dims + [out_flat_dim] + feature_dims
1067
1071
  out_shape = [d.get_dim_value() for d in out_dims]
1068
- out_raw = torch.zeros(out_shape, dtype=source.raw_tensor.dtype, device=source.raw_tensor.device)
1069
- out_raw.scatter_add_(dim=len(batch_dims), index=indices.raw_tensor.to(torch.int64), src=source.raw_tensor)
1072
+ if mode == "sum" and isinstance(fill_value, (int, float)) and fill_value == 0:
1073
+ out_raw = torch.zeros(out_shape, dtype=source.raw_tensor.dtype, device=source.raw_tensor.device)
1074
+ out_raw.scatter_add_(dim=len(batch_dims), index=indices.raw_tensor.to(torch.int64), src=source.raw_tensor)
1075
+ elif mode == "sum":
1076
+ out_raw = torch.full(out_shape, fill_value, dtype=source.raw_tensor.dtype, device=source.raw_tensor.device)
1077
+ out_raw.scatter_reduce_(
1078
+ dim=len(batch_dims),
1079
+ index=indices.raw_tensor.to(torch.int64),
1080
+ src=source.raw_tensor,
1081
+ reduce="sum",
1082
+ include_self=False,
1083
+ )
1084
+ elif mode in ("max", "min"):
1085
+ out_raw = torch.full(out_shape, fill_value, dtype=source.raw_tensor.dtype, device=source.raw_tensor.device)
1086
+ out_raw.scatter_reduce_(
1087
+ dim=len(batch_dims),
1088
+ index=indices.raw_tensor.to(torch.int64),
1089
+ src=source.raw_tensor,
1090
+ reduce="a" + mode,
1091
+ include_self=False,
1092
+ )
1093
+ else:
1094
+ raise ValueError(f"scatter: mode {mode!r} not supported")
1070
1095
  res = Tensor(
1071
1096
  "scatter",
1072
1097
  dims=out_dims,
@@ -1128,8 +1153,14 @@ class TorchBackend(Backend[torch.Tensor]):
1128
1153
  allow_broadcast_all_sources: bool = False,
1129
1154
  ) -> Tensor:
1130
1155
  """where"""
1131
- true_ = rf.convert_to_tensor(true_, _backend=TorchBackend, device=cond.device)
1132
- false_ = rf.convert_to_tensor(false_, _backend=TorchBackend, device=cond.device)
1156
+ if isinstance(true_, Tensor):
1157
+ dtype = true_.dtype
1158
+ elif isinstance(false_, Tensor):
1159
+ dtype = false_.dtype
1160
+ else:
1161
+ dtype = None
1162
+ true_ = rf.convert_to_tensor(true_, _backend=TorchBackend, dtype=dtype, device=cond.device)
1163
+ false_ = rf.convert_to_tensor(false_, _backend=TorchBackend, dtype=dtype, device=cond.device)
1133
1164
  out = Tensor.get_common_data(
1134
1165
  [true_, false_, cond], allow_broadcast_all_sources=allow_broadcast_all_sources, name="where"
1135
1166
  )
@@ -1174,6 +1205,13 @@ class TorchBackend(Backend[torch.Tensor]):
1174
1205
  out.raw_tensor = out_raw
1175
1206
  return out
1176
1207
 
1208
+ @staticmethod
1209
+ def is_finite(x: Tensor) -> Tensor:
1210
+ """is finite"""
1211
+ out = x.copy_template("is_finite", dtype="bool")
1212
+ out.raw_tensor = torch.isfinite(x.raw_tensor)
1213
+ return out
1214
+
1177
1215
  @staticmethod
1178
1216
  def clip_by_value(
1179
1217
  x: Tensor,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20240925.152757
3
+ Version: 1.20240926.134856
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
@@ -373,6 +373,38 @@ def test_gather_time_static_clip_to_valid():
373
373
  run_model(extern_data_template, lambda *, epoch, step: rf.Module(), _forward_step)
374
374
 
375
375
 
376
+ def test_scatter_fill_inf():
377
+ batch_dim_ = Dim(3, name="batch")
378
+ states_dim = Dim(7, name="states")
379
+
380
+ def _forward_step(**_kwargs):
381
+ start_states = rf.convert_to_tensor(
382
+ [2, 4, 5], name="start_states", dims=[batch_dim_], sparse_dim=states_dim, dtype="int32"
383
+ )
384
+ batch_dim_.get_size_tensor().mark_as_output("batch_size", shape=[])
385
+ start_states.mark_as_output("start_states", shape=[batch_dim_])
386
+ scores = rf.scatter(
387
+ rf.zeros([batch_dim_]),
388
+ indices=start_states,
389
+ indices_dim=[batch_dim_],
390
+ fill_value=float("-inf"),
391
+ ) # [S], per state
392
+ scores.mark_as_default_output(shape=[states_dim])
393
+
394
+ res = run_model(TensorDict(), lambda *, epoch, step: rf.Module(), _forward_step, test_tensorflow=False)
395
+ batch_size = res["batch_size"].raw_tensor.item()
396
+ assert res["start_states"].raw_tensor.shape == (batch_size,)
397
+ assert res["output"].raw_tensor.shape == (states_dim.dimension,)
398
+ assert res["output"].raw_tensor.tolist().count(0.0) == batch_size
399
+ assert res["output"].raw_tensor.tolist().count(float("-inf")) == states_dim.dimension - batch_size
400
+ assert states_dim.dimension > batch_size
401
+ for i in range(states_dim.dimension):
402
+ if i in res["start_states"].raw_tensor:
403
+ assert res["output"].raw_tensor[i] == 0.0
404
+ else:
405
+ assert res["output"].raw_tensor[i] == float("-inf")
406
+
407
+
376
408
  def test_slice():
377
409
  time_dim = Dim(Tensor("time", [batch_dim], dtype="int32"))
378
410
  in_dim = Dim(7, name="in")
@@ -1,2 +0,0 @@
1
- version = '1.20240925.152757'
2
- long_version = '1.20240925.152757+git.dc1a941'