{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Convolutional Neural Networks\n", "- CS231n Convolutional Neural Networks for Visual Recognition: https://git.io/vKlww\n", "- http://pythonkim.tistory.com/56" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.1.0\n" ] } ], "source": [ "import tensorflow as tf\n", "import math\n", "import numpy as np\n", "from tensorflow.examples.tutorials.mnist import input_data\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf\n", "print(tf.__version__)\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Extracting MNIST_data/train-images-idx3-ubyte.gz\n", "Extracting MNIST_data/train-labels-idx1-ubyte.gz\n", "Extracting MNIST_data/t10k-images-idx3-ubyte.gz\n", "Extracting MNIST_data/t10k-labels-idx1-ubyte.gz\n" ] } ], "source": [ "mnist = input_data.read_data_sets(\"MNIST_data/\", one_hot=True)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x = tf.placeholder(\"float\", [None, 784])\n", "y = tf.placeholder(\"float\", [None, 10])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Image reshape to 4D [-1, 28, 28, 1]\n", " - The MNIST images have just one gray color value (the number of color channels is one), so that the last value is one." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(?, 28, 28, 1)\n" ] } ], "source": [ "x_image = tf.reshape(x, [-1, 28, 28, 1])\n", "print(x_image.get_shape())" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "keep_prob = tf.placeholder(tf.float32)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- **stride**\n", " - we must specify the stride with which we slide the filter. \n", " - stride = 1: we slide the filters one pixel at a time. \n", " - stride = 2: we slide the filters two pixel at a time. \n", " - This will produce smaller output volumes spatially.\n", "- **padding**\n", " - we need pad the input volume with zeros around the border. \n", " - zero padding" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- The CONV layer’s parameters consist of a set of learnable filters.\n", "- The convolution will compute 32 kernels (features) for each 5x5 patch. \n", "- Its weight tensor will have a shape of [5, 5, 1, 32]. \n", " - The first two dimensions are the kernel size\n", " - The third is the number of input channels (here, it is one channel)\n", " - The last one is the number of kernels (features). \n", "- A bias vector has a component per kernel." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- https://www.tensorflow.org/api_docs/python/nn/convolution#conv2d\n", "- https://www.tensorflow.org/api_docs/python/nn/pooling#max_pool" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- If padding == \"SAME\": output_spatial_shape[i] = ceil(input_spatial_shape[i] / strides[i])" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tensor(\"Relu:0\", shape=(?, 28, 28, 8), dtype=float32)\n", "Tensor(\"MaxPool:0\", shape=(?, 14, 14, 8), dtype=float32)\n", "Tensor(\"dropout/mul:0\", shape=(?, 14, 14, 8), dtype=float32)\n" ] } ], "source": [ "W_conv1 = tf.Variable(tf.truncated_normal([5, 5, 1, 8], stddev=0.1))\n", "b_conv1 = tf.Variable(tf.constant(0.1, shape=[8]))\n", "h_conv1 = tf.nn.relu(tf.nn.conv2d(x_image, W_conv1, strides=[1, 1, 1, 1], padding='SAME') + b_conv1)\n", "h_pool1 = tf.nn.max_pool(h_conv1, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')\n", "d_h_pool1 = tf.nn.dropout(h_pool1, keep_prob=keep_prob)\n", "print(h_conv1)\n", "print(h_pool1)\n", "print(d_h_pool1)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tensor(\"Relu_1:0\", shape=(?, 14, 14, 8), dtype=float32)\n", "Tensor(\"MaxPool_1:0\", shape=(?, 7, 7, 8), dtype=float32)\n", "Tensor(\"dropout_1/mul:0\", shape=(?, 7, 7, 8), dtype=float32)\n" ] } ], "source": [ "W_conv2 = tf.Variable(tf.truncated_normal([5, 5, 8, 8], stddev=0.1))\n", "b_conv2 = tf.Variable(tf.constant(0.1, shape=[8]))\n", "h_conv2 = tf.nn.relu(tf.nn.conv2d(d_h_pool1, W_conv2, strides=[1, 1, 1, 1], padding='SAME') + b_conv2)\n", "h_pool2 = tf.nn.max_pool(h_conv2, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')\n", "d_h_pool2 = tf.nn.dropout(h_pool2, keep_prob=keep_prob)\n", "print(h_conv2)\n", "print(h_pool2)\n", "print(d_h_pool2)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "h_pool2_flat = tf.reshape(d_h_pool2, [-1, 7 * 7 * 8])" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "W_fc1 = tf.Variable(tf.truncated_normal([7 * 7 * 8, 256], stddev=0.1))\n", "b_fc1 = tf.Variable(tf.constant(0.1, shape=[256]))\n", "h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1)\n", "d_h_fc1 = tf.nn.dropout(h_fc1, keep_prob=keep_prob)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "W_fc2 = tf.Variable(tf.truncated_normal([256, 10], stddev=0.1))\n", "b_fc2 = tf.Variable(tf.constant(0.1, shape=[10]))\n", "pred = tf.matmul(d_h_fc1, W_fc2) + b_fc2" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [], "source": [ "error = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred, labels=y))\n", "optimizer = tf.train.AdamOptimizer(1e-4).minimize(error)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Initializing the variables\n", "init = tf.global_variables_initializer()\n", "\n", "# Parameters\n", "training_epochs = 100\n", "learning_rate = 0.001\n", "batch_size = 100\n", "print_epoch_period = 10\n", " \n", "# Calculate accuracy with a Test model \n", "prediction_ground_truth = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1))\n", "accuracy = tf.reduce_mean(tf.cast(prediction_ground_truth, tf.float32))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def drawErrorValues(epoch_list, train_error_value_list, validation_error_value_list, test_error_value_list, test_accuracy_list):\n", " fig = plt.figure(figsize=(20, 5))\n", " plt.subplot(121)\n", " plt.plot(epoch_list, train_error_value_list, 'r', label='Train')\n", " plt.plot(epoch_list, validation_error_value_list, 'g', label='Validation')\n", " plt.plot(epoch_list, test_error_value_list, 'b', label='Test')\n", " plt.ylabel('Total Error')\n", " plt.xlabel('Epochs')\n", " plt.grid(True)\n", " plt.legend(loc='upper right')\n", "\n", " plt.subplot(122)\n", " plt.plot(epoch_list, test_accuracy_list, 'b', label='Test')\n", " plt.ylabel('Accuracy')\n", " plt.xlabel('Epochs')\n", " plt.yticks(np.arange(min(test_accuracy_list), max(test_accuracy_list), 0.05))\n", " plt.grid(True)\n", " plt.legend(loc='lower right') \n", " plt.show()\n", "\n", "def drawFalsePrediction(sess, numPrintImages):\n", " ground_truth = sess.run(tf.argmax(y, 1), feed_dict={y: mnist.test.labels})\n", " prediction = sess.run(tf.argmax(pred, 1), feed_dict={x: mnist.test.images, keep_prob: 0.5})\n", "\n", " fig = plt.figure(figsize=(20, 5))\n", " j = 1\n", " for i in range(mnist.test.num_examples):\n", " if (j > numPrintImages):\n", " break;\n", " if (prediction[i] != ground_truth[i]):\n", " print(\"Error Index: %s, Prediction: %s, Ground Truth: %s\" % (i, prediction[i], ground_truth[i]))\n", " img = np.array(mnist.test.images[i])\n", " img.shape = (28, 28)\n", " plt.subplot(1, numPrintImages, j)\n", " plt.imshow(img)\n", " j += 1" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "total batch: 550\n", "epoch: 0, test_error_value: 2.207933, test_accuracy: 0.194700\n", "epoch: 10, test_error_value: 0.376723, test_accuracy: 0.881300\n", "epoch: 20, test_error_value: 0.261196, test_accuracy: 0.916500\n", "epoch: 30, test_error_value: 0.217777, test_accuracy: 0.929500\n", "epoch: 40, test_error_value: 0.189203, test_accuracy: 0.942000\n", "epoch: 50, test_error_value: 0.169631, test_accuracy: 0.945800\n", "epoch: 60, test_error_value: 0.157417, test_accuracy: 0.950600\n", "epoch: 70, test_error_value: 0.149051, test_accuracy: 0.953100\n", "epoch: 80, test_error_value: 0.143701, test_accuracy: 0.955200\n", "epoch: 90, test_error_value: 0.136688, test_accuracy: 0.957800\n", "epoch: 99, test_error_value: 0.125272, test_accuracy: 0.958600\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABJIAAAFACAYAAADnI1acAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XucVXW9//HXZ27MnTsDAjKAGuINENEyFbMU8UKWoXgp\nzQ5Hj6am5s88nZPV8aRmiidNo7zkSSFPlpJhWidHTTuKEiBKJCJyHWC4DMyNuX1+f3z3wGbYMww4\ne689zPv5eKzH3mut7/ruz/pi5+z57O/3s8zdERERERERERER2ZuMqAMQEREREREREZGuQYkkERER\nERERERHpECWSRERERERERESkQ5RIEhERERERERGRDlEiSUREREREREREOkSJJBERERERERER6RAl\nkkREREREREREpEOUSBIRERERERERkQ5RIklERERERERERDokK+oA9lW/fv28tLQ0KX1XV1dTUFCQ\nlL4lMY15NDTuqacxTz2Neep11pi//fbbFe7evxNCkk6k72AHFo156mnMU09jHg2Ne+ql+jtYl0sk\nlZaW8tZbbyWl77KyMiZOnJiUviUxjXk0NO6ppzFPPY156nXWmJvZRx8/Guls+g52YNGYp57GPPU0\n5tHQuKdeqr+DaWmbiIiIiIiIiIh0iBJJIiIiIiIiIiLSIUokiYiIiIiIiIhIh3S5GkkiIiJRaGho\nYPXq1dTV1UUdStrq2bMnS5Ys6XD73NxchgwZQnZ2dhKjEhEREZHOpESSiIhIB6xevZqioiJKS0sx\ns6jDSUvbt2+nqKioQ23dnU2bNrF69WqGDx+e5MhEREREpLNoaZuIiEgH1NXV0bdvXyWROomZ0bdv\nX83wEhEREelilEgSERHpICWROpfGU0RERKTrUSJJREREREREREQ6RIkkERGRLmDTpk2MGTOGMWPG\nMHDgQAYPHrxzv76+vkN9XH755SxdujTJkYqIiIjIgUzFtmPmz4c5cwYxcWLUkYiIiOypb9++LFiw\nAIDbbruNwsJCbrrppt3auDvuTkZG4t+JHn300aTHKSIiIpIuqqthyRIYOBCGDIk6mn2zdi288goc\ndRSMHg3pVBFAM5JiHnziI+699xM0NkYdiYiISMctW7aM0aNHc/HFF3PEEUewbt06pk+fzvjx4zni\niCP43ve+t7Ptpz/9aRYsWEBjYyO9evXilltu4ZhjjuGTn/wkGzZsiPAuRERERHapqwtJoH1RXw9/\n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\nTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Error Index: 8, Prediction: 6, Ground Truth: 5\n", "Error Index: 36, Prediction: 2, Ground Truth: 7\n", "Error Index: 104, Prediction: 5, Ground Truth: 9\n", "Error Index: 151, Prediction: 8, Ground Truth: 9\n", "Error Index: 160, Prediction: 1, Ground Truth: 4\n", "Error Index: 241, Prediction: 5, Ground Truth: 9\n", "Error Index: 247, Prediction: 2, Ground Truth: 4\n", "Error Index: 259, Prediction: 0, Ground Truth: 6\n", "Error Index: 266, Prediction: 6, Ground Truth: 8\n", "Error Index: 281, Prediction: 4, Ground Truth: 9\n", "Optimization Finished!\n" ] }, { "data": { "image/png": "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\n763tf2c/0rwzx5SWFP7NbEm+atC4iOe7tfhq67j21rXxDhHVUFZFGVaFq+QrGb7vYt5364SvrAgE\np0cn6zjaErDu86/VcfsH7c+k7nenzcO66fi4mp9Y/cod8x43YOVFdpvrs0qRRP7Mm3nv3OnXfuYB\nHe8abJeZNM4yZSGrf2VK/wrGHrD6pbIctvykrjr+pPvTVtu3ZWZc7R9L2ZAyzo6ft7SOr2uwKWy/\nPeV1rePyHTvC9qtKdqcC+5zHNdHxRXnPh3bXVpea0rO628si9sMRows66/iRC0xpdJ01u6x+7m3m\nG4qJt91glz6/0zryNvN3vXS9jtsJ5WAAAAAAAADIMNwEAgAAAAAACADPlYPFqu5r4XeEeaub/cjX\nQ4PNo7Eljtnd5Pj/3mT1a/e0edx55wh7t44FJ74Q8zgRP/cuYFvHm52ePu85JupzDGu4QcehpWJu\nFY65j/q2NI76/Ei9Pdf00vHptUMfgTd5zFsYmF+LvrVpXVPruNdPzGPbDw4zOyM1ecpbj+6mi3sn\ntvwZpTrOvtz+dyR3Ccrmr+2dVDoK5WCxqtGurY4vn2V/lvnDhwN03GW02WWvfGlx8gcWQfupppwi\nyIULG0dGX1D16n5TFtL2PvNdKy+L/B082NR8NnHPPRGRbp8N1nGbQSuiHgeqpj5ZpONzF/7aanN/\n9l9y/VgdT76srdXv8Rcu0fGxfzW7DoXueBn1mFzlutLdLkG8fOKsiF/Xb54p7W0/L1g7gqVS6Xkn\n6HjlpfZ75sqLwpdUu8u/RESueeguHTebyeeW6sh913zej/Y38oMjJ0dsG7HZ3nnTazuCufEkEAAA\nAAAAQAAc9SaQUqqtUuoDpdQypdRSpdTtla/nKaX+rZRaVfl/HoPIUAedEhGRInLoeTnMRW9jLvoG\nc9HjKqRCyKEvMBc9jrnoG8xFj2MuBks0TwKVichdjuN0FZFeInKLUqqriIwSkdmO4xSKyOzKY2Qg\nJUpEZCM59AXmoocxF32Fueh95NAfyKP3kUN/II/eRw4D4qiLXziOs0VEtlTG+5RSy0WkjYgMEJEz\nKrs9KyJzROSepIwyiY6dZdddiimjljrK1NkuP32S3a3duTp+p31ozW34e2vfbs2zjgtlXdTjjEeu\nqi3iSImIP3MYqutbW3Q8vcWCKnoaV35zvnW89COzjWOHl82Wglnf7bX6OVa9/vZqjDImpY7jfCES\n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\nouO8NI4DqfHNDtcufoV227Pt39fxxccNttrYOS52TSaZR2h/M/UcHX/z+252R9fmHB/+4hGrKS87\nV6LxbonZ2XH8VQOstqKFC6I6B6rHvVOYiEj7+0y++93XM6ZzdhSzq05FFf3wY+XFpiyr7eX2jjf9\na5ry5823mLKT/e3s7/K4/pN1/OrOE622D78xvzg7jdphrrttY4wjBoDMUr60WMeFQ8zr0Zbr5VOe\n5xkt2uwK+3rpjGYhr6wO28/reBIIAAAAAAAgALgJBAAAAAAAEADcBAIAAAAAAAgA1gQCEAj5N2/V\n8fUzzrba5n97rI47rvRn7W+6VZSU6Dj/3sg1878cdWoCrrY0AecAPMxx7MNDh3Tc6tG5ob21x27v\n4jrab7V1lC91zFqIAAAvc6/9M7Oolo7rfxuMdzieBAIAAAAAAAgAbgIBAAAAAAAEAOVg8LUmX5tH\n4m/ccLrV1uFlszUgWxH7X/kOs6Xxjt52W77s1jE/CwAAAIB/NZ1gliYYPaGzjnPl83QMJ+V4EggA\nAAAAACAAuAkEAAAAAAAQANwEAgAAAAAACADWBIKvNZg6T8cbp4a2rkjpWAAAAAAASCeeBAIAAAAA\nAAgAbgIBAAAAAAAEgHIc5+i9EnUxpXaIyHoRaSoiO1N24fAyYQwiqRtHO8dxmsV7kgzLoUiwxpGQ\nHIpkXB4zYQwizMV4BWkczMXkIofxCdI4/JrHTBiDCDmMV5DG4dc8ZsIYRMhhvII0jqjymNKbQPqi\nSi1wHOeElF84w8aQSeOorkwZN+OITyaMOxPGkEnjqK5MGTfjiE8mjDsTxpBJ46iuTBk344hPJow7\nE8aQSeOorkwZN+OITyaMOxPGkEnjqK5MGTfj+DHKwQAAAAAAAAKAm0AAAAAAAAABkK6bQBPTdF23\nTBiDSOaMo7oyZdyMIz6ZMO5MGINI5oyjujJl3IwjPpkw7kwYg0jmjKO6MmXcjCM+mTDuTBiDSOaM\no7oyZdyMIz6ZMO5MGINI5oyjujJl3IwjRFrWBAIAAAAAAEBqUQ4GAAAAAAAQACm9CaSUOl8pVayU\nWq2UGpXC6z6jlNqulFriei1PKfVvpdSqyv83TsE42iqlPlBKLVNKLVVK3Z6uscQjyHkkh3FfN+05\nrLwmeYzvumnPIzmM+7ppz2HlNcljfNdNex7JYdzXTXsOK69JHuO7btrzSA7jvm7ac1h5TfIY33XT\nnkdP5NBxnJT8JyLZIvKNiHQQkZoi8pWIdE3RtX8uIj1FZInrtb+KyKjKeJSIPJyCcbQSkZ6VcX0R\nWSkiXdMxFvJIDoOaQ/LojzySQ+/nkDz6I4/k0Ps5JI/+yCM59H4OyaM/8uiFHKbyh+EUEZnlOr5X\nRO5N4fXbh/wwFItIK1eiilP+zReZISLnZsJYyCM5DGoOyaM/8kgOvZ9D8uiPPJJD7+eQPPojj+TQ\n+zkkj/7IYybmMJXlYG1EZIPreGPla+nSwnGcLZXxVhFpkcqLK6Xai0gPEfks3WOpJvJYiRwmDHMx\nNuSxEjlMGOZibMhjJXKYMMzF2JDHSuQwYZiLsSGPlTI1hywMLSLOkdtxTqqup5SqJyKvi8gdjuPs\nTedY/CSV3ztymBzMRX9gLnofc9EfmIvex1z0B+ai9zEX/YG5eEQqbwJtEpG2ruNjKl9Ll21KqVYi\nIpX/356KiyqlcuTID8OLjuO8kc6xxCjweSSHCcdcjE3g80gOE465GJvA55EcJhxzMTaBzyM5TDjm\nYmwCn8dMz2EqbwJ9LiKFSql8pVRNEblKRN5M4fVDvSkiQyrjIXKkVi+plFJKRCaJyHLHcR5N51ji\nEOg8ksOkYC7GJtB5JIdJwVyMTaDzSA6TgrkYm0DnkRwmBXMxNoHOoydymMoFiESknxxZHfsbEbkv\nhdedKiJbRKRUjtQkDhWRJiIyW0RWicj7IpKXgnGcKkce+1osIosq/+uXjrGQR3IY1BySR3/kkRx6\nP4fk0R95JIfezyF59EceyaH3c0ge/ZFHL+RQVQ4UAAAAAAAAPsbC0AAAAAAAAAHATSAAAAAAAIAA\n4CYQAAAAAABAAHATCAAAAAAAIAC4CQQAAAAAABAA3AQCAAAAAAAIAG4CAQAAAAAABAA3gQAAAAAA\nAALg/wEixwtFOdd/VQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Launch the tensorflow graph\n", "with tf.Session() as sess:\n", " sess.run(init)\n", " total_batch = int(math.ceil(mnist.train.num_examples/float(batch_size)))\n", " \n", " print(\"total batch: %d\" % total_batch)\n", "\n", " epoch_list = []\n", " train_error_value_list = []\n", " validation_error_value_list = []\n", " test_error_value_list = []\n", " test_accuracy_list = []\n", " \n", " # Training cycle\n", " for epoch in range(training_epochs):\n", " # Loop over all batches\n", " for i in range(total_batch):\n", " batch_images, batch_labels = mnist.train.next_batch(batch_size)\n", " sess.run(optimizer, feed_dict={x: batch_images, y: batch_labels, keep_prob: 0.5})\n", " \n", " epoch_list.append(epoch)\n", "\n", " # Train Error Value\n", " t_error_value = sess.run(error, feed_dict={x: batch_images, y: batch_labels, keep_prob: 0.5})\n", " train_error_value_list.append(t_error_value)\n", "\n", " # Validation Error Value\n", " v_error_value = sess.run(error, feed_dict={x: mnist.validation.images, y: mnist.validation.labels, keep_prob: 0.5})\n", " validation_error_value_list.append(v_error_value)\n", "\n", " accuracy_value, error_value = sess.run((accuracy, error), \n", " feed_dict={x: mnist.test.images, y: mnist.test.labels, keep_prob: 0.5})\n", " test_error_value_list.append(error_value)\n", " test_accuracy_list.append(accuracy_value)\n", " \n", " if epoch % print_epoch_period == 0 or epoch == training_epochs - 1:\n", " print(\"epoch: %d, test_error_value: %f, test_accuracy: %f\" % ( epoch, error_value, accuracy_value ))\n", " \n", " drawErrorValues(epoch_list, train_error_value_list, validation_error_value_list, test_error_value_list, test_accuracy_list)\n", "\n", " drawFalsePrediction(sess, 10)\n", " \n", " print(\"Optimization Finished!\")" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.0" } }, "nbformat": 4, "nbformat_minor": 0 }