returnn 1.20230719.125702__tar.gz → 1.20230727.163234__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.
Files changed (403) hide show
  1. {returnn-1.20230719.125702/returnn.egg-info → returnn-1.20230727.163234}/PKG-INFO +1 -1
  2. returnn-1.20230727.163234/_setup_info_generated.py +2 -0
  3. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-rf.config +1 -1
  4. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-torch.config +2 -1
  5. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/run_ctx.py +3 -10
  6. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/tensor_dict.py +46 -19
  7. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/native_op.py +1 -1
  8. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/engine.py +2 -0
  9. {returnn-1.20230719.125702 → returnn-1.20230727.163234/returnn.egg-info}/PKG-INFO +1 -1
  10. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/rf_utils.py +4 -4
  11. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_demos.py +64 -4
  12. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/torch_export_to_onnx.py +44 -10
  13. returnn-1.20230719.125702/_setup_info_generated.py +0 -2
  14. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/.editorconfig +0 -0
  15. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/.gitignore +0 -0
  16. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/.gitmodules +0 -0
  17. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/.kateconfig +0 -0
  18. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/CHANGELOG.md +0 -0
  19. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/CODEOWNERS +0 -0
  20. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/CONTRIBUTING.md +0 -0
  21. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/LICENSE +0 -0
  22. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/MANIFEST.in +0 -0
  23. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/README.rst +0 -0
  24. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/__init__.py +0 -0
  25. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/12AX.cluster_map +0 -0
  26. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/_setup_returnn_env.py +0 -0
  27. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-fwd.config +0 -0
  28. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-horovod-mpi.py +0 -0
  29. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-horovod-mpi.py.sh +0 -0
  30. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-horovod-mpi.sh +0 -0
  31. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-hyper-param-tuning.config +0 -0
  32. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-iter-dataset.py +0 -0
  33. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-list-devices.py +0 -0
  34. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-lua-torch-layer.config +0 -0
  35. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-pretrain.config +0 -0
  36. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-record-and-push-to-webserver.py +0 -0
  37. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-returnn-as-framework.py +0 -0
  38. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-rhn-enwik8.config +0 -0
  39. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-sprint-interface.py +0 -0
  40. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-att-copy.config +0 -0
  41. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-attention.config +0 -0
  42. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
  43. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
  44. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-enc-dec.config +0 -0
  45. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-hard-att-copy.config +0 -0
  46. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-lstm-benchmark.py +0 -0
  47. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
  48. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
  49. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-native-lstm.12ax.config +0 -0
  50. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-native-lstm2.12ax.config +0 -0
  51. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
  52. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-neural-transducer.12ax.config +0 -0
  53. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-rec-explicit-lstm.config +0 -0
  54. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-rec-explicit-rnn.config +0 -0
  55. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-rec-self-att.config +0 -0
  56. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-search-compiled-graph.py +0 -0
  57. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
  58. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-timit-lstm-ctc.config +0 -0
  59. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
  60. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/demo.sh +0 -0
  61. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
  62. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
  63. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
  64. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/README.txt +0 -0
  65. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/chars.txt +0 -0
  66. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/config_demo +0 -0
  67. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/config_fwd +0 -0
  68. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/config_real +0 -0
  69. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
  70. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/decode.py +0 -0
  71. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
  72. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/go.sh +0 -0
  73. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/lines.txt +0 -0
  74. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/split/eval.txt +0 -0
  75. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/split/train.txt +0 -0
  76. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/IAM/split/valid.txt +0 -0
  77. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/README.md +0 -0
  78. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/artificial/create_test_h5.py +0 -0
  79. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/artificial/forwardconfig +0 -0
  80. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/artificial/go.sh +0 -0
  81. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/artificial/trainconfig +0 -0
  82. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
  83. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
  84. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/artificial_rgb/go.sh +0 -0
  85. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
  86. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/pyproject.toml +0 -0
  87. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/requirements.txt +0 -0
  88. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/__init__.py +0 -0
  89. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/__main__.py +0 -0
  90. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/__old_mod_loader__.py +0 -0
  91. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/__setup__.py +0 -0
  92. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/config.py +0 -0
  93. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/__init__.py +0 -0
  94. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/audio.py +0 -0
  95. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/basic.py +0 -0
  96. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/bundle_file.py +0 -0
  97. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/cached.py +0 -0
  98. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/cached2.py +0 -0
  99. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/generating.py +0 -0
  100. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/hdf.py +0 -0
  101. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/lm.py +0 -0
  102. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/map.py +0 -0
  103. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/meta.py +0 -0
  104. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/multi_proc.py +0 -0
  105. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/normalization_data.py +0 -0
  106. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/numpy_dump.py +0 -0
  107. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/raw_wav.py +0 -0
  108. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/sprint.py +0 -0
  109. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/stereo.py +0 -0
  110. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/util/__init__.py +0 -0
  111. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/util/feature_extraction.py +0 -0
  112. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/datasets/util/vocabulary.py +0 -0
  113. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/engine/__init__.py +0 -0
  114. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/engine/base.py +0 -0
  115. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/engine/batch.py +0 -0
  116. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/__init__.py +0 -0
  117. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/__main__.py +0 -0
  118. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/.git +0 -0
  119. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
  120. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
  121. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
  122. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
  123. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
  124. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
  125. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
  126. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
  127. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
  128. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
  129. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
  130. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
  131. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
  132. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
  133. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
  134. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
  135. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
  136. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
  137. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
  138. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
  139. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
  140. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
  141. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
  142. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
  143. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/__init__.py +0 -0
  144. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/graph_editor/README.md +0 -0
  145. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/graph_editor/__init__.py +0 -0
  146. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/graph_editor/edit.py +0 -0
  147. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/graph_editor/reroute.py +0 -0
  148. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/graph_editor/select.py +0 -0
  149. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/graph_editor/subgraph.py +0 -0
  150. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/graph_editor/transform.py +0 -0
  151. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/extern/graph_editor/util.py +0 -0
  152. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/forward_iface.py +0 -0
  153. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/__init__.py +0 -0
  154. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/_backend.py +0 -0
  155. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/_numpy_backend.py +0 -0
  156. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/_utils.py +0 -0
  157. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/array_.py +0 -0
  158. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/attention.py +0 -0
  159. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/cond.py +0 -0
  160. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/const.py +0 -0
  161. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/container.py +0 -0
  162. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/control_flow_ctx.py +0 -0
  163. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/conv.py +0 -0
  164. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/device.py +0 -0
  165. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/dims.py +0 -0
  166. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/dropout.py +0 -0
  167. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/dtype.py +0 -0
  168. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/encoder/__init__.py +0 -0
  169. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/encoder/base.py +0 -0
  170. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/encoder/conformer.py +0 -0
  171. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/gradient.py +0 -0
  172. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/init.py +0 -0
  173. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/linear.py +0 -0
  174. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/loop.py +0 -0
  175. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/loss.py +0 -0
  176. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/math_.py +0 -0
  177. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/matmul.py +0 -0
  178. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/module.py +0 -0
  179. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/normalization.py +0 -0
  180. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/parameter.py +0 -0
  181. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/rand.py +0 -0
  182. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/rec.py +0 -0
  183. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/reduce.py +0 -0
  184. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/signal.py +0 -0
  185. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/state.py +0 -0
  186. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/tensor_array.py +0 -0
  187. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/frontend/types.py +0 -0
  188. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/import_/__init__.py +0 -0
  189. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/import_/common.py +0 -0
  190. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/import_/git.py +0 -0
  191. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/import_/import_.py +0 -0
  192. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/learning_rate_control.py +0 -0
  193. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/log.py +0 -0
  194. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/native_op.cpp +0 -0
  195. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/native_op.py +0 -0
  196. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/pretrain.py +0 -0
  197. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/sprint/__init__.py +0 -0
  198. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/sprint/cache.py +0 -0
  199. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/sprint/control.py +0 -0
  200. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/sprint/error_signals.py +0 -0
  201. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/sprint/extern_interface.py +0 -0
  202. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/sprint/interface.py +0 -0
  203. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/README.md +0 -0
  204. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/__init__.py +0 -0
  205. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/_dim_extra.py +0 -0
  206. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/_tensor_extra.py +0 -0
  207. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/_tensor_mixin_base.py +0 -0
  208. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/_tensor_op_overloads.py +0 -0
  209. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/control_flow_ctx.py +0 -0
  210. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/dim.py +0 -0
  211. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/marked_dim.py +0 -0
  212. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/tensor.py +0 -0
  213. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tensor/utils.py +0 -0
  214. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/__init__.py +0 -0
  215. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/compat.py +0 -0
  216. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/data_pipeline.py +0 -0
  217. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/distributed.py +0 -0
  218. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/engine.py +0 -0
  219. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/__init__.py +0 -0
  220. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/_backend.py +0 -0
  221. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/_utils.py +0 -0
  222. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/cond.py +0 -0
  223. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
  224. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
  225. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/dims.py +0 -0
  226. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/layer.py +0 -0
  227. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/make_layer.py +0 -0
  228. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
  229. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
  230. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_low_level/__init__.py +0 -0
  231. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/frontend_low_level/_backend.py +0 -0
  232. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/horovod.py +0 -0
  233. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/hyper_param_tuning.py +0 -0
  234. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/layers/__init__.py +0 -0
  235. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/layers/base.py +0 -0
  236. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/layers/basic.py +0 -0
  237. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/layers/rec.py +0 -0
  238. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/layers/segmental_model.py +0 -0
  239. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/layers/signal_processing.py +0 -0
  240. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/layers/variable.py +0 -0
  241. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/network.py +0 -0
  242. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/sprint.py +0 -0
  243. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/updater.py +0 -0
  244. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/util/__init__.py +0 -0
  245. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/util/basic.py +0 -0
  246. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/util/data.py +0 -0
  247. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/util/gradient_checkpoint.py +0 -0
  248. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/util/ken_lm.py +0 -0
  249. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/tf/util/open_fst.py +0 -0
  250. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/README.md +0 -0
  251. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/__init__.py +0 -0
  252. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/data/__init__.py +0 -0
  253. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/data/pipeline.py +0 -0
  254. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
  255. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/data/tensor_utils.py +0 -0
  256. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/distributed.py +0 -0
  257. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/frontend/__init__.py +0 -0
  258. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/frontend/_backend.py +0 -0
  259. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/frontend/_rand.py +0 -0
  260. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/frontend/bridge.py +0 -0
  261. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/functional/README.md +0 -0
  262. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/functional/__init__.py +0 -0
  263. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/torch/updater.py +0 -0
  264. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/__init__.py +0 -0
  265. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/basic.py +0 -0
  266. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/better_exchook.py +0 -0
  267. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/bpe.py +0 -0
  268. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/debug.py +0 -0
  269. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/debug_helpers.py +0 -0
  270. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/fsa.py +0 -0
  271. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/literal_py_to_pickle.py +0 -0
  272. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/pprint.py +0 -0
  273. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/py-to-pickle.cpp +0 -0
  274. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/py_compat.py +0 -0
  275. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/sig_proc.py +0 -0
  276. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn/util/task_system.py +0 -0
  277. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn.egg-info/SOURCES.txt +0 -0
  278. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn.egg-info/dependency_links.txt +0 -0
  279. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/returnn.egg-info/top_level.txt +0 -0
  280. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/rnn.py +0 -0
  281. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/setup.cfg +0 -0
  282. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/setup.py +0 -0
  283. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/DummySprintExec.py +0 -0
  284. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm-inspection-profile.xml +0 -0
  285. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/.gitignore +0 -0
  286. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/.name +0 -0
  287. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
  288. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
  289. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
  290. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
  291. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
  292. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/misc.xml +0 -0
  293. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/modules.xml +0 -0
  294. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/returnn.iml +0 -0
  295. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
  296. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/_set_num_threads1.py +0 -0
  297. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/_setup_returnn_env.py +0 -0
  298. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/_setup_test_env.py +0 -0
  299. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/bpe-unicode-demo.codes +0 -0
  300. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/bpe-unicode-demo.vocab +0 -0
  301. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/lexicon_opt.fst +0 -0
  302. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/lexicon_opt.isyms +0 -0
  303. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/lexicon_opt.jpg +0 -0
  304. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/lexicon_opt.osyms +0 -0
  305. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/lint_common.py +0 -0
  306. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/pycharm-inspect.py +0 -0
  307. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/pylint.py +0 -0
  308. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/returnn-as-framework.py +0 -0
  309. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/spelling.dic +0 -0
  310. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_Config.py +0 -0
  311. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_Dataset.py +0 -0
  312. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_Fsa.py +0 -0
  313. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_GeneratingDataset.py +0 -0
  314. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_HDFDataset.py +0 -0
  315. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_LearningRateControl.py +0 -0
  316. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_Log.py +0 -0
  317. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_MultiProcDataset.py +0 -0
  318. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_PTDataset.py +0 -0
  319. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_Pretrain.py +0 -0
  320. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_ResNet.py +0 -0
  321. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_SprintDataset.py +0 -0
  322. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_SprintInterface.py +0 -0
  323. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TFEngine.py +0 -0
  324. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TFNativeOp.py +0 -0
  325. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TFNetworkLayer.py +0 -0
  326. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TFNetworkRecLayer.py +0 -0
  327. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TFNetworkSigProcLayer.py +0 -0
  328. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TFUpdater.py +0 -0
  329. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TFUtil.py +0 -0
  330. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TF_determinism.py +0 -0
  331. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TaskSystem.py +0 -0
  332. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TaskSystem_SharedMem.py +0 -0
  333. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_TranslationDataset.py +0 -0
  334. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_Util.py +0 -0
  335. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_fork_exec.py +0 -0
  336. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_hdf_dump.py +0 -0
  337. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_array.py +0 -0
  338. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_attention.py +0 -0
  339. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_base.py +0 -0
  340. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_cond.py +0 -0
  341. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_const.py +0 -0
  342. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_container.py +0 -0
  343. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_conv.py +0 -0
  344. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_encoder_conformer.py +0 -0
  345. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_loop.py +0 -0
  346. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_math.py +0 -0
  347. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_normalization.py +0 -0
  348. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_rec.py +0 -0
  349. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_reduce.py +0 -0
  350. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_rf_signal.py +0 -0
  351. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_tensor.py +0 -0
  352. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_tools.py +0 -0
  353. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_torch_engine.py +0 -0
  354. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_torch_frontend.py +0 -0
  355. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tests/test_torch_internal_frontend.py +0 -0
  356. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/_setup_returnn_env.py +0 -0
  357. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/analyze-dataset-batches.py +0 -0
  358. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/bliss-collect-seq-lens.py +0 -0
  359. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/bliss-dump-text.py +0 -0
  360. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/bliss-get-segment-names.py +0 -0
  361. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/bliss-to-ogg-zip.py +0 -0
  362. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/bpe-create-lexicon.py +0 -0
  363. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/calculate-word-error-rate.py +0 -0
  364. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/cleanup-old-models.py +0 -0
  365. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/collect-orth-symbols.py +0 -0
  366. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/collect-words.py +0 -0
  367. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/compile_native_op.py +0 -0
  368. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/compile_tf_graph.py +0 -0
  369. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/debug-dump-search-scores.py +0 -0
  370. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/debug-plot-search-scores.py +0 -0
  371. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/dump-dataset-raw-strings.py +0 -0
  372. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/dump-dataset.py +0 -0
  373. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/dump-forward-stats.py +0 -0
  374. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/dump-forward.py +0 -0
  375. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/dump-network-json.py +0 -0
  376. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/dump-pickle.py +0 -0
  377. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/extract_state_tying_from_dataset.py +0 -0
  378. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/get-attention-weights.py +0 -0
  379. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/get-best-model-epoch.py +0 -0
  380. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/hdf_dump.py +0 -0
  381. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/hdf_dump_translation_dataset.py +0 -0
  382. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/import-blocks-mt-model.py +0 -0
  383. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/import-t2t-mt-model.py +0 -0
  384. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/.gitignore +0 -0
  385. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/Makefile +0 -0
  386. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/README.md +0 -0
  387. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/example/README.md +0 -0
  388. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/example/libs_list +0 -0
  389. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
  390. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
  391. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
  392. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/example/state_vars_list +0 -0
  393. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/example/tensor_names_list +0 -0
  394. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/file.h +0 -0
  395. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
  396. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
  397. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/main.cc +0 -0
  398. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/rescorer.h +0 -0
  399. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/vocabulary.cc +0 -0
  400. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/lattice_rescorer/vocabulary.h +0 -0
  401. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/tf_avg_checkpoints.py +0 -0
  402. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/tf_inspect_checkpoint.py +0 -0
  403. {returnn-1.20230719.125702 → returnn-1.20230727.163234}/tools/tf_inspect_summary_log.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20230719.125702
