pytensor 2.16.3__tar.gz → 2.17.1__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.
- {pytensor-2.16.3 → pytensor-2.17.1}/PKG-INFO +1 -1
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/_version.py +3 -3
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/jax/dispatch/random.py +5 -6
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/nlinalg.py +4 -4
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/random/basic.py +22 -9
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/random/rewriting/jax.py +5 -5
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/rewriting/linalg.py +14 -2
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/rewriting/math.py +58 -56
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/variable.py +1 -1
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor.egg-info/PKG-INFO +1 -1
- {pytensor-2.16.3 → pytensor-2.17.1}/LICENSE.txt +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/MANIFEST.in +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/README.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/bin/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/bin/pytensor-cache +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/bin/pytensor_cache.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/.templates/PLACEHOLDER +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/.templates/layout.html +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/LICENSE.txt +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/README.md +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/acknowledgement.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/bcast.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/bcast.svg +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/conf.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/core_development_guide.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/css.inc +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/dev_start_guide.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/environment.yml +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/apply.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/apply.svg +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/apply2.svg +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/creating_a_c_op.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/creating_a_numba_jax_op.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/creating_an_op.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/ctype.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/extending_faq.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/extending_pytensor_solution_1.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/graph_rewriting.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/graphstructures.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/index.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/inplace.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/op.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/other_ops.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/pics/symbolic_graph_opt.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/pics/symbolic_graph_unopt.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/pipeline.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/scan.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/tips.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/type.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/unittest.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/extending/using_params.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/faq.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/generate_dtype_tensor_table.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/glossary.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/images/Elman_srnn.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/images/PyTensor_RGB.svg +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/images/blocksparse.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/images/lstm.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/images/lstm_memorycell.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/images/talk2010.gif +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/images/talk2010.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/index.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/install.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/internal/how_to_release.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/internal/index.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/internal/metadocumentation.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/introduction.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/compile/debugmode.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/compile/function.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/compile/index.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/compile/io.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/compile/mode.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/compile/nanguardmode.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/compile/opfromgraph.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/compile/ops.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/compile/profilemode.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/compile/shared.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/config.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/examples/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/examples/d3viz/css/d3viz.css +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/examples/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/examples/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/examples/d3viz/js/d3viz.js +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/examples/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/examples/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/examples/mlp.html +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/examples/mlp.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/examples/mlp2.html +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/examples/mlp2.pdf +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/examples/mlp2.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/examples/ofg.html +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/examples/ofg2.html +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/index.ipynb +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/index.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/index_files/index_10_0.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/index_files/index_11_0.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/index_files/index_24_0.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/index_files/index_25_0.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/gradient.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/graph/features.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/graph/fgraph.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/graph/graph.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/graph/index.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/graph/op.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/graph/type.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/graph/utils.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/index.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/misc/pkl_utils.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/printing.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/sandbox/index.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/sandbox/linalg.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/scalar/index.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/scan.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/sparse/index.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/sparse/sandbox.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/tensor/basic.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/tensor/basic_opt.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/tensor/bcast.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/tensor/bcast.svg +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/tensor/conv.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/tensor/elemwise.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/tensor/extra_ops.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/tensor/fft.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/tensor/index.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/tensor/io.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/tensor/math_opt.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/tensor/nlinalg.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/tensor/plot_fft.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/tensor/random/basic.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/tensor/random/index.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/tensor/random/utils.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/tensor/slinalg.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/tensor/utils.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/library/typed_list.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/links.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/optimizations.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/pylintrc +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/sandbox/ccodegen.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/sandbox/compilation.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/sandbox/debugging_with_stepmode.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/sandbox/elemwise_compiler.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/sandbox/function.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/sandbox/functional.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/sandbox/how_to_make_ops.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/sandbox/index.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/sandbox/index2.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/sandbox/interactive_debugger.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/sandbox/logistic_regression_example.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/sandbox/performance.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/sandbox/randomnumbers.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/sandbox/rethinkccodegen.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/sandbox/sandbox.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/sandbox/software.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/sandbox/sparse.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/sandbox/tensoroptools.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/scripts/docgen.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/troubleshooting.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/adding.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/adding_solution_1.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/aliasing.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/apply.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/apply.svg +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/bcast.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/broadcasting.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/conditions.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/debug_faq.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/dlogistic.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/examples.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/faq_tutorial.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/gradients.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/index.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/loading_and_saving.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/logistic.gp +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/logistic.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/loop.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/loop_solution_1.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/modes.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/modes_solution_1.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/multi_cores.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/nan_tutorial.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/pics/d3viz.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/pics/logreg_pydotprint_predict.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/pics/logreg_pydotprint_prediction.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/pics/logreg_pydotprint_train.png +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/printing_drawing.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/profiling.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/profiling_example.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/profiling_example_out.prof +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/shape_info.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/sparse.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/tutorial/symbolic_graphs.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/doc/user_guide.rst +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pyproject.toml +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/bin/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/bin/pytensor_cache.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/breakpoint.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/compile/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/compile/builders.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/compile/compiledir.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/compile/compilelock.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/compile/debugmode.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/compile/function/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/compile/function/pfunc.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/compile/function/types.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/compile/io.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/compile/mode.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/compile/monitormode.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/compile/nanguardmode.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/compile/ops.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/compile/profiling.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/compile/sharedvalue.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/configdefaults.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/configparser.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/d3viz/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/d3viz/css/d3viz.css +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/d3viz/d3viz.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/d3viz/formatting.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/d3viz/js/d3viz.js +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/gradient.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/graph/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/graph/basic.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/graph/destroyhandler.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/graph/features.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/graph/fg.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/graph/null_type.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/graph/op.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/graph/replace.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/graph/rewriting/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/graph/rewriting/basic.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/graph/rewriting/db.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/graph/rewriting/kanren.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/graph/rewriting/unify.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/graph/rewriting/utils.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/graph/type.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/graph/utils.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/ifelse.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/basic.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/c/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/c/basic.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/c/c_code/lazylinker_c.c +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/c/c_code/pytensor_mod_helper.h +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/c/cmodule.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/c/cutils.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/c/cvm.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/c/exceptions.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/c/interface.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/c/lazylinker_c.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/c/op.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/c/params_type.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/c/type.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/jax/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/jax/dispatch/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/jax/dispatch/basic.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/jax/dispatch/elemwise.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/jax/dispatch/extra_ops.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/jax/dispatch/nlinalg.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/jax/dispatch/scalar.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/jax/dispatch/scan.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/jax/dispatch/shape.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/jax/dispatch/slinalg.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/jax/dispatch/sparse.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/jax/dispatch/subtensor.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/jax/dispatch/tensor_basic.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/jax/linker.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/numba/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/numba/dispatch/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/numba/dispatch/basic.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/numba/dispatch/cython_support.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/numba/dispatch/elemwise.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/numba/dispatch/elemwise_codegen.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/numba/dispatch/extra_ops.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/numba/dispatch/nlinalg.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/numba/dispatch/random.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/numba/dispatch/scalar.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/numba/dispatch/scan.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/numba/dispatch/slinalg.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/numba/dispatch/sparse.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/numba/dispatch/tensor_basic.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/numba/linker.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/utils.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/link/vm.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/misc/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/misc/check_blas.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/misc/check_blas_many.sh +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/misc/check_duplicate_key.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/misc/elemwise_openmp_speedup.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/misc/elemwise_time_test.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/misc/frozendict.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/misc/may_share_memory.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/misc/ordered_set.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/misc/pkl_utils.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/misc/safe_asarray.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/printing.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/py.typed +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/raise_op.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/scalar/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/scalar/basic.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/scalar/c_code/Faddeeva.cc +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/scalar/c_code/Faddeeva.hh +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/scalar/c_code/gamma.c +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/scalar/loop.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/scalar/math.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/scalar/sharedvar.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/scan/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/scan/basic.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/scan/checkpoints.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/scan/op.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/scan/rewriting.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/scan/scan_perform.pyx +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/scan/scan_perform_ext.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/scan/utils.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/scan/views.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/sparse/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/sparse/basic.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/sparse/rewriting.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/sparse/sandbox/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/sparse/sandbox/sp.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/sparse/sandbox/sp2.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/sparse/sharedvar.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/sparse/type.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/sparse/utils.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/basic.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/blas.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/blas_c.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/blas_headers.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/blas_scipy.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/blockwise.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/c_code/alt_blas_common.h +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/c_code/alt_blas_template.c +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/c_code/dimshuffle.c +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/conv/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/conv/abstract_conv.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/elemwise.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/elemwise_cgen.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/exceptions.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/extra_ops.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/fft.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/fourier.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/inplace.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/io.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/linalg.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/math.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/random/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/random/op.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/random/rewriting/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/random/rewriting/basic.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/random/type.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/random/utils.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/random/var.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/rewriting/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/rewriting/basic.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/rewriting/blas.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/rewriting/blas_c.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/rewriting/blas_scipy.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/rewriting/blockwise.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/rewriting/elemwise.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/rewriting/extra_ops.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/rewriting/jax.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/rewriting/shape.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/rewriting/special.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/rewriting/subtensor.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/rewriting/uncanonicalize.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/shape.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/sharedvar.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/slinalg.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/sort.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/special.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/subtensor.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/type.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/type_other.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/utils.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/var.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/tensor/xlogx.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/typed_list/__init__.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/typed_list/basic.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/typed_list/rewriting.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/typed_list/type.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/updates.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/utils.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor/version.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor.egg-info/SOURCES.txt +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor.egg-info/dependency_links.txt +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor.egg-info/entry_points.txt +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor.egg-info/requires.txt +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/pytensor.egg-info/top_level.txt +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/scripts/downstream_pr.sh +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/scripts/mypy-failing.txt +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/scripts/upstream_pr.sh +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/setup.cfg +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/setup.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/tests/link/c/c_code/test_cenum.h +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/tests/link/c/c_code/test_quadratic_function.c +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/tests/tensor/conv/c_code/corr3d_gemm.c +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/tests/tensor/conv/c_code/corr_gemm.c +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/tests/test_breakpoint.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/tests/test_config.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/tests/test_gradient.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/tests/test_ifelse.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/tests/test_printing.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/tests/test_raise_op.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/tests/test_rop.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/tests/test_updates.py +0 -0
- {pytensor-2.16.3 → pytensor-2.17.1}/versioneer.py +0 -0
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2023-
|
|
11
|
+
"date": "2023-10-04T13:04:02+0100",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "2.
|
|
14
|
+
"full-revisionid": "849c3b86553afd56081b0a2bd80701ea286acf02",
|
|
15
|
+
"version": "2.17.1"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -216,21 +216,20 @@ def jax_sample_fn_uniform(op):
|
|
|
216
216
|
|
|
217
217
|
@jax_sample_fn.register(aer.ParetoRV)
|
|
218
218
|
@jax_sample_fn.register(aer.GammaRV)
|
|
219
|
-
def
|
|
220
|
-
"""JAX implementation of random variables in the shape-
|
|
219
|
+
def jax_sample_fn_shape_scale(op):
|
|
220
|
+
"""JAX implementation of random variables in the shape-scale family.
|
|
221
221
|
|
|
222
222
|
JAX only implements the standard version of random variables in the
|
|
223
|
-
shape-
|
|
223
|
+
shape-scale family. We thus need to rescale the results manually.
|
|
224
224
|
|
|
225
225
|
"""
|
|
226
226
|
name = op.name
|
|
227
227
|
jax_op = getattr(jax.random, name)
|
|
228
228
|
|
|
229
|
-
def sample_fn(rng, size, dtype,
|
|
229
|
+
def sample_fn(rng, size, dtype, shape, scale):
|
|
230
230
|
rng_key = rng["jax_state"]
|
|
231
231
|
rng_key, sampling_key = jax.random.split(rng_key, 2)
|
|
232
|
-
(shape,
|
|
233
|
-
sample = jax_op(sampling_key, shape, size, dtype) / rate
|
|
232
|
+
sample = jax_op(sampling_key, shape, size, dtype) * scale
|
|
234
233
|
rng["jax_state"] = rng_key
|
|
235
234
|
return (rng, sample)
|
|
236
235
|
|
|
@@ -541,9 +541,9 @@ class SVD(Op):
|
|
|
541
541
|
# See doc in the docstring of the function just after this class.
|
|
542
542
|
__props__ = ("full_matrices", "compute_uv")
|
|
543
543
|
|
|
544
|
-
def __init__(self, full_matrices=True, compute_uv=True):
|
|
545
|
-
self.full_matrices = full_matrices
|
|
546
|
-
self.compute_uv = compute_uv
|
|
544
|
+
def __init__(self, full_matrices: bool = True, compute_uv: bool = True):
|
|
545
|
+
self.full_matrices = bool(full_matrices)
|
|
546
|
+
self.compute_uv = bool(compute_uv)
|
|
547
547
|
|
|
548
548
|
def make_node(self, x):
|
|
549
549
|
x = as_tensor_variable(x)
|
|
@@ -584,7 +584,7 @@ class SVD(Op):
|
|
|
584
584
|
return [s_shape]
|
|
585
585
|
|
|
586
586
|
|
|
587
|
-
def svd(a, full_matrices=
|
|
587
|
+
def svd(a, full_matrices: bool = True, compute_uv: bool = True):
|
|
588
588
|
"""
|
|
589
589
|
This function performs the SVD on CPU.
|
|
590
590
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import abc
|
|
2
|
+
import warnings
|
|
2
3
|
from typing import List, Optional, Union
|
|
3
4
|
|
|
4
5
|
import numpy as np
|
|
@@ -419,7 +420,7 @@ class LogNormalRV(RandomVariable):
|
|
|
419
420
|
lognormal = LogNormalRV()
|
|
420
421
|
|
|
421
422
|
|
|
422
|
-
class GammaRV(
|
|
423
|
+
class GammaRV(RandomVariable):
|
|
423
424
|
r"""A gamma continuous random variable.
|
|
424
425
|
|
|
425
426
|
The probability density function for `gamma` in terms of the shape parameter
|
|
@@ -443,7 +444,7 @@ class GammaRV(ScipyRandomVariable):
|
|
|
443
444
|
dtype = "floatX"
|
|
444
445
|
_print_name = ("Gamma", "\\operatorname{Gamma}")
|
|
445
446
|
|
|
446
|
-
def __call__(self, shape,
|
|
447
|
+
def __call__(self, shape, scale, size=None, **kwargs):
|
|
447
448
|
r"""Draw samples from a gamma distribution.
|
|
448
449
|
|
|
449
450
|
Signature
|
|
@@ -455,8 +456,8 @@ class GammaRV(ScipyRandomVariable):
|
|
|
455
456
|
----------
|
|
456
457
|
shape
|
|
457
458
|
The shape :math:`\alpha` of the gamma distribution. Must be positive.
|
|
458
|
-
|
|
459
|
-
The
|
|
459
|
+
scale
|
|
460
|
+
The scale :math:`1/\beta` of the gamma distribution. Must be positive.
|
|
460
461
|
size
|
|
461
462
|
Sample shape. If the given size is, e.g. `(m, n, k)` then `m * n * k`
|
|
462
463
|
independent, identically distributed random variables are
|
|
@@ -464,14 +465,26 @@ class GammaRV(ScipyRandomVariable):
|
|
|
464
465
|
is returned.
|
|
465
466
|
|
|
466
467
|
"""
|
|
467
|
-
return super().__call__(shape,
|
|
468
|
+
return super().__call__(shape, scale, size=size, **kwargs)
|
|
468
469
|
|
|
469
|
-
@classmethod
|
|
470
|
-
def rng_fn_scipy(cls, rng, shape, scale, size):
|
|
471
|
-
return stats.gamma.rvs(shape, scale=scale, size=size, random_state=rng)
|
|
472
470
|
|
|
471
|
+
_gamma = GammaRV()
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
def gamma(shape, rate=None, scale=None, **kwargs):
|
|
475
|
+
# TODO: Remove helper when rate is deprecated
|
|
476
|
+
if rate is not None and scale is not None:
|
|
477
|
+
raise ValueError("Cannot specify both rate and scale")
|
|
478
|
+
elif rate is None and scale is None:
|
|
479
|
+
raise ValueError("Must specify scale")
|
|
480
|
+
elif rate is not None:
|
|
481
|
+
warnings.warn(
|
|
482
|
+
"Gamma rate argument is deprecated and will stop working, use scale instead",
|
|
483
|
+
FutureWarning,
|
|
484
|
+
)
|
|
485
|
+
scale = 1.0 / rate
|
|
473
486
|
|
|
474
|
-
|
|
487
|
+
return _gamma(shape, scale, **kwargs)
|
|
475
488
|
|
|
476
489
|
|
|
477
490
|
class ChiSquareRV(RandomVariable):
|
|
@@ -15,9 +15,9 @@ from pytensor.tensor.random.basic import (
|
|
|
15
15
|
LogNormalRV,
|
|
16
16
|
NegBinomialRV,
|
|
17
17
|
WaldRV,
|
|
18
|
+
_gamma,
|
|
18
19
|
beta,
|
|
19
20
|
binomial,
|
|
20
|
-
gamma,
|
|
21
21
|
normal,
|
|
22
22
|
poisson,
|
|
23
23
|
uniform,
|
|
@@ -92,7 +92,7 @@ def geometric_from_uniform(fgraph, node):
|
|
|
92
92
|
@node_rewriter([NegBinomialRV])
|
|
93
93
|
def negative_binomial_from_gamma_poisson(fgraph, node):
|
|
94
94
|
rng, *other_inputs, n, p = node.inputs
|
|
95
|
-
next_rng, g =
|
|
95
|
+
next_rng, g = _gamma.make_node(rng, *other_inputs, n, (1 - p) / p).outputs
|
|
96
96
|
next_rng, p = poisson.make_node(next_rng, *other_inputs, g).outputs
|
|
97
97
|
return [next_rng, p]
|
|
98
98
|
|
|
@@ -100,21 +100,21 @@ def negative_binomial_from_gamma_poisson(fgraph, node):
|
|
|
100
100
|
@node_rewriter([InvGammaRV])
|
|
101
101
|
def inverse_gamma_from_gamma(fgraph, node):
|
|
102
102
|
*other_inputs, shape, scale = node.inputs
|
|
103
|
-
next_rng, g =
|
|
103
|
+
next_rng, g = _gamma.make_node(*other_inputs, shape, 1 / scale).outputs
|
|
104
104
|
return [next_rng, reciprocal(g)]
|
|
105
105
|
|
|
106
106
|
|
|
107
107
|
@node_rewriter([ChiSquareRV])
|
|
108
108
|
def chi_square_from_gamma(fgraph, node):
|
|
109
109
|
*other_inputs, df = node.inputs
|
|
110
|
-
next_rng, g =
|
|
110
|
+
next_rng, g = _gamma.make_node(*other_inputs, df / 2, 2).outputs
|
|
111
111
|
return [next_rng, g]
|
|
112
112
|
|
|
113
113
|
|
|
114
114
|
@node_rewriter([GenGammaRV])
|
|
115
115
|
def generalized_gamma_from_gamma(fgraph, node):
|
|
116
116
|
*other_inputs, alpha, p, lambd = node.inputs
|
|
117
|
-
next_rng, g =
|
|
117
|
+
next_rng, g = _gamma.make_node(*other_inputs, alpha / p, ones_like(lambd)).outputs
|
|
118
118
|
g = (g ** reciprocal(p)) * lambd
|
|
119
119
|
return [next_rng, cast(g, dtype=node.default_output().dtype)]
|
|
120
120
|
|
|
@@ -6,7 +6,7 @@ from pytensor.tensor.basic import TensorVariable, diagonal, swapaxes
|
|
|
6
6
|
from pytensor.tensor.blas import Dot22
|
|
7
7
|
from pytensor.tensor.blockwise import Blockwise
|
|
8
8
|
from pytensor.tensor.elemwise import DimShuffle
|
|
9
|
-
from pytensor.tensor.math import Dot, Prod, log, prod
|
|
9
|
+
from pytensor.tensor.math import Dot, Prod, _matrix_matrix_matmul, log, prod
|
|
10
10
|
from pytensor.tensor.nlinalg import MatrixInverse, det
|
|
11
11
|
from pytensor.tensor.rewriting.basic import (
|
|
12
12
|
register_canonicalize,
|
|
@@ -168,13 +168,25 @@ def cholesky_ldotlt(fgraph, node):
|
|
|
168
168
|
rewrite cholesky(dot(L, L.T), lower=True) = L, where L is lower triangular,
|
|
169
169
|
or cholesky(dot(U.T, U), upper=True) = U where U is upper triangular.
|
|
170
170
|
|
|
171
|
+
Also works with matmul.
|
|
172
|
+
|
|
171
173
|
This utilizes a boolean `lower_triangular` or `upper_triangular` tag on matrices.
|
|
172
174
|
"""
|
|
173
175
|
if not isinstance(node.op.core_op, Cholesky):
|
|
174
176
|
return
|
|
175
177
|
|
|
176
178
|
A = node.inputs[0]
|
|
177
|
-
if not (
|
|
179
|
+
if not (
|
|
180
|
+
A.owner is not None
|
|
181
|
+
and (
|
|
182
|
+
(
|
|
183
|
+
isinstance(A.owner.op, (Dot, Dot22))
|
|
184
|
+
# This rewrite only applies to matrix Dot
|
|
185
|
+
and A.owner.inputs[0].type.ndim == 2
|
|
186
|
+
)
|
|
187
|
+
or (A.owner.op == _matrix_matrix_matmul)
|
|
188
|
+
)
|
|
189
|
+
):
|
|
178
190
|
return
|
|
179
191
|
|
|
180
192
|
l, r = A.owner.inputs
|
|
@@ -2081,63 +2081,65 @@ def local_pow_to_nested_squaring(fgraph, node):
|
|
|
2081
2081
|
Note: This sounds like the kind of thing any half-decent compiler can do by itself?
|
|
2082
2082
|
"""
|
|
2083
2083
|
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
rval1_scal *= pow2_scal[log_to_do]
|
|
2122
|
-
else:
|
|
2123
|
-
rval1 = pow2[log_to_do]
|
|
2124
|
-
rval1_scal = pow2_scal[log_to_do]
|
|
2125
|
-
y_to_do -= 2**log_to_do
|
|
2126
|
-
|
|
2127
|
-
if abs(y) > 2:
|
|
2128
|
-
# We fuse all the pow together here to make
|
|
2129
|
-
# compilation faster
|
|
2130
|
-
rval1 = Elemwise(
|
|
2131
|
-
aes.Composite([pow2_scal[0]], [rval1_scal])
|
|
2132
|
-
).make_node(xsym)
|
|
2133
|
-
if y < 0:
|
|
2134
|
-
rval = [reciprocal(rval1)]
|
|
2084
|
+
# the idea here is that we have pow(x, y)
|
|
2085
|
+
odtype = node.outputs[0].dtype
|
|
2086
|
+
xsym = node.inputs[0]
|
|
2087
|
+
ysym = node.inputs[1]
|
|
2088
|
+
y = get_constant(ysym)
|
|
2089
|
+
|
|
2090
|
+
# the next line is needed to fix a strange case that I don't
|
|
2091
|
+
# know how to make a separate test.
|
|
2092
|
+
# That happen in the `test_log_erfc` test.
|
|
2093
|
+
# y is a ndarray with dtype int8 and value 2,4 or 6. This make
|
|
2094
|
+
# the abs(y) <= 512 fail!
|
|
2095
|
+
# taking the value outside ndarray solve the problem.
|
|
2096
|
+
# it could be that in that case, numpy make the comparison
|
|
2097
|
+
# into the wrong type(do in int8 that overflow.)
|
|
2098
|
+
if isinstance(y, np.ndarray):
|
|
2099
|
+
assert y.size == 1
|
|
2100
|
+
try:
|
|
2101
|
+
y = y[0]
|
|
2102
|
+
except IndexError:
|
|
2103
|
+
pass
|
|
2104
|
+
if (y is not None) and not broadcasted_by(xsym, ysym):
|
|
2105
|
+
rval = None
|
|
2106
|
+
# 512 is too small for the cpu and too big for some gpu!
|
|
2107
|
+
if abs(y) == int(abs(y)) and abs(y) <= 512:
|
|
2108
|
+
pow2 = [xsym]
|
|
2109
|
+
pow2_scal = [aes.get_scalar_type(xsym.dtype)()]
|
|
2110
|
+
y_to_do = abs(y)
|
|
2111
|
+
for i in range(int(np.log2(y_to_do))):
|
|
2112
|
+
pow2.append(sqr(pow2[i]))
|
|
2113
|
+
pow2_scal.append(aes.sqr(pow2_scal[i]))
|
|
2114
|
+
rval1 = None
|
|
2115
|
+
rval1_scal = None
|
|
2116
|
+
while y_to_do > 0:
|
|
2117
|
+
log_to_do = int(np.log2(y_to_do))
|
|
2118
|
+
if rval1:
|
|
2119
|
+
rval1 *= pow2[log_to_do]
|
|
2120
|
+
rval1_scal *= pow2_scal[log_to_do]
|
|
2135
2121
|
else:
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2122
|
+
rval1 = pow2[log_to_do]
|
|
2123
|
+
rval1_scal = pow2_scal[log_to_do]
|
|
2124
|
+
y_to_do -= 2**log_to_do
|
|
2125
|
+
|
|
2126
|
+
if abs(y) > 2:
|
|
2127
|
+
# We fuse all the pow together here to make
|
|
2128
|
+
# compilation faster
|
|
2129
|
+
rval1 = Elemwise(aes.Composite([pow2_scal[0]], [rval1_scal])).make_node(
|
|
2130
|
+
xsym
|
|
2131
|
+
)
|
|
2132
|
+
if y < 0:
|
|
2133
|
+
rval = [reciprocal(rval1)]
|
|
2134
|
+
else:
|
|
2135
|
+
rval = [rval1]
|
|
2136
|
+
if rval:
|
|
2137
|
+
rval[0] = cast(rval[0], odtype)
|
|
2138
|
+
# TODO: We can add a specify_broadcastable and/or unbroadcast to make the
|
|
2139
|
+
# output types compatible. Or work on #408 and let TensorType.filter_variable do it.
|
|
2140
|
+
if rval[0].type.broadcastable != node.outputs[0].type.broadcastable:
|
|
2141
|
+
return None
|
|
2142
|
+
return rval
|
|
2141
2143
|
|
|
2142
2144
|
|
|
2143
2145
|
@register_specialize
|
|
@@ -652,7 +652,7 @@ class _tensor_py_operators:
|
|
|
652
652
|
return at.math.matmul(left, right)
|
|
653
653
|
|
|
654
654
|
def __rmatmul__(right, left):
|
|
655
|
-
return at.math.matmul(
|
|
655
|
+
return at.math.matmul(left, right)
|
|
656
656
|
|
|
657
657
|
def sum(self, axis=None, dtype=None, keepdims=False, acc_dtype=None):
|
|
658
658
|
"""See :func:`pytensor.tensor.math.sum`."""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pytensor-2.16.3 → pytensor-2.17.1}/doc/library/d3viz/examples/d3viz/css/d3-context-menu.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|