pytensor 2.18.1__tar.gz → 2.18.3__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 (414) hide show
  1. {pytensor-2.18.1 → pytensor-2.18.3}/PKG-INFO +1 -1
  2. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/creating_a_numba_jax_op.rst +3 -3
  3. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/creating_an_op.rst +5 -5
  4. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/extending_pytensor_solution_1.py +13 -17
  5. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/graph_rewriting.rst +14 -14
  6. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/graphstructures.rst +3 -3
  7. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/tips.rst +2 -2
  8. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/unittest.rst +6 -6
  9. {pytensor-2.18.1 → pytensor-2.18.3}/doc/glossary.rst +3 -3
  10. {pytensor-2.18.1 → pytensor-2.18.3}/doc/introduction.rst +3 -3
  11. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/compile/debugmode.rst +2 -2
  12. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/compile/io.rst +10 -10
  13. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/compile/nanguardmode.rst +3 -3
  14. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/index.ipynb +19 -19
  15. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/index.rst +19 -19
  16. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/printing.rst +5 -5
  17. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/scan.rst +39 -39
  18. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/tensor/basic.rst +50 -50
  19. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/tensor/fft.rst +2 -2
  20. {pytensor-2.18.1 → pytensor-2.18.3}/doc/sandbox/logistic_regression_example.rst +10 -10
  21. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/adding.rst +14 -14
  22. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/aliasing.rst +2 -2
  23. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/broadcasting.rst +4 -4
  24. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/conditions.rst +5 -5
  25. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/debug_faq.rst +14 -14
  26. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/examples.rst +17 -17
  27. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/gradients.rst +40 -40
  28. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/index.rst +1 -1
  29. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/loop.rst +52 -52
  30. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/loop_solution_1.py +11 -11
  31. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/modes.rst +7 -7
  32. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/modes_solution_1.py +7 -7
  33. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/printing_drawing.rst +6 -6
  34. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/_version.py +3 -3
  35. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/breakpoint.py +4 -4
  36. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/compile/builders.py +8 -8
  37. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/compile/function/types.py +10 -4
  38. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/compile/profiling.py +56 -52
  39. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/graph/basic.py +11 -7
  40. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/graph/replace.py +14 -13
  41. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/graph/rewriting/kanren.py +4 -4
  42. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/ifelse.py +13 -13
  43. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/c/cmodule.py +29 -11
  44. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/jax/dispatch/nlinalg.py +1 -3
  45. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/jax/dispatch/random.py +31 -31
  46. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/jax/dispatch/scalar.py +8 -0
  47. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/jax/dispatch/shape.py +3 -3
  48. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/jax/dispatch/subtensor.py +6 -6
  49. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/jax/dispatch/tensor_basic.py +2 -2
  50. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/numba/dispatch/basic.py +2 -0
  51. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/numba/dispatch/random.py +29 -29
  52. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/raise_op.py +5 -5
  53. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/scalar/math.py +31 -0
  54. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/scan/basic.py +13 -13
  55. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/scan/checkpoints.py +5 -5
  56. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/scan/op.py +17 -17
  57. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/scan/rewriting.py +21 -21
  58. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/scan/utils.py +6 -6
  59. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/sparse/basic.py +63 -63
  60. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/sparse/rewriting.py +10 -10
  61. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/sparse/sandbox/sp.py +17 -17
  62. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/sparse/sandbox/sp2.py +5 -5
  63. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/sparse/type.py +2 -2
  64. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/basic.py +130 -65
  65. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/blas.py +94 -165
  66. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/blockwise.py +33 -9
  67. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/conv/abstract_conv.py +18 -18
  68. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/elemwise.py +2 -2
  69. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/extra_ops.py +62 -58
  70. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/inplace.py +5 -0
  71. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/math.py +37 -17
  72. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/nlinalg.py +26 -26
  73. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/random/op.py +16 -28
  74. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/rewriting/basic.py +26 -25
  75. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/rewriting/blas.py +49 -22
  76. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/rewriting/blas_c.py +3 -3
  77. pytensor-2.18.3/pytensor/tensor/rewriting/blockwise.py +201 -0
  78. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/rewriting/elemwise.py +22 -22
  79. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/rewriting/extra_ops.py +2 -2
  80. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/rewriting/jax.py +4 -4
  81. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/rewriting/linalg.py +10 -3
  82. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/rewriting/math.py +178 -246
  83. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/rewriting/shape.py +21 -0
  84. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/rewriting/special.py +2 -2
  85. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/rewriting/subtensor.py +117 -34
  86. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/rewriting/uncanonicalize.py +2 -2
  87. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/shape.py +35 -32
  88. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/slinalg.py +14 -14
  89. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/subtensor.py +38 -21
  90. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/type.py +17 -17
  91. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/variable.py +124 -124
  92. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/xlogx.py +9 -9
  93. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/typed_list/basic.py +4 -4
  94. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor.egg-info/PKG-INFO +1 -1
  95. {pytensor-2.18.1 → pytensor-2.18.3}/scripts/mypy-failing.txt +0 -1
  96. {pytensor-2.18.1 → pytensor-2.18.3}/tests/test_gradient.py +11 -11
  97. {pytensor-2.18.1 → pytensor-2.18.3}/tests/test_ifelse.py +6 -6
  98. {pytensor-2.18.1 → pytensor-2.18.3}/tests/test_raise_op.py +10 -10
  99. {pytensor-2.18.1 → pytensor-2.18.3}/tests/test_rop.py +12 -12
  100. pytensor-2.18.1/pytensor/tensor/rewriting/blockwise.py +0 -51
  101. {pytensor-2.18.1 → pytensor-2.18.3}/LICENSE.txt +0 -0
  102. {pytensor-2.18.1 → pytensor-2.18.3}/MANIFEST.in +0 -0
  103. {pytensor-2.18.1 → pytensor-2.18.3}/README.rst +0 -0
  104. {pytensor-2.18.1 → pytensor-2.18.3}/bin/__init__.py +0 -0
  105. {pytensor-2.18.1 → pytensor-2.18.3}/bin/pytensor-cache +0 -0
  106. {pytensor-2.18.1 → pytensor-2.18.3}/bin/pytensor_cache.py +0 -0
  107. {pytensor-2.18.1 → pytensor-2.18.3}/doc/.templates/PLACEHOLDER +0 -0
  108. {pytensor-2.18.1 → pytensor-2.18.3}/doc/.templates/layout.html +0 -0
  109. {pytensor-2.18.1 → pytensor-2.18.3}/doc/LICENSE.txt +0 -0
  110. {pytensor-2.18.1 → pytensor-2.18.3}/doc/README.md +0 -0
  111. {pytensor-2.18.1 → pytensor-2.18.3}/doc/acknowledgement.rst +0 -0
  112. {pytensor-2.18.1 → pytensor-2.18.3}/doc/bcast.png +0 -0
  113. {pytensor-2.18.1 → pytensor-2.18.3}/doc/bcast.svg +0 -0
  114. {pytensor-2.18.1 → pytensor-2.18.3}/doc/conf.py +0 -0
  115. {pytensor-2.18.1 → pytensor-2.18.3}/doc/core_development_guide.rst +0 -0
  116. {pytensor-2.18.1 → pytensor-2.18.3}/doc/css.inc +0 -0
  117. {pytensor-2.18.1 → pytensor-2.18.3}/doc/dev_start_guide.rst +0 -0
  118. {pytensor-2.18.1 → pytensor-2.18.3}/doc/environment.yml +0 -0
  119. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/apply.png +0 -0
  120. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/apply.svg +0 -0
  121. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/apply2.svg +0 -0
  122. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/creating_a_c_op.rst +0 -0
  123. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/ctype.rst +0 -0
  124. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/extending_faq.rst +0 -0
  125. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/index.rst +0 -0
  126. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/inplace.rst +0 -0
  127. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/op.rst +0 -0
  128. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/other_ops.rst +0 -0
  129. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/pics/symbolic_graph_opt.png +0 -0
  130. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/pics/symbolic_graph_unopt.png +0 -0
  131. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/pipeline.rst +0 -0
  132. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/scan.rst +0 -0
  133. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/type.rst +0 -0
  134. {pytensor-2.18.1 → pytensor-2.18.3}/doc/extending/using_params.rst +0 -0
  135. {pytensor-2.18.1 → pytensor-2.18.3}/doc/faq.rst +0 -0
  136. {pytensor-2.18.1 → pytensor-2.18.3}/doc/generate_dtype_tensor_table.py +0 -0
  137. {pytensor-2.18.1 → pytensor-2.18.3}/doc/images/Elman_srnn.png +0 -0
  138. {pytensor-2.18.1 → pytensor-2.18.3}/doc/images/PyTensor_RGB.svg +0 -0
  139. {pytensor-2.18.1 → pytensor-2.18.3}/doc/images/blocksparse.png +0 -0
  140. {pytensor-2.18.1 → pytensor-2.18.3}/doc/images/lstm.png +0 -0
  141. {pytensor-2.18.1 → pytensor-2.18.3}/doc/images/lstm_memorycell.png +0 -0
  142. {pytensor-2.18.1 → pytensor-2.18.3}/doc/images/talk2010.gif +0 -0
  143. {pytensor-2.18.1 → pytensor-2.18.3}/doc/images/talk2010.png +0 -0
  144. {pytensor-2.18.1 → pytensor-2.18.3}/doc/index.rst +0 -0
  145. {pytensor-2.18.1 → pytensor-2.18.3}/doc/install.rst +0 -0
  146. {pytensor-2.18.1 → pytensor-2.18.3}/doc/internal/how_to_release.rst +0 -0
  147. {pytensor-2.18.1 → pytensor-2.18.3}/doc/internal/index.rst +0 -0
  148. {pytensor-2.18.1 → pytensor-2.18.3}/doc/internal/metadocumentation.rst +0 -0
  149. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/compile/function.rst +0 -0
  150. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/compile/index.rst +0 -0
  151. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/compile/mode.rst +0 -0
  152. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/compile/opfromgraph.rst +0 -0
  153. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/compile/ops.rst +0 -0
  154. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/compile/profilemode.rst +0 -0
  155. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/compile/shared.rst +0 -0
  156. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/config.rst +0 -0
  157. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/examples/d3viz/css/d3-context-menu.css +0 -0
  158. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/examples/d3viz/css/d3viz.css +0 -0
  159. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/examples/d3viz/js/d3-context-menu.js +0 -0
  160. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/examples/d3viz/js/d3.v3.min.js +0 -0
  161. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/examples/d3viz/js/d3viz.js +0 -0
  162. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/examples/d3viz/js/dagre-d3.min.js +0 -0
  163. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/examples/d3viz/js/graphlib-dot.min.js +0 -0
  164. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/examples/mlp.html +0 -0
  165. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/examples/mlp.png +0 -0
  166. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/examples/mlp2.html +0 -0
  167. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/examples/mlp2.pdf +0 -0
  168. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/examples/mlp2.png +0 -0
  169. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/examples/ofg.html +0 -0
  170. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/examples/ofg2.html +0 -0
  171. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/index_files/index_10_0.png +0 -0
  172. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/index_files/index_11_0.png +0 -0
  173. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/index_files/index_24_0.png +0 -0
  174. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/d3viz/index_files/index_25_0.png +0 -0
  175. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/gradient.rst +0 -0
  176. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/graph/features.rst +0 -0
  177. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/graph/fgraph.rst +0 -0
  178. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/graph/graph.rst +0 -0
  179. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/graph/index.rst +0 -0
  180. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/graph/op.rst +0 -0
  181. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/graph/type.rst +0 -0
  182. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/graph/utils.rst +0 -0
  183. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/index.rst +0 -0
  184. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/misc/pkl_utils.rst +0 -0
  185. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/sandbox/index.rst +0 -0
  186. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/sandbox/linalg.rst +0 -0
  187. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/scalar/index.rst +0 -0
  188. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/sparse/index.rst +0 -0
  189. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/sparse/sandbox.rst +0 -0
  190. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/tensor/basic_opt.rst +0 -0
  191. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/tensor/bcast.png +0 -0
  192. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/tensor/bcast.svg +0 -0
  193. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/tensor/conv.rst +0 -0
  194. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/tensor/elemwise.rst +0 -0
  195. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/tensor/extra_ops.rst +0 -0
  196. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/tensor/index.rst +0 -0
  197. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/tensor/io.rst +0 -0
  198. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/tensor/math_opt.rst +0 -0
  199. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/tensor/nlinalg.rst +0 -0
  200. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/tensor/plot_fft.png +0 -0
  201. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/tensor/random/basic.rst +0 -0
  202. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/tensor/random/index.rst +0 -0
  203. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/tensor/random/utils.rst +0 -0
  204. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/tensor/slinalg.rst +0 -0
  205. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/tensor/utils.rst +0 -0
  206. {pytensor-2.18.1 → pytensor-2.18.3}/doc/library/typed_list.rst +0 -0
  207. {pytensor-2.18.1 → pytensor-2.18.3}/doc/links.rst +0 -0
  208. {pytensor-2.18.1 → pytensor-2.18.3}/doc/optimizations.rst +0 -0
  209. {pytensor-2.18.1 → pytensor-2.18.3}/doc/pylintrc +0 -0
  210. {pytensor-2.18.1 → pytensor-2.18.3}/doc/sandbox/ccodegen.rst +0 -0
  211. {pytensor-2.18.1 → pytensor-2.18.3}/doc/sandbox/compilation.rst +0 -0
  212. {pytensor-2.18.1 → pytensor-2.18.3}/doc/sandbox/debugging_with_stepmode.rst +0 -0
  213. {pytensor-2.18.1 → pytensor-2.18.3}/doc/sandbox/elemwise_compiler.rst +0 -0
  214. {pytensor-2.18.1 → pytensor-2.18.3}/doc/sandbox/function.rst +0 -0
  215. {pytensor-2.18.1 → pytensor-2.18.3}/doc/sandbox/functional.rst +0 -0
  216. {pytensor-2.18.1 → pytensor-2.18.3}/doc/sandbox/how_to_make_ops.rst +0 -0
  217. {pytensor-2.18.1 → pytensor-2.18.3}/doc/sandbox/index.rst +0 -0
  218. {pytensor-2.18.1 → pytensor-2.18.3}/doc/sandbox/index2.rst +0 -0
  219. {pytensor-2.18.1 → pytensor-2.18.3}/doc/sandbox/interactive_debugger.rst +0 -0
  220. {pytensor-2.18.1 → pytensor-2.18.3}/doc/sandbox/performance.rst +0 -0
  221. {pytensor-2.18.1 → pytensor-2.18.3}/doc/sandbox/randomnumbers.rst +0 -0
  222. {pytensor-2.18.1 → pytensor-2.18.3}/doc/sandbox/rethinkccodegen.rst +0 -0
  223. {pytensor-2.18.1 → pytensor-2.18.3}/doc/sandbox/sandbox.rst +0 -0
  224. {pytensor-2.18.1 → pytensor-2.18.3}/doc/sandbox/software.rst +0 -0
  225. {pytensor-2.18.1 → pytensor-2.18.3}/doc/sandbox/sparse.rst +0 -0
  226. {pytensor-2.18.1 → pytensor-2.18.3}/doc/sandbox/tensoroptools.rst +0 -0
  227. {pytensor-2.18.1 → pytensor-2.18.3}/doc/scripts/docgen.py +0 -0
  228. {pytensor-2.18.1 → pytensor-2.18.3}/doc/troubleshooting.rst +0 -0
  229. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/adding_solution_1.py +0 -0
  230. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/apply.png +0 -0
  231. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/apply.svg +0 -0
  232. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/bcast.png +0 -0
  233. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/dlogistic.png +0 -0
  234. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/faq_tutorial.rst +0 -0
  235. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/loading_and_saving.rst +0 -0
  236. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/logistic.gp +0 -0
  237. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/logistic.png +0 -0
  238. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/multi_cores.rst +0 -0
  239. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/nan_tutorial.rst +0 -0
  240. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/pics/d3viz.png +0 -0
  241. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/pics/logreg_pydotprint_predict.png +0 -0
  242. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/pics/logreg_pydotprint_prediction.png +0 -0
  243. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/pics/logreg_pydotprint_train.png +0 -0
  244. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/profiling.rst +0 -0
  245. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/profiling_example.py +0 -0
  246. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/profiling_example_out.prof +0 -0
  247. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/shape_info.rst +0 -0
  248. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/sparse.rst +0 -0
  249. {pytensor-2.18.1 → pytensor-2.18.3}/doc/tutorial/symbolic_graphs.rst +0 -0
  250. {pytensor-2.18.1 → pytensor-2.18.3}/doc/user_guide.rst +0 -0
  251. {pytensor-2.18.1 → pytensor-2.18.3}/pyproject.toml +0 -0
  252. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/__init__.py +0 -0
  253. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/bin/__init__.py +0 -0
  254. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/bin/pytensor_cache.py +0 -0
  255. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/compile/__init__.py +0 -0
  256. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/compile/compiledir.py +0 -0
  257. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/compile/compilelock.py +0 -0
  258. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/compile/debugmode.py +0 -0
  259. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/compile/function/__init__.py +0 -0
  260. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/compile/function/pfunc.py +0 -0
  261. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/compile/io.py +0 -0
  262. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/compile/mode.py +0 -0
  263. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/compile/monitormode.py +0 -0
  264. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/compile/nanguardmode.py +0 -0
  265. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/compile/ops.py +0 -0
  266. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/compile/sharedvalue.py +0 -0
  267. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/configdefaults.py +0 -0
  268. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/configparser.py +0 -0
  269. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/d3viz/__init__.py +0 -0
  270. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/d3viz/css/d3-context-menu.css +0 -0
  271. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/d3viz/css/d3viz.css +0 -0
  272. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/d3viz/d3viz.py +0 -0
  273. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/d3viz/formatting.py +0 -0
  274. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/d3viz/js/d3-context-menu.js +0 -0
  275. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/d3viz/js/d3.v3.min.js +0 -0
  276. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/d3viz/js/d3viz.js +0 -0
  277. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/d3viz/js/dagre-d3.min.js +0 -0
  278. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/d3viz/js/graphlib-dot.min.js +0 -0
  279. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/gradient.py +0 -0
  280. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/graph/__init__.py +0 -0
  281. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/graph/destroyhandler.py +0 -0
  282. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/graph/features.py +0 -0
  283. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/graph/fg.py +0 -0
  284. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/graph/null_type.py +0 -0
  285. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/graph/op.py +0 -0
  286. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/graph/rewriting/__init__.py +0 -0
  287. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/graph/rewriting/basic.py +0 -0
  288. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/graph/rewriting/db.py +0 -0
  289. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/graph/rewriting/unify.py +0 -0
  290. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/graph/rewriting/utils.py +0 -0
  291. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/graph/type.py +0 -0
  292. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/graph/utils.py +0 -0
  293. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/__init__.py +0 -0
  294. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/basic.py +0 -0
  295. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/c/__init__.py +0 -0
  296. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/c/basic.py +0 -0
  297. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/c/c_code/lazylinker_c.c +0 -0
  298. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/c/c_code/pytensor_mod_helper.h +0 -0
  299. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/c/cutils.py +0 -0
  300. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/c/cvm.py +0 -0
  301. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/c/exceptions.py +0 -0
  302. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/c/interface.py +0 -0
  303. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/c/lazylinker_c.py +0 -0
  304. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/c/op.py +0 -0
  305. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/c/params_type.py +0 -0
  306. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/c/type.py +0 -0
  307. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/jax/__init__.py +0 -0
  308. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/jax/dispatch/__init__.py +0 -0
  309. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/jax/dispatch/basic.py +0 -0
  310. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/jax/dispatch/blockwise.py +0 -0
  311. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/jax/dispatch/elemwise.py +0 -0
  312. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/jax/dispatch/extra_ops.py +0 -0
  313. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/jax/dispatch/scan.py +0 -0
  314. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/jax/dispatch/slinalg.py +0 -0
  315. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/jax/dispatch/sparse.py +0 -0
  316. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/jax/linker.py +0 -0
  317. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/numba/__init__.py +0 -0
  318. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/numba/dispatch/__init__.py +0 -0
  319. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/numba/dispatch/cython_support.py +0 -0
  320. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/numba/dispatch/elemwise.py +0 -0
  321. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/numba/dispatch/elemwise_codegen.py +0 -0
  322. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/numba/dispatch/extra_ops.py +0 -0
  323. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/numba/dispatch/nlinalg.py +0 -0
  324. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/numba/dispatch/scalar.py +0 -0
  325. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/numba/dispatch/scan.py +0 -0
  326. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/numba/dispatch/slinalg.py +0 -0
  327. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/numba/dispatch/sparse.py +0 -0
  328. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/numba/dispatch/tensor_basic.py +0 -0
  329. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/numba/linker.py +0 -0
  330. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/utils.py +0 -0
  331. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/link/vm.py +0 -0
  332. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/misc/__init__.py +0 -0
  333. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/misc/check_blas.py +0 -0
  334. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/misc/check_blas_many.sh +0 -0
  335. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/misc/check_duplicate_key.py +0 -0
  336. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/misc/elemwise_openmp_speedup.py +0 -0
  337. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/misc/elemwise_time_test.py +0 -0
  338. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/misc/frozendict.py +0 -0
  339. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/misc/may_share_memory.py +0 -0
  340. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/misc/ordered_set.py +0 -0
  341. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/misc/pkl_utils.py +0 -0
  342. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/misc/safe_asarray.py +0 -0
  343. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/printing.py +0 -0
  344. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/py.typed +0 -0
  345. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/scalar/__init__.py +0 -0
  346. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/scalar/basic.py +0 -0
  347. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/scalar/c_code/Faddeeva.cc +0 -0
  348. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/scalar/c_code/Faddeeva.hh +0 -0
  349. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/scalar/c_code/gamma.c +0 -0
  350. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/scalar/loop.py +0 -0
  351. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/scalar/sharedvar.py +0 -0
  352. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/scan/__init__.py +0 -0
  353. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/scan/scan_perform.pyx +0 -0
  354. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/scan/scan_perform_ext.py +0 -0
  355. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/scan/views.py +0 -0
  356. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/sparse/__init__.py +0 -0
  357. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/sparse/sandbox/__init__.py +0 -0
  358. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/sparse/sharedvar.py +0 -0
  359. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/sparse/utils.py +0 -0
  360. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/__init__.py +0 -0
  361. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/blas_c.py +0 -0
  362. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/blas_headers.py +0 -0
  363. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/blas_scipy.py +0 -0
  364. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/c_code/alt_blas_common.h +0 -0
  365. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/c_code/alt_blas_template.c +0 -0
  366. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/c_code/dimshuffle.c +0 -0
  367. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/conv/__init__.py +0 -0
  368. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/elemwise_cgen.py +0 -0
  369. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/exceptions.py +0 -0
  370. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/fft.py +0 -0
  371. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/fourier.py +0 -0
  372. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/functional.py +0 -0
  373. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/io.py +0 -0
  374. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/linalg.py +0 -0
  375. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/random/__init__.py +0 -0
  376. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/random/basic.py +0 -0
  377. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/random/rewriting/__init__.py +0 -0
  378. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/random/rewriting/basic.py +0 -0
  379. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/random/rewriting/jax.py +0 -0
  380. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/random/type.py +0 -0
  381. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/random/utils.py +0 -0
  382. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/random/var.py +0 -0
  383. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/rewriting/__init__.py +0 -0
  384. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/rewriting/blas_scipy.py +0 -0
  385. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/sharedvar.py +0 -0
  386. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/sort.py +0 -0
  387. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/special.py +0 -0
  388. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/type_other.py +0 -0
  389. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/utils.py +0 -0
  390. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/tensor/var.py +0 -0
  391. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/typed_list/__init__.py +0 -0
  392. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/typed_list/rewriting.py +0 -0
  393. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/typed_list/type.py +0 -0
  394. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/updates.py +0 -0
  395. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/utils.py +0 -0
  396. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor/version.py +0 -0
  397. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor.egg-info/SOURCES.txt +0 -0
  398. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor.egg-info/dependency_links.txt +0 -0
  399. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor.egg-info/entry_points.txt +0 -0
  400. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor.egg-info/requires.txt +0 -0
  401. {pytensor-2.18.1 → pytensor-2.18.3}/pytensor.egg-info/top_level.txt +0 -0
  402. {pytensor-2.18.1 → pytensor-2.18.3}/scripts/downstream_pr.sh +0 -0
  403. {pytensor-2.18.1 → pytensor-2.18.3}/scripts/upstream_pr.sh +0 -0
  404. {pytensor-2.18.1 → pytensor-2.18.3}/setup.cfg +0 -0
  405. {pytensor-2.18.1 → pytensor-2.18.3}/setup.py +0 -0
  406. {pytensor-2.18.1 → pytensor-2.18.3}/tests/link/c/c_code/test_cenum.h +0 -0
  407. {pytensor-2.18.1 → pytensor-2.18.3}/tests/link/c/c_code/test_quadratic_function.c +0 -0
  408. {pytensor-2.18.1 → pytensor-2.18.3}/tests/tensor/conv/c_code/corr3d_gemm.c +0 -0
  409. {pytensor-2.18.1 → pytensor-2.18.3}/tests/tensor/conv/c_code/corr_gemm.c +0 -0
  410. {pytensor-2.18.1 → pytensor-2.18.3}/tests/test_breakpoint.py +0 -0
  411. {pytensor-2.18.1 → pytensor-2.18.3}/tests/test_config.py +0 -0
  412. {pytensor-2.18.1 → pytensor-2.18.3}/tests/test_printing.py +0 -0
  413. {pytensor-2.18.1 → pytensor-2.18.3}/tests/test_updates.py +0 -0
  414. {pytensor-2.18.1 → pytensor-2.18.3}/versioneer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pytensor
