{ "metadata": { "name": "", "signature": "sha256:2cb62c19c8ba01e11a04bdb458b50e2c56ec809d7bc71c2da998c6ca7afcbbb8" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "# Utils\n", "from scipy.stats import bernoulli \n", "from scipy.stats import beta \n", "import matplotlib.pyplot as plt \n", "import numpy as np \n", "from numpy.random import multinomial \n", "from numpy.random import dirichlet\n", "%matplotlib inline" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# LDA Sampling tutorial using Aprob" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# 25 word vocabulary \n", "W = 25 \n", "# image size \n", "L = np.sqrt(W) \n", "# 10 topics \n", "T = 10 \n", "# 100 documents \n", "D = 100 \n", "# 10 words per document \n", "N = 15 \n", " \n", "# phi is given as the horizontal and vertical topics on the 5X5 images \n", "phi = [np.zeros((L, L)) for i in range(T)] \n", "line = 0 \n", "for phi_t in phi: \n", " if line >= L: \n", " trueLine = int(line - L) \n", " phi_t[:,trueLine] = 1/L*np.ones(L) \n", " else: \n", " phi_t[line] = 1/L*np.ones(L) \n", " line += 1" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "# plot the topics \n", "f, axs = plt.subplots(1,T+1,figsize=(15,1)) \n", "ax = axs[0] \n", "ax.text(0,0.4, \"Topics: \", fontsize = 16) \n", "ax.axis(\"off\") \n", "ax.get_yaxis().set_visible(False) \n", "ax.get_xaxis().set_visible(False) \n", "for (ax, (i,phi_t)) in zip(axs[1:], enumerate(phi)): \n", " ax.get_yaxis().set_visible(False) \n", " ax.get_xaxis().set_visible(False) \n", " ax.imshow(phi_t, interpolation='none', cmap='Greys_r') \n", "f.savefig('phi_train.png', format='png')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAA08AAABGCAYAAAAU2a9PAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAACKNJREFUeJzt3V9ozf8Dx/HXOWfRMLEOhjFmLlxsRqxc2FmZfzUkhVYa\n01CyNoky8/dKZBIunIttytC48LfIZPIvQh2502iMKVo2ScvO53vx/X1Pv2PM+9g++5xz9nzUanv7\n7H3en5fz+Tgv55zPcVmWZQkAAAAA0CO30wsAAAAAgFhAeQIAAAAAA5QnAAAAADBAeQIAAAAAA5Qn\nAAAAADBAeQIAAAAAExZs5/P5LElx++Xz+fo8M6f3KRYzGzFihOP7FWuZWVZ839fILHpyy83NdXy/\nYi0zr9fr+H7FWmaWFd/HJ5lFT26DBg1yfL+cysz1vzsNbORyuRTPMduxfy6Xq0/niyZZWVkKBAJk\n9hfsOI7iPTcyi0xJSYn8fr8tx2cwGDTa1u2OrReFpKenq6mpyZbMTO9rXV1dEc0dLRk7fXxGsm0k\nGduZr9OZ2TWvXfkWFhaqrq4ubh9zRLIO03Pwf/P+LrPoOHsAAAAAQJSjPAEAAACAAcoTAAAAABig\nPAEAAACAAcoTAAAAABigPAEAAACAAcoTAAAAABigPAEAAACAAcoTAAAAABhIcHoBA0W0fJp5Xysr\nK7Nt7kg+CTrWxOv9AQAAIJ7xCA4AAAAADFCeAAAAAMAA5QkAAAAADFCeAAAAAMAA5QkAAAAADFCe\nAAAAAMAA5QkAAAAADFCeAAAAAMAA5QkAAAAADFCeAAAAAMBAQk9/6Hb/uVulpaXp9evXfbKYmpoa\nFRcX682bN5o4cWKfzBktLMtyegkxx+PxOL0EW2RlZdk2dzAYtG1up5mcjwAAAOzUY3l69OhR6HvL\nsrR8+XJlZ2dr7969ofHBgwf32WIKCgr06NEjpaSk9NmcAAAAANAXeixPOTk5YT8PHjxYXq+323hf\n8Xq98nq9tswNAAAAAL3R69fBPH78WPn5+UpKStKwYcOUn5+vJ0+ehG2zdu1aTZgwQQ8ePNDs2bOV\nmJioyZMn6/jx42Hb1dTUyO12q7m5OWzc7/dr5syZGjJkiJKTk5WXl6eHDx9Kkn78+KHKykpNmTJF\niYmJGjVqlObOnav79+/3dtcAAAAAIKRX5SkQCMjn8+nLly+qra3V6dOn1d7eLp/Pp0AgELZte3u7\nVq9erXXr1unSpUvKy8tTaWmpamtre7yNbdu2aePGjZo1a5bq6+t15swZ5ebm6u3bt5KkgwcP6ujR\noyorK9PNmzdVXV2t/Px8tbW1hebYu3fvL0sZAAAAAJjq8WV7f7J//34lJiaqoaFBw4cPlyTNnz9f\nkyZN0r59+3Tx4sXQth0dHfL7/Vq5cqUkacGCBWppadGePXtUVFT0y/lfvXqlqqoqbd26VYcPHw6N\nL168OPT9w4cPtXDhQm3ZsiU0VlBQEDaPx+NRQkKCXC5Xb3YXAAAAwADWq2ee7t69q4KCglBxkqSk\npCQtXbpUjY2NYdsmJCRoxYoVYWOrVq1Sc3Oz3r9//8v5b926JcuytGHDht+uIScnR9euXdOuXbt0\n7949dXZ2dtumsrJSnZ2dmjBhQiS7BwAAAAAhvSpPbW1tGjt2bLfxMWPGhL1sTpJGjBjR7dLTY8aM\nkSS1tLT8cv7Pnz9LklJTU3+7hp07d2rfvn26fPmycnNz5fV6VVxcHPpdAAAAAOgLvSpPycnJ+vDh\nQ7fx1tZWJScnh421tbWpq6srbOzjx4+SpPHjx/9y/v+uvPfu3bvfriEhIUHbt29XIBBQa2urqqqq\ndPHiRW3evDmifQEAAACAnvSqPPl8Pl2/fl1fv34NjXV0dOjKlSvKy8sL27arq0sXLlwIGzt37pzS\n0tI0bty4X84/f/58ud1unTp1ymg9o0eP1vr16zVv3jy9fPkysp0BAAAAgB5EdMEIy7LCfq6srNTV\nq1c1b9487dixQ9K/V7/7/v27du/eHbZtUlKStm/frk+fPikjI0Nnz55VQ0NDj1fbS09PV3l5uY4c\nOaKOjg4tWbJEHo9Hjx8/1rRp07Ry5UotW7ZM2dnZmjFjhkaOHKnnz5/rxo0b2rRpU2ie/fv368CB\nA2pqauJ9TwAAAAD+SkTl6eer1WVmZurOnTuqqKhQUVGRLMvSnDlz1NjYqMzMzLBthw8frvPnz6u0\ntFQvXrxQSkqKjh07pjVr1vR4G4cOHVJGRoZOnjyp2tpaDR06VNOnT9eiRYsk/fvsV319vU6cOKFv\n374pLS1NO3bsUEVFRWgOy7IUDAa7lT9Et3j9+7Jzv35+XyHMBINBp5dgC7e71x/lBwAA/o/L6odH\nqGvXrtXt27cH7OcsxfMl0svLy1VVVdXnhSCeM8vKylIgELAls3jOzbIsW4qny+WK6/JkV2bxqqSk\nRH6/35bj0/R+FmulNz09XU1NTY6e035+T/WfREvGTh+fkWwbScZ25ut0ZnbNa1e+hYWFqquri9vH\naZGsI5J/610u128z67ezR7w+iwAAAABgYOiX8hTv/yMOAAAAIP5F9J6nv1VdXd0fNwMAAAAAtomO\nF/0CAAAAQJSjPAEAAACAAcoTAAAAABigPAEAAACAAcoTAAAAABigPAEAAACAAcoTAAAAABjol895\nAtA/LMtyegkxyePxOL2EmBMMBp1egm38fr/TSwAARCmeeQIAAAAAA5QnAAAAADBAeQIAAAAAA5Qn\nAAAAADBAeQIAAAAAA5QnAAAAADBAeQIAAAAAA5QnAAAAADBAeQIAAAAAAwlOL2CgmDlzptNLsEVq\naqptc8drZlOnTlUgELBl7njNTJKePXtm29zxmtvTp0+dXgL+QqzdH1NTU9XU1GTL3HZlEQ0ZR8M5\nzeVyOXr7kYqGzCIRDflOmjTJljVEug672JVxjyzYzufzWZLi9svn85EZmcVkZvGeG5lFT25kRmb9\nkVm850Zm0ZPbQM7MZVmWJQAAAABAj3jPEwAAAAAYoDwBAAAAgAHKEwAAAAAYoDwBAAAAgAHKEwAA\nAAAY+AfiJGFrWluPUQAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "# sample theta from alpha = 1 \n", "theta = [dirichlet(np.ones(T)) for i in range(D)] \n", "\n", "# sample documents from theta and phi \n", "B = [] \n", "for d in range(D): \n", " doc = np.zeros(W) \n", " theta_sample = multinomial(N, theta[d]) \n", " for t,count in enumerate(theta_sample): \n", " doc += multinomial(count, phi[int(t)].flatten()) \n", " doc = doc.reshape(L,L) \n", " B.append(doc) \n", " \n", "words = [] \n", "for b in B: \n", " doc = [] \n", " for idx,el in enumerate(b.flatten()): \n", " doc += [idx]*el \n", " words += doc" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "# write Aprob file\n", "with open('../in/lda_artificial.pl', 'w') as fout: \n", " fout.write('% docs\\n') \n", " for d in range(D): \n", " fout.write('doc(d{}).\\n'.format(d)) \n", " fout.write('% words\\n') \n", " for w in set(words): \n", " fout.write('word(w{}).\\n'.format(w)) \n", " fout.write('% topics\\n') \n", " for t in range(T): \n", " fout.write('topic(t{}).\\n'.format(t)) \n", " fout.write('% data\\n') \n", " for d in range(D): \n", " word_list = map(lambda x: 'w{}'.format(x), \n", " words[d*N:d*N+N]) \n", " str_word_list = '['+','.join(word_list)+']' \n", " fout.write('observe(d{}, {}).\\n'.format(d, str_word_list)) \n", " fout.write('% prob distribs\\n') \n", " fout.write(('aprob_dirichlet_share({}, D, theta(T,D)) :-'+ \n", " 'topic(T), doc(D).\\n').format(list(np.ones(T)))) \n", " fout.write(('aprob_dirichlet_share({}, T, phi(W,T)) :-'+ \n", " 'word(W), topic(T).\\n').format(list(np.ones(W))))\n", " fout.write(''' \n", "% aprob flags \n", "%:- set_value(dbg_read,2). \n", "%:- set_value(dbg_query,2). \n", "%:- set_value(dbg_write,2). \n", " \n", "% template for lda \n", "%lda :- \n", "% theta(T,d0), \n", "% phi(w0,T). \n", " \n", "% plate iterator \n", "% aprob_plate(+IteratorQuery, +PlateQuery) \n", "% IteratorQuery - query that iterates through plates \n", "% PlateQuery - plate specific query \n", "aprob_plate([observe(D, WordList), member(Word, WordList)], \n", " [theta(T,D),phi(Word,T)]).''')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "%%bash\n", "cat ../in/lda_query.pl\n", "echo 'This is the query file we use to run Aprob (the logical inference part).'" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "% load the Aprob prolog file\n", ":- ['../src/aprob.pl'].\n", "% load the input file and query\n", ":- load_and_query_aprob('../in/lda_artificial.pl').\n", "% stop prolog\n", ":- halt.\n", "This is the query file we use to run Aprob (the logical inference part).\n" ] } ], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "%%time\n", "%%bash\n", "sicstus -l ../in/lda_query.pl" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "% compiling /home/rares/p/aprob/in/lda_query.pl...\n", "% compiling /home/rares/p/aprob/src/aprob.pl...\n", "% module abduction imported into user\n", "% loading /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/clpfd.po...\n", "% module clpfd imported into abduction\n", "% loading /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/atts.po...\n", "% module attributes imported into clpfd\n", "% loading /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/types.po...\n", "% module types imported into attributes\n", "% loaded /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/types.po in module types, 0 msec 1424 bytes\n", "% loaded /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/atts.po in module attributes, 0 msec 27824 bytes\n", "% loading /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/avl.po...\n", "% module avl imported into clpfd\n", "% loaded /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/avl.po in module avl, 0 msec 47376 bytes\n", "% loading /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/lists.po...\n", "% module lists imported into clpfd\n", "% module types imported into lists\n", "% loaded /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/lists.po in module lists, 0 msec 109104 bytes\n", "% loading /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/ordsets.po...\n", "% module ordsets imported into clpfd\n", "% loaded /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/ordsets.po in module ordsets, 0 msec 37248 bytes\n", "% loading /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/trees.po...\n", "% module trees imported into clpfd\n", "% loaded /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/trees.po in module trees, 0 msec 9856 bytes\n", "% module types imported into clpfd\n", "% loading /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/samsort.po...\n", "% module samsort imported into clpfd\n", "% loaded /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/samsort.po in module samsort, 0 msec 21424 bytes\n", "% loading /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/timeout.po...\n", "% module timeout imported into clpfd\n", "% module types imported into timeout\n", "% loading foreign resource /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/x86_64-linux-glibc2.7/timeout.so in module timeout\n", "% loaded /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/timeout.po in module timeout, 0 msec 12320 bytes\n", "% loading foreign resource /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/x86_64-linux-glibc2.7/clpfd.so in module clpfd\n", "% loaded /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/clpfd.po in module clpfd, 20 msec 1812320 bytes\n", "% loading /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/clpr.po...\n", "% module clpr imported into abduction\n", "% module arith_r imported into clpr\n", "% module types imported into arith_r\n", "% module types imported into clpr\n", "% module attributes imported into clpr\n", "% module geler_r imported into clpr\n", "% module attributes imported into geler_r\n", "% module nfr imported into clpr\n", "% module arith_r imported into nfr\n", "% module clpr imported into nfr\n", "% module types imported into nfr\n", "% loading /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/terms.po...\n", "% module terms imported into nfr\n", "% module types imported into terms\n", "% module avl imported into terms\n", "% loaded /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/terms.po in module terms, 0 msec 40752 bytes\n", "% module geler_r imported into nfr\n", "% module classr imported into clpr\n", "% module clpr imported into classr\n", "% module types imported into classr\n", "% loading /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/ugraphs.po...\n", "% module ugraphs imported into classr\n", "% module ordsets imported into ugraphs\n", "% module lists imported into ugraphs\n", "% module avl imported into ugraphs\n", "% loading /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/random.po...\n", "% module random imported into ugraphs\n", "% module types imported into random\n", "% loading foreign resource /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/x86_64-linux-glibc2.7/random.so in module random\n", "% loaded /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/random.po in module random, 10 msec 23520 bytes\n", "% module types imported into ugraphs\n", "% loaded /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/ugraphs.po in module ugraphs, 10 msec 76624 bytes\n", "% module attributes imported into classr\n", "% module ordsets imported into clpr\n", "% module terms imported into clpr\n", "% loading /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/assoc3.po...\n", "% module assoc3 imported into clpr\n", "% module avl imported into assoc3\n", "% loaded /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/assoc3.po in module assoc3, 0 msec 11664 bytes\n", "% loaded /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/clpr.po in module clpr, 10 msec 668336 bytes\n", "% module attributes imported into abduction\n", "% module ordsets imported into abduction\n", "% module terms imported into abduction\n", "% module lists imported into abduction\n", "% loading /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/sets.po...\n", "% module sets imported into abduction\n", "% module lists imported into sets\n", "% loaded /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/sets.po in module sets, 0 msec 20640 bytes\n", "% loading /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/process.po...\n", "% module process imported into abduction\n", "% loaded /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/process.po in module process, 0 msec 4976 bytes\n", "% loading /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/file_systems.po...\n", "% module file_systems imported into abduction\n", "% module types imported into file_systems\n", "% loading /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/system.po...\n", "% module system imported into file_systems\n", "% module types imported into system\n", "% loaded /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/system.po in module system, 0 msec 4288 bytes\n", "% module lists imported into file_systems\n", "% loaded /usr/local/sicstus4.2.3/bin/sp-4.2.3/sicstus-4.2.3/library/file_systems.po in module file_systems, 0 msec 47936 bytes\n", "% module timeout imported into abduction\n", "% module system imported into abduction\n", "* [F,L2,LNew,L2New,Paths,Time3,L2NoNegNew,AbdOrder,AbdOrderNew,PathsNew,L2NoNeg] - singleton variables\n", "* Approximate lines: 3197-3308, file: '/home/rares/p/aprob/src/aprob.pl'\n", "% compiled /home/rares/p/aprob/src/aprob.pl in module abduction, 300 msec 3833072 bytes\n", "% compiled /home/rares/p/aprob/in/lda_query.pl in module user, 28580 msec 9044800 bytes\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "CPU times: user 8 ms, sys: 0 ns, total: 8 ms\n", "Wall time: 29.4 s\n" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "# Ok, now we use the rest of the Aprob pipeline to:\n", "# 1. Parse the Formula (and the other files)\n", "from formula_gen import Formula \n", "option_args = { \n", " 'probs_file' : '../out/out.probs', \n", " 'sat_file' : '../out/out.sat', \n", " 'plate_file' : '../out/out.plate' \n", "} \n", "option = 'read_sat' \n", "fr = Formula(option, option_args) \n", "fr.formula.to_formula()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 2, "text": [ "'((10&1)|((11&2)&~1)|((12&3)&(~1&~2))|((13&4)&(~1&~2&~3))|((14&5)&(~1&~2&~3&~4))|((15&6)&(~1&~2&~3&~4&~5))|((16&7)&(~1&~2&~3&~4&~5&~6))|((17&8)&(~1&~2&~3&~4&~5&~6&~7))|((18&9)&(~1&~2&~3&~4&~5&~6&~7&~8))|(19&(~1&~2&~3&~4&~5&~6&~7&~8&~9))|(10&1)|((11&2)&~1)|((12&3)&(~1&~2))|((13&4)&(~1&~2&~3))|((14&5)&(~1&~2&~3&~4))|((15&6)&(~1&~2&~3&~4&~5))|((16&7)&(~1&~2&~3&~4&~5&~6))|((17&8)&(~1&~2&~3&~4&~5&~6&~7))|((18&9)&(~1&~2&~3&~4&~5&~6&~7&~8))|(19&(~1&~2&~3&~4&~5&~6&~7&~8&~9))|(10&1)|((11&2)&~1)|((12&3)&(~1&~2))|((13&4)&(~1&~2&~3))|((14&5)&(~1&~2&~3&~4))|((15&6)&(~1&~2&~3&~4&~5))|((16&7)&(~1&~2&~3&~4&~5&~6))|((17&8)&(~1&~2&~3&~4&~5&~6&~7))|((18&9)&(~1&~2&~3&~4&~5&~6&~7&~8))|(19&(~1&~2&~3&~4&~5&~6&~7&~8&~9)))'" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "# 2. Compile it to a BDD\n", "from knowledge_compilation import BDD \n", "bdd = BDD(option='pycudd', formula = fr.formula) \n", "bdd.compile()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "%%time\n", "# 3. Perform sampling on the BDD plate\n", "from prob_inference import PyCUDDInference \n", "inf = PyCUDDInference(bdd) \n", "gibbs_options = { \n", " 'N': 100 \n", "} \n", "inf.gibbs_sampler_plate(gibbs_options)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAA0QAAABGCAYAAADsOVS4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAACYNJREFUeJzt3UtIVf0ax/Fn505N0kJSS7voNm9ZCFYUREkFUQ662aAk\ng5BuhlAQRChENZAoqOgCRkhXiEpyUtIoSwqUgqKCahBYhBnYBYqIpP0ODufAGaS//2F5Fvn/fsDR\n++Vxrb/b5X5eAyPxeDxuAAAAAOChUWFfAAAAAACEhYUIAAAAgLdYiAAAAAB4i4UIAAAAgLdYiAAA\nAAB4i4UIAAAAgL/ig1iwYEHczEbsR0VFxWC3PywmTZoU+n2PtDOdNm1a6Pc90s40Ho+Hft8j8Uyz\ns7NDv/eRdqY5OTmh3/tIO9eEhITQ73uknWl6enro9z3SznTRokWh3/dIO1Ofn6eRePzPf4coEolY\nf3//n/7zfyksLJS6f8918ePHD7mdMGGC3Pb09Nggtz8sIpGI5eXlSe2aNWucZr9//15uOzs75XbZ\nsmVye/78+VDONBaLyf3Bgwfl9tmzZ3KbnZ0tt79+/ZLbPXv2/N/P1Mzt+3TlypVy+/btW7l1OafW\n1la5LS4uDu1M6+vrpfbUqVPy3KNHj8rt9evX5XbdunVyG+brdNeuXVKblJQkz21vb5fbc+fOyW1u\nbq7cJicnW1paWijP1PT0dKldvXq1PHfDhg1yu3TpUrk1Mxs1SvsHLytWrLD29vZQzlT9WdrU1CTP\nXb9+vdxWVVXJrdm/zkqRkpJic+fODeVMf//+LbXq68PM7XVqZpafny+37969k7rk5GRrbm4O5UwX\nLVoktRs3bnSa/fPnT7lVv65mZjU1NXKbnp7+xzPln8wBAAAA8BYLEQAAAABvsRABAAAA8BYLEQAA\nAABvsRABAAAA8BYLEQAAAABvsRABAAAA8BYLEQAAAABvsRABAAAA8FZ0qKCyslIalJOTI3/S5uZm\nuTUz27x5s9zOnj1bbnt6epyuIyhv376VOpe/Pm9mNnHiRLlNSUmR2/PnzztdRximTp0qty0tLcNy\nDY2NjXIbi8Xkds+ePf/L5QTi7t27UldRUSHP/Pr1q9zeunVLbuvr6+U2TO/fv5e6wsJCeebu3bvl\n9vTp03Lb19cnt2HasWOH1EWjQ/7I+4+qqiq5dXlWnzlzRm4jkYjcBm3Lli1S9+TJE3lma2ur3O7b\nt09uzcyampqkLhaLWXt7u9PsoCQkJEidy+s0LS1Nbl3eH5mZZWRkSF1iYqLT3CCtXbtW6g4cOCDP\nnDNnjtM1JCUlye2lS5ecZoeho6ND6vbu3es0t7OzU25ra2vltry83Ok6/oTfEAEAAADwFgsRAAAA\nAG+xEAEAAADwFgsRAAAAAG+xEAEAAADwFgsRAAAAAG+xEAEAAADwFgsRAAAAAG+xEAEAAADwFgsR\nAAAAAG9Fhwq2b98uDWppaZE/6dq1a+XWzKy3t1due3p6nGaHoaCgQOpKSkqc5k6ZMkVu3717J7c1\nNTVye+nSJbkN0okTJ+Q2KytLbg8dOiS3HR0dcvv792+5DdOaNWukbvr06fJMlzOtq6uT2+XLl8tt\nmD59+iR18+fPl2dmZGTIbWlpqdw+fPhQbsN0+vRpqTty5Ig8U31Om5ndvn1bbr9+/Sq3qampchu0\n2tpaqWttbZVntrW1ye28efPk1sxs8eLFUjdu3DinuUE6efKk1MXjcXlmd3e33Lo8J8zMduzYIXWZ\nmZlOc4Okvk4+fPggz7x8+bLTNSxbtizwNhqNWnNzs9N1BCU/P1/q+vr6nOauWrVKbhcuXCi3Lu9R\nB3v/wW+IAAAAAHiLhQgAAACAt1iIAAAAAHiLhQgAAACAt1iIAAAAAHiLhQgAAACAt1iIAAAAAHiL\nhQgAAACAt1iIAAAAAHiLhQgAAACAt6JDBffu3ZMGTZ48Wf6kBQUFcmtmdvXqVbktKSmR28ePHztd\nR1BevXoldQsXLnSaO336dLk9fvy43J45c8bpOsKwbds2ua2urpbb3NxcuX358qXcLl26VG7DtHPn\nTqm7f/++PDMlJUVuv337JrcNDQ1ye+3aNbkNWlFRkdRduXJFnvnx40e57evrk9utW7fKbZgePXok\ndS6vvZqaGrnNzMyU21gsJrdhampqkrqnT5/KM2fMmCG3z549k1szs8TERKkbPXq009wgqe99Nm3a\nJM9U36OZmT148EBuzcza2tqkzuX7Kmhnz56VuiVLlsgzGxsbna5B/V4xM6uqqpK6aHTIt+fD5vDh\nw1J38eJFp7m9vb1yu3//frl1ea4Mht8QAQAAAPAWCxEAAAAAb7EQAQAAAPAWCxEAAAAAb7EQAQAA\nAPAWCxEAAAAAb7EQAQAAAPAWCxEAAAAAb7EQAQAAAPAWCxEAAAAAb7EQAQAAAPBWdKigpaVFGnT0\n6FH5k44ZM0Zuzcxu3rwpt9HokLcUurKyMqlLS0tzmvv9+3e5raurk9ukpCSn6whDV1eX3E6bNk1u\ns7Ky5Lazs1NuZ86cKbdhGhgYkLrRo0fLMxsaGuS2srJSbvPy8uQ2TMeOHZO6x48fyzOfP38ut62t\nrXJ76tQpuS0qKpLboH3+/Fnqamtr5ZnV1dVy6/I6HTt2rNyuX79eboP26dMnqXv9+rU80+XZe+HC\nBbk1M6upqZG6+fPnO80N0v79+6WusbFRnllfXy+3L168kFszsxs3bkhdLBZzmhsk9b1Md3e3PPPO\nnTtO15Ceni63Z8+elTrX98lBampqkronT544zXV5/iYnJ8vtmzdvnK7jT/gNEQAAAABvsRABAAAA\n8BYLEQAAAABvsRABAAAA8BYLEQAAAABvsRABAAAA8BYLEQAAAABvsRABAAAA8BYLEQAAAABvRYMa\nlJWVJbdJSUlOs8vKyuR26tSpctvV1eV0HUEpKSmRuszMTKe5Ln/ZOB6Py21iYqLcPnr0SG6DVF5e\nLrd5eXly6/IXqEtLS+U2GtW/9Vz/uniQcnJypO7Lly/yzF+/fsltamqq3I4a9Xf8/51IJCJ1xcXF\n8syUlBS5Vb+mZu7P6rDMmDFD6lx+PowdO1ZuZ82aJbcuX6vs7Gy5DVosFpO6/v7+wGeauf3cMTMr\nLCyUOpfXf9AmTZoU+MwpU6bI7fjx451mq8+gMM9Ufe/p8nPf9b3XwMCA3KrvvcJ89qpfd9efuS7P\nX5f7//79u9N1/FF8EBUVFXEzG7EfFRUVg93+sOBMOdO/4UxH+rlyppzp3/LBM5Uz/Rs+OFPO9G/4\nGOxMI/G4w68KAAAAAGAE+Tv+jQkAAAAADAMWIgAAAADeYiECAAAA4C0WIgAAAADeYiECAAAA4K1/\nADK5pxTdQHQfAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }