|
@@ -1,10 +1,10 @@
|
|
|
{
|
|
|
"cells": [
|
|
|
{
|
|
|
- "cell_type": "code",
|
|
|
- "execution_count": null,
|
|
|
- "metadata": {},
|
|
|
- "outputs": [],
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": true
|
|
|
+ },
|
|
|
"source": [
|
|
|
"'''\n",
|
|
|
"A Reccurent Neural Network (LSTM) implementation example using TensorFlow library.\n",
|
|
@@ -18,35 +18,26 @@
|
|
|
},
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
- "execution_count": 1,
|
|
|
- "metadata": {},
|
|
|
- "outputs": [
|
|
|
- {
|
|
|
- "name": "stdout",
|
|
|
- "output_type": "stream",
|
|
|
- "text": [
|
|
|
- "Extracting /tmp/data/train-images-idx3-ubyte.gz\n",
|
|
|
- "Extracting /tmp/data/train-labels-idx1-ubyte.gz\n",
|
|
|
- "Extracting /tmp/data/t10k-images-idx3-ubyte.gz\n",
|
|
|
- "Extracting /tmp/data/t10k-labels-idx1-ubyte.gz\n"
|
|
|
- ]
|
|
|
- }
|
|
|
- ],
|
|
|
+ "execution_count": null,
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
+ "outputs": [],
|
|
|
"source": [
|
|
|
"import tensorflow as tf\n",
|
|
|
- "from tensorflow.python.ops import rnn, rnn_cell\n",
|
|
|
+ "from tensorflow.contrib import rnn\n",
|
|
|
"import numpy as np\n",
|
|
|
"\n",
|
|
|
"# Import MINST data\n",
|
|
|
"from tensorflow.examples.tutorials.mnist import input_data\n",
|
|
|
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=True)"
|
|
|
+ "mnist = input_data.read_data_sets(\"MNIST_data/\", one_hot=True)"
|
|
|
]
|
|
|
},
|
|
|
{
|
|
|
- "cell_type": "code",
|
|
|
- "execution_count": null,
|
|
|
- "metadata": {},
|
|
|
- "outputs": [],
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": true
|
|
|
+ },
|
|
|
"source": [
|
|
|
"'''\n",
|
|
|
"To classify images using a reccurent neural network, we consider every image\n",
|
|
@@ -58,7 +49,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 2,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [],
|
|
|
"source": [
|
|
|
"# Parameters\n",
|
|
@@ -89,7 +82,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 3,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [],
|
|
|
"source": [
|
|
|
"def RNN(x, weights, biases):\n",
|
|
@@ -103,13 +98,13 @@
|
|
|
" # Reshaping to (n_steps*batch_size, n_input)\n",
|
|
|
" x = tf.reshape(x, [-1, n_input])\n",
|
|
|
" # Split to get a list of 'n_steps' tensors of shape (batch_size, n_input)\n",
|
|
|
- " x = tf.split(0, n_steps, x)\n",
|
|
|
+ " x = tf.split(x, n_steps, 0)\n",
|
|
|
"\n",
|
|
|
" # Define a lstm cell with tensorflow\n",
|
|
|
- " lstm_cell = rnn_cell.BasicLSTMCell(n_hidden, forget_bias=1.0)\n",
|
|
|
+ " lstm_cell = rnn.BasicLSTMCell(n_hidden, forget_bias=1.0)\n",
|
|
|
"\n",
|
|
|
" # Get lstm cell output\n",
|
|
|
- " outputs, states = rnn.rnn(lstm_cell, x, dtype=tf.float32)\n",
|
|
|
+ " outputs, states = rnn.static_rnn(lstm_cell, x, dtype=tf.float32)\n",
|
|
|
"\n",
|
|
|
" # Linear activation, using rnn inner loop last output\n",
|
|
|
" return tf.matmul(outputs[-1], weights['out']) + biases['out']\n",
|
|
@@ -117,7 +112,7 @@
|
|
|
"pred = RNN(x, weights, biases)\n",
|
|
|
"\n",
|
|
|
"# Define loss and optimizer\n",
|
|
|
- "cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, y))\n",
|
|
|
+ "cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred, labels=y))\n",
|
|
|
"optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)\n",
|
|
|
"\n",
|
|
|
"# Evaluate model\n",
|
|
@@ -125,101 +120,16 @@
|
|
|
"accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))\n",
|
|
|
"\n",
|
|
|
"# Initializing the variables\n",
|
|
|
- "init = tf.initialize_all_variables()"
|
|
|
+ "init = tf.global_variables_initializer()"
|
|
|
]
|
|
|
},
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
- "execution_count": 4,
|
|
|
- "metadata": {},
|
|
|
- "outputs": [
|
|
|
- {
|
|
|
- "name": "stdout",
|
|
|
- "output_type": "stream",
|
|
|
- "text": [
|
|
|
- "Iter 1280, Minibatch Loss= 1.538532, Training Accuracy= 0.49219\n",
|
|
|
- "Iter 2560, Minibatch Loss= 1.462834, Training Accuracy= 0.50781\n",
|
|
|
- "Iter 3840, Minibatch Loss= 1.048393, Training Accuracy= 0.66406\n",
|
|
|
- "Iter 5120, Minibatch Loss= 0.889872, Training Accuracy= 0.71875\n",
|
|
|
- "Iter 6400, Minibatch Loss= 0.681855, Training Accuracy= 0.76562\n",
|
|
|
- "Iter 7680, Minibatch Loss= 0.987207, Training Accuracy= 0.69531\n",
|
|
|
- "Iter 8960, Minibatch Loss= 0.759543, Training Accuracy= 0.71094\n",
|
|
|
- "Iter 10240, Minibatch Loss= 0.557055, Training Accuracy= 0.80469\n",
|
|
|
- "Iter 11520, Minibatch Loss= 0.371352, Training Accuracy= 0.89844\n",
|
|
|
- "Iter 12800, Minibatch Loss= 0.661293, Training Accuracy= 0.80469\n",
|
|
|
- "Iter 14080, Minibatch Loss= 0.474259, Training Accuracy= 0.86719\n",
|
|
|
- "Iter 15360, Minibatch Loss= 0.328436, Training Accuracy= 0.88281\n",
|
|
|
- "Iter 16640, Minibatch Loss= 0.348017, Training Accuracy= 0.93750\n",
|
|
|
- "Iter 17920, Minibatch Loss= 0.340086, Training Accuracy= 0.88281\n",
|
|
|
- "Iter 19200, Minibatch Loss= 0.261532, Training Accuracy= 0.89844\n",
|
|
|
- "Iter 20480, Minibatch Loss= 0.161785, Training Accuracy= 0.94531\n",
|
|
|
- "Iter 21760, Minibatch Loss= 0.419619, Training Accuracy= 0.83594\n",
|
|
|
- "Iter 23040, Minibatch Loss= 0.120714, Training Accuracy= 0.95312\n",
|
|
|
- "Iter 24320, Minibatch Loss= 0.339519, Training Accuracy= 0.89062\n",
|
|
|
- "Iter 25600, Minibatch Loss= 0.405463, Training Accuracy= 0.88281\n",
|
|
|
- "Iter 26880, Minibatch Loss= 0.172193, Training Accuracy= 0.95312\n",
|
|
|
- "Iter 28160, Minibatch Loss= 0.256769, Training Accuracy= 0.91406\n",
|
|
|
- "Iter 29440, Minibatch Loss= 0.247753, Training Accuracy= 0.91406\n",
|
|
|
- "Iter 30720, Minibatch Loss= 0.230820, Training Accuracy= 0.91406\n",
|
|
|
- "Iter 32000, Minibatch Loss= 0.216861, Training Accuracy= 0.93750\n",
|
|
|
- "Iter 33280, Minibatch Loss= 0.236337, Training Accuracy= 0.89062\n",
|
|
|
- "Iter 34560, Minibatch Loss= 0.252351, Training Accuracy= 0.93750\n",
|
|
|
- "Iter 35840, Minibatch Loss= 0.180090, Training Accuracy= 0.92188\n",
|
|
|
- "Iter 37120, Minibatch Loss= 0.304125, Training Accuracy= 0.91406\n",
|
|
|
- "Iter 38400, Minibatch Loss= 0.114474, Training Accuracy= 0.96094\n",
|
|
|
- "Iter 39680, Minibatch Loss= 0.158405, Training Accuracy= 0.96875\n",
|
|
|
- "Iter 40960, Minibatch Loss= 0.285858, Training Accuracy= 0.92188\n",
|
|
|
- "Iter 42240, Minibatch Loss= 0.134199, Training Accuracy= 0.96094\n",
|
|
|
- "Iter 43520, Minibatch Loss= 0.235847, Training Accuracy= 0.92969\n",
|
|
|
- "Iter 44800, Minibatch Loss= 0.155971, Training Accuracy= 0.94531\n",
|
|
|
- "Iter 46080, Minibatch Loss= 0.061549, Training Accuracy= 0.99219\n",
|
|
|
- "Iter 47360, Minibatch Loss= 0.232569, Training Accuracy= 0.94531\n",
|
|
|
- "Iter 48640, Minibatch Loss= 0.270348, Training Accuracy= 0.91406\n",
|
|
|
- "Iter 49920, Minibatch Loss= 0.202416, Training Accuracy= 0.92188\n",
|
|
|
- "Iter 51200, Minibatch Loss= 0.113857, Training Accuracy= 0.96094\n",
|
|
|
- "Iter 52480, Minibatch Loss= 0.137900, Training Accuracy= 0.94531\n",
|
|
|
- "Iter 53760, Minibatch Loss= 0.052416, Training Accuracy= 0.98438\n",
|
|
|
- "Iter 55040, Minibatch Loss= 0.312064, Training Accuracy= 0.91406\n",
|
|
|
- "Iter 56320, Minibatch Loss= 0.144335, Training Accuracy= 0.93750\n",
|
|
|
- "Iter 57600, Minibatch Loss= 0.114723, Training Accuracy= 0.96875\n",
|
|
|
- "Iter 58880, Minibatch Loss= 0.193597, Training Accuracy= 0.96094\n",
|
|
|
- "Iter 60160, Minibatch Loss= 0.110877, Training Accuracy= 0.95312\n",
|
|
|
- "Iter 61440, Minibatch Loss= 0.119864, Training Accuracy= 0.96094\n",
|
|
|
- "Iter 62720, Minibatch Loss= 0.118780, Training Accuracy= 0.94531\n",
|
|
|
- "Iter 64000, Minibatch Loss= 0.082259, Training Accuracy= 0.97656\n",
|
|
|
- "Iter 65280, Minibatch Loss= 0.087364, Training Accuracy= 0.97656\n",
|
|
|
- "Iter 66560, Minibatch Loss= 0.207975, Training Accuracy= 0.92969\n",
|
|
|
- "Iter 67840, Minibatch Loss= 0.120612, Training Accuracy= 0.96875\n",
|
|
|
- "Iter 69120, Minibatch Loss= 0.070608, Training Accuracy= 0.96875\n",
|
|
|
- "Iter 70400, Minibatch Loss= 0.100786, Training Accuracy= 0.96094\n",
|
|
|
- "Iter 71680, Minibatch Loss= 0.114746, Training Accuracy= 0.94531\n",
|
|
|
- "Iter 72960, Minibatch Loss= 0.083427, Training Accuracy= 0.96875\n",
|
|
|
- "Iter 74240, Minibatch Loss= 0.089978, Training Accuracy= 0.96094\n",
|
|
|
- "Iter 75520, Minibatch Loss= 0.195322, Training Accuracy= 0.94531\n",
|
|
|
- "Iter 76800, Minibatch Loss= 0.161109, Training Accuracy= 0.96094\n",
|
|
|
- "Iter 78080, Minibatch Loss= 0.169762, Training Accuracy= 0.94531\n",
|
|
|
- "Iter 79360, Minibatch Loss= 0.054240, Training Accuracy= 0.98438\n",
|
|
|
- "Iter 80640, Minibatch Loss= 0.160100, Training Accuracy= 0.95312\n",
|
|
|
- "Iter 81920, Minibatch Loss= 0.110728, Training Accuracy= 0.96875\n",
|
|
|
- "Iter 83200, Minibatch Loss= 0.054918, Training Accuracy= 0.98438\n",
|
|
|
- "Iter 84480, Minibatch Loss= 0.104170, Training Accuracy= 0.96875\n",
|
|
|
- "Iter 85760, Minibatch Loss= 0.071871, Training Accuracy= 0.97656\n",
|
|
|
- "Iter 87040, Minibatch Loss= 0.170529, Training Accuracy= 0.96094\n",
|
|
|
- "Iter 88320, Minibatch Loss= 0.087350, Training Accuracy= 0.96875\n",
|
|
|
- "Iter 89600, Minibatch Loss= 0.079943, Training Accuracy= 0.96875\n",
|
|
|
- "Iter 90880, Minibatch Loss= 0.128451, Training Accuracy= 0.92969\n",
|
|
|
- "Iter 92160, Minibatch Loss= 0.046963, Training Accuracy= 0.98438\n",
|
|
|
- "Iter 93440, Minibatch Loss= 0.162998, Training Accuracy= 0.96875\n",
|
|
|
- "Iter 94720, Minibatch Loss= 0.122588, Training Accuracy= 0.96094\n",
|
|
|
- "Iter 96000, Minibatch Loss= 0.073954, Training Accuracy= 0.97656\n",
|
|
|
- "Iter 97280, Minibatch Loss= 0.130790, Training Accuracy= 0.96094\n",
|
|
|
- "Iter 98560, Minibatch Loss= 0.067689, Training Accuracy= 0.97656\n",
|
|
|
- "Iter 99840, Minibatch Loss= 0.186411, Training Accuracy= 0.92188\n",
|
|
|
- "Optimization Finished!\n",
|
|
|
- "Testing Accuracy: 0.976562\n"
|
|
|
- ]
|
|
|
- }
|
|
|
- ],
|
|
|
+ "execution_count": null,
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
+ "outputs": [],
|
|
|
"source": [
|
|
|
"# Launch the graph\n",
|
|
|
"with tf.Session() as sess:\n",
|
|
@@ -250,6 +160,15 @@
|
|
|
" print \"Testing Accuracy:\", \\\n",
|
|
|
" sess.run(accuracy, feed_dict={x: test_data, y: test_label})"
|
|
|
]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": null,
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": true
|
|
|
+ },
|
|
|
+ "outputs": [],
|
|
|
+ "source": []
|
|
|
}
|
|
|
],
|
|
|
"metadata": {
|
|
@@ -261,14 +180,14 @@
|
|
|
"language_info": {
|
|
|
"codemirror_mode": {
|
|
|
"name": "ipython",
|
|
|
- "version": 2.0
|
|
|
+ "version": 2
|
|
|
},
|
|
|
"file_extension": ".py",
|
|
|
"mimetype": "text/x-python",
|
|
|
"name": "python",
|
|
|
"nbconvert_exporter": "python",
|
|
|
"pygments_lexer": "ipython2",
|
|
|
- "version": "2.7.11"
|
|
|
+ "version": "2.7.13"
|
|
|
}
|
|
|
},
|
|
|
"nbformat": 4,
|