3
+ Version: 1.20230727.163234
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.20230727.163234'
2
+ long_version = '1.20230727.163234+git.a7c14af'
@@ -23,7 +23,7 @@ in_dim = Dim(9, name="in")
23
23
  out_dim = Dim(2, name="out")
24
24
  extern_data = {
25
25
  "data": {"dims": (batch_dim, time_dim, in_dim), "dtype": "float32"},
26
- "classes": {"dims": (batch_dim, time_dim), "sparse_dim": out_dim, "dtype": "int32"},
26
+ "classes": {"dims": (batch_dim, time_dim), "sparse_dim": out_dim, "dtype": "int32", "available_for_inference": False},
27
27
  }
28
28
  model_outputs = {
29
29
  "output": {"dims": (batch_dim, time_dim, out_dim), "dtype": "float32"},
@@ -24,7 +24,7 @@ num_inputs = 9
24
24
  num_outputs = 2
25
25
  extern_data = {
26
26
  "data": {"dim": num_inputs},
27
- "classes": {"dim": num_outputs, "sparse": True},
27
+ "classes": {"dim": num_outputs, "sparse": True, "available_for_inference": False},
28
28
  }
29
29
  model_outputs = {
30
30
  "output": {"dim": num_outputs},
@@ -64,6 +64,7 @@ def forward_step(*, model: Model, extern_data: TensorDict):
64
64
  """
65
65
  data = extern_data["data"]
66
66
  out = model(data.raw_tensor)
67
+ rf.get_run_ctx().expected_outputs["output"].dims[1].dyn_size_ext.raw_tensor = data.dims[1].dyn_size_ext.raw_tensor
67
68
  rf.get_run_ctx().mark_as_default_output(tensor=out)
68
69
 
69
70
 
@@ -8,7 +8,6 @@ or forwarding loop.
8
8
 
9
9
  from __future__ import annotations
10
10
  from typing import Optional, Union, Any, Sequence, Dict
11
- import logging
12
11
  from dataclasses import dataclass
13
12
  from returnn.tensor import Tensor, Dim, TensorDict
14
13
  import returnn.frontend as rf
@@ -400,16 +399,10 @@ def _output_tensor_from_raw(raw_tensor, *, dims: Sequence[Dim], name: str) -> Te
400
399
  # however, otherwise, it is ambiguous, so we print a warning that we always use the highest dim size.
401
400
  for axis, dim in enumerate(tensor.dims):
402
401
  if dim.dyn_size_ext and dim.dyn_size_ext.raw_tensor is None:
403
- dim_value_raw = _backend.global_backend.get_shape_tuple_raw(raw_tensor)[axis]
404
- dim_value = rf.convert_to_tensor(dim_value_raw, dims=())
405
- dim_value = rf.cast(dim_value, dtype=dim.dyn_size_ext.dtype)
402
+ # Only non-scalar dyn sizes matter.
406
403
  if dim.dyn_size_ext.dims:
407
- dyn_size = rf.full(dims=dim.dyn_size_ext.dims, fill_value=dim_value)
408
- logging.warning(
404
+ raise Exception(
409
405
  f"Output {name!r} {tensor}: Cannot infer dynamic size for dim {dim}. "
410
- f"Using {dyn_size} as fallback."
406
+ f"You must explicitly specify the dyn size by assigning `{dim}.dyn_size_ext.raw_tensor = ...`."
411
407
  )
412
- else:
413
- dyn_size = dim_value
414
- dim.dyn_size_ext.raw_tensor = dyn_size.raw_tensor
415
408
  return tensor
@@ -75,60 +75,87 @@ class TensorDict:
75
75
  return TensorDict({k: v.copy_template() for k, v in self.data.items()})
76
76
 
77
77
  def as_raw_tensor_dict(
78
- self, *, include_const_sizes: bool = False, expected_type: Union[Type, Sequence[Type]] = object
78
+ self,
79
+ *,
80
+ include_const_sizes: bool = False,
81
+ include_scalar_dyn_sizes: bool = True,
82
+ exclude_duplicate_dims: bool = False,
83
+ expected_value_type: Union[Type, Sequence[Type]] = object,
79
84
  ) -> Dict[str, Any]:
80
85
  """
81
86
  :return: dict of raw tensors, including any sequence lengths / dynamic sizes
82
87
  """
88
+ assert not (include_const_sizes and not include_scalar_dyn_sizes)
89
+ visited_dims = set()
83
90
  out = {}
84
91
  for key, value in self.data.items():
85
92
  assert key not in out
86
93
  assert isinstance(
87
- value.raw_tensor, expected_type
88
- ), f"key {key} {value}: unexpected {type(value.raw_tensor)}, expected {expected_type}"
94
+ value.raw_tensor, expected_value_type
95
+ ), f"key {key} {value}: unexpected {type(value.raw_tensor)}, expected {expected_value_type}"
89
96
  out[key] = value.raw_tensor
90
97
  for i, dim in enumerate(value.dims):
98
+ if exclude_duplicate_dims and dim in visited_dims:
99
+ continue
91
100
  key_ = f"{key}:size{i}"
92
101
  assert key_ not in out
93
102
  if dim.is_batch_dim() and (not dim.dyn_size_ext or dim.dyn_size_ext.raw_tensor is None):
94
- dim_value = dim.get_dim_value()
95
- assert isinstance(
96
- dim_value, expected_type
97
- ), f"key {key_} {dim}: unexpected {type(dim_value)}, expected {expected_type}"
98
- out[key_] = dim_value
103
+ if include_scalar_dyn_sizes:
104
+ dim_value = dim.get_dim_value()
105
+ assert isinstance(
106
+ dim_value, expected_value_type
107
+ ), f"key {key_} {dim}: unexpected {type(dim_value)}, expected {expected_value_type}"
108
+ out[key_] = dim_value
99
109
  elif dim.dyn_size_ext:
100
- assert isinstance(dim.dyn_size_ext.raw_tensor, expected_type), (
101
- f"key {key_} {dim} {dim.dyn_size_ext}:"
102
- f" unexpected {type(dim.dyn_size_ext.raw_tensor)}, expected {expected_type}"
103
- )
104
- out[key_] = dim.dyn_size_ext.raw_tensor
110
+ if include_scalar_dyn_sizes or dim.dyn_size_ext.dims:
111
+ assert isinstance(dim.dyn_size_ext.raw_tensor, expected_value_type), (
112
+ f"key {key_} {dim} {dim.dyn_size_ext}:"
113
+ f" unexpected {type(dim.dyn_size_ext.raw_tensor)}, expected {expected_value_type}"
114
+ )
115
+ out[key_] = dim.dyn_size_ext.raw_tensor
105
116
  elif dim.size is not None:
106
- if include_const_sizes:
117
+ if include_scalar_dyn_sizes and include_const_sizes:
107
118
  assert isinstance(
108
- dim.size, expected_type
109
- ), f"key {key_} {dim}: unexpected {type(dim.size)}, expected {expected_type}"
119
+ dim.size, expected_value_type
120
+ ), f"key {key_} {dim}: unexpected {type(dim.size)}, expected {expected_value_type}"
110
121
  out[key_] = dim.size
111
122
  else:
112
123
  raise Exception(f"cannot handle dim: {dim}")
124
+ visited_dims.add(dim)
113
125
  return out
114
126
 
115
- def assign_from_raw_tensor_dict_(self, raw_tensor_dict: Dict[str, Any]):
127
+ def assign_from_raw_tensor_dict_(
128
+ self,
129
+ raw_tensor_dict: Dict[str, Any],
130
+ *,
131
+ with_scalar_dyn_sizes: bool = True,
132
+ duplicate_dims_are_excluded: bool = False,
133
+ ):
116
134
  """
117
135
  :param raw_tensor_dict: dict of raw tensors, including any sequence lengths / dynamic sizes
136
+ :param with_scalar_dyn_sizes: `include_scalar_dyn_sizes` was used in :func:`as_raw_tensor_dict`
137
+ :param duplicate_dims_are_excluded: `exclude_duplicate_dims` was used in :func:`as_raw_tensor_dict`
118
138
  """
139
+ visited_dims = set()
119
140
  for key, value in self.data.items():
120
141
  assert key in raw_tensor_dict
121
142
  value.raw_tensor = raw_tensor_dict[key]
122
143
  for i, dim in enumerate(value.dims):
144
+ if duplicate_dims_are_excluded and dim in visited_dims:
145
+ continue
123
146
  key_ = f"{key}:size{i}"
124
147
  if dim.is_batch_dim() and not dim.dyn_size_ext:
125
148
  dim.dyn_size_ext = Tensor("batch", [], dtype="int32")
126
149
  if dim.dyn_size_ext:
127
- assert key_ in raw_tensor_dict
128
- dim.dyn_size_ext.raw_tensor = raw_tensor_dict[key_]
150
+ if not with_scalar_dyn_sizes and not dim.dyn_size_ext.dims:
151
+ pass
152
+ else:
153
+ assert key_ in raw_tensor_dict, f"keys: f{raw_tensor_dict.keys()}"
154
+ dim.dyn_size_ext.raw_tensor = raw_tensor_dict[key_]
129
155
  else:
130
156
  if key_ in raw_tensor_dict:
131
157
  assert dim.size == raw_tensor_dict[key_]
158
+ visited_dims.add(dim)
132
159
 
133
160
 
134
161
  def _convert_to_tensor(opts: _TensorT, *, name: Optional[str] = None) -> Tensor:
@@ -267,7 +267,7 @@ class OpMaker(object):
267
267
  if(c->num_outputs() != %(num_outputs)i)
268
268
  return errors::InvalidArgument("wrong number of outputs. required %(num_outputs)i but got ", c->num_outputs());
269
269
  %(code_set_out_shape)s
270
- return Status::OK();
270
+ return Status();
271
271
  })
272
272
  """ % {
273
273
  "num_inputs": len(in_info),
@@ -533,6 +533,8 @@ class Engine(EngineBase):
533
533
  raise TypeError(f"get_model returned {model} of type {type(model)}, expected rf.Module or torch.nn.Module")
534
534
  assert isinstance(self._pt_model, torch.nn.Module)
535
535
  print("Model:", self._pt_model, file=log.v4)
536
+ num_params = sum([parameter.numel() for parameter in self._pt_model.parameters()])
537
+ print(f"net params #: {num_params}", file=log.v2)
536
538
 
537
539
  if checkpoint_state is not None:
538
540
  self._pt_model.load_state_dict(checkpoint_state["model"])
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20230719.125702
3
+ Version: 1.20230727.163234
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
@@ -89,7 +89,7 @@ def run_model(
89
89
 
90
90
  def run_model_torch(extern_data: TensorDict, get_model: rf.GetModelFunc, forward_step: rf.StepFunc) -> TensorDict:
91
91
  """run"""
92
- extern_data_raw = extern_data.as_raw_tensor_dict(expected_type=numpy.ndarray)
92
+ extern_data_raw = extern_data.as_raw_tensor_dict(expected_value_type=numpy.ndarray)
93
93
  rf.select_backend_torch()
94
94
  rf.set_random_seed(42)
95
95
 
@@ -111,7 +111,7 @@ def run_model_torch(extern_data: TensorDict, get_model: rf.GetModelFunc, forward
111
111
 
112
112
  def run_model_net_dict_tf(extern_data: TensorDict, get_model: rf.GetModelFunc, forward_step: rf.StepFunc) -> TensorDict:
113
113
  """run"""
114
- extern_data_raw = extern_data.as_raw_tensor_dict(expected_type=numpy.ndarray)
114
+ extern_data_raw = extern_data.as_raw_tensor_dict(expected_value_type=numpy.ndarray)
115
115
  extern_data.reset_content()
116
116
  rf.select_backend_returnn_layers_tf()
117
117
  rf.set_random_seed(42)
@@ -159,9 +159,9 @@ def run_model_net_dict_tf(extern_data: TensorDict, get_model: rf.GetModelFunc, f
159
159
  layer = net.get_layer(layer_name)
160
160
  outputs_tf.data[k] = layer.output.copy()
161
161
 
162
- fetches = outputs_tf.as_raw_tensor_dict(expected_type=tf.Tensor)
162
+ fetches = outputs_tf.as_raw_tensor_dict(expected_value_type=tf.Tensor)
163
163
  assert set(extern_data.data.keys()) == set(net.extern_data.data.keys())
164
- extern_data_tf_placeholders = net.extern_data.as_raw_tensor_dict(expected_type=tf.Tensor)
164
+ extern_data_tf_placeholders = net.extern_data.as_raw_tensor_dict(expected_value_type=tf.Tensor)
165
165
  assert set(extern_data_tf_placeholders.keys()) == set(extern_data_raw.keys())
166
166
  feed_dict = {extern_data_tf_placeholders[k]: v for k, v in extern_data_raw.items()}
167
167
 
@@ -149,7 +149,13 @@ def test_demo_torch_task12ax():
149
149
  assert_less(fer, 0.02)
150
150
 
151
151
 
152
- def _test_torch_export_to_onnx(cfg_filename: str):
152
+ def _test_torch_export_to_onnx(cfg_filename: str) -> str:
153
+ """
154
+ Executes the demo passed as a parameter and returns the ONNX exported model as a filename.
155
+
156
+ :param cfg_filename: Demo filename, either "demos/demo-rf.config" or "demos/demo-torch.config".
157
+ :return: Filename representing the ONNX model location.
158
+ """
153
159
  cleanup_tmp_models(cfg_filename)
154
160
  out = run(py, "rnn.py", cfg_filename, "--num_epochs", "1", "--device", "cpu")
155
161
  out_pt_model = re.search(r"\nSave model under (.*)\n", out, re.MULTILINE)
@@ -159,15 +165,69 @@ def _test_torch_export_to_onnx(cfg_filename: str):
159
165
  out_onnx_model = out_pt_model.replace(".pt", ".onnx")
160
166
  run(py, "tools/torch_export_to_onnx.py", cfg_filename, out_pt_model, out_onnx_model, print_stdout=True)
161
167
 
168
+ return out_onnx_model
169
+
170
+
171
+ def _test_torch_onnx_inference_no_seq_lens(out_onnx_model: str):
172
+ """
173
+ Tests the inference of the torch demo with an ONNX model passed as parameter.
174
+ """
175
+ import onnxruntime as ort
176
+
177
+ torch.manual_seed(42)
178
+ # Set arbitrary values to pass to the model, respecting the input size (9).
179
+ dummy_data = torch.randn([3, 50, 9])
180
+
181
+ session = ort.InferenceSession(out_onnx_model)
182
+ outputs_onnx = session.run(
183
+ None,
184
+ {
185
+ "data": dummy_data.numpy(),
186
+ },
187
+ )
188
+ print("*** Result:", torch.FloatTensor(outputs_onnx[0]))
189
+ print("*** Batch size:", torch.IntTensor(outputs_onnx[1]))
190
+ print("*** Sequence lengths:", torch.IntTensor(outputs_onnx[2]))
191
+
192
+
193
+ def _test_torch_onnx_inference_seq_lens_in_out(out_onnx_model: str):
194
+ """
195
+ Tests the inference of the torch demo with an ONNX model passed as parameter.
196
+ """
197
+ print(out_onnx_model)
198
+ import onnxruntime as ort
199
+
200
+ torch.manual_seed(42)
201
+ # Set arbitrary values to pass to the model, respecting the input size (9).
202
+ dummy_data = torch.randn([3, 50, 9])
203
+ dummy_seq_lens = torch.tensor([27, 50, 43], dtype=torch.int32)
204
+
205
+ session = ort.InferenceSession(out_onnx_model)
206
+ outputs_onnx = session.run(
207
+ None,
208
+ {
209
+ "data": dummy_data.numpy(),
210
+ "data:size1": dummy_seq_lens.numpy(),
211
+ },
212
+ )
213
+ out_result = torch.FloatTensor(outputs_onnx[0])
214
+ out_seq_lens = torch.IntTensor(outputs_onnx[1])
215
+ print("*** Result:", out_result)
216
+ print("*** Sequence lengths:", out_seq_lens)
217
+
218
+ assert out_result.shape == torch.Size([3, 50, 2])
219
+
162
220
 
163
221
  @unittest.skipIf(not torch, "no PyTorch")
164
222
  def test_demo_torch_export_to_onnx():
165
- _test_torch_export_to_onnx("demos/demo-torch.config")
223
+ out_onnx_model = _test_torch_export_to_onnx("demos/demo-torch.config")
224
+ _test_torch_onnx_inference_seq_lens_in_out(out_onnx_model)
166
225
 
167
226
 
168
227
  @unittest.skipIf(not torch, "no PyTorch")
169
- def test_demo_rf_torch_export_to_onnx():
170
- _test_torch_export_to_onnx("demos/demo-rf.config")
228
+ def test_demo_rf_export_to_onnx():
229
+ out_onnx_model = _test_torch_export_to_onnx("demos/demo-rf.config")
230
+ _test_torch_onnx_inference_seq_lens_in_out(out_onnx_model)
171
231
 
172
232
 
173
233
  @unittest.skipIf(not torch, "no PyTorch")
@@ -1,8 +1,33 @@
1
1
  """
2
- Converts a module from a config to ONNX. For that, it uses get_model() which must be available in the config
2
+ Converts a RF/PT module to ONNX.
3
+
4
+ For that, it uses `get_model(*, epoch, step, **_other_kwargs)` which must be available in the config
3
5
  and creates dummy data to be forwarded to the model.
4
6
 
5
- Since get_model() can return either a torch.nn.Module or a rf.Module, both cases must be taken into account.
7
+ Since `get_model(...)` can return either a torch.nn.Module or a rf.Module, both cases are handled.
8
+
9
+ `extern_data` defines the inputs.
10
+ - It strips away all entries with available_for_inference=False.
11
+ - Dynamic dimensions with dyn_size_ext being a scalar are excluded.
12
+ - If dynamic dims occur multiple times, only the first occurence is kept.
13
+ Note that the order depends on the order of the dict, as it is defined (not sorted alphabetically).
14
+
15
+ `model_outputs` defines the output dimensions.
16
+ - Dynamic dimensions with dyn_size_ext being a scalar are excluded.
17
+
18
+ For RASR, we usually expect that the input and output are always of the format [B, T, D] (batch, time, dim).
19
+ We distinguish three cases on RASR side:
20
+
21
+ - Input without sequence length are provided, output also without sequence lengths:
22
+ Define the input time dimension in `extern_data` to have `dyn_size_ext` being a scalar,
23
+ and same for `model_outputs`.
24
+
25
+ - Input with sequence length are provided, output without sequence lengths,
26
+ meaning that RASR expects that the outputs have the same sequence length as the inputs:
27
+ Define the output time dimension in `model_outputs` to have `dyn_size_ext` being a scalar.
28
+
29
+ - Input with sequence length are provided, output with sequence lengths:
30
+ The input and output time dimensions are as usual, having `dyn_size_ext` of shape [B].
6
31
  """
7
32
 
8
33
  from __future__ import annotations
@@ -83,10 +108,10 @@ class ForwardModulePT(torch.nn.Module):
83
108
  Wrapper to forward_step from the config.
84
109
  """
85
110
  extern_data = self.extern_data.copy_template()
86
- extern_data.assign_from_raw_tensor_dict_(data)
111
+ extern_data.assign_from_raw_tensor_dict_(data, with_scalar_dyn_sizes=False, duplicate_dims_are_excluded=True)
87
112
  self.forward_step_func(model=self.model, extern_data=extern_data)
88
113
  _check_matching_outputs()
89
- return rf.get_run_ctx().outputs.as_raw_tensor_dict()
114
+ return rf.get_run_ctx().outputs.as_raw_tensor_dict(include_scalar_dyn_sizes=False)
90
115
 
91
116
 
92
117
  class ForwardModuleRF(_RFModuleAsPTModule):
@@ -110,16 +135,16 @@ class ForwardModuleRF(_RFModuleAsPTModule):
110
135
  Wrapper to forward_step from the config.
111
136
  """
112
137
  extern_data = self.extern_data.copy_template()
113
- extern_data.assign_from_raw_tensor_dict_(data)
138
+ extern_data.assign_from_raw_tensor_dict_(data, with_scalar_dyn_sizes=False, duplicate_dims_are_excluded=True)
114
139
  self.forward_step_func(model=self.rf_module, extern_data=extern_data)
115
140
  _check_matching_outputs()
116
- return rf.get_run_ctx().outputs.as_raw_tensor_dict()
141
+ return rf.get_run_ctx().outputs.as_raw_tensor_dict(include_scalar_dyn_sizes=False)
117
142
 
118
143
 
119
144
  def _check_matching_outputs():
120
145
  rf.get_run_ctx().check_outputs_complete()
121
146
  model_outputs_raw_keys = set(_get_model_outputs_raw_keys())
122
- outputs_raw = rf.get_run_ctx().outputs.as_raw_tensor_dict()
147
+ outputs_raw = rf.get_run_ctx().outputs.as_raw_tensor_dict(include_scalar_dyn_sizes=False)
123
148
  outputs_raw_keys = set(outputs_raw.keys())
124
149
  assert model_outputs_raw_keys == outputs_raw_keys, (
125
150
  f"Model outputs raw keys and output raw keys from forward_step don't match.\n"
@@ -138,7 +163,7 @@ def _get_model_outputs_raw_keys():
138
163
  for k, v in model_outputs.data.items():
139
164
  model_outputs_raw_keys.append(k)
140
165
  for i, dim in enumerate(v.dims):
141
- if dim.is_batch_dim() or dim.is_dynamic():
166
+ if dim.dyn_size_ext and dim.dyn_size_ext.dims:
142
167
  model_outputs_raw_keys.append(f"{k}:size{i}")
143
168
  return model_outputs_raw_keys
144
169
 
@@ -147,7 +172,7 @@ def main():
147
172
  """
148
173
  Main entry point
149
174
  """
150
- parser = argparse.ArgumentParser(description="Converts a RF/PT module to ONNX.")
175
+ parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
151
176
  parser.add_argument(
152
177
  "config",
153
178
  type=str,
@@ -193,10 +218,13 @@ def main():
193
218
  extern_data = TensorDict()
194
219
  extern_data.update(extern_data_dict, auto_convert=True)
195
220
  extern_data.reset_content()
221
+ for k, v in list(extern_data.data.items()):
222
+ if not v.available_for_inference:
223
+ del extern_data.data[k]
196
224
 
197
225
  tensor_dict_fill_random_numpy_(extern_data)
198
226
  tensor_dict_numpy_to_torch_(extern_data)
199
- extern_data_raw = extern_data.as_raw_tensor_dict()
227
+ extern_data_raw = extern_data.as_raw_tensor_dict(include_scalar_dyn_sizes=False, exclude_duplicate_dims=True)
200
228
  model_outputs_raw_keys = _get_model_outputs_raw_keys()
201
229
 
202
230
  if is_pt_module:
@@ -214,6 +242,8 @@ def main():
214
242
  for k, v in list(extern_data.data.items()) + list(model_outputs.data.items()):
215
243
  dynamic_axes[k] = {i: dim.name for i, dim in enumerate(v.dims) if dim.is_dynamic() or dim.is_batch_dim()}
216
244
  for i, dim in enumerate(v.dims):
245
+ if dim.dyn_size_ext and dim.dyn_size_ext.dims == ():
246
+ continue
217
247
  if dim.dyn_size_ext:
218
248
  dynamic_axes[f"{k}:size{i}"] = {
219
249
  j: dim_.name
@@ -221,6 +251,10 @@ def main():
221
251
  if dim_.is_dynamic() or dim_.is_batch_dim()
222
252
  }
223
253
 
254
+ print("*** Input names:", list(extern_data_raw.keys()))
255
+ print("*** Output names:", model_outputs_raw_keys)
256
+ print("*** Dynamic axes:", dynamic_axes)
257
+
224
258
  export_func(
225
259
  pt_model_fwd,
226
260
  (extern_data_raw, {}),
@@ -1,2 +0,0 @@
1
- version = '1.20230719.125702'
2
- long_version = '1.20230719.125702+git.1e8e66f'