diff --git a/notebooks/bayesian_linear_regression_MCMC.ipynb b/notebooks/bayesian_linear_regression_MCMC.ipynb new file mode 100644 index 000000000..0825f4e90 --- /dev/null +++ b/notebooks/bayesian_linear_regression_MCMC.ipynb @@ -0,0 +1,527 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Bayesian Linear Regression\n", + "\n", + "Edward can excecute \n", + "\n", + "An comparison of these algorighms\n", + "various types of MCMC algorighms\n", + "- Metropolis-Hastings\n", + "- Gibbs sampling\n", + "- Hamilton Monte-Carlo (HMC)\n", + "- Stchastic Gradient MCMC(SGMCMC)\n", + "\n", + "The model is same as the one of supervised-regression \n", + "http://edwardlib.org/tutorials/supervised-regression." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Couldn't import dot_parser, loading of dot files will not be possible.\n" + ] + } + ], + "source": [ + "%matplotlib inline\n", + "from __future__ import absolute_import\n", + "from __future__ import division\n", + "from __future__ import print_function\n", + "\n", + "import edward as ed\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import numpy as np\n", + "import tensorflow as tf\n", + "import pandas as pd\n", + "\n", + "from edward.models import Normal, Empirical\n", + "\n", + "plt.style.use('ggplot')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data\n", + "\n", + "Simulate training and test sets of $40$ data points. They comprise of\n", + "pairs of inputs $\\mathbf{x}_n\\in\\mathbb{R}^{10}$ and outputs\n", + "$y_n\\in\\mathbb{R}$. They have a linear dependence with normally\n", + "distributed noise." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def build_toy_dataset(N, w):\n", + " D = len(w)\n", + " x = np.random.normal(0.0, 2.0, size=(N, D))\n", + " y = np.dot(x, w) + np.random.normal(0.0, 0.01, size=N)\n", + " return x, y\n", + "\n", + "\n", + "ed.set_seed(42)\n", + "\n", + "N = 40 # number of data points\n", + "D = 10 # number of features\n", + "\n", + "w_true = np.random.randn(D) * 0.5\n", + "X_train, y_train = build_toy_dataset(N, w_true)\n", + "X_test, y_test = build_toy_dataset(N, w_true)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "## Model\n", + "\n", + "Posit the model as Bayesian linear regression (Murphy, 2012).\n", + "It assumes a linear relationship between the inputs\n", + "$\\mathbf{x}\\in\\mathbb{R}^D$ and the outputs $y\\in\\mathbb{R}$.\n", + "\n", + "For a set of $N$ data points $(\\mathbf{X},\\mathbf{y})=\\{(\\mathbf{x}_n, y_n)\\}$,\n", + "the model posits the following distributions:\n", + "\n", + "\\begin{align*}\n", + " p(\\mathbf{w})\n", + " &=\n", + " \\text{Normal}(\\mathbf{w} \\mid \\mathbf{0}, \\sigma_w^2\\mathbf{I}),\n", + " \\\\[1.5ex]\n", + " p(b)\n", + " &=\n", + " \\text{Normal}(b \\mid 0, \\sigma_b^2),\n", + " \\\\\n", + " p(\\mathbf{y} \\mid \\mathbf{w}, b, \\mathbf{X})\n", + " &=\n", + " \\prod_{n=1}^N\n", + " \\text{Normal}(y_n \\mid \\mathbf{x}_n^\\top\\mathbf{w} + b, \\sigma_y^2).\n", + "\\end{align*}\n", + "\n", + "The latent variables are the linear model's weights $\\mathbf{w}$ and\n", + "intercept $b$, also known as the bias.\n", + "Assume $\\sigma_w^2,\\sigma_b^2$ are known prior variances and $\\sigma_y^2$ is a\n", + "known likelihood variance. The mean of the likelihood is given by a\n", + "linear transformation of the inputs $\\mathbf{x}_n$.\n", + "\n", + "Let's build the model in Edward, fixing $\\sigma_w,\\sigma_b,\\sigma_y=1$." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "X = tf.placeholder(tf.float32, [N, D])\n", + "w = Normal(loc=tf.zeros(D), scale=tf.ones(D))\n", + "b = Normal(loc=tf.zeros(1), scale=tf.ones(1))\n", + "y = Normal(loc=ed.dot(X, w) + b, scale=tf.ones(N))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "tf.placeholder is used for container of obserbed variable X. target variable y is This is model (dot(X,w)+b)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Inference\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "T = 5000 # Number of samples.\n", + "nburn = 100 # Number of burn-in samples.\n", + "stride = 10 # Frequency with which to plot samples." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "qw = Empirical(params=tf.Variable(tf.random_normal([T, D])))\n", + "qb = Empirical(params=tf.Variable(tf.random_normal([T, 1])))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "hidden variable should be Empirical in MCMC." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "by MCMC" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### HMC" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5000/5000 [100%] ██████████████████████████████ Elapsed: 4s | Acceptance Rate: 1.000\n" + ] + } + ], + "source": [ + "inference_HMC = ed.HMC({w: qw, b: qb}, data={X: X_train, y: y_train})\n", + "inference_HMC.run(step_size=1e-3)\n", + "y_post_HMC = ed.copy(y, {w: qw, b: qb})\n", + "qw_HMC,qb_HMC=qw,qb" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean squared error on test data:\n", + "4.25284\n", + "Mean absolute error on test data:\n", + "1.62384\n" + ] + } + ], + "source": [ + "print(\"Mean squared error on test data:\")\n", + "print(ed.evaluate('mean_squared_error', data={X: X_test, y_post_HMC: y_test}))\n", + "\n", + "print(\"Mean absolute error on test data:\")\n", + "print(ed.evaluate('mean_absolute_error', data={X: X_test, y_post_HMC: y_test}))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### SGMCMC" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5000/5000 [100%] ██████████████████████████████ Elapsed: 3s | Acceptance Rate: 1.000\n" + ] + } + ], + "source": [ + "inference_SGHMC=ed.SGHMC({w: qw, b: qb}, data={X: X_train, y: y_train})\n", + "inference_SGHMC.run(step_size=1e-3)\n", + "y_post_SGHMC = ed.copy(y, {w: qw, b: qb})\n", + "qw_SGHMC,qb_SGHMC=qw,qb" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean squared error on test data:\n", + "0.0176847\n", + "Mean absolute error on test data:\n", + "0.0932609\n" + ] + } + ], + "source": [ + "print(\"Mean squared error on test data:\")\n", + "print(ed.evaluate('mean_squared_error', data={X: X_test, y_post_SGHMC: y_test}))\n", + "\n", + "print(\"Mean absolute error on test data:\")\n", + "print(ed.evaluate('mean_absolute_error', data={X: X_test, y_post_SGHMC: y_test}))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Gibbs" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5000/5000 [100%] ██████████████████████████████ Elapsed: 8s | Acceptance Rate: 1.000\n" + ] + } + ], + "source": [ + "inference_Gibbs=ed.Gibbs({w: qw, b: qb},{w:w,b:b}, data={X: X_train, y: y_train})\n", + "inference_Gibbs.run()\n", + "y_post_Gibbs = ed.copy(y, {w: qw, b: qb})\n", + "qw_Gibbs,qb_Gibbs=qw,qb" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean squared error on test data:\n", + "35.6354\n", + "Mean absolute error on test data:\n", + "4.79237\n" + ] + } + ], + "source": [ + "print(\"Mean squared error on test data:\")\n", + "print(ed.evaluate('mean_squared_error', data={X: X_test, y_post_Gibbs: y_test}))\n", + "\n", + "print(\"Mean absolute error on test data:\")\n", + "print(ed.evaluate('mean_absolute_error', data={X: X_test, y_post_Gibbs: y_test}))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Criticism\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def visualise(X_data, y_data, w, b, n_samples=10):\n", + " w_samples = w.sample(n_samples)[:, 0].eval()\n", + " b_samples = b.sample(n_samples).eval()\n", + " plt.scatter(X_data[:, 0], y_data)\n", + " plt.ylim([-10, 10])\n", + " inputs = np.linspace(-8, 8, num=400)\n", + " for ns in range(n_samples):\n", + " output = inputs * w_samples[ns] + b_samples[ns]\n", + " plt.plot(inputs, output)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Prot prior samples" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "visualise(X_train, y_train, w, b, n_samples=10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plot posterior samples" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\ngg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "visualise(X_train, y_train, qw_HMC, qb_HMC, n_samples=10)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\noQYAwGC/AE8BQRYjiHypAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "visualise(X_train, y_train, qw_SGHMC, qb_SGHMC, n_samples=10)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\np5xnN9AAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "visualise(X_train, y_train, qw_Gibbs, qb_Gibbs, n_samples=10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The model has captured the relationship between $x$ and $y$ in the observed domain.\n", + "\n", + "To learn more about Edward, [delve in](http://edwardlib.org/api)!\n", + "\n", + "If you prefer to learn via examples, then check out some\n", + "[tutorials](http://edwardlib.org/tutorials/)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [Root]", + "language": "python", + "name": "Python [Root]" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notebooks/bayesian_logistic_regression_MCMC.ipynb b/notebooks/bayesian_logistic_regression_MCMC.ipynb new file mode 100644 index 000000000..e235e5f61 --- /dev/null +++ b/notebooks/bayesian_logistic_regression_MCMC.ipynb @@ -0,0 +1,453 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Bayesian Logistic Regression\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Couldn't import dot_parser, loading of dot files will not be possible.\n" + ] + } + ], + "source": [ + "%matplotlib inline\n", + "from __future__ import absolute_import\n", + "from __future__ import division\n", + "from __future__ import print_function\n", + "\n", + "import edward as ed\n", + "#ed.set_seed(42)\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import numpy as np\n", + "import tensorflow as tf\n", + "\n", + "from edward.models import Bernoulli, Normal, Empirical\n", + "plt.style.use('ggplot')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Data" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def build_toy_dataset(N, noise_std=0.1):\n", + " D = 1\n", + " X = np.linspace(-6, 6, num=N)\n", + " y = np.tanh(X) + np.random.normal(0, noise_std, size=N)\n", + " y[y < 0.5] = 0\n", + " y[y >= 0.5] = 1\n", + " X = (X - 4.0) / 4.0\n", + " X = X.reshape((N, D))\n", + " return X, y" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "N = 40 # number of data points\n", + "D = 1 # number of features\n", + "\n", + "X_train, y_train = build_toy_dataset(N)\n", + "X_test, y_test = build_toy_dataset(N,4.3)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([ 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.]),\n", + " array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]))" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#X_test[:20],X_train[:20]\n", + "y_test[:10],y_train[:10]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "simple logistic regression" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "X = tf.placeholder(tf.float32, [N, D])\n", + "w = Normal(loc=tf.zeros(D), scale=3.0 * tf.ones(D))\n", + "b = Normal(loc=tf.zeros([]), scale=3.0 * tf.ones([]))\n", + "y = Bernoulli(logits=ed.dot(X, w) + b)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Inference" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "empirical variables" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "T = 5000 # number of samples\n", + "qw = Empirical(params=tf.Variable(tf.random_normal([T, D])))\n", + "qb = Empirical(params=tf.Variable(tf.random_normal([T])))\n", + "\n", + "#tf.global_variables_initializer().run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### HMC" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "inference_HMC = ed.HMC({w: qw, b: qb}, data={X: X_train, y: y_train})\n", + "inference_HMC.initialize(n_print=10, step_size=0.6)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5000/5000 [100%] ██████████████████████████████ Elapsed: 3s | Acceptance Rate: 1.000\n" + ] + } + ], + "source": [ + "inference_HMC.run(step_size=1e-3)\n", + "qw_HMC,qb_HMC=qw,qb\n", + "y_post_SGHMC = ed.copy(y, {w: qw, b: qb})\n", + "y_test=[int(i) for i in y_test]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5000/5000 [100%] ██████████████████████████████ Elapsed: 2s | Acceptance Rate: 0.028\n" + ] + } + ], + "source": [ + "inference_MH = ed.MetropolisHastings({w: qw, b: qb},{w:w,b:b},data={X: X_train, y: y_train})\n", + "#inference_MH.initialize(n_print=10, step_size=0.6)\n", + "\n", + "inference_MH.run()\n", + "qw_MH,qb_MH=qw,qb" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5000/5000 [100%] ██████████████████████████████ Elapsed: 8s | Acceptance Rate: 1.000\n" + ] + } + ], + "source": [ + "inference_Gibbs = ed.Gibbs({w: qw, b: qb},{w:w,b:b}, data={X: X_train, y: y_train})\n", + "#inference_Gibbs.initialize(n_print=10, step_size=0.6)\n", + "inference_Gibbs.run()\n", + "qw_Gibbs,qb_Gibbs=qw,qb" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "qw_Gibbs\n", + "#[len(i) for i in [X_test, y_post_SGHMC:y_test]] " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\ngg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(X_test,y_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "y_testf=[float(i) for i in y_test]\n", + "y_post_SGHMCf=tf.cast(y_post_SGHMC,X[0].dtype)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean squared error on test data:\n", + "0.296842\n" + ] + } + ], + "source": [ + "print(\"Mean squared error on test data:\")\n", + "print(ed.evaluate('mean_squared_error', data={X: X_test, y_post_SGHMCf: y_testf}))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.625\n" + ] + } + ], + "source": [ + "print(ed.evaluate('binary_accuracy', data={X: X_test, y_post_SGHMC: y_test}))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'list' object has no attribute 'shape'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;32mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0med\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'categorical_accuracy'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m{\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mX_test\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_post_SGHMCf\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0my_testf\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m/home/xiangze/anaconda2/lib/python2.7/site-packages/edward/criticisms/evaluate.pyc\u001b[0m in \u001b[0;36mevaluate\u001b[1;34m(metrics, data, n_samples, output_key)\u001b[0m\n\u001b[0;32m 148\u001b[0m \u001b[0mevaluations\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mbinary_accuracy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_true\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_pred\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 149\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0mmetric\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'categorical_accuracy'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 150\u001b[1;33m \u001b[0mevaluations\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mcategorical_accuracy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_true\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_pred\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 151\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0mmetric\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'sparse_categorical_accuracy'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 152\u001b[0m \u001b[0mevaluations\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0msparse_categorical_accuracy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_true\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_pred\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m/home/xiangze/anaconda2/lib/python2.7/site-packages/edward/criticisms/evaluate.pyc\u001b[0m in \u001b[0;36mcategorical_accuracy\u001b[1;34m(y_true, y_pred)\u001b[0m\n\u001b[0;32m 222\u001b[0m \u001b[0mentry\u001b[0m \u001b[1;32mis\u001b[0m \u001b[0man\u001b[0m \u001b[0minteger\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m.\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mK\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 223\u001b[0m \"\"\"\n\u001b[1;32m--> 224\u001b[1;33m \u001b[0my_true\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcast\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margmax\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_true\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_true\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m-\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfloat32\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 225\u001b[0m \u001b[0my_pred\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcast\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_pred\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfloat32\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 226\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mtf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreduce_mean\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcast\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mequal\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my_true\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my_pred\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfloat32\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mAttributeError\u001b[0m: 'list' object has no attribute 'shape'" + ] + } + ], + "source": [ + "print(ed.evaluate('categorical_accuracy', data={X: X_test, y_post_SGHMCf: y_testf}))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Criticism" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nAaAggQaAggQaAAoSaAAoSKABoCCBBoCCBBoAChJoAChIoAGgIIEGgIIEGgAKEmgAKEigAaAggQaA\nggQaAAoSaAAoSKABoCCBBoCCBBoAChJoAChIoAGgIIEGgIIEGgAKEmgAKEigAaAggQaAggQaAAoS\naAAoSKABoCCBBoCCBBoAChJoAChIoAGgIIEGgIIEGgAKEmgAKEigAaAggQaAggQaAAoSaAAoSKAB\noCCBBoCCBBoAChJoAChIoAGgIIEGgIIEGgAKEmgAKEigAaAggQaAggQaAAoSaAAoSKABoCCBBoCC\nBBoAClpxJTft27cv09PT6enpyfbt27N58+b5tampqbz77rvp7e3N+vXrMz4+3rVhAWC56PgEffTo\n0czMzGT37t0ZHx/PxMTEJetvv/12du3alRdeeCE//vhjPv/8864NCwDLRccn6KmpqYyOjiZJNmzY\nkPPnz+fChQvp7+9PkrzyyivzPx4YGMi5c+e6OC4ALA8dn6BbrVYGBgbmrwcGBtJqteav/x3n2dnZ\nHDlyJFu3bu3CmACwvPzhj8Ta7fbvfu67777Lq6++mp07d2bVqlVXZTAAWM46BnpwcPCSJ+bZ2dms\nWbNm/npubi4vv/xytm3blttuu607UwLAMtMx0CMjIzl06FCSpNlsZmhoaP61dvLrF95jY2O5/fbb\nuzclACwzPe3LvbP+D5OTkzl27FgajUZ27NiRZrOZlStXZmRkJI8//ni2bNkyf++9996b++67r6tD\nA8D17ooCDQBcW04SA4CCBBoAChJoAChIoAGgIIEGgIIEGgAKEmgAKEigAaAggQaAggQaAAoSaAAo\nSKABoCCBBoCCBBoAChJoAChIoAGgIIEGgIIEGgAKEmgAKEigAaAggQaAggQaAAoSaAAoSKABoCCB\nBoCCBBoAChJoAChIoAGgIIEGgIIEGgAKEmgAKEigAaAggQaAggQaAAoSaAAoSKABoCCBBoCCBBoA\nChJoAChIoAGgIIEGgIIEGgAKEmgAKEigAaAggQaAggQaAAoSaAAoSKABoCCBBoCCBBoAChJoAChI\noAGgIIEGgIIEGgAKEmgAKEigAaAggQaAggQaAAoSaAAoSKABoCCBBoCCBBoAChJoAChIoAGgIIEG\ngIIEGgAKEmgAKEigAaAggQaAggQaAAoSaAAoSKABoCCBBoCCBBoAChJoAChIoAGgIIEGgIIEGgAK\nEmgAKEigAaAggQaAglZcyU379u3L9PR0enp6sn379mzevHl+7fDhw3nvvffS29ubO+64Iw899FDX\nhgWA5aLjE/TRo0czMzOT3bt3Z3x8PBMTE5es7927N7t27coLL7yQw4cP59SpU10bFgCWi46Bnpqa\nyujoaJJkw4YNOX/+fC5cuJAk+eabb7J69eoMDQ2lp6cnW7duzZEjR7o7MQAsAx0D3Wq1MjAwMH89\nMDCQVqs1v7Z69erLrgEAf94f/kis3W53Yw4A4Dc6BnpwcPCSp+LZ2dmsWbPmsmtnz57N4OBgF8YE\ngOWlY6BHRkZy6NChJEmz2czQ0FD6+/uTJGvXrs3c3Fy+/fbbXLx4MZ9++mlGRka6OzEALAM97St4\nZz05OZljx46l0Whkx44daTabWblyZUZHR3P8+PG888476enpyd13352xsbFrMTcAXNeuKNAAwLXl\nJDEAKEigAaAggQaAgq7oLO4/yxne3bfQHk9NTeXdd99Nb29v1q9fn/Hx8UWcdOlaaI//bXJyMtPT\n03n22WcXYcKlb6E9PnPmTN54441cvHgxGzduzM6dOxdx0qVtoX3+8MMP88knn6S3tzebNm3KY489\ntoiTLl0nTpzIa6+9lrGxsdx///2XrP3R7nXtCdoZ3t3XaY/ffvvt+T3+8ccf8/nnny/SpEtXpz1O\nkpMnT+bYsWOLMN31odMe79+/Pw8++GBeeumlNBqNnDlzZpEmXdoW2ue5ubl88MEHefHFF/P888/n\n5MmT+eKLLxZx2qXpp59+ysTERG677bbLrv/R7nUt0M7w7r6F9jhJXnnllfmDYwYGBnLu3LlFmXMp\n67THSXLgwIFs27ZtMca7Liy0x+12O8ePH8+dd96ZJHniiSdyww03LNqsS9lC+7xixYr09fVlbm4u\nFy9ezM8//5xVq1Yt5rhLUl9fX55++unLHtj1Z7rXtUA7w7v7FtrjJPMHyszOzubIkSPZunXrNZ9x\nqeu0xwcPHswtt9yStWvXLsZ414WF9vj7779Pf39/9u7dm2eeeSaTk5OLNeaSt9A+9/X15eGHH85T\nTz2Vp556Kn/5y1+ybt26xRp1yWo0Gunr67vs2p/p3jX7SMwft+6+y+3xd999l1dffTU7d+70f8RX\nwW/3+IcffsjBgwczNjbm1/dV9Nu9bLfbOXv2bB544IE899xz+eqrr/LZZ58t4nTXj9/u89zcXN5/\n//28+eabeeuttzI9PZ0TJ04s4nQkXQy0M7y7b6E9Tn79l+7ll1/Otm3b/uvvibCwhfZ4amoq586d\nyzPPPJPXX389X375Zfbv379Yoy5ZC+3xwMBAhoeHMzw8nEajkVtvvTVff/31Yo26pC20z6dOncqN\nN96YVatWpbe3NzfffHOazeZijXpd+jPd61qgneHdfQvtcfLrF5tjY2O5/fbbF2vEJW+hPb7nnnvy\n+uuvZ/fu3dm1a1c2btyYRx99dDHHXZIW2uNGo5Hh4eHMzMzMr69fv37RZl3KOv03+dSpU/nll1/m\n173i/t/851u1P9O9rh716Qzv7vtvezwyMpLHH388W7Zsmb/33nvvzX333beI0y5NC/06/rfTp09n\nz549/pjVn7TQHs/MzGTPnj1pt9u56aab8uSTTy72uEvWQvv80Ucf5eOPP86KFSuyZcuWPPLII4s9\n7pLTbDZz4MCBnD59Or29vRkaGspdd92V4eHhP9U9Z3EDQEFOEgOAggQaAAoSaAAoSKABoCCBBoCC\nBBoAChJoACjo/wEPASRjYBOCbwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=(8, 8), facecolor='white')\n", + "ax = fig.add_subplot(111, frameon=False)\n", + "plt.ion()\n", + "plt.show(block=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Build samples from inferred posterior\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [Root]", + "language": "python", + "name": "Python [Root]" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +}