Skip to content

Instantly share code, notes, and snippets.

@matsub
Last active February 6, 2018 08:39
Show Gist options
  • Save matsub/14633680f68920d5e047156fa3b94767 to your computer and use it in GitHub Desktop.
Save matsub/14633680f68920d5e047156fa3b94767 to your computer and use it in GitHub Desktop.
TF Layersでスッとした
Display the source blob
Display the rendered blob
Raw
{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"MNIST_layered.ipynb","version":"0.3.2","views":{},"default_view":{},"provenance":[{"file_id":"1CF7h_RnWLP-2SH6mkk0lZGk8JOI4t5Oy","timestamp":1517901097665}],"collapsed_sections":[]},"kernelspec":{"name":"python3","display_name":"Python 3"},"accelerator":"GPU"},"cells":[{"metadata":{"id":"iOKJezhZ04cy","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["import tensorflow as tf\n","sess = tf.InteractiveSession()"],"execution_count":0,"outputs":[]},{"metadata":{"id":"IfXwcbxp1Hf6","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0},"output_extras":[{"item_id":1}],"base_uri":"https://localhost:8080/","height":238},"outputId":"b1d7357b-e438-42c4-cbfb-5406b01a1d95","executionInfo":{"status":"ok","timestamp":1517905502522,"user_tz":-540,"elapsed":437,"user":{"displayName":"Riku Matsubara","photoUrl":"//lh5.googleusercontent.com/-dG00Vh0-TBA/AAAAAAAAAAI/AAAAAAAAAE8/B-x8TdJqrB4/s50-c-k-no/photo.jpg","userId":"108374135676082837560"}}},"cell_type":"code","source":["from tensorflow.python.client import device_lib\n","device_lib.list_local_devices()"],"execution_count":2,"outputs":[{"output_type":"execute_result","data":{"text/plain":["[name: \"/device:CPU:0\"\n"," device_type: \"CPU\"\n"," memory_limit: 268435456\n"," locality {\n"," }\n"," incarnation: 3770251200290330070, name: \"/device:GPU:0\"\n"," device_type: \"GPU\"\n"," memory_limit: 2592210944\n"," locality {\n"," bus_id: 1\n"," }\n"," incarnation: 16512953741416392084\n"," physical_device_desc: \"device: 0, name: Tesla K80, pci bus id: 0000:00:04.0, compute capability: 3.7\"]"]},"metadata":{"tags":[]},"execution_count":2}]},{"metadata":{"id":"GaCtc_yt1QXb","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0},"output_extras":[{"item_id":2}],"base_uri":"https://localhost:8080/","height":85},"outputId":"bd7401bd-25df-42ce-cfe0-a17faa8bcda3","executionInfo":{"status":"ok","timestamp":1517905504243,"user_tz":-540,"elapsed":1534,"user":{"displayName":"Riku Matsubara","photoUrl":"//lh5.googleusercontent.com/-dG00Vh0-TBA/AAAAAAAAAAI/AAAAAAAAAE8/B-x8TdJqrB4/s50-c-k-no/photo.jpg","userId":"108374135676082837560"}}},"cell_type":"code","source":["from tensorflow.examples.tutorials.mnist import input_data\n","mnist = input_data.read_data_sets('MNIST_data', one_hot=True)"],"execution_count":3,"outputs":[{"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"],"name":"stdout"}]},{"metadata":{"id":"yZ4rCoDE1XdE","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["x = tf.placeholder(tf.float32, shape=[None, 784])\n","y = tf.placeholder(tf.float32, shape=[None, 10])"],"execution_count":0,"outputs":[]},{"metadata":{"id":"G3Y3-UcP99HJ","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["input_layer = tf.reshape(x, [-1, 28, 28, 1])"],"execution_count":0,"outputs":[]},{"metadata":{"id":"18gxkTsP-tJ5","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["# Convolutional Layer #1 and Pooling Layer #1\n","conv1 = tf.layers.conv2d(\n"," inputs=input_layer,\n"," filters=32,\n"," kernel_size=[5, 5],\n"," padding=\"same\",\n"," activation=tf.nn.relu)\n","pool1 = tf.layers.max_pooling2d(inputs=conv1, pool_size=[2, 2], strides=2)"],"execution_count":0,"outputs":[]},{"metadata":{"id":"kMQ6Kw5y_BH4","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["# Convolutional Layer #2 and Pooling Layer #2\n","conv2 = tf.layers.conv2d(\n"," inputs=pool1,\n"," filters=64,\n"," kernel_size=[5, 5],\n"," padding=\"same\",\n"," activation=tf.nn.relu)\n","pool2 = tf.layers.max_pooling2d(inputs=conv2, pool_size=[2, 2], strides=2)"],"execution_count":0,"outputs":[]},{"metadata":{"id":"XatS-Qh9_Jqg","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["# Dense Layer\n","pool2_flat = tf.reshape(pool2, [-1, 7 * 7 * 64])\n","dense = tf.layers.dense(inputs=pool2_flat, units=1024, activation=tf.nn.relu)\n","\n","training = tf.placeholder(tf.bool, shape=())\n","dropout = tf.layers.dropout(inputs=dense, rate=0.5, training=training)"],"execution_count":0,"outputs":[]},{"metadata":{"id":"H3ZF-Ma1APN3","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["# Logits Layer\n","logits = tf.layers.dense(inputs=dropout, units=10)"],"execution_count":0,"outputs":[]},{"metadata":{"id":"9SVbNlCSCYh9","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["# Calculate Loss\n","cross_entropy = tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=logits)"],"execution_count":0,"outputs":[]},{"metadata":{"id":"6z9FMjC9DUwM","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["# Configure the Training Op\n","optimizer = tf.train.AdamOptimizer(1e-4)\n","train_op = optimizer.minimize(cross_entropy)"],"execution_count":0,"outputs":[]},{"metadata":{"id":"AznrThedFXCd","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["# Calculate accuracy\n","correct_prediction = tf.equal(tf.argmax(logits,1), tf.argmax(y,1))\n","accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))"],"execution_count":0,"outputs":[]},{"metadata":{"id":"Vq_jN_HFF0jH","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0},"output_extras":[{"item_id":11}],"base_uri":"https://localhost:8080/","height":204},"outputId":"ce91e2be-2bd0-49cb-fee4-24e6ade5490f","executionInfo":{"status":"ok","timestamp":1517905572122,"user_tz":-540,"elapsed":10999,"user":{"displayName":"Riku Matsubara","photoUrl":"//lh5.googleusercontent.com/-dG00Vh0-TBA/AAAAAAAAAAI/AAAAAAAAAE8/B-x8TdJqrB4/s50-c-k-no/photo.jpg","userId":"108374135676082837560"}}},"cell_type":"code","source":["# run\n","sess.run(tf.global_variables_initializer())\n","for i in range(1000):\n"," batch = mnist.train.next_batch(50)\n"," if i%100 == 0:\n"," train_accuracy = accuracy.eval(feed_dict={\n"," x:batch[0], y: batch[1], training: False})\n"," print(\"step %d, training accuracy %g\" % (i, train_accuracy))\n"," train_op.run(feed_dict={x: batch[0], y: batch[1], training: True})\n","\n","print(\"test accuracy %g\" % accuracy.eval(feed_dict={\n"," x: mnist.test.images, y: mnist.test.labels, training: False}))"],"execution_count":15,"outputs":[{"output_type":"stream","text":["step 0, training accuracy 0.12\n","step 100, training accuracy 0.84\n","step 200, training accuracy 0.96\n","step 300, training accuracy 0.9\n","step 400, training accuracy 0.92\n","step 500, training accuracy 0.94\n","step 600, training accuracy 0.98\n","step 700, training accuracy 1\n","step 800, training accuracy 0.94\n","step 900, training accuracy 0.96\n","test accuracy 0.9676\n"],"name":"stdout"}]}]}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment