returnn 1.20250122.134518__tar.gz → 1.20250123.173545__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 (473) hide show
  1. {returnn-1.20250122.134518/returnn.egg-info → returnn-1.20250123.173545}/PKG-INFO +1 -1
  2. returnn-1.20250123.173545/_setup_info_generated.py +2 -0
  3. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/config.py +76 -85
  4. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/_cache.py +2 -2
  5. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/_native/__init__.py +2 -0
  6. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/_random_journal.py +1 -1
  7. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/conv.py +1 -1
  8. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/dims.py +1 -1
  9. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/rec.py +2 -2
  10. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/run_ctx.py +6 -6
  11. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tensor/_dim_extra.py +46 -43
  12. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tensor/_tensor_extra.py +5 -5
  13. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tensor/_tensor_op_overloads.py +11 -0
  14. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tensor/dim.py +1 -1
  15. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tensor/tensor_dict.py +1 -1
  16. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/frontend_layers/_backend.py +2 -2
  17. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/frontend_layers/dims.py +2 -2
  18. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/frontend_layers/layer.py +9 -5
  19. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/frontend_layers/loop.py +2 -2
  20. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/frontend_layers/make_layer.py +1 -1
  21. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/frontend_layers/prev_tensor_ref.py +1 -1
  22. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/frontend_low_level/_backend.py +1 -1
  23. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/layers/base.py +28 -19
  24. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/layers/basic.py +22 -20
  25. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/layers/rec.py +43 -41
  26. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/network.py +3 -3
  27. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/util/basic.py +10 -9
  28. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/data/extern_data.py +2 -2
  29. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/basic.py +5 -5
  30. {returnn-1.20250122.134518 → returnn-1.20250123.173545/returnn.egg-info}/PKG-INFO +1 -1
  31. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/rf_utils.py +2 -2
  32. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_TFUtil.py +3 -3
  33. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/compile_tf_graph.py +2 -2
  34. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/torch_export_to_onnx.py +2 -2
  35. returnn-1.20250122.134518/_setup_info_generated.py +0 -2
  36. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/.editorconfig +0 -0
  37. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/.gitignore +0 -0
  38. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/.gitmodules +0 -0
  39. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/.kateconfig +0 -0
  40. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/CHANGELOG.md +0 -0
  41. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/CODEOWNERS +0 -0
  42. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/CONTRIBUTING.md +0 -0
  43. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/LICENSE +0 -0
  44. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/MANIFEST.in +0 -0
  45. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/README.rst +0 -0
  46. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/__init__.py +0 -0
  47. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/12AX.cluster_map +0 -0
  48. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/_setup_returnn_env.py +0 -0
  49. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-fwd.config +0 -0
  50. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-horovod-mpi.py +0 -0
  51. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-horovod-mpi.py.sh +0 -0
  52. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-horovod-mpi.sh +0 -0
  53. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-hyper-param-tuning.config +0 -0
  54. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-iter-dataset.py +0 -0
  55. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-list-devices.py +0 -0
  56. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-lua-torch-layer.config +0 -0
  57. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-pretrain.config +0 -0
  58. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-record-and-push-to-webserver.py +0 -0
  59. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-returnn-as-framework.py +0 -0
  60. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-rf-pt-benchmark.py +0 -0
  61. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-rf.config +0 -0
  62. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-rhn-enwik8.config +0 -0
  63. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-sprint-interface.py +0 -0
  64. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-tf-att-copy.config +0 -0
  65. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-tf-attention.config +0 -0
  66. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
  67. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
  68. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-tf-enc-dec.config +0 -0
  69. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-tf-hard-att-copy.config +0 -0
  70. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-tf-lstm-benchmark.py +0 -0
  71. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
  72. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
  73. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-tf-native-lstm.12ax.config +0 -0
  74. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-tf-native-lstm2.12ax.config +0 -0
  75. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
  76. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-tf-neural-transducer.12ax.config +0 -0
  77. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-tf-rec-explicit-lstm.config +0 -0
  78. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-tf-rec-explicit-rnn.config +0 -0
  79. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-tf-rec-self-att.config +0 -0
  80. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-tf-search-compiled-graph.py +0 -0
  81. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
  82. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-timit-lstm-ctc.config +0 -0
  83. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-torch.config +0 -0
  84. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
  85. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/demo.sh +0 -0
  86. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
  87. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
  88. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
  89. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/IAM/README.txt +0 -0
  90. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/IAM/chars.txt +0 -0
  91. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/IAM/config_demo +0 -0
  92. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/IAM/config_fwd +0 -0
  93. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/IAM/config_real +0 -0
  94. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
  95. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/IAM/decode.py +0 -0
  96. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
  97. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/IAM/go.sh +0 -0
  98. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/IAM/lines.txt +0 -0
  99. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/IAM/split/eval.txt +0 -0
  100. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/IAM/split/train.txt +0 -0
  101. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/IAM/split/valid.txt +0 -0
  102. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/README.md +0 -0
  103. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/artificial/create_test_h5.py +0 -0
  104. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/artificial/forwardconfig +0 -0
  105. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/artificial/go.sh +0 -0
  106. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/artificial/trainconfig +0 -0
  107. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
  108. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
  109. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/artificial_rgb/go.sh +0 -0
  110. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
  111. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/pyproject.toml +0 -0
  112. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/requirements.txt +0 -0
  113. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/__init__.py +0 -0
  114. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/__main__.py +0 -0
  115. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/__old_mod_loader__.py +0 -0
  116. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/__setup__.py +0 -0
  117. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/__init__.py +0 -0
  118. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/audio.py +0 -0
  119. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/basic.py +0 -0
  120. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/bundle_file.py +0 -0
  121. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/cached.py +0 -0
  122. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/cached2.py +0 -0
  123. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/distrib_files.py +0 -0
  124. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/generating.py +0 -0
  125. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/hdf.py +0 -0
  126. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/lm.py +0 -0
  127. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/map.py +0 -0
  128. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/meta.py +0 -0
  129. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/multi_proc.py +0 -0
  130. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/normalization_data.py +0 -0
  131. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/numpy_dump.py +0 -0
  132. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/postprocessing.py +0 -0
  133. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/raw_wav.py +0 -0
  134. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/sprint.py +0 -0
  135. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/stereo.py +0 -0
  136. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/text_dict.py +0 -0
  137. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/util/__init__.py +0 -0
  138. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/util/feature_extraction.py +0 -0
  139. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/util/strings.py +0 -0
  140. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/datasets/util/vocabulary.py +0 -0
  141. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/engine/__init__.py +0 -0
  142. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/engine/base.py +0 -0
  143. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/engine/batch.py +0 -0
  144. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/__init__.py +0 -0
  145. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/__main__.py +0 -0
  146. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/.git +0 -0
  147. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
  148. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
  149. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
  150. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
  151. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
  152. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
  153. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
  154. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
  155. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
  156. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
  157. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
  158. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
  159. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
  160. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
  161. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
  162. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
  163. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
  164. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
  165. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
  166. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
  167. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
  168. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
  169. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
  170. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
  171. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/__init__.py +0 -0
  172. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/graph_editor/README.md +0 -0
  173. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/graph_editor/__init__.py +0 -0
  174. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/graph_editor/edit.py +0 -0
  175. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/graph_editor/reroute.py +0 -0
  176. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/graph_editor/select.py +0 -0
  177. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/graph_editor/subgraph.py +0 -0
  178. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/graph_editor/transform.py +0 -0
  179. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/extern/graph_editor/util.py +0 -0
  180. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/forward_iface.py +0 -0
  181. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/__init__.py +0 -0
  182. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/_backend.py +0 -0
  183. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/_native/backend.cpp +0 -0
  184. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/_native/backend.hpp +0 -0
  185. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/_native/module.cpp +0 -0
  186. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/_native/module.hpp +0 -0
  187. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/_native/py_utils.hpp +0 -0
  188. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/_native/tensor_ops.cpp +0 -0
  189. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/_native/tensor_ops.hpp +0 -0
  190. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/_numpy_backend.py +0 -0
  191. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/_utils.py +0 -0
  192. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/array_.py +0 -0
  193. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/attention.py +0 -0
  194. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/audio/__init__.py +0 -0
  195. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/audio/mel.py +0 -0
  196. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/audio/specaugment.py +0 -0
  197. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/backend.py +0 -0
  198. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/build_from_dict.py +0 -0
  199. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/cond.py +0 -0
  200. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/const.py +0 -0
  201. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/container.py +0 -0
  202. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/control_flow_ctx.py +0 -0
  203. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/conversions/__init__.py +0 -0
  204. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/conversions/espnet_e_branchformer.py +0 -0
  205. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/conversions/hf_llama.py +0 -0
  206. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/conversions/torch_nn.py +0 -0
  207. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/decoder/__init__.py +0 -0
  208. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/decoder/transformer.py +0 -0
  209. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/device.py +0 -0
  210. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/dropout.py +0 -0
  211. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/dtype.py +0 -0
  212. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/encoder/__init__.py +0 -0
  213. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/encoder/base.py +0 -0
  214. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/encoder/conformer.py +0 -0
  215. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/encoder/conformer_v2.py +0 -0
  216. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/encoder/e_branchformer.py +0 -0
  217. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/encoder/transformer.py +0 -0
  218. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/gradient.py +0 -0
  219. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/graph.py +0 -0
  220. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/hooks.py +0 -0
  221. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/init.py +0 -0
  222. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/label_smoothing.py +0 -0
  223. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/linear.py +0 -0
  224. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/loop.py +0 -0
  225. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/loss.py +0 -0
  226. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/math_.py +0 -0
  227. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/matmul.py +0 -0
  228. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/module.py +0 -0
  229. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/normalization.py +0 -0
  230. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/parameter.py +0 -0
  231. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/parametrizations.py +0 -0
  232. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/parametrize.py +0 -0
  233. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/piecewise_linear.py +0 -0
  234. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/rand.py +0 -0
  235. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/reduce.py +0 -0
  236. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/signal.py +0 -0
  237. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/state.py +0 -0
  238. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/stepwise_scheduler.py +0 -0
  239. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/tensor_array.py +0 -0
  240. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/frontend/types.py +0 -0
  241. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/import_/__init__.py +0 -0
  242. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/import_/common.py +0 -0
  243. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/import_/git.py +0 -0
  244. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/import_/import_.py +0 -0
  245. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/learning_rate_control.py +0 -0
  246. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/log.py +0 -0
  247. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/native_op.cpp +0 -0
  248. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/native_op.py +0 -0
  249. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/pretrain.py +0 -0
  250. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/sprint/__init__.py +0 -0
  251. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/sprint/cache.py +0 -0
  252. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/sprint/control.py +0 -0
  253. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/sprint/error_signals.py +0 -0
  254. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/sprint/extern_interface.py +0 -0
  255. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/sprint/interface.py +0 -0
  256. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tensor/README.md +0 -0
  257. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tensor/__init__.py +0 -0
  258. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tensor/_tensor_mixin_base.py +0 -0
  259. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tensor/control_flow_ctx.py +0 -0
  260. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tensor/marked_dim.py +0 -0
  261. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tensor/tensor.py +0 -0
  262. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tensor/utils.py +0 -0
  263. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/__init__.py +0 -0
  264. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/compat.py +0 -0
  265. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/data_pipeline.py +0 -0
  266. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/distributed.py +0 -0
  267. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/engine.py +0 -0
  268. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/frontend_layers/README.md +0 -0
  269. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/frontend_layers/__init__.py +0 -0
  270. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/frontend_layers/_utils.py +0 -0
  271. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/frontend_layers/cond.py +0 -0
  272. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
  273. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
  274. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/frontend_layers/masked_computation.py +0 -0
  275. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
  276. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/frontend_low_level/__init__.py +0 -0
  277. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/horovod.py +0 -0
  278. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/hyper_param_tuning.py +0 -0
  279. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/layers/__init__.py +0 -0
  280. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/layers/segmental_model.py +0 -0
  281. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/layers/signal_processing.py +0 -0
  282. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/layers/variable.py +0 -0
  283. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/native_op.py +0 -0
  284. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/sprint.py +0 -0
  285. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/updater.py +0 -0
  286. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/util/__init__.py +0 -0
  287. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/util/data.py +0 -0
  288. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/util/gradient_checkpoint.py +0 -0
  289. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/util/ken_lm.py +0 -0
  290. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/tf/util/open_fst.py +0 -0
  291. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/README.md +0 -0
  292. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/__init__.py +0 -0
  293. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/data/__init__.py +0 -0
  294. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/data/pipeline.py +0 -0
  295. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/data/queued_data_iter.py +0 -0
  296. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
  297. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/data/tensor_utils.py +0 -0
  298. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/distributed.py +0 -0
  299. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/engine.py +0 -0
  300. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/frontend/__init__.py +0 -0
  301. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/frontend/_backend.py +0 -0
  302. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/frontend/_rand.py +0 -0
  303. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/frontend/bridge.py +0 -0
  304. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/frontend/raw_ops.py +0 -0
  305. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/optim/README.md +0 -0
  306. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/optim/__init__.py +0 -0
  307. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/optim/lion.py +0 -0
  308. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/updater.py +0 -0
  309. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/util/README.md +0 -0
  310. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/util/__init__.py +0 -0
  311. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/util/array_.py +0 -0
  312. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/util/debug_inf_nan.py +0 -0
  313. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/util/diagnose_gpu.py +0 -0
  314. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/util/exception_helper.py +0 -0
  315. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/util/gradient_checkpoint.py +0 -0
  316. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/util/module.py +0 -0
  317. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/torch/util/scaled_gradient.py +0 -0
  318. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/__init__.py +0 -0
  319. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/better_exchook.py +0 -0
  320. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/bpe.py +0 -0
  321. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/debug.py +0 -0
  322. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/debug_helpers.py +0 -0
  323. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/file_cache.py +0 -0
  324. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/fsa.py +0 -0
  325. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/literal_py_to_pickle.py +0 -0
  326. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/lru_cache.py +0 -0
  327. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/math.py +0 -0
  328. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
  329. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/native_code_compiler.py +0 -0
  330. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/pprint.py +0 -0
  331. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/py-to-pickle.cpp +0 -0
  332. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/py_ext_mod_compiler.py +0 -0
  333. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/result_with_reason.py +0 -0
  334. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/sig_proc.py +0 -0
  335. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/task_system.py +0 -0
  336. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/train_proc_manager.py +0 -0
  337. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn/util/watch_memory.py +0 -0
  338. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn.egg-info/SOURCES.txt +0 -0
  339. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn.egg-info/dependency_links.txt +0 -0
  340. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/returnn.egg-info/top_level.txt +0 -0
  341. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/rnn.py +0 -0
  342. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/setup.cfg +0 -0
  343. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/setup.py +0 -0
  344. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/DummySprintExec.py +0 -0
  345. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/PyCharm-inspection-profile.xml +0 -0
  346. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/PyCharm.idea/.gitignore +0 -0
  347. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/PyCharm.idea/.name +0 -0
  348. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
  349. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
  350. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
  351. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
  352. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
  353. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/PyCharm.idea/misc.xml +0 -0
  354. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/PyCharm.idea/modules.xml +0 -0
  355. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/PyCharm.idea/returnn.iml +0 -0
  356. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
  357. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/_set_num_threads1.py +0 -0
  358. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/_setup_returnn_env.py +0 -0
  359. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/_setup_test_env.py +0 -0
  360. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/bpe-unicode-demo.codes +0 -0
  361. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/bpe-unicode-demo.vocab +0 -0
  362. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/lexicon_opt.fst +0 -0
  363. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/lexicon_opt.isyms +0 -0
  364. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/lexicon_opt.jpg +0 -0
  365. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/lexicon_opt.osyms +0 -0
  366. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/lint_common.py +0 -0
  367. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/pycharm-inspect.py +0 -0
  368. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/pylint.py +0 -0
  369. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/returnn-as-framework.py +0 -0
  370. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/spelling.dic +0 -0
  371. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_Config.py +0 -0
  372. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_Dataset.py +0 -0
  373. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_Fsa.py +0 -0
  374. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_GeneratingDataset.py +0 -0
  375. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_HDFDataset.py +0 -0
  376. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_LearningRateControl.py +0 -0
  377. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_Log.py +0 -0
  378. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_MultiProcDataset.py +0 -0
  379. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_Pretrain.py +0 -0
  380. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_ResNet.py +0 -0
  381. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_SprintDataset.py +0 -0
  382. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_SprintInterface.py +0 -0
  383. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_TFEngine.py +0 -0
  384. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_TFNativeOp.py +0 -0
  385. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_TFNetworkLayer.py +0 -0
  386. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_TFNetworkRecLayer.py +0 -0
  387. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_TFNetworkSigProcLayer.py +0 -0
  388. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_TFUpdater.py +0 -0
  389. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_TF_determinism.py +0 -0
  390. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_TaskSystem.py +0 -0
  391. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_TaskSystem_SharedMem.py +0 -0
  392. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_TranslationDataset.py +0 -0
  393. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_Util.py +0 -0
  394. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_demos.py +0 -0
  395. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_fork_exec.py +0 -0
  396. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_hdf_dump.py +0 -0
  397. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_rf_array.py +0 -0
  398. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_rf_attention.py +0 -0
  399. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_rf_base.py +0 -0
  400. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_rf_cond.py +0 -0
  401. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_rf_const.py +0 -0
  402. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_rf_container.py +0 -0
  403. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_rf_conv.py +0 -0
  404. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_rf_decoder_transformer.py +0 -0
  405. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_rf_encoder_conformer.py +0 -0
  406. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_rf_gradient.py +0 -0
  407. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_rf_label_smoothing.py +0 -0
  408. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_rf_loop.py +0 -0
  409. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_rf_math.py +0 -0
  410. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_rf_normalization.py +0 -0
  411. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_rf_piecewise_linear.py +0 -0
  412. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_rf_rec.py +0 -0
  413. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_rf_reduce.py +0 -0
  414. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_rf_signal.py +0 -0
  415. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_tensor.py +0 -0
  416. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_threading.py +0 -0
  417. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_tools.py +0 -0
  418. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_torch_dataset.py +0 -0
  419. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_torch_engine.py +0 -0
  420. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_torch_frontend.py +0 -0
  421. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_torch_internal_frontend.py +0 -0
  422. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/test_torch_util.py +0 -0
  423. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tests/torch_utils.py +0 -0
  424. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/_setup_returnn_env.py +0 -0
  425. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/analyze-dataset-batches.py +0 -0
  426. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/bliss-collect-seq-lens.py +0 -0
  427. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/bliss-dump-text.py +0 -0
  428. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/bliss-get-segment-names.py +0 -0
  429. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/bliss-to-ogg-zip.py +0 -0
  430. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/bpe-create-lexicon.py +0 -0
  431. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/calculate-word-error-rate.py +0 -0
  432. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/cleanup-old-models.py +0 -0
  433. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/collect-orth-symbols.py +0 -0
  434. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/collect-words.py +0 -0
  435. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/compile_native_op.py +0 -0
  436. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/debug-dump-search-scores.py +0 -0
  437. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/debug-plot-search-scores.py +0 -0
  438. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/dump-dataset-raw-strings.py +0 -0
  439. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/dump-dataset.py +0 -0
  440. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/dump-forward-stats.py +0 -0
  441. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/dump-forward.py +0 -0
  442. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/dump-network-json.py +0 -0
  443. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/dump-pickle.py +0 -0
  444. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/extract_state_tying_from_dataset.py +0 -0
  445. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/get-attention-weights.py +0 -0
  446. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/get-best-model-epoch.py +0 -0
  447. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/hdf_dump.py +0 -0
  448. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/hdf_dump_translation_dataset.py +0 -0
  449. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/import-blocks-mt-model.py +0 -0
  450. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/import-t2t-mt-model.py +0 -0
  451. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/lattice_rescorer/.gitignore +0 -0
  452. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/lattice_rescorer/Makefile +0 -0
  453. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/lattice_rescorer/README.md +0 -0
  454. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/lattice_rescorer/example/README.md +0 -0
  455. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/lattice_rescorer/example/libs_list +0 -0
  456. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
  457. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
  458. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
  459. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/lattice_rescorer/example/state_vars_list +0 -0
  460. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/lattice_rescorer/example/tensor_names_list +0 -0
  461. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/lattice_rescorer/file.h +0 -0
  462. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
  463. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
  464. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/lattice_rescorer/main.cc +0 -0
  465. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/lattice_rescorer/rescorer.h +0 -0
  466. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/lattice_rescorer/vocabulary.cc +0 -0
  467. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/lattice_rescorer/vocabulary.h +0 -0
  468. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/tf_avg_checkpoints.py +0 -0
  469. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/tf_inspect_checkpoint.py +0 -0
  470. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/tf_inspect_summary_log.py +0 -0
  471. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/torch_avg_checkpoints.py +0 -0
  472. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/tools/torch_inspect_checkpoint.py +0 -0
  473. {returnn-1.20250122.134518 → returnn-1.20250123.173545}/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.20250122.134518
3
+ Version: 1.20250123.173545
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.20250123.173545'
2
+ long_version = '1.20250123.173545+git.5dab449'
@@ -7,13 +7,16 @@ from __future__ import annotations
7
7
  __author__ = "Patrick Doetsch"
8
8
  __credits__ = ["Patrick Doetsch", "Paul Voigtlaender"]
9
9
 
10
- from typing import Optional, Any, Dict, List
10
+ from typing import TypeVar, Type, Optional, Union, Any, Dict, List, Sequence, Tuple
11
11
  import contextlib
12
12
  import sys
13
13
  import os
14
14
  import types as _types
15
15
 
16
16
 
17
+ T = TypeVar("T")
18
+
19
+
17
20
  class Config:
18
21
  """
19
22
  Reads in some config file, and provides access to the key/value items.
@@ -140,11 +143,10 @@ class Config:
140
143
  self.add_line(key=line[0], value=line[1])
141
144
 
142
145
  @classmethod
143
- def get_config_file_type(cls, f):
146
+ def get_config_file_type(cls, f: str) -> str:
144
147
  """
145
- :param str f: file path
148
+ :param f: file path
146
149
  :return: "py", "js" or "txt"
147
- :rtype: str
148
150
  """
149
151
  with open(f, "r") as f:
150
152
  start = f.read(3)
@@ -154,9 +156,9 @@ class Config:
154
156
  return "js"
155
157
  return "txt"
156
158
 
157
- def parse_cmd_args(self, args):
159
+ def parse_cmd_args(self, args: Sequence[str]):
158
160
  """
