{ "info": { "author": "Brancher development team", "author_email": "info@brancher.org", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Brancher: A user-centered Python package for differentiable probabilistic inference\n\nBrancher allows to design and train differentiable Bayesian models using stochastic variational inference. Brancher is based on the deep learning framework PyTorch. \n\n## Building probabilistic models ##\nProbabilistic models are defined symbolically. Random variables can be created as follows:\n```python\na = NormalVariable(loc = 0., scale = 1., name = 'a')\nb = NormalVariable(loc = 0., scale = 1., name = 'b')\n```\nIt is possible to chain together random variables by using arithmetic and mathematical functions:\n```python\nc = NormalVariable(loc = a**2 + BF.sin(b), \n scale = BF.exp(b), \n name = 'a')\n```\nIn this way, it is possible to create arbitrarely complex probabilistic models. It is also possible to use all the deep learning tools of PyTorch in order to define probabilistic models with deep neural networks.\n\n## Example: Autoregressive modeling ##\n\n### Probabilistic model ###\nProbabilistic models are defined symbolically:\n\n```python\nT = 20\ndriving_noise = 1.\nmeasure_noise = 0.3\nx0 = NormalVariable(0., driving_noise, 'x0')\ny0 = NormalVariable(x0, measure_noise, 'x0')\nb = LogitNormalVariable(0.5, 1., 'b')\n\nx = [x0]\ny = [y0]\nx_names = [\"x0\"]\ny_names = [\"y0\"]\nfor t in range(1,T):\n x_names.append(\"x{}\".format(t))\n y_names.append(\"y{}\".format(t))\n x.append(NormalVariable(b*x[t-1], driving_noise, x_names[t]))\n y.append(NormalVariable(x[t], measure_noise, y_names[t]))\nAR_model = ProbabilisticModel(x + y)\n```\n\n\n### Observe data ###\nOnce the probabilistic model is define, we can decide which variable is observed:\n\n```python\n[yt.observe(data[yt][:, 0, :]) for yt in y]\n```\n\n### Autoregressive variational distribution ###\nThe variational distribution can have an arbitrary structure:\n\n```python\nQb = LogitNormalVariable(0.5, 0.5, \"b\", learnable=True)\nlogit_b_post = DeterministicVariable(0., 'logit_b_post', learnable=True)\nQx = [NormalVariable(0., 1., 'x0', learnable=True)]\nQx_mean = [DeterministicVariable(0., 'x0_mean', learnable=True)]\nfor t in range(1, T):\n Qx_mean.append(DeterministicVariable(0., x_names[t] + \"_mean\", learnable=True))\n Qx.append(NormalVariable(BF.sigmoid(logit_b_post)*Qx[t-1] + Qx_mean[t], 1., x_names[t], learnable=True))\nvariational_posterior = ProbabilisticModel([Qb] + Qx)\nmodel.set_posterior_model(variational_posterior)\n```\n\n### Inference ###\nNow that the models are specified we can perform approximate inference using stochastic gradient descent:\n\n```python\ninference.perform_inference(AR_model, \n number_iterations=500,\n number_samples=300,\n optimizer=\"SGD\",\n lr=0.001)\n```\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://brancher.org/", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "brancher", "package_url": "https://pypi.org/project/brancher/", "platform": "", "project_url": "https://pypi.org/project/brancher/", "project_urls": { "Homepage": "https://brancher.org/" }, "release_url": "https://pypi.org/project/brancher/0.3.5/", "requires_dist": [ "python-version (>=\"3.7\")", "numpy (>=1.15.4)", "pandas (>=0.23.4)", "matplotlib (>=3.0.2)", "seaborn (>=0.9.0)", "scipy (>=1.1.0)", "tqdm (>=4.28.1)" ], "requires_python": "", "summary": "A user-centered Python package for differentiable probabilistic inference", "version": "0.3.5" }, "last_serial": 5567076, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "5fe9c061c7a1c2f7836617b3e69b4b13", "sha256": "0e5bc07a766bedb057ec2bfb8347fa414b626cbaf048fd022542bb1647f953b3" }, "downloads": -1, "filename": "brancher-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5fe9c061c7a1c2f7836617b3e69b4b13", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32294, "upload_time": "2019-03-12T16:18:26", "url": "https://files.pythonhosted.org/packages/03/35/34de2d139e1158e2ae56e2fa07379f96bd51543ce909c8ff37598cd2496d/brancher-0.1.0-py3-none-any.whl" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "3abd33fb747ff27bf92f111dbe46d5e1", "sha256": "f797c69e061779dbad468bbaffcf68ef27ff515592cb1e5daf91998a34279b1f" }, "downloads": -1, "filename": "brancher-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3abd33fb747ff27bf92f111dbe46d5e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 35406, "upload_time": "2019-06-03T12:12:58", "url": "https://files.pythonhosted.org/packages/29/fb/ad8ce722a6251411cb667af5c2a86ea34e068e8c3f4939efbcc19e20292f/brancher-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0dc5908fd205336db9e3b3c09b89e03a", "sha256": "58c5a1c3f7d020e811b4b6bb0902442736d332a8e0d9d38bbd09daabcd202c92" }, "downloads": -1, "filename": "brancher-0.2.0.tar.gz", "has_sig": false, "md5_digest": "0dc5908fd205336db9e3b3c09b89e03a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29701, "upload_time": "2019-06-03T12:12:59", "url": "https://files.pythonhosted.org/packages/1b/58/e0cef668c74c6cf5b73436a66e5c092afb01b5658db0ff1dc39a129c3c44/brancher-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "3cfbf2e199cc8a05185714fb9f3f3e6f", "sha256": "035754109184ea26145f45907e5f6dac5e1adde798cf49abdf624275018ff537" }, "downloads": -1, "filename": "brancher-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3cfbf2e199cc8a05185714fb9f3f3e6f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 35421, "upload_time": "2019-06-14T11:15:56", "url": "https://files.pythonhosted.org/packages/d0/b1/478d0a1e0c696f27d10e8bd481e934d611692fde2a207864d1856b257bd3/brancher-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ef3ee9fb25ec30dfccd54f1f9bd155b3", "sha256": "e5e1722e5290e4414386f8ccaa1d7e54c5530e905dce99a25706f18a1a568ddf" }, "downloads": -1, "filename": "brancher-0.2.1.tar.gz", "has_sig": false, "md5_digest": "ef3ee9fb25ec30dfccd54f1f9bd155b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28711, "upload_time": "2019-06-14T11:15:58", "url": "https://files.pythonhosted.org/packages/eb/cc/0f5fac9eefb59df7e00cd14cd34c558d95425f9423ec32ad0b1c55962c7a/brancher-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "174671788f187f0e7af527728c4da165", "sha256": "cb749e33b4bab7a19f3c3419e1081d70595aa0636d99b92498f105e287369cf2" }, "downloads": -1, "filename": "brancher-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "174671788f187f0e7af527728c4da165", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 35697, "upload_time": "2019-06-21T17:06:57", "url": "https://files.pythonhosted.org/packages/cc/3f/1e77914bd16a07965cd1f023290227b6b5c2e32ab5aa1946109e4e76e05f/brancher-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "480bce9dc407769640653fcc800bc964", "sha256": "5164a5299848bb5c6a8507e0f089981fa32816bb0933ed61c20309cd32105f95" }, "downloads": -1, "filename": "brancher-0.3.0.tar.gz", "has_sig": false, "md5_digest": "480bce9dc407769640653fcc800bc964", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30001, "upload_time": "2019-06-21T17:06:58", "url": "https://files.pythonhosted.org/packages/02/7f/c676e00d01fb2c164395cf4463e8457f5a9db0516c8df2fa402f2304fe45/brancher-0.3.0.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "7046416ea30913e068e785dd98d73c17", "sha256": "1fe1c23be6e68c1d8f44763c1429e5c79b2273c0092461af5def9430a9c8beb9" }, "downloads": -1, "filename": "brancher-0.3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "7046416ea30913e068e785dd98d73c17", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44249, "upload_time": "2019-07-22T12:12:33", "url": "https://files.pythonhosted.org/packages/9e/9e/9cb048f19ec0601a2c7a47c834a759b1011fe9228b471940daad1e0c7904/brancher-0.3.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b7d1212262fcba39e285780642c86fa", "sha256": "a153e942a558098537ce51d34cb6792e6331d62ee75ba36ffc4b70a4a1b77331" }, "downloads": -1, "filename": "brancher-0.3.5.tar.gz", "has_sig": false, "md5_digest": "2b7d1212262fcba39e285780642c86fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37938, "upload_time": "2019-07-22T12:12:35", "url": "https://files.pythonhosted.org/packages/f3/a4/655141a4913cd5e00fcf1c279d5ce4b56acbb6d43ecd46255449c62f1601/brancher-0.3.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7046416ea30913e068e785dd98d73c17", "sha256": "1fe1c23be6e68c1d8f44763c1429e5c79b2273c0092461af5def9430a9c8beb9" }, "downloads": -1, "filename": "brancher-0.3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "7046416ea30913e068e785dd98d73c17", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44249, "upload_time": "2019-07-22T12:12:33", "url": "https://files.pythonhosted.org/packages/9e/9e/9cb048f19ec0601a2c7a47c834a759b1011fe9228b471940daad1e0c7904/brancher-0.3.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b7d1212262fcba39e285780642c86fa", "sha256": "a153e942a558098537ce51d34cb6792e6331d62ee75ba36ffc4b70a4a1b77331" }, "downloads": -1, "filename": "brancher-0.3.5.tar.gz", "has_sig": false, "md5_digest": "2b7d1212262fcba39e285780642c86fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37938, "upload_time": "2019-07-22T12:12:35", "url": "https://files.pythonhosted.org/packages/f3/a4/655141a4913cd5e00fcf1c279d5ce4b56acbb6d43ecd46255449c62f1601/brancher-0.3.5.tar.gz" } ] }