3
- Version: 2.18.1
3
+ Version: 2.18.3
4
4
  Summary: Optimizing compiler for evaluating mathematical expressions on CPUs and GPUs.
5
5
  Author-email: pymc-devs <pymc.devs@gmail.com>
6
6
  License: .. _license:
@@ -135,16 +135,16 @@ Here's a small example of a test for :class:`Eye`:
135
135
 
136
136
  .. code:: python
137
137
 
138
- import pytensor.tensor as at
138
+ import pytensor.tensor as pt
139
139
 
140
140
  def test_jax_Eye():
141
141
  """Test JAX conversion of the `Eye` `Op`."""
142
142
 
143
143
  # Create a symbolic input for `Eye`
144
- x_at = at.scalar()
144
+ x_at = pt.scalar()
145
145
 
146
146
  # Create a variable that is the output of an `Eye` `Op`
147
- eye_var = at.eye(x_at)
147
+ eye_var = pt.eye(x_at)
148
148
 
149
149
  # Create an PyTensor `FunctionGraph`
150
150
  out_fg = FunctionGraph(outputs=[eye_var])
@@ -786,7 +786,7 @@ signature:
786
786
  .. testcode:: asop
787
787
 
788
788
  import pytensor
789
- import pytensor.tensor as at
789
+ import pytensor.tensor as pt
790
790
  import numpy as np
791
791
  from pytensor import function
792
792
  from pytensor.compile.ops import as_op
@@ -797,8 +797,8 @@ signature:
797
797
  return [ashp[:-1] + bshp[-1:]]
798
798
 
799
799
 
800
- @as_op(itypes=[at.matrix, at.matrix],
801
- otypes=[at.matrix], infer_shape=infer_shape_numpy_dot)
800
+ @as_op(itypes=[pt.matrix, pt.matrix],
801
+ otypes=[pt.matrix], infer_shape=infer_shape_numpy_dot)
802
802
  def numpy_dot(a, b):
803
803
  return np.dot(a, b)
804
804
 
@@ -806,8 +806,8 @@ You can try it as follows:
806
806
 
807
807
  .. testcode:: asop
808
808
 
809
- x = at.matrix()
810
- y = at.matrix()
809
+ x = pt.matrix()
810
+ y = pt.matrix()
811
811
  f = function([x, y], numpy_dot(x, y))
812
812
  inp1 = np.random.random_sample((5, 4))
813
813
  inp2 = np.random.random_sample((4, 7))
@@ -14,8 +14,8 @@ from pytensor.tensor.type import TensorType
14
14
 
15
15
  class ProdOp(Op):
16
16
  def make_node(self, x, y):
17
- x = at.as_tensor_variable(x)
18
- y = at.as_tensor_variable(y)
17
+ x = pt.as_tensor_variable(x)
18
+ y = pt.as_tensor_variable(y)
19
19
  outdim = x.type.ndim
20
20
  output = TensorType(
21
21
  dtype=pytensor.scalar.upcast(x.dtype, y.dtype), shape=(None,) * outdim
@@ -39,8 +39,8 @@ class ProdOp(Op):
39
39
 
40
40
  class SumDiffOp(Op):
41
41
  def make_node(self, x, y):
42
- x = at.as_tensor_variable(x)
43
- y = at.as_tensor_variable(y)
42
+ x = pt.as_tensor_variable(x)
43
+ y = pt.as_tensor_variable(y)
44
44
  outdim = x.type.ndim
45
45
  output1 = TensorType(
46
46
  dtype=pytensor.scalar.upcast(x.dtype, y.dtype), shape=(None,) * outdim
@@ -62,20 +62,16 @@ class SumDiffOp(Op):
62
62
  def grad(self, inputs, output_grads):
63
63
  og1, og2 = output_grads
64
64
  if og1 is None:
65
- og1 = at.zeros_like(og2)
65
+ og1 = pt.zeros_like(og2)
66
66
  if og2 is None:
67
- og2 = at.zeros_like(og1)
67
+ og2 = pt.zeros_like(og1)
68
68
  return [og1 + og2, og1 - og2]
69
69
 
70
70
 
71
71
  # 3. Testing apparatus
72
-
73
- import numpy as np
74
-
75
72
  from tests import unittest_tools as utt
76
- from pytensor import tensor as at
73
+ from pytensor import tensor as pt
77
74
  from pytensor.graph.basic import Apply
78
- from pytensor.graph.op import Op
79
75
  from pytensor.tensor.type import dmatrix, matrix
80
76
 
81
77
 
@@ -182,8 +178,8 @@ def infer_shape_numpy_dot(fgraph, node, input_shapes):
182
178
 
183
179
 
184
180
  @as_op(
185
- itypes=[at.fmatrix, at.fmatrix],
186
- otypes=[at.fmatrix],
181
+ itypes=[pt.fmatrix, pt.fmatrix],
182
+ otypes=[pt.fmatrix],
187
183
  infer_shape=infer_shape_numpy_dot,
188
184
  )
189
185
  def numpy_add(a, b):
@@ -197,8 +193,8 @@ def infer_shape_numpy_add_sub(fgraph, node, input_shapes):
197
193
 
198
194
 
199
195
  @as_op(
200
- itypes=[at.fmatrix, at.fmatrix],
201
- otypes=[at.fmatrix],
196
+ itypes=[pt.fmatrix, pt.fmatrix],
197
+ otypes=[pt.fmatrix],
202
198
  infer_shape=infer_shape_numpy_add_sub,
203
199
  )
204
200
  def numpy_add(a, b):
@@ -206,8 +202,8 @@ def numpy_add(a, b):
206
202
 
207
203
 
208
204
  @as_op(
209
- itypes=[at.fmatrix, at.fmatrix],
210
- otypes=[at.fmatrix],
205
+ itypes=[pt.fmatrix, pt.fmatrix],
206
+ otypes=[pt.fmatrix],
211
207
  infer_shape=infer_shape_numpy_add_sub,
212
208
  )
213
209
  def numpy_sub(a, b):
@@ -443,7 +443,7 @@ The following is an example that distributes dot products across additions.
443
443
  .. code::
444
444
 
445
445
  import pytensor
446
- import pytensor.tensor as at
446
+ import pytensor.tensor as pt
447
447
  from pytensor.graph.rewriting.kanren import KanrenRelationSub
448
448
  from pytensor.graph.rewriting.basic import EquilibriumGraphRewriter
449
449
  from pytensor.graph.rewriting.utils import rewrite_graph
@@ -462,7 +462,7 @@ The following is an example that distributes dot products across additions.
462
462
  )
463
463
 
464
464
  # Tell `kanren` that `add` is associative
465
- fact(associative, at.add)
465
+ fact(associative, pt.add)
466
466
 
467
467
 
468
468
  def dot_distributeo(in_lv, out_lv):
@@ -473,13 +473,13 @@ The following is an example that distributes dot products across additions.
473
473
  # Make sure the input is a `_dot`
474
474
  eq(in_lv, etuple(_dot, A_lv, add_term_lv)),
475
475
  # Make sure the term being `_dot`ed is an `add`
476
- heado(at.add, add_term_lv),
476
+ heado(pt.add, add_term_lv),
477
477
  # Flatten the associative pairings of `add` operations
478
478
  assoc_flatten(add_term_lv, add_flat_lv),
479
479
  # Get the flattened `add` arguments
480
480
  tailo(add_cdr_lv, add_flat_lv),
481
481
  # Add all the `_dot`ed arguments and set the output
482
- conso(at.add, dot_cdr_lv, out_lv),
482
+ conso(pt.add, dot_cdr_lv, out_lv),
483
483
  # Apply the `_dot` to all the flattened `add` arguments
484
484
  mapo(lambda x, y: conso(_dot, etuple(A_lv, x), y), add_cdr_lv, dot_cdr_lv),
485
485
  )
@@ -490,10 +490,10 @@ The following is an example that distributes dot products across additions.
490
490
 
491
491
  Below, we apply `dot_distribute_rewrite` to a few example graphs. First we create simple test graph:
492
492
 
493
- >>> x_at = at.vector("x")
494
- >>> y_at = at.vector("y")
495
- >>> A_at = at.matrix("A")
496
- >>> test_at = A_at.dot(x_at + y_at)
493
+ >>> x_at = pt.vector("x")
494
+ >>> y_at = pt.vector("y")
495
+ >>> A_at = pt.matrix("A")
496
+ >>> test_at = A_pt.dot(x_at + y_at)
497
497
  >>> print(pytensor.pprint(test_at))
498
498
  (A @ (x + y))
499
499
 
@@ -506,18 +506,18 @@ Next we apply the rewrite to the graph:
506
506
  We see that the dot product has been distributed, as desired. Now, let's try a
507
507
  few more test cases:
508
508
 
509
- >>> z_at = at.vector("z")
510
- >>> w_at = at.vector("w")
511
- >>> test_at = A_at.dot((x_at + y_at) + (z_at + w_at))
509
+ >>> z_at = pt.vector("z")
510
+ >>> w_at = pt.vector("w")
511
+ >>> test_at = A_pt.dot((x_at + y_at) + (z_at + w_at))
512
512
  >>> print(pytensor.pprint(test_at))
513
513
  (A @ ((x + y) + (z + w)))
514
514
  >>> res = rewrite_graph(test_at, include=[], custom_rewrite=dot_distribute_rewrite, clone=False)
515
515
  >>> print(pytensor.pprint(res))
516
516
  (((A @ x) + (A @ y)) + ((A @ z) + (A @ w)))
517
517
 
518
- >>> B_at = at.matrix("B")
519
- >>> w_at = at.vector("w")
520
- >>> test_at = A_at.dot(x_at + (y_at + B_at.dot(z_at + w_at)))
518
+ >>> B_at = pt.matrix("B")
519
+ >>> w_at = pt.vector("w")
520
+ >>> test_at = A_pt.dot(x_at + (y_at + B_pt.dot(z_at + w_at)))
521
521
  >>> print(pytensor.pprint(test_at))
522
522
  (A @ (x + (y + ((B @ z) + (B @ w)))))
523
523
  >>> res = rewrite_graph(test_at, include=[], custom_rewrite=dot_distribute_rewrite, clone=False)
@@ -28,10 +28,10 @@ The following illustrates these elements:
28
28
 
29
29
  .. testcode::
30
30
 
31
- import pytensor.tensor as at
31
+ import pytensor.tensor as pt
32
32
 
33
- x = at.dmatrix('x')
34
- y = at.dmatrix('y')
33
+ x = pt.dmatrix('x')
34
+ y = pt.dmatrix('y')
35
35
  z = x + y
36
36
 
37
37
  **Diagram**
@@ -20,10 +20,10 @@ simple function:
20
20
 
21
21
  .. code::
22
22
 
23
- from pytensor import tensor as at
23
+ from pytensor import tensor as pt
24
24
 
25
25
  def sum_square_difference(a, b):
26
- return at.sum((a - b)**2)
26
+ return pt.sum((a - b)**2)
27
27
 
28
28
  Even without taking PyTensor's rewrites into account, it is likely
29
29
  to work just as well as a custom implementation. It also supports all
@@ -98,13 +98,13 @@ Example:
98
98
  .. code-block:: python
99
99
 
100
100
  import numpy as np
101
- import pytensor.tensor as at
101
+ import pytensor.tensor as pt
102
102
 
103
103
 
104
104
  def test_dot_validity():
105
- a = at.dmatrix('a')
106
- b = at.dmatrix('b')
107
- c = at.dot(a, b)
105
+ a = pt.dmatrix('a')
106
+ b = pt.dmatrix('b')
107
+ c = pt.dot(a, b)
108
108
 
109
109
  c_fn = pytensor.function([a, b], [c])
110
110
 
@@ -187,7 +187,7 @@ symbolic variable:
187
187
 
188
188
  def test_verify_exprgrad():
189
189
  def fun(x,y,z):
190
- return (x + at.cos(y)) / (4 * z)**2
190
+ return (x + pt.cos(y)) / (4 * z)**2
191
191
 
192
192
  x_val = np.asarray([[1], [1.1], [1.2]])
193
193
  y_val = np.asarray([0.1, 0.2])