159
- :param list[str]|tuple[str] args:
161
+ :param args:
160
162
  """
161
163
  from optparse import OptionParser
162
164
 
@@ -262,11 +264,12 @@ class Config:
262
264
  value = value[1:] # otherwise we never could specify things like "++threshold -0.1"
263
265
  self.add_line(key=key[2:], value=value)
264
266
 
265
- def add_line(self, key, value):
267
+ def add_line(self, key: str, value: str):
266
268
  """
267
269
  Adds one specific configuration (key,value) pair to the inner set of parameters
268
- :type key: str
269
- :type value: str
270
+
271
+ :param key:
272
+ :param value:
270
273
  """
271
274
  if key in self.typed_dict:
272
275
  # This is a special case. We overwrite a config value which was typed before.
@@ -300,69 +303,65 @@ class Config:
300
303
  else:
301
304
  self.dict[key] = value
302
305
 
303
- def has(self, key):
306
+ def has(self, key: str) -> bool:
304
307
  """
305
308
  Returns whether the given key is present in the inner set of parameters
306
- :type key: string
307
- :rtype: boolean
308
- :returns True if and only if the given key is in the inner set of parameters
309
+
310
+ :param key:
311
+ :returns: True if and only if the given key is in the inner set of parameters
309
312
  """
310
313
  if key in self.typed_dict:
311
314
  return True
312
315
  return key in self.dict
313
316
 
314
- def is_typed(self, key):
317
+ def is_typed(self, key: str) -> bool:
315
318
  """
316
- :type key: string
317
- :rtype: boolean
318
- :returns True if and only if the value of the given key has a specified data type
319
+ :param key:
320
+ :returns: True if and only if the value of the given key has a specified data type
319
321
  """
320
322
  return key in self.typed_dict
321
323
 
322
- def is_true(self, key, default=False):
324
+ def is_true(self, key: str, default: bool = False) -> bool:
323
325
  """
324
- :param str key:
325
- :param bool default:
326
+ :param key:
327
+ :param default:
326
328
  :return: bool(value) if it is set or default
327
- :rtype: bool
328
329
  """
329
330
  if self.is_typed(key):
330
331
  return bool(self.typed_dict[key])
331
332
  return self.bool(key, default=default)
332
333
 
333
- def is_of_type(self, key, types):
334
+ def is_of_type(self, key: str, types: Union[type, Tuple[type, ...]]) -> bool:
334
335
  """
335
- :param str key:
336
- :param type|tuple[type] types: for isinstance() check
336
+ :param key:
337
+ :param types: for isinstance() check
337
338
  :return: whether is_typed(key) is True and isinstance(value, types) is True
338
- :rtype: bool
339
339
  """
340
340
  if key in self.typed_dict:
341
341
  return isinstance(self.typed_dict[key], types)
342
342
  return False
343
343
 
344
- def get_of_type(self, key, types, default=None):
344
+ def get_of_type(self, key: str, types: Union[type, Tuple[type, ...], Type[T]], default: Optional[T] = None) -> T:
345
345
  """
346
346
  :param str key:
347
- :param type|list[type]|T types: for isinstance() check
348
- :param T|None default:
347
+ :param types: for isinstance() check
348
+ :param default:
349
349
  :return: if is_of_type(key, types) is True, returns the value, otherwise default
350
- :rtype: T
351
350
  """
352
351
  if self.is_of_type(key, types):
353
352
  return self.typed_dict[key]
354
353
  return default
355
354
 
356
- def set(self, key, value):
355
+ def set(self, key: str, value: Any):
357
356
  """
358
- :type key: str
359
- :type value: list[str] | str | int | float | bool | dict | None
357
+ :param key:
358
+ :param value:
360
359
  """
361
360
  self.typed_dict[key] = value
362
361
 
363
- def update(self, dikt):
362
+ def update(self, dikt: Dict[str, Any]):
364
363
  """
365
- :type dikt: dict
364
+ :param dikt: dict
366
365
  """
367
366
  for key, value in dikt.items():
368
367
  self.set(key, value)
@@ -383,13 +382,12 @@ class Config:
383
382
 
384
383
  setattr(self, "value", wrapped_value_func)
385
384
 
386
- def value(self, key, default, index=None, list_join_str=","):
385
+ def value(self, key: str, default: T, index: Optional[int] = None, list_join_str: str = ",") -> Union[T, str]:
387
386
  """
388
- :type key: str
389
- :type default: T
390
- :type index: int | None
391
- :param str list_join_str:
392
- :rtype: str | T
387
+ :param key:
388
+ :param default:
389
+ :param index:
390
+ :param list_join_str:
393
391
  """
394
392
  if key in self.typed_dict:
395
393
  ls = self.typed_dict[key]
@@ -410,12 +408,11 @@ class Config:
410
408
  return ls[index]
411
409
  return default
412
410
 
413
- def typed_value(self, key, default=None, index=None):
411
+ def typed_value(self, key: str, default: Optional[T] = None, index: Optional[int] = None) -> Union[T, Any]:
414
412
  """
415
- :type key: str
416
- :type default: T
417
- :type index: int | None
418
- :rtype: T | typing.Any
413
+ :param key:
414
+ :param default:
415
+ :param index:
419
416
  """
420
417
  value = self.typed_dict.get(key, default)
421
418
  if index is not None:
@@ -426,23 +423,22 @@ class Config:
426
423
  assert index == 0
427
424
  return value
428
425
 
429
- def opt_typed_value(self, key, default=None):
426
+ def opt_typed_value(self, key: str, default: Optional[T] = None) -> Union[T, Any, str]:
430
427
  """
431
- :param str key:
432
- :param T|None default:
433
- :rtype: T|object|str|None
428
+ :param key:
429
+ :param default:
434
430
  """
435
431
  if key in self.typed_dict:
436
432
  return self.typed_dict[key]
437
433
  return self.value(key, default)
438
434
 
439
- def int(self, key, default, index=0):
435
+ def int(self, key: str, default: T, index: int = 0) -> Union[int, T]:
440
436
  """
441
437
  Parses the value of the given key as integer, returning default if not existent
442
- :type key: str
443
- :type default: T
444
- :type index: int
445
- :rtype: int | T
438
+
439
+ :param key:
440
+ :param default:
441
+ :param index:
446
442
  """
447
443
  if key in self.typed_dict:
448
444
  value = self.typed_value(key, default=default, index=index)
@@ -453,13 +449,13 @@ class Config:
453
449
  return int(self.value(key, default, index))
454
450
  return default
455
451
 
456
- def bool(self, key, default, index=0):
452
+ def bool(self, key: str, default: T, index: int = 0) -> Union[bool, T]:
457
453
  """
458
454
  Parses the value of the given key as boolean, returning default if not existent
459
- :type key: str
460
- :type default: T
461
- :type index: int
462
- :rtype: bool | T
455
+
456
+ :param key:
457
+ :param default:
458
+ :param index:
463
459
  """
464
460
  if key in self.typed_dict:
465
461
  value = self.typed_value(key, default=default, index=index)
@@ -477,13 +473,12 @@ class Config:
477
473
 
478
474
  return to_bool(v)
479
475
 
480
- def bool_or_other(self, key, default=None, index=0):
476
+ def bool_or_other(self, key: str, default: Optional[T] = None, index: int = 0) -> Union[bool, T, Any]:
481
477
  """
482
- :param str key:
483
- :param T default:
484
- :param int index:
478
+ :param key:
479
+ :param default:
480
+ :param index:
485
481
  :return: if we have typed value, just as-is. otherwise try to convert to bool. or default if not there.