@@ -207,7 +207,7 @@ Here is an example showing how to use :func:`verify_grad` on an :class:`Op` inst
207
207
  """
208
208
  a_val = np.asarray([[0,1,2],[3,4,5]], dtype='float64')
209
209
  rng = np.random.default_rng(42)
210
- pytensor.gradient.verify_grad(at.Flatten(), [a_val], rng=rng)
210
+ pytensor.gradient.verify_grad(pt.Flatten(), [a_val], rng=rng)
211
211
 
212
212
  .. note::
213
213
 
@@ -6,7 +6,7 @@ Glossary
6
6
  .. testsetup::
7
7
 
8
8
  import pytensor
9
- import pytensor.tensor as at
9
+ import pytensor.tensor as pt
10
10
 
11
11
  .. glossary::
12
12
 
@@ -31,7 +31,7 @@ Glossary
31
31
  A variable with an immutable value.
32
32
  For example, when you type
33
33
 
34
- >>> x = at.ivector()
34
+ >>> x = pt.ivector()
35
35
  >>> y = x + 3
36
36
 
37
37
  Then a `constant` is created to represent the ``3`` in the graph.
@@ -151,7 +151,7 @@ Glossary
151
151
  The the main data structure you work with when using PyTensor.
152
152
  For example,
153
153
 
154
- >>> x = at.ivector()
154
+ >>> x = pt.ivector()
155
155
  >>> y = -x**2
156
156
 
157
157
  ``x`` and ``y`` are both :class:`Variable`\s, i.e. instances of the :class:`Variable` class.
@@ -66,11 +66,11 @@ its features, but it illustrates concretely what PyTensor is.
66
66
  .. code-block:: python
67
67
 
68
68
  import pytensor
69
- from pytensor import tensor as at
69
+ from pytensor import tensor as pt
70
70
 
71
71
  # declare two symbolic floating-point scalars
72
- a = at.dscalar()
73
- b = at.dscalar()
72
+ a = pt.dscalar()
73
+ b = pt.dscalar()
74
74
 
75
75
  # create a simple expression
76
76
  c = a + b
@@ -28,10 +28,10 @@ a cluster.
28
28
  .. testcode::
29
29
 
30
30
  import pytensor
31
- from pytensor import tensor as at
31
+ from pytensor import tensor as pt
32
32
  from pytensor.compile.debugmode import DebugMode
33
33
 
34
- x = at.dscalar('x')
34
+ x = pt.dscalar('x')
35
35
 
36
36
  f = pytensor.function([x], 10*x, mode='DebugMode')
37
37
 
@@ -80,10 +80,10 @@ A non-None `value` argument makes an In() instance an optional parameter
80
80
  of the compiled function. For example, in the following code we are
81
81
  defining an arity-2 function ``inc``.
82
82
 
83
- >>> import pytensor.tensor as at
83
+ >>> import pytensor.tensor as pt
84
84
  >>> from pytensor import function
85
85
  >>> from pytensor.compile.io import In
86
- >>> u, x, s = at.scalars('u', 'x', 's')
86
+ >>> u, x, s = pt.scalars('u', 'x', 's')
87
87
  >>> inc = function([u, In(x, value=3), In(s, update=(s+x*u), value=10.0)], [])
88
88
 
89
89
  Since we provided a ``value`` for ``s`` and ``x``, we can call it with just a value for ``u`` like this:
@@ -183,8 +183,8 @@ method to access values by indexing a Function directly by typing
183
183
  To show some examples of these access methods...
184
184
 
185
185
 
186
- >>> from pytensor import tensor as at, function
187
- >>> a, b, c = at.scalars('xys') # set the internal names of graph nodes
186
+ >>> from pytensor import tensor as pt, function
187
+ >>> a, b, c = pt.scalars('xys') # set the internal names of graph nodes
188
188
  >>> # Note that the name of c is 's', not 'c'!
189
189
  >>> fn = function([a, b, ((c, c+a+b), 10.0)], [])
190
190
 
@@ -236,12 +236,12 @@ Every element of the inputs list will be upgraded to an In instance if necessary
236
236
  Example:
237
237
 
238
238
  >>> import pytensor
239
- >>> from pytensor import tensor as at
239
+ >>> from pytensor import tensor as pt
240
240
  >>> from pytensor.compile.io import In
241
- >>> x = at.scalar()
242
- >>> y = at.scalar('y')
243
- >>> z = at.scalar('z')
244
- >>> w = at.scalar('w')
241
+ >>> x = pt.scalar()
242
+ >>> y = pt.scalar('y')
243
+ >>> z = pt.scalar('z')
244
+ >>> w = pt.scalar('w')
245
245
 
246
246
  >>> fn = pytensor.function(inputs=[x, y, In(z, value=42), ((w, w+x), 0)],
247
247
  ... outputs=x + y + z)
@@ -308,7 +308,7 @@ If a list of ``Variable`` or ``Out`` instances is given as argument, then the co
308
308
 
309
309
  >>> import numpy
310
310
  >>> from pytensor.compile.io import Out
311
- >>> x, y, s = at.matrices('xys')
311
+ >>> x, y, s = pt.matrices('xys')
312
312
 
313
313
  >>> # print a list of 2 ndarrays
314
314
  >>> fn1 = pytensor.function([x], [x+x, Out((x+x).T, borrow=True)])
@@ -25,12 +25,12 @@ of abnormal values: NaNs, Infs, and abnormally big values.
25
25
 
26
26
  import numpy as np
27
27
  import pytensor
28
- import pytensor.tensor as at
28
+ import pytensor.tensor as pt
29
29
  from pytensor.compile.nanguardmode import NanGuardMode
30
30
 
31
- x = at.matrix()
31
+ x = pt.matrix()
32
32
  w = pytensor.shared(np.random.standard_normal((5, 7)).astype(pytensor.config.floatX))
33
- y = at.dot(x, w)
33
+ y = pt.dot(x, w)
34
34
  fun = pytensor.function(
35
35
  [x], y,
36
36
  mode=NanGuardMode(nan_is_error=True, inf_is_error=True, big_is_error=True)
@@ -70,8 +70,8 @@
70
70
  },
71
71
  "outputs": [],
72
72
  "source": [
73
- "import pytensor as th\n",
74
- "import pytensor.tensor as at\n",
73
+ "import pytensor\n",
74
+ "import pytensor.tensor as pt\n",
75
75
  "import numpy as np"
76
76
  ]
77
77
  },
@@ -96,16 +96,16 @@
96
96
  "nhiddens = 50\n",
97
97
  "\n",
98
98
  "rng = np.random.RandomState(0)\n",
99
- "x = at.dmatrix('x')\n",
100
- "wh = th.shared(rng.normal(0, 1, (nfeatures, nhiddens)), borrow=True)\n",
101
- "bh = th.shared(np.zeros(nhiddens), borrow=True)\n",
102
- "h = at.sigmoid(at.dot(x, wh) + bh)\n",
99
+ "x = pt.dmatrix('x')\n",
100
+ "wh = pytensor.shared(rng.normal(0, 1, (nfeatures, nhiddens)), borrow=True)\n",
101
+ "bh = pytensor.shared(np.zeros(nhiddens), borrow=True)\n",
102
+ "h = pt.sigmoid(pt.dot(x, wh) + bh)\n",
103
103
  "\n",
104
- "wy = th.shared(rng.normal(0, 1, (nhiddens, noutputs)))\n",
105
- "by = th.shared(np.zeros(noutputs), borrow=True)\n",
106
- "y = at.special.softmax(at.dot(h, wy) + by)\n",
104
+ "wy = pytensor.shared(rng.normal(0, 1, (nhiddens, noutputs)))\n",
105
+ "by = pytensor.shared(np.zeros(noutputs), borrow=True)\n",
106
+ "y = pt.special.softmax(pt.dot(h, wy) + by)\n",
107
107
  "\n",
108
- "predict = th.function([x], y)"
108
+ "predict = pytensor.function([x], y)"
109
109
  ]
110
110
  },
111
111
  {
@@ -276,7 +276,7 @@
276
276
  },
277
277
  "outputs": [],
278
278
  "source": [
279
- "predict_profiled = th.function([x], y, profile=True)\n",
279
+ "predict_profiled = pytensor.function([x], y, profile=True)\n",
280
280
  "\n",
281
281
  "x_val = rng.normal(0, 1, (ninputs, nfeatures))\n",
282
282
  "y_val = predict_profiled(x_val)"
@@ -388,12 +388,12 @@
388
388
  },
389
389
  "outputs": [],
390
390
  "source": [
391
- "x, y, z = at.scalars('xyz')\n",
392
- "e = at.sigmoid((x + y + z)**2)\n",
393
- "op = th.compile.builders.OpFromGraph([x, y, z], [e])\n",
391
+ "x, y, z = pt.scalars('xyz')\n",
392
+ "e = pt.sigmoid((x + y + z)**2)\n",
393
+ "op = pytensor.compile.builders.OpFromGraph([x, y, z], [e])\n",
394
394
  "\n",
395
395
  "e2 = op(x, y, z) + op(z, y, x)\n",
396
- "f = th.function([x, y, z], e2)"
396
+ "f = pytensor.function([x, y, z], e2)"
397
397
  ]
398
398
  },
399
399
  {
@@ -433,13 +433,13 @@
433
433
  },
434
434
  "outputs": [],
435
435
  "source": [
436
- "x, y, z = at.scalars('xyz')\n",
436
+ "x, y, z = pt.scalars('xyz')\n",
437
437
  "e = x * y\n",
438
- "op = th.compile.builders.OpFromGraph([x, y], [e])\n",
438
+ "op = pytensor.compile.builders.OpFromGraph([x, y], [e])\n",
439
439
  "e2 = op(x, y) + z\n",
440
- "op2 = th.compile.builders.OpFromGraph([x, y, z], [e2])\n",
440
+ "op2 = pytensor.compile.builders.OpFromGraph([x, y, z], [e2])\n",
441
441
  "e3 = op2(x, y, z) + z\n",
442
- "f = th.function([x, y, z], [e3])"
442
+ "f = pytensor.function([x, y, z], [e3])"
443
443
  ]
444
444
  },
445
445
  {
@@ -49,8 +49,8 @@ hidden layer and a softmax output layer.
49
49
 
50
50
  .. code:: python
51
51
 
52
- import pytensor as th
53
- import pytensor.tensor as at
52
+ import pytensor
53
+ import pytensor.tensor as pt
54
54
  import numpy as np
55
55
 
56
56
  ninputs = 1000
@@ -59,16 +59,16 @@ hidden layer and a softmax output layer.
59
59
  nhiddens = 50
60
60
 
61
61
  rng = np.random.RandomState(0)
62
- x = at.dmatrix('x')
63
- wh = th.shared(rng.normal(0, 1, (nfeatures, nhiddens)), borrow=True)
64
- bh = th.shared(np.zeros(nhiddens), borrow=True)
65
- h = at.sigmoid(at.dot(x, wh) + bh)
62
+ x = pt.dmatrix('x')
63
+ wh = pytensor.shared(rng.normal(0, 1, (nfeatures, nhiddens)), borrow=True)
64
+ bh = pytensor.shared(np.zeros(nhiddens), borrow=True)
65
+ h = pt.sigmoid(pt.dot(x, wh) + bh)
66
66
 
67
- wy = th.shared(rng.normal(0, 1, (nhiddens, noutputs)))
68
- by = th.shared(np.zeros(noutputs), borrow=True)
69
- y = at.special.softmax(at.dot(h, wy) + by)
67
+ wy = pytensor.shared(rng.normal(0, 1, (nhiddens, noutputs)))
68
+ by = pytensor.shared(np.zeros(noutputs), borrow=True)
69
+ y = pt.special.softmax(pt.dot(h, wy) + by)
70
70
 
71
- predict = th.function([x], y)
71
+ predict = pytensor.function([x], y)
72
72
 
73
73
  The function ``predict`` outputs the probability of 10 classes. You can
74
74
  visualize it with :py:func:`pytensor.printing.pydotprint` as follows:
@@ -151,7 +151,7 @@ random data:
151
151
 
152
152
  .. code:: python
153
153
 
154
- predict_profiled = th.function([x], y, profile=True)
154
+ predict_profiled = pytensor.function([x], y, profile=True)
155
155
 
156
156
  x_val = rng.normal(0, 1, (ninputs, nfeatures))
157
157
  y_val = predict_profiled(x_val)
@@ -209,12 +209,12 @@ node defines a nested graph, which will be visualized accordingly by ``d3viz``.
209
209
 
210
210
  .. code:: python
211
211
 
212
- x, y, z = at.scalars('xyz')
213
- e = at.sigmoid((x + y + z)**2)
214
- op = th.compile.builders.OpFromGraph([x, y, z], [e])
212
+ x, y, z = pt.scalars('xyz')
213
+ e = pt.sigmoid((x + y + z)**2)
214
+ op = pytensor.compile.builders.OpFromGraph([x, y, z], [e])
215
215
 
216
216
  e2 = op(x, y, z) + op(z, y, x)
217
- f = th.function([x, y, z], e2)
217
+ f = pytensor.function([x, y, z], e2)
218
218
 
219
219
  .. code:: python
220
220
 
@@ -238,13 +238,13 @@ the following example.
238
238
 
239
239
  .. code:: python
240
240
 
241
- x, y, z = at.scalars('xyz')
241
+ x, y, z = pt.scalars('xyz')
242
242
  e = x * y
243
- op = th.compile.builders.OpFromGraph([x, y], [e])
243
+ op = pytensor.compile.builders.OpFromGraph([x, y], [e])
244
244
  e2 = op(x, y) + z
245
- op2 = th.compile.builders.OpFromGraph([x, y, z], [e2])
245
+ op2 = pytensor.compile.builders.OpFromGraph([x, y, z], [e2])
246
246
  e3 = op2(x, y, z) + z
247
- f = th.function([x, y, z], [e3])
247
+ f = pytensor.function([x, y, z], [e3])
248
248
 
249
249
  .. code:: python
250
250
 
@@ -23,8 +23,8 @@ Intermediate values in a computation cannot be printed in
23
23
  the normal python way with the print statement, because PyTensor has no *statements*.
24
24
  Instead there is the :class:`Print` Op.
25
25
 
26
- >>> from pytensor import tensor as at, function, printing
27
- >>> x = at.dvector()
26
+ >>> from pytensor import tensor as pt, function, printing
27
+ >>> x = pt.dvector()
28
28
  >>> hello_world_op = printing.Print('hello world')
29
29
  >>> printed_x = hello_world_op(x)
30
30
  >>> f = function([x], printed_x)
@@ -52,8 +52,8 @@ PyTensor also provides :func:`pytensor.printing.pydotprint` that creates a png i
52
52
  1) The first is :func:`pytensor.pp`.
53
53
 
54
54
  >>> from pytensor import pp, grad,
55
- >>> from pytensor import tensor as at
56
- >>> x = at.dscalar('x')
55
+ >>> from pytensor import tensor as pt
56
+ >>> x = pt.dscalar('x')
57
57
  >>> y = x ** 2
58
58
  >>> gy = grad(y, x)
59
59
  >>> pp(gy) # print out the gradient prior to rewriting
@@ -62,7 +62,7 @@ PyTensor also provides :func:`pytensor.printing.pydotprint` that creates a png i
62
62
  >>> pp(f.maker.fgraph.outputs[0])
63
63
  '(TensorConstant{2.0} * x)'
64
64
 
65
- The parameter in at.dscalar('x') in the first line is the name of this variable
65
+ The parameter in pt.dscalar('x') in the first line is the name of this variable
66
66
  in the graph. This name is used when printing the graph to make it more readable.
67
67
  If no name is provided the variable x is printed as its type as returned by
68
68
  ``x.type()``. In this example - ``<TensorType(float64, ())>``.