486
- :rtype: bool|T|object
487
482
  """
488
483
  if key in self.typed_dict:
489
484
  return self.typed_value(key, default=default, index=index)
@@ -499,13 +494,13 @@ class Config:
499
494
  except ValueError:
500
495
  return v
501
496
 
502
- def float(self, key, default, index=0):
497
+ def float(self, key: str, default: T, index: int = 0) -> Union[float, T]:
503
498
  """
504
499
  Parses the value of the given key as float, returning default if not existent
505
- :type key: str
506
- :type default: T
507
- :type index: int
508
- :rtype: float | T
500
+
501
+ :param key:
502
+ :param default:
503
+ :param index:
509
504
  """
510
505
  if key in self.typed_dict:
511
506
  value = self.typed_value(key, default=default, index=index)
@@ -519,11 +514,10 @@ class Config:
519
514
  assert isinstance(value, (int, float))
520
515
  return value
521
516
 
522
- def list(self, key, default=None):
517
+ def list(self, key: str, default: Optional[T] = None) -> Union[List[str], T]:
523
518
  """
524
- :type key: str
525
- :type default: T
526
- :rtype: list[str] | T
519
+ :param key:
520
+ :param default:
527
521
  """
528
522
  if default is None:
529
523
  default = []
@@ -538,11 +532,10 @@ class Config:
538
532
  return default
539
533
  return self.dict[key]
540
534
 
541
- def int_list(self, key, default=None):
535
+ def int_list(self, key: str, default: Optional[T] = None) -> Union[List[int], T]:
542
536
  """
543
- :type key: str
544
- :type default: T
545
- :rtype: list[int] | T
537
+ :param key:
538
+ :param default:
546
539
  """
547
540
  if default is None:
548
541
  default = []
@@ -557,11 +550,10 @@ class Config:
557
550
  return list(value)
558
551
  return [int(x) for x in self.list(key, default)]
559
552
 
560
- def float_list(self, key, default=None):
553
+ def float_list(self, key: str, default: Optional[T] = None) -> Union[List[float], T]:
561
554
  """
562
- :type key: str
563
- :type default: T
564
- :rtype: list[float] | T
555
+ :param key:
556
+ :param default:
565
557
  """
566
558
  if default is None:
567
559
  default = []
@@ -576,11 +568,10 @@ class Config:
576
568
  return list(value)
577
569
  return [float(x) for x in self.list(key, default)]
578
570
 
579
- def int_pair(self, key, default=None):
571
+ def int_pair(self, key: str, default: Optional[Tuple[int, int]] = None) -> Tuple[int, int]:
580
572
  """
581
- :param str key:
582
- :param (int,int)|None default:
583
- :rtype: (int,int)
573
+ :param key:
574
+ :param default:
584
575
  """
585
576
  if default is None:
586
577
  default = (0, 0)
@@ -176,7 +176,7 @@ class DimWrapper:
176
176
  # We need some ref to the dyn size, and finalize this key when it goes out of scope.
177
177
  # This is only needed when there is no info on the static size (or eager scalar dyn size).
178
178
  ref(dim.dyn_size_ext.raw_tensor, finalize_callback)
179
- if self.dim_value is None and dim.dyn_size_ext and dim.dyn_size_ext.raw_tensor is not None
179
+ if self.dim_value is None and dim.dyn_size_ext is not None and dim.dyn_size_ext.raw_tensor is not None
180
180
  else None
181
181
  )
182
182
  self._hash = hash(dim) if self.dim_value is None else hash(self.dim_value)
@@ -195,7 +195,7 @@ class DimWrapper:
195
195
  def _dim_value_for_key(dim: Dim) -> Optional[int]:
196
196
  if dim.size is not None:
197
197
  return dim.size
198
- if dim.dyn_size_ext and not dim.dyn_size_ext.dims:
198
+ if dim.dyn_size_ext is not None and not dim.dyn_size_ext.dims:
199
199
  if dim.dyn_size_ext.raw_tensor is not None:
200
200
  # noinspection PyProtectedMember
201
201
  if dim.dyn_size_ext._raw_backend.executing_eagerly():
@@ -112,6 +112,8 @@ def setup():
112
112
  for name, cur_func in _TensorOpOverloadsMixin.__dict__.items(): # just all of them
113
113
  if not callable(cur_func):
114
114
  continue
115
+ if name in {"__bool__"}: # some exceptions
116
+ continue
115
117
  assert name.startswith("__") and name.endswith("__")
116
118
  native_func = getattr(mod, "_tensor_" + name[2:-2] + "_instancemethod")
117
119
  assert callable(native_func)
@@ -58,7 +58,7 @@ class RandomJournal:
58
58
  """read next"""
59
59
  assert self._cur_entry_idx < len(self._entries)
60
60
  entry = self._entries[self._cur_entry_idx]
61
- if new_out_template:
61
+ if new_out_template is not None:
62
62
  assert new_out_template.dtype == entry.out.dtype, (
63
63
  f"random journal entry dtype mismatch,"
64
64
  f" expected {new_out_template}, got {entry.out} at index {self._cur_entry_idx}"
@@ -649,7 +649,7 @@ def make_conv_out_spatial_dims(
649
649
  assert isinstance(out_spatial_dim, Dim)
650
650
  if description_prefix and out_spatial_dim != in_spatial_dim:
651
651
  out_spatial_dim.name = f"{description_prefix}:spatial{i}"
652
- if in_spatial_dim.dyn_size_ext and out_spatial_dim.dyn_size_ext is None:
652
+ if in_spatial_dim.dyn_size_ext is not None and out_spatial_dim.dyn_size_ext is None:
653
653
  out_spatial_dim.dyn_size_ext = _calc_out_dim(
654
654
  in_dim=in_spatial_dim.dyn_size_ext,
655
655
  filter_size=filter_size[i],
@@ -166,7 +166,7 @@ def num_elements_of_shape(
166
166
  for j, dim_ in enumerate(dims):
167
167
  if i == j:
168
168
  continue
169
- if dim_.dyn_size_ext and dim in dim_.dyn_size_ext.dims:
169
+ if dim_.dyn_size_ext is not None and dim in dim_.dyn_size_ext.dims:
170
170
  related_dims.append(dim_)
171
171
  if not related_dims:
172
172
  if dim.is_static():
@@ -52,7 +52,7 @@ class LSTM(rf.Module):
52
52
  :return: output of shape {...,out_dim} if spatial_dim is single_step_dim else {...,spatial_dim,out_dim},
53
53
  and new state of the LSTM.
54
54
  """
55
- if not state.h or not state.c:
55
+ if state.h is None or state.c is None:
56
56
  raise ValueError(f"{self}: state {state} needs attributes ``h`` (hidden) and ``c`` (cell).")
57
57
  if self.in_dim not in source.dims:
58
58
  raise ValueError(f"{self}: input {source} does not have in_dim {self.in_dim}")
@@ -188,7 +188,7 @@ class ZoneoutLSTM(LSTM):
188
188
  :return: output of shape {...,out_dim} if spatial_dim is single_step_dim else {...,spatial_dim,out_dim},
189
189
  and new state of the LSTM.
190
190
  """
191
- if not state.h or not state.c:
191
+ if state.h is None or state.c is None:
192
192
  raise ValueError(f"{self}: state {state} needs attributes ``h`` (hidden) and ``c`` (cell).")
193
193
  if self.in_dim not in source.dims:
194
194
  raise ValueError(f"{self}: input {source} does not have in_dim {self.in_dim}")
@@ -272,9 +272,9 @@ class RunCtx:
272
272
  assert dims is None or (
273
273
  isinstance(dims, (list, tuple)) and all(isinstance(dim, Dim) for dim in dims)
274
274
  ), f"dims should be a tuple of Dims, got {dims}"
275
- if dims is None and expected_output:
275
+ if dims is None and expected_output is not None:
276
276
  dims = expected_output.dims
277
- if dims is not None and expected_output:
277
+ if dims is not None and expected_output is not None:
278
278
  assert expected_output.dims == tuple(
279
279
  dims
280
280
  ), f"mark_as_output: {name!r} dims mismatch from expected output, given {dims}, expected {expected_output}"
@@ -304,7 +304,7 @@ class RunCtx:
304
304
  assert name not in self.outputs.data
305
305
  self.outputs.data[name] = tensor
306
306
 
307
- if expected_output:
307
+ if expected_output is not None:
308
308
  # Perform sanity checks using the expected output.
309
309
  # The expected output usually comes from `model_outputs` from the user config.
310
310
  # The dimensions of `expected_output` and `tensor` should match,
@@ -429,7 +429,7 @@ class Loss:
429
429
  """
430
430
  if self._mean_loss_cached is not None:
431
431
  return self._mean_loss_cached
432
- if self.custom_inv_norm_factor:
432
+ if self.custom_inv_norm_factor is not None:
433
433
  loss = self.get_summed_loss()
434
434
  inv_norm = rf.reduce_sum(self.custom_inv_norm_factor, axis=self.custom_inv_norm_factor.dims)
435
435
  inv_norm = rf.cast(inv_norm, loss.dtype)
@@ -446,7 +446,7 @@ class Loss:
446
446
  """
447
447
  :return: inverse norm factor (scalar)
448
448
  """
449
- if self.custom_inv_norm_factor:
449
+ if self.custom_inv_norm_factor is not None:
450
450
  if self.custom_inv_norm_factor.dims:
451
451
  return rf.reduce_sum(self.custom_inv_norm_factor, axis=self.custom_inv_norm_factor.dims)
452
452
  return self.custom_inv_norm_factor
@@ -500,7 +500,7 @@ def _output_tensor_from_raw(raw_tensor, *, dims: Optional[Sequence[Dim]], name:
500
500
  assert isinstance(raw_tensor, _backend.global_backend.RawTensorType)
501
501
  tensor = rf.convert_to_tensor(raw_tensor, dims=dims)
502
502
  for axis, dim in enumerate(tensor.dims):
503
- if dim.dyn_size_ext and dim.dyn_size_ext.raw_tensor is None:
503
+ if dim.dyn_size_ext is not None and dim.dyn_size_ext.raw_tensor is None:
504
504
  # Only non-scalar dyn sizes matter.
505
505
  if dim.dyn_size_ext.dims:
506
506
  raise Exception(