diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 2280041c..00000000
--- a/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-.DS_Store
-.ipynb_checkpoints
-*.pyc
-__pycache__
-*.egg-info
-build/*
-dist/*
-*~
-.cache
-.coverage
-checkpoint
-htmlcov
-mnist
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 00000000..5c98b428
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,2 @@
+# Default ignored files
+/workspace.xml
\ No newline at end of file
diff --git a/.idea/TensorFlow-Examples.iml b/.idea/TensorFlow-Examples.iml
new file mode 100644
index 00000000..7c9d48f0
--- /dev/null
+++ b/.idea/TensorFlow-Examples.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 00000000..3cdc6aed
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/dbnavigator.xml b/.idea/dbnavigator.xml
new file mode 100644
index 00000000..dc8a6e98
--- /dev/null
+++ b/.idea/dbnavigator.xml
@@ -0,0 +1,454 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 00000000..105ce2da
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 00000000..39990872
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 00000000..73c41b47
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 00000000..94a25f7f
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/notebooks/0_Prerequisite/ml_introduction.ipynb b/notebooks/0_Prerequisite/ml_introduction.ipynb
old mode 100644
new mode 100755
index fe84ef52..e6358244
--- a/notebooks/0_Prerequisite/ml_introduction.ipynb
+++ b/notebooks/0_Prerequisite/ml_introduction.ipynb
@@ -26,23 +26,23 @@
],
"metadata": {
"kernelspec": {
- "display_name": "IPython (Python 2.7)",
+ "display_name": "PyCharm (jupyterconverter)",
"language": "python",
- "name": "python2"
+ "name": "pycharm-3058efaf"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.11"
+ "pygments_lexer": "ipython3",
+ "version": "3.6.8"
}
},
"nbformat": 4,
- "nbformat_minor": 0
+ "nbformat_minor": 4
}
diff --git a/notebooks/0_Prerequisite/mnist_dataset_intro.ipynb b/notebooks/0_Prerequisite/mnist_dataset_intro.ipynb
old mode 100644
new mode 100755
index 6b96dc0f..d3ad6243
--- a/notebooks/0_Prerequisite/mnist_dataset_intro.ipynb
+++ b/notebooks/0_Prerequisite/mnist_dataset_intro.ipynb
@@ -27,14 +27,27 @@
{
"cell_type": "code",
"execution_count": null,
- "metadata": {
- "collapsed": true
- },
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"# Import MNIST\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=True)\n",
+ "import os\n",
+ "data_path = \"./dataset/mnist_dataset_intro/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=True)\n",
"\n",
"# Load data\n",
"X_train = mnist.train.images\n",
@@ -53,9 +66,7 @@
{
"cell_type": "code",
"execution_count": null,
- "metadata": {
- "collapsed": true
- },
+ "metadata": {},
"outputs": [],
"source": [
"# Get the next 64 images array and labels\n",
@@ -72,23 +83,32 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 2",
+ "display_name": "PyCharm (jupyterconverter)",
"language": "python",
- "name": "python2"
+ "name": "pycharm-3058efaf"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.13"
+ "pygments_lexer": "ipython3",
+ "version": "3.6.8"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "source": [],
+ "metadata": {
+ "collapsed": false
+ }
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 0
+ "nbformat_minor": 4
}
diff --git a/notebooks/0_Prerequisite/tensorflow_gpu_validator.ipynb b/notebooks/0_Prerequisite/tensorflow_gpu_validator.ipynb
new file mode 100755
index 00000000..ef4f7955
--- /dev/null
+++ b/notebooks/0_Prerequisite/tensorflow_gpu_validator.ipynb
@@ -0,0 +1,88 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install wurlitzer --user\n",
+ "\n",
+ "import tensorflow as tf\n",
+ "# Creates a graph.\n",
+ "a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')\n",
+ "b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')\n",
+ "c = tf.matmul(a, b)\n",
+ "\n",
+ "tf.logging.set_verbosity(tf.logging.INFO)\n",
+ "# Creates a session with log_device_placement set to True.\n",
+ "sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))\n",
+ "\n",
+ "# Runs the op.\n",
+ "from wurlitzer import pipes\n",
+ "\n",
+ "with pipes() as (out, err):\n",
+ " print(sess.run(c))\n",
+ "\n",
+ "print (out.read())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Creates a graph.\n",
+ "a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')\n",
+ "b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')\n",
+ "c = tf.matmul(a, b)\n",
+ "# Creates a session with log_device_placement set to True.\n",
+ "sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))\n",
+ "# Runs the op.\n",
+ "print(sess.run(c))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "with tf.Session() as sess:\n",
+ " devices = sess.list_devices()\n",
+ " print(devices)"
+ ]
+ }
+ ],
+ "metadata": {
+ "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.8"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/notebooks/1_Introduction/basic_eager_api.ipynb b/notebooks/1_Introduction/basic_eager_api.ipynb
index 6780a3ff..beacabbc 100644
--- a/notebooks/1_Introduction/basic_eager_api.ipynb
+++ b/notebooks/1_Introduction/basic_eager_api.ipynb
@@ -9,7 +9,7 @@
"A simple introduction to get started with TensorFlow's Eager API.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
@@ -27,15 +27,29 @@
"by using eager execution. Conversely, most models written with Eager enabled\n",
"can be converted to a graph that can be further optimized and/or extracted\n",
"for deployment in production without changing code. - Rajat Monga*\n",
- "\n",
- "More info: https://research.googleblog.com/2017/10/eager-execution-imperative-define-by.html"
+ "More info: https://research.googleblog.com/2017/10/eager-execution-imperative-define-by.ht"
]
},
{
"cell_type": "code",
"execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user\n",
+ "!pip install keras --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
"metadata": {
- "collapsed": true
+ "jupyter": {
+ "outputs_hidden": false
+ },
+ "pycharm": {
+ "name": "#%%\n"
+ }
},
"outputs": [],
"source": [
@@ -47,19 +61,13 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 3,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Setting Eager mode...\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Set Eager API\n",
"print(\"Setting Eager mode...\")\n",
@@ -69,21 +77,13 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 4,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Define constant tensors\n",
- "a = 2\n",
- "b = 3\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Define constant tensors\n",
"print(\"Define constant tensors\")\n",
@@ -95,21 +95,13 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 5,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Running operations, without tf.Session\n",
- "a + b = 5\n",
- "a * b = 6\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Run the operation without the need for tf.Session\n",
"print(\"Running operations, without tf.Session\")\n",
@@ -121,26 +113,13 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 6,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Mixing operations with Tensors and Numpy Arrays\n",
- "Tensor:\n",
- " a = tf.Tensor(\n",
- "[[2. 1.]\n",
- " [1. 0.]], shape=(2, 2), dtype=float32)\n",
- "NumpyArray:\n",
- " b = [[3. 0.]\n",
- " [5. 1.]]\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Full compatibility with Numpy\n",
"print(\"Mixing operations with Tensors and Numpy Arrays\")\n",
@@ -156,25 +135,13 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 7,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Running operations, without tf.Session\n",
- "a + b = tf.Tensor(\n",
- "[[5. 1.]\n",
- " [6. 1.]], shape=(2, 2), dtype=float32)\n",
- "a * b = tf.Tensor(\n",
- "[[11. 1.]\n",
- " [ 3. 0.]], shape=(2, 2), dtype=float32)\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Run the operation without the need for tf.Session\n",
"print(\"Running operations, without tf.Session\")\n",
@@ -188,51 +155,53 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 8,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Iterate through Tensor 'a':\n",
- "tf.Tensor(2.0, shape=(), dtype=float32)\n",
- "tf.Tensor(1.0, shape=(), dtype=float32)\n",
- "tf.Tensor(1.0, shape=(), dtype=float32)\n",
- "tf.Tensor(0.0, shape=(), dtype=float32)\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
+ },
+ "pycharm": {
+ "name": "#%%\n"
}
- ],
+ },
+ "outputs": [],
"source": [
"print(\"Iterate through Tensor 'a':\")\n",
"for i in range(a.shape[0]):\n",
" for j in range(a.shape[1]):\n",
- " print(a[i][j])"
+ " print(a[i][j])\n"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
- "display_name": "Python [default]",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 1
+ "nbformat_minor": 4
}
diff --git a/notebooks/1_Introduction/basic_operations.ipynb b/notebooks/1_Introduction/basic_operations.ipynb
index 9d60c1aa..878788c6 100644
--- a/notebooks/1_Introduction/basic_operations.ipynb
+++ b/notebooks/1_Introduction/basic_operations.ipynb
@@ -2,22 +2,31 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 53,
+ "metadata": {},
"outputs": [],
"source": [
"# Basic Operations example using TensorFlow library.\n",
"# Author: Aymeric Damien\n",
- "# Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "# Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 54,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -26,9 +35,21 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 56,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "config = tf.ConfigProto()\n",
+ "config.gpu_options.allow_growth=True \n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 57,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -41,34 +62,31 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 58,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "a=2, b=3\n",
- "Addition with constants: 5\n",
- "Multiplication with constants: 6\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
+ },
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Launch the default graph.\n",
- "with tf.Session() as sess:\n",
- " print \"a: %i\" % sess.run(a), \"b: %i\" % sess.run(b)\n",
- " print \"Addition with constants: %i\" % sess.run(a+b)\n",
- " print \"Multiplication with constants: %i\" % sess.run(a*b)"
+ "with tf.Session(config=config) as sess:\n",
+ " print (\"a: %i\" % sess.run(a), \"b: %i\" % sess.run(b))\n",
+ " print (\"Addition with constants: %i\" % sess.run(a+b))\n",
+ " print (\"Multiplication with constants: %i\" % sess.run(a*b))"
]
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 59,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -82,9 +100,11 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 60,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -95,34 +115,28 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 61,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Addition with variables: 5\n",
- "Multiplication with variables: 6\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
+ },
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Launch the default graph.\n",
"with tf.Session() as sess:\n",
" # Run every operation with variable input\n",
- " print \"Addition with variables: %i\" % sess.run(add, feed_dict={a: 2, b: 3})\n",
- " print \"Multiplication with variables: %i\" % sess.run(mul, feed_dict={a: 2, b: 3})"
+ " print (\"Addition with variables: %i\" % sess.run(add, feed_dict={a: 2, b: 3}))\n",
+ " print (\"Multiplication with variables: %i\" % sess.run(mul, feed_dict={a: 2, b: 3}))"
]
},
{
"cell_type": "code",
- "execution_count": 8,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 62,
+ "metadata": {},
"outputs": [],
"source": [
"# ----------------\n",
@@ -139,10 +153,8 @@
},
{
"cell_type": "code",
- "execution_count": 9,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 63,
+ "metadata": {},
"outputs": [],
"source": [
"# Create another Constant that produces a 2x1 matrix.\n",
@@ -151,10 +163,8 @@
},
{
"cell_type": "code",
- "execution_count": 10,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 64,
+ "metadata": {},
"outputs": [],
"source": [
"# Create a Matmul op that takes 'matrix1' and 'matrix2' as inputs.\n",
@@ -165,19 +175,13 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": 65,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[[ 12.]]\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# To run the matmul op we call the session 'run()' method, passing 'product'\n",
"# which represents the output of the matmul op. This indicates to the call\n",
@@ -192,29 +196,38 @@
"# The output of the op is returned in 'result' as a numpy `ndarray` object.\n",
"with tf.Session() as sess:\n",
" result = sess.run(product)\n",
- " print result"
+ " print (result)"
]
}
],
"metadata": {
"kernelspec": {
- "display_name": "IPython (Python 2.7)",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2.0
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.8"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 0
+ "nbformat_minor": 4
}
diff --git a/notebooks/1_Introduction/helloworld.ipynb b/notebooks/1_Introduction/helloworld.ipynb
index 9d7f0ace..5b0c0f22 100644
--- a/notebooks/1_Introduction/helloworld.ipynb
+++ b/notebooks/1_Introduction/helloworld.ipynb
@@ -2,9 +2,11 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"metadata": {
- "collapsed": false
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -13,10 +15,8 @@
},
{
"cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"# Simple hello world using TensorFlow\n",
@@ -32,10 +32,8 @@
},
{
"cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"# Start tf session\n",
@@ -44,19 +42,13 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": null,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Hello, TensorFlow!\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Run graph\n",
"print(sess.run(hello))"
@@ -65,23 +57,23 @@
],
"metadata": {
"kernelspec": {
- "display_name": "IPython (Python 2.7)",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2.0
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.8"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
}
},
"nbformat": 4,
- "nbformat_minor": 0
+ "nbformat_minor": 4
}
diff --git a/notebooks/2_BasicModels/gradient_boosted_decision_tree.ipynb b/notebooks/2_BasicModels/gradient_boosted_decision_tree.ipynb
index 09e4b270..5ef12b12 100644
--- a/notebooks/2_BasicModels/gradient_boosted_decision_tree.ipynb
+++ b/notebooks/2_BasicModels/gradient_boosted_decision_tree.ipynb
@@ -11,15 +11,22 @@
"handwritten digits as training samples (http://yann.lecun.com/exdb/mnist/).\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
"cell_type": "code",
"execution_count": 1,
- "metadata": {
- "collapsed": true
- },
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
"outputs": [],
"source": [
"from __future__ import print_function\n",
@@ -35,37 +42,32 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 3,
"metadata": {
- "collapsed": false
- },
- "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"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Import MNIST data\n",
"# Set verbosity to display errors only (Remove this line for showing warnings)\n",
"tf.logging.set_verbosity(tf.logging.ERROR)\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=False,\n",
+ "import os\n",
+ "data_path = \"./dataset/gradient_boosted_decision_tree/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=False,\n",
" source_url='http://yann.lecun.com/exdb/mnist/')"
]
},
{
"cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 4,
+ "metadata": {},
"outputs": [],
"source": [
"# Parameters\n",
@@ -85,10 +87,8 @@
},
{
"cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 5,
+ "metadata": {},
"outputs": [],
"source": [
"# Fill GBDT parameters into the config proto\n",
@@ -116,79 +116,13 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 6,
"metadata": {
- "collapsed": false,
- "scrolled": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "INFO:tensorflow:Active Feature Columns: ['images_0', 'images_1', 'images_2', 'images_3', 'images_4', 'images_5', 'images_6', 'images_7', 'images_8', 'images_9', 'images_10', 'images_11', 'images_12', 'images_13', 'images_14', 'images_15', 'images_16', 'images_17', 'images_18', 'images_19', 'images_20', 'images_21', 'images_22', 'images_23', 'images_24', 'images_25', 'images_26', 'images_27', 'images_28', 'images_29', 'images_30', 'images_31', 'images_32', 'images_33', 'images_34', 'images_35', 'images_36', 'images_37', 'images_38', 'images_39', 'images_40', 'images_41', 'images_42', 'images_43', 'images_44', 'images_45', 'images_46', 'images_47', 'images_48', 'images_49', 'images_50', 'images_51', 'images_52', 'images_53', 'images_54', 'images_55', 'images_56', 'images_57', 'images_58', 'images_59', 'images_60', 'images_61', 'images_62', 'images_63', 'images_64', 'images_65', 'images_66', 'images_67', 'images_68', 'images_69', 'images_70', 'images_71', 'images_72', 'images_73', 'images_74', 'images_75', 'images_76', 'images_77', 'images_78', 'images_79', 'images_80', 'images_81', 'images_82', 'images_83', 'images_84', 'images_85', 'images_86', 'images_87', 'images_88', 'images_89', 'images_90', 'images_91', 'images_92', 'images_93', 'images_94', 'images_95', 'images_96', 'images_97', 'images_98', 'images_99', 'images_100', 'images_101', 'images_102', 'images_103', 'images_104', 'images_105', 'images_106', 'images_107', 'images_108', 'images_109', 'images_110', 'images_111', 'images_112', 'images_113', 'images_114', 'images_115', 'images_116', 'images_117', 'images_118', 'images_119', 'images_120', 'images_121', 'images_122', 'images_123', 'images_124', 'images_125', 'images_126', 'images_127', 'images_128', 'images_129', 'images_130', 'images_131', 'images_132', 'images_133', 'images_134', 'images_135', 'images_136', 'images_137', 'images_138', 'images_139', 'images_140', 'images_141', 'images_142', 'images_143', 'images_144', 'images_145', 'images_146', 'images_147', 'images_148', 'images_149', 'images_150', 'images_151', 'images_152', 'images_153', 'images_154', 'images_155', 'images_156', 'images_157', 'images_158', 'images_159', 'images_160', 'images_161', 'images_162', 'images_163', 'images_164', 'images_165', 'images_166', 'images_167', 'images_168', 'images_169', 'images_170', 'images_171', 'images_172', 'images_173', 'images_174', 'images_175', 'images_176', 'images_177', 'images_178', 'images_179', 'images_180', 'images_181', 'images_182', 'images_183', 'images_184', 'images_185', 'images_186', 'images_187', 'images_188', 'images_189', 'images_190', 'images_191', 'images_192', 'images_193', 'images_194', 'images_195', 'images_196', 'images_197', 'images_198', 'images_199', 'images_200', 'images_201', 'images_202', 'images_203', 'images_204', 'images_205', 'images_206', 'images_207', 'images_208', 'images_209', 'images_210', 'images_211', 'images_212', 'images_213', 'images_214', 'images_215', 'images_216', 'images_217', 'images_218', 'images_219', 'images_220', 'images_221', 'images_222', 'images_223', 'images_224', 'images_225', 'images_226', 'images_227', 'images_228', 'images_229', 'images_230', 'images_231', 'images_232', 'images_233', 'images_234', 'images_235', 'images_236', 'images_237', 'images_238', 'images_239', 'images_240', 'images_241', 'images_242', 'images_243', 'images_244', 'images_245', 'images_246', 'images_247', 'images_248', 'images_249', 'images_250', 'images_251', 'images_252', 'images_253', 'images_254', 'images_255', 'images_256', 'images_257', 'images_258', 'images_259', 'images_260', 'images_261', 'images_262', 'images_263', 'images_264', 'images_265', 'images_266', 'images_267', 'images_268', 'images_269', 'images_270', 'images_271', 'images_272', 'images_273', 'images_274', 'images_275', 'images_276', 'images_277', 'images_278', 'images_279', 'images_280', 'images_281', 'images_282', 'images_283', 'images_284', 'images_285', 'images_286', 'images_287', 'images_288', 'images_289', 'images_290', 'images_291', 'images_292', 'images_293', 'images_294', 'images_295', 'images_296', 'images_297', 'images_298', 'images_299', 'images_300', 'images_301', 'images_302', 'images_303', 'images_304', 'images_305', 'images_306', 'images_307', 'images_308', 'images_309', 'images_310', 'images_311', 'images_312', 'images_313', 'images_314', 'images_315', 'images_316', 'images_317', 'images_318', 'images_319', 'images_320', 'images_321', 'images_322', 'images_323', 'images_324', 'images_325', 'images_326', 'images_327', 'images_328', 'images_329', 'images_330', 'images_331', 'images_332', 'images_333', 'images_334', 'images_335', 'images_336', 'images_337', 'images_338', 'images_339', 'images_340', 'images_341', 'images_342', 'images_343', 'images_344', 'images_345', 'images_346', 'images_347', 'images_348', 'images_349', 'images_350', 'images_351', 'images_352', 'images_353', 'images_354', 'images_355', 'images_356', 'images_357', 'images_358', 'images_359', 'images_360', 'images_361', 'images_362', 'images_363', 'images_364', 'images_365', 'images_366', 'images_367', 'images_368', 'images_369', 'images_370', 'images_371', 'images_372', 'images_373', 'images_374', 'images_375', 'images_376', 'images_377', 'images_378', 'images_379', 'images_380', 'images_381', 'images_382', 'images_383', 'images_384', 'images_385', 'images_386', 'images_387', 'images_388', 'images_389', 'images_390', 'images_391', 'images_392', 'images_393', 'images_394', 'images_395', 'images_396', 'images_397', 'images_398', 'images_399', 'images_400', 'images_401', 'images_402', 'images_403', 'images_404', 'images_405', 'images_406', 'images_407', 'images_408', 'images_409', 'images_410', 'images_411', 'images_412', 'images_413', 'images_414', 'images_415', 'images_416', 'images_417', 'images_418', 'images_419', 'images_420', 'images_421', 'images_422', 'images_423', 'images_424', 'images_425', 'images_426', 'images_427', 'images_428', 'images_429', 'images_430', 'images_431', 'images_432', 'images_433', 'images_434', 'images_435', 'images_436', 'images_437', 'images_438', 'images_439', 'images_440', 'images_441', 'images_442', 'images_443', 'images_444', 'images_445', 'images_446', 'images_447', 'images_448', 'images_449', 'images_450', 'images_451', 'images_452', 'images_453', 'images_454', 'images_455', 'images_456', 'images_457', 'images_458', 'images_459', 'images_460', 'images_461', 'images_462', 'images_463', 'images_464', 'images_465', 'images_466', 'images_467', 'images_468', 'images_469', 'images_470', 'images_471', 'images_472', 'images_473', 'images_474', 'images_475', 'images_476', 'images_477', 'images_478', 'images_479', 'images_480', 'images_481', 'images_482', 'images_483', 'images_484', 'images_485', 'images_486', 'images_487', 'images_488', 'images_489', 'images_490', 'images_491', 'images_492', 'images_493', 'images_494', 'images_495', 'images_496', 'images_497', 'images_498', 'images_499', 'images_500', 'images_501', 'images_502', 'images_503', 'images_504', 'images_505', 'images_506', 'images_507', 'images_508', 'images_509', 'images_510', 'images_511', 'images_512', 'images_513', 'images_514', 'images_515', 'images_516', 'images_517', 'images_518', 'images_519', 'images_520', 'images_521', 'images_522', 'images_523', 'images_524', 'images_525', 'images_526', 'images_527', 'images_528', 'images_529', 'images_530', 'images_531', 'images_532', 'images_533', 'images_534', 'images_535', 'images_536', 'images_537', 'images_538', 'images_539', 'images_540', 'images_541', 'images_542', 'images_543', 'images_544', 'images_545', 'images_546', 'images_547', 'images_548', 'images_549', 'images_550', 'images_551', 'images_552', 'images_553', 'images_554', 'images_555', 'images_556', 'images_557', 'images_558', 'images_559', 'images_560', 'images_561', 'images_562', 'images_563', 'images_564', 'images_565', 'images_566', 'images_567', 'images_568', 'images_569', 'images_570', 'images_571', 'images_572', 'images_573', 'images_574', 'images_575', 'images_576', 'images_577', 'images_578', 'images_579', 'images_580', 'images_581', 'images_582', 'images_583', 'images_584', 'images_585', 'images_586', 'images_587', 'images_588', 'images_589', 'images_590', 'images_591', 'images_592', 'images_593', 'images_594', 'images_595', 'images_596', 'images_597', 'images_598', 'images_599', 'images_600', 'images_601', 'images_602', 'images_603', 'images_604', 'images_605', 'images_606', 'images_607', 'images_608', 'images_609', 'images_610', 'images_611', 'images_612', 'images_613', 'images_614', 'images_615', 'images_616', 'images_617', 'images_618', 'images_619', 'images_620', 'images_621', 'images_622', 'images_623', 'images_624', 'images_625', 'images_626', 'images_627', 'images_628', 'images_629', 'images_630', 'images_631', 'images_632', 'images_633', 'images_634', 'images_635', 'images_636', 'images_637', 'images_638', 'images_639', 'images_640', 'images_641', 'images_642', 'images_643', 'images_644', 'images_645', 'images_646', 'images_647', 'images_648', 'images_649', 'images_650', 'images_651', 'images_652', 'images_653', 'images_654', 'images_655', 'images_656', 'images_657', 'images_658', 'images_659', 'images_660', 'images_661', 'images_662', 'images_663', 'images_664', 'images_665', 'images_666', 'images_667', 'images_668', 'images_669', 'images_670', 'images_671', 'images_672', 'images_673', 'images_674', 'images_675', 'images_676', 'images_677', 'images_678', 'images_679', 'images_680', 'images_681', 'images_682', 'images_683', 'images_684', 'images_685', 'images_686', 'images_687', 'images_688', 'images_689', 'images_690', 'images_691', 'images_692', 'images_693', 'images_694', 'images_695', 'images_696', 'images_697', 'images_698', 'images_699', 'images_700', 'images_701', 'images_702', 'images_703', 'images_704', 'images_705', 'images_706', 'images_707', 'images_708', 'images_709', 'images_710', 'images_711', 'images_712', 'images_713', 'images_714', 'images_715', 'images_716', 'images_717', 'images_718', 'images_719', 'images_720', 'images_721', 'images_722', 'images_723', 'images_724', 'images_725', 'images_726', 'images_727', 'images_728', 'images_729', 'images_730', 'images_731', 'images_732', 'images_733', 'images_734', 'images_735', 'images_736', 'images_737', 'images_738', 'images_739', 'images_740', 'images_741', 'images_742', 'images_743', 'images_744', 'images_745', 'images_746', 'images_747', 'images_748', 'images_749', 'images_750', 'images_751', 'images_752', 'images_753', 'images_754', 'images_755', 'images_756', 'images_757', 'images_758', 'images_759', 'images_760', 'images_761', 'images_762', 'images_763', 'images_764', 'images_765', 'images_766', 'images_767', 'images_768', 'images_769', 'images_770', 'images_771', 'images_772', 'images_773', 'images_774', 'images_775', 'images_776', 'images_777', 'images_778', 'images_779', 'images_780', 'images_781', 'images_782', 'images_783']\n",
- "WARNING:tensorflow:From /Users/aymeric.damien/anaconda2/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/estimators/head.py:678: __new__ (from tensorflow.contrib.learn.python.learn.estimators.model_fn) is deprecated and will be removed in a future version.\n",
- "Instructions for updating:\n",
- "When switching to tf.estimator.Estimator, use tf.estimator.EstimatorSpec. You can use the `estimator_spec` method to create an equivalent one.\n",
- "INFO:tensorflow:Create CheckpointSaverHook.\n",
- "WARNING:tensorflow:Issue encountered when serializing resources.\n",
- "Type is unsupported, or the types of the items don't match field type in CollectionDef. Note this is a warning and probably safe to ignore.\n",
- "'_Resource' object has no attribute 'name'\n",
- "INFO:tensorflow:Graph was finalized.\n",
- "INFO:tensorflow:Running local_init_op.\n",
- "INFO:tensorflow:Done running local_init_op.\n",
- "WARNING:tensorflow:Issue encountered when serializing resources.\n",
- "Type is unsupported, or the types of the items don't match field type in CollectionDef. Note this is a warning and probably safe to ignore.\n",
- "'_Resource' object has no attribute 'name'\n",
- "INFO:tensorflow:Saving checkpoints for 0 into /var/folders/p7/9nxn5g_s5kv636j86zdg2hrr0000gr/T/tmpE_8oiQ/model.ckpt.\n",
- "WARNING:tensorflow:Issue encountered when serializing resources.\n",
- "Type is unsupported, or the types of the items don't match field type in CollectionDef. Note this is a warning and probably safe to ignore.\n",
- "'_Resource' object has no attribute 'name'\n",
- "INFO:tensorflow:loss = 2.3025992, step = 1\n",
- "INFO:tensorflow:Saving checkpoints for 2 into /var/folders/p7/9nxn5g_s5kv636j86zdg2hrr0000gr/T/tmpE_8oiQ/model.ckpt.\n",
- "WARNING:tensorflow:Issue encountered when serializing resources.\n",
- "Type is unsupported, or the types of the items don't match field type in CollectionDef. Note this is a warning and probably safe to ignore.\n",
- "'_Resource' object has no attribute 'name'\n",
- "INFO:tensorflow:Saving checkpoints for 94 into /var/folders/p7/9nxn5g_s5kv636j86zdg2hrr0000gr/T/tmpE_8oiQ/model.ckpt.\n",
- "WARNING:tensorflow:Issue encountered when serializing resources.\n",
- "Type is unsupported, or the types of the items don't match field type in CollectionDef. Note this is a warning and probably safe to ignore.\n",
- "'_Resource' object has no attribute 'name'\n",
- "INFO:tensorflow:global_step/sec: 0.199624\n",
- "INFO:tensorflow:loss = 0.32783023, step = 101 (500.943 sec)\n",
- "INFO:tensorflow:Requesting stop since we have reached 10 trees.\n",
- "INFO:tensorflow:Saving checkpoints for 161 into /var/folders/p7/9nxn5g_s5kv636j86zdg2hrr0000gr/T/tmpE_8oiQ/model.ckpt.\n",
- "WARNING:tensorflow:Issue encountered when serializing resources.\n",
- "Type is unsupported, or the types of the items don't match field type in CollectionDef. Note this is a warning and probably safe to ignore.\n",
- "'_Resource' object has no attribute 'name'\n",
- "INFO:tensorflow:Loss for final step: 0.21336032.\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "GradientBoostedDecisionTreeClassifier(params={'head': , 'weight_column_name': None, 'feature_columns': None, 'center_bias': False, 'num_trees': 10, 'logits_modifier_function': None, 'use_core_libs': False, 'learner_config': num_classes: 10\n",
- "regularization {\n",
- " l2: 0.0010000000475\n",
- "}\n",
- "constraints {\n",
- " max_tree_depth: 16\n",
- "}\n",
- "learning_rate_tuner {\n",
- " fixed {\n",
- " learning_rate: 0.10000000149\n",
- " }\n",
- "}\n",
- "pruning_mode: POST_PRUNE\n",
- "growing_mode: LAYER_BY_LAYER\n",
- "multi_class_strategy: DIAGONAL_HESSIAN\n",
- ", 'examples_per_layer': 1000})"
- ]
- },
- "execution_count": 5,
- "metadata": {},
- "output_type": "execute_result"
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Display TF info logs\n",
"tf.logging.set_verbosity(tf.logging.INFO)\n",
@@ -204,30 +138,13 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 7,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "INFO:tensorflow:Active Feature Columns: ['images_0', 'images_1', 'images_2', 'images_3', 'images_4', 'images_5', 'images_6', 'images_7', 'images_8', 'images_9', 'images_10', 'images_11', 'images_12', 'images_13', 'images_14', 'images_15', 'images_16', 'images_17', 'images_18', 'images_19', 'images_20', 'images_21', 'images_22', 'images_23', 'images_24', 'images_25', 'images_26', 'images_27', 'images_28', 'images_29', 'images_30', 'images_31', 'images_32', 'images_33', 'images_34', 'images_35', 'images_36', 'images_37', 'images_38', 'images_39', 'images_40', 'images_41', 'images_42', 'images_43', 'images_44', 'images_45', 'images_46', 'images_47', 'images_48', 'images_49', 'images_50', 'images_51', 'images_52', 'images_53', 'images_54', 'images_55', 'images_56', 'images_57', 'images_58', 'images_59', 'images_60', 'images_61', 'images_62', 'images_63', 'images_64', 'images_65', 'images_66', 'images_67', 'images_68', 'images_69', 'images_70', 'images_71', 'images_72', 'images_73', 'images_74', 'images_75', 'images_76', 'images_77', 'images_78', 'images_79', 'images_80', 'images_81', 'images_82', 'images_83', 'images_84', 'images_85', 'images_86', 'images_87', 'images_88', 'images_89', 'images_90', 'images_91', 'images_92', 'images_93', 'images_94', 'images_95', 'images_96', 'images_97', 'images_98', 'images_99', 'images_100', 'images_101', 'images_102', 'images_103', 'images_104', 'images_105', 'images_106', 'images_107', 'images_108', 'images_109', 'images_110', 'images_111', 'images_112', 'images_113', 'images_114', 'images_115', 'images_116', 'images_117', 'images_118', 'images_119', 'images_120', 'images_121', 'images_122', 'images_123', 'images_124', 'images_125', 'images_126', 'images_127', 'images_128', 'images_129', 'images_130', 'images_131', 'images_132', 'images_133', 'images_134', 'images_135', 'images_136', 'images_137', 'images_138', 'images_139', 'images_140', 'images_141', 'images_142', 'images_143', 'images_144', 'images_145', 'images_146', 'images_147', 'images_148', 'images_149', 'images_150', 'images_151', 'images_152', 'images_153', 'images_154', 'images_155', 'images_156', 'images_157', 'images_158', 'images_159', 'images_160', 'images_161', 'images_162', 'images_163', 'images_164', 'images_165', 'images_166', 'images_167', 'images_168', 'images_169', 'images_170', 'images_171', 'images_172', 'images_173', 'images_174', 'images_175', 'images_176', 'images_177', 'images_178', 'images_179', 'images_180', 'images_181', 'images_182', 'images_183', 'images_184', 'images_185', 'images_186', 'images_187', 'images_188', 'images_189', 'images_190', 'images_191', 'images_192', 'images_193', 'images_194', 'images_195', 'images_196', 'images_197', 'images_198', 'images_199', 'images_200', 'images_201', 'images_202', 'images_203', 'images_204', 'images_205', 'images_206', 'images_207', 'images_208', 'images_209', 'images_210', 'images_211', 'images_212', 'images_213', 'images_214', 'images_215', 'images_216', 'images_217', 'images_218', 'images_219', 'images_220', 'images_221', 'images_222', 'images_223', 'images_224', 'images_225', 'images_226', 'images_227', 'images_228', 'images_229', 'images_230', 'images_231', 'images_232', 'images_233', 'images_234', 'images_235', 'images_236', 'images_237', 'images_238', 'images_239', 'images_240', 'images_241', 'images_242', 'images_243', 'images_244', 'images_245', 'images_246', 'images_247', 'images_248', 'images_249', 'images_250', 'images_251', 'images_252', 'images_253', 'images_254', 'images_255', 'images_256', 'images_257', 'images_258', 'images_259', 'images_260', 'images_261', 'images_262', 'images_263', 'images_264', 'images_265', 'images_266', 'images_267', 'images_268', 'images_269', 'images_270', 'images_271', 'images_272', 'images_273', 'images_274', 'images_275', 'images_276', 'images_277', 'images_278', 'images_279', 'images_280', 'images_281', 'images_282', 'images_283', 'images_284', 'images_285', 'images_286', 'images_287', 'images_288', 'images_289', 'images_290', 'images_291', 'images_292', 'images_293', 'images_294', 'images_295', 'images_296', 'images_297', 'images_298', 'images_299', 'images_300', 'images_301', 'images_302', 'images_303', 'images_304', 'images_305', 'images_306', 'images_307', 'images_308', 'images_309', 'images_310', 'images_311', 'images_312', 'images_313', 'images_314', 'images_315', 'images_316', 'images_317', 'images_318', 'images_319', 'images_320', 'images_321', 'images_322', 'images_323', 'images_324', 'images_325', 'images_326', 'images_327', 'images_328', 'images_329', 'images_330', 'images_331', 'images_332', 'images_333', 'images_334', 'images_335', 'images_336', 'images_337', 'images_338', 'images_339', 'images_340', 'images_341', 'images_342', 'images_343', 'images_344', 'images_345', 'images_346', 'images_347', 'images_348', 'images_349', 'images_350', 'images_351', 'images_352', 'images_353', 'images_354', 'images_355', 'images_356', 'images_357', 'images_358', 'images_359', 'images_360', 'images_361', 'images_362', 'images_363', 'images_364', 'images_365', 'images_366', 'images_367', 'images_368', 'images_369', 'images_370', 'images_371', 'images_372', 'images_373', 'images_374', 'images_375', 'images_376', 'images_377', 'images_378', 'images_379', 'images_380', 'images_381', 'images_382', 'images_383', 'images_384', 'images_385', 'images_386', 'images_387', 'images_388', 'images_389', 'images_390', 'images_391', 'images_392', 'images_393', 'images_394', 'images_395', 'images_396', 'images_397', 'images_398', 'images_399', 'images_400', 'images_401', 'images_402', 'images_403', 'images_404', 'images_405', 'images_406', 'images_407', 'images_408', 'images_409', 'images_410', 'images_411', 'images_412', 'images_413', 'images_414', 'images_415', 'images_416', 'images_417', 'images_418', 'images_419', 'images_420', 'images_421', 'images_422', 'images_423', 'images_424', 'images_425', 'images_426', 'images_427', 'images_428', 'images_429', 'images_430', 'images_431', 'images_432', 'images_433', 'images_434', 'images_435', 'images_436', 'images_437', 'images_438', 'images_439', 'images_440', 'images_441', 'images_442', 'images_443', 'images_444', 'images_445', 'images_446', 'images_447', 'images_448', 'images_449', 'images_450', 'images_451', 'images_452', 'images_453', 'images_454', 'images_455', 'images_456', 'images_457', 'images_458', 'images_459', 'images_460', 'images_461', 'images_462', 'images_463', 'images_464', 'images_465', 'images_466', 'images_467', 'images_468', 'images_469', 'images_470', 'images_471', 'images_472', 'images_473', 'images_474', 'images_475', 'images_476', 'images_477', 'images_478', 'images_479', 'images_480', 'images_481', 'images_482', 'images_483', 'images_484', 'images_485', 'images_486', 'images_487', 'images_488', 'images_489', 'images_490', 'images_491', 'images_492', 'images_493', 'images_494', 'images_495', 'images_496', 'images_497', 'images_498', 'images_499', 'images_500', 'images_501', 'images_502', 'images_503', 'images_504', 'images_505', 'images_506', 'images_507', 'images_508', 'images_509', 'images_510', 'images_511', 'images_512', 'images_513', 'images_514', 'images_515', 'images_516', 'images_517', 'images_518', 'images_519', 'images_520', 'images_521', 'images_522', 'images_523', 'images_524', 'images_525', 'images_526', 'images_527', 'images_528', 'images_529', 'images_530', 'images_531', 'images_532', 'images_533', 'images_534', 'images_535', 'images_536', 'images_537', 'images_538', 'images_539', 'images_540', 'images_541', 'images_542', 'images_543', 'images_544', 'images_545', 'images_546', 'images_547', 'images_548', 'images_549', 'images_550', 'images_551', 'images_552', 'images_553', 'images_554', 'images_555', 'images_556', 'images_557', 'images_558', 'images_559', 'images_560', 'images_561', 'images_562', 'images_563', 'images_564', 'images_565', 'images_566', 'images_567', 'images_568', 'images_569', 'images_570', 'images_571', 'images_572', 'images_573', 'images_574', 'images_575', 'images_576', 'images_577', 'images_578', 'images_579', 'images_580', 'images_581', 'images_582', 'images_583', 'images_584', 'images_585', 'images_586', 'images_587', 'images_588', 'images_589', 'images_590', 'images_591', 'images_592', 'images_593', 'images_594', 'images_595', 'images_596', 'images_597', 'images_598', 'images_599', 'images_600', 'images_601', 'images_602', 'images_603', 'images_604', 'images_605', 'images_606', 'images_607', 'images_608', 'images_609', 'images_610', 'images_611', 'images_612', 'images_613', 'images_614', 'images_615', 'images_616', 'images_617', 'images_618', 'images_619', 'images_620', 'images_621', 'images_622', 'images_623', 'images_624', 'images_625', 'images_626', 'images_627', 'images_628', 'images_629', 'images_630', 'images_631', 'images_632', 'images_633', 'images_634', 'images_635', 'images_636', 'images_637', 'images_638', 'images_639', 'images_640', 'images_641', 'images_642', 'images_643', 'images_644', 'images_645', 'images_646', 'images_647', 'images_648', 'images_649', 'images_650', 'images_651', 'images_652', 'images_653', 'images_654', 'images_655', 'images_656', 'images_657', 'images_658', 'images_659', 'images_660', 'images_661', 'images_662', 'images_663', 'images_664', 'images_665', 'images_666', 'images_667', 'images_668', 'images_669', 'images_670', 'images_671', 'images_672', 'images_673', 'images_674', 'images_675', 'images_676', 'images_677', 'images_678', 'images_679', 'images_680', 'images_681', 'images_682', 'images_683', 'images_684', 'images_685', 'images_686', 'images_687', 'images_688', 'images_689', 'images_690', 'images_691', 'images_692', 'images_693', 'images_694', 'images_695', 'images_696', 'images_697', 'images_698', 'images_699', 'images_700', 'images_701', 'images_702', 'images_703', 'images_704', 'images_705', 'images_706', 'images_707', 'images_708', 'images_709', 'images_710', 'images_711', 'images_712', 'images_713', 'images_714', 'images_715', 'images_716', 'images_717', 'images_718', 'images_719', 'images_720', 'images_721', 'images_722', 'images_723', 'images_724', 'images_725', 'images_726', 'images_727', 'images_728', 'images_729', 'images_730', 'images_731', 'images_732', 'images_733', 'images_734', 'images_735', 'images_736', 'images_737', 'images_738', 'images_739', 'images_740', 'images_741', 'images_742', 'images_743', 'images_744', 'images_745', 'images_746', 'images_747', 'images_748', 'images_749', 'images_750', 'images_751', 'images_752', 'images_753', 'images_754', 'images_755', 'images_756', 'images_757', 'images_758', 'images_759', 'images_760', 'images_761', 'images_762', 'images_763', 'images_764', 'images_765', 'images_766', 'images_767', 'images_768', 'images_769', 'images_770', 'images_771', 'images_772', 'images_773', 'images_774', 'images_775', 'images_776', 'images_777', 'images_778', 'images_779', 'images_780', 'images_781', 'images_782', 'images_783']\n",
- "INFO:tensorflow:Starting evaluation at 2018-07-26-01:00:06\n",
- "INFO:tensorflow:Graph was finalized.\n",
- "INFO:tensorflow:Restoring parameters from /var/folders/p7/9nxn5g_s5kv636j86zdg2hrr0000gr/T/tmpE_8oiQ/model.ckpt-161\n",
- "INFO:tensorflow:Running local_init_op.\n",
- "INFO:tensorflow:Done running local_init_op.\n",
- "INFO:tensorflow:Finished evaluation at 2018-07-26-01:00:07\n",
- "INFO:tensorflow:Saving dict for global step 161: accuracy = 0.9273, global_step = 161, loss = 0.23841818\n",
- "WARNING:tensorflow:Issue encountered when serializing resources.\n",
- "Type is unsupported, or the types of the items don't match field type in CollectionDef. Note this is a warning and probably safe to ignore.\n",
- "'_Resource' object has no attribute 'name'\n",
- "Testing Accuracy: 0.9273\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Evaluate the Model\n",
"# Define the input function for evaluating\n",
@@ -244,23 +161,32 @@
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
- "display_name": "Python [default]",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 1
+ "nbformat_minor": 4
}
diff --git a/notebooks/2_BasicModels/kmeans.ipynb b/notebooks/2_BasicModels/kmeans.ipynb
index 1a64ba2f..756a039e 100644
--- a/notebooks/2_BasicModels/kmeans.ipynb
+++ b/notebooks/2_BasicModels/kmeans.ipynb
@@ -13,15 +13,22 @@
"Note: This example requires TensorFlow v1.1.0 or over.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
"cell_type": "code",
"execution_count": 1,
- "metadata": {
- "collapsed": true
- },
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
"outputs": [],
"source": [
"from __future__ import print_function\n",
@@ -37,33 +44,37 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 3,
"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"
- ]
- }
- ],
+ "outputs": [],
+ "source": [
+ "config = tf.ConfigProto()\n",
+ "config.gpu_options.allow_growth=True \n",
+ "sess = tf.Session(config=config)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
"source": [
"# Import MNIST data\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=True)\n",
+ "import os\n",
+ "data_path = \"./dataset/kmeans/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=True)\n",
"full_data_x = mnist.train.images"
]
},
{
"cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 5,
+ "metadata": {},
"outputs": [],
"source": [
"# Parameters\n",
@@ -85,15 +96,12 @@
},
{
"cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 6,
+ "metadata": {},
"outputs": [],
"source": [
"# Build KMeans graph\n",
- "(all_scores, cluster_idx, scores, cluster_centers_initialized, \n",
- " cluster_centers_vars,init_op,train_op) = kmeans.training_graph()\n",
+ "(all_scores, cluster_idx, scores, cluster_centers_initialized, init_op,train_op) = kmeans.training_graph()\n",
"cluster_idx = cluster_idx[0] # fix for cluster_idx being a tuple\n",
"avg_distance = tf.reduce_mean(scores)\n",
"\n",
@@ -103,25 +111,12 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Step 1, Avg Distance: 0.341471\n",
- "Step 10, Avg Distance: 0.221609\n",
- "Step 20, Avg Distance: 0.220328\n",
- "Step 30, Avg Distance: 0.219776\n",
- "Step 40, Avg Distance: 0.219419\n",
- "Step 50, Avg Distance: 0.219154\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Start TensorFlow session\n",
- "sess = tf.Session()\n",
+ "# sess = tf.Session()\n",
"\n",
"# Run the initializer\n",
"sess.run(init_vars, feed_dict={X: full_data_x})\n",
@@ -137,17 +132,9 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Test Accuracy: 0.7127\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Assign a label to each centroid\n",
"# Count total number of labels per centroid, using the label of each training\n",
@@ -175,21 +162,30 @@
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
- "display_name": "Python 2",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
},
"varInspector": {
"cols": {
@@ -222,5 +218,5 @@
}
},
"nbformat": 4,
- "nbformat_minor": 1
+ "nbformat_minor": 4
}
diff --git a/notebooks/2_BasicModels/linear_regression.ipynb b/notebooks/2_BasicModels/linear_regression.ipynb
old mode 100644
new mode 100755
index 2c6692db..bbd16087
--- a/notebooks/2_BasicModels/linear_regression.ipynb
+++ b/notebooks/2_BasicModels/linear_regression.ipynb
@@ -2,24 +2,29 @@
"cells": [
{
"cell_type": "markdown",
- "metadata": {
- "collapsed": false
- },
+ "metadata": {},
"source": [
"# Linear Regression Example\n",
"\n",
"A linear regression learning algorithm example using TensorFlow library.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
"cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
@@ -30,10 +35,8 @@
},
{
"cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"# Parameters\n",
@@ -44,10 +47,8 @@
},
{
"cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"# Training Data\n",
@@ -60,10 +61,8 @@
},
{
"cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"# tf Graph Input\n",
@@ -77,10 +76,8 @@
},
{
"cell_type": "code",
- "execution_count": 5,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"# Construct a linear model\n",
@@ -89,10 +86,8 @@
},
{
"cell_type": "code",
- "execution_count": 6,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"# Mean squared error\n",
@@ -103,9 +98,12 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": null,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -115,51 +113,14 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": null,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Epoch: 0050 cost= 0.195095107 W= 0.441748 b= -0.580876\n",
- "Epoch: 0100 cost= 0.181448311 W= 0.430319 b= -0.498661\n",
- "Epoch: 0150 cost= 0.169377610 W= 0.419571 b= -0.421336\n",
- "Epoch: 0200 cost= 0.158700854 W= 0.409461 b= -0.348611\n",
- "Epoch: 0250 cost= 0.149257123 W= 0.399953 b= -0.28021\n",
- "Epoch: 0300 cost= 0.140904188 W= 0.391011 b= -0.215878\n",
- "Epoch: 0350 cost= 0.133515999 W= 0.3826 b= -0.155372\n",
- "Epoch: 0400 cost= 0.126981199 W= 0.374689 b= -0.0984639\n",
- "Epoch: 0450 cost= 0.121201262 W= 0.367249 b= -0.0449408\n",
- "Epoch: 0500 cost= 0.116088994 W= 0.360252 b= 0.00539905\n",
- "Epoch: 0550 cost= 0.111567356 W= 0.35367 b= 0.052745\n",
- "Epoch: 0600 cost= 0.107568085 W= 0.34748 b= 0.0972751\n",
- "Epoch: 0650 cost= 0.104030922 W= 0.341659 b= 0.139157\n",
- "Epoch: 0700 cost= 0.100902475 W= 0.336183 b= 0.178547\n",
- "Epoch: 0750 cost= 0.098135538 W= 0.331033 b= 0.215595\n",
- "Epoch: 0800 cost= 0.095688373 W= 0.32619 b= 0.25044\n",
- "Epoch: 0850 cost= 0.093524046 W= 0.321634 b= 0.283212\n",
- "Epoch: 0900 cost= 0.091609895 W= 0.317349 b= 0.314035\n",
- "Epoch: 0950 cost= 0.089917004 W= 0.31332 b= 0.343025\n",
- "Epoch: 1000 cost= 0.088419855 W= 0.30953 b= 0.370291\n",
- "Optimization Finished!\n",
- "Training cost= 0.0884199 W= 0.30953 b= 0.370291 \n",
- "\n"
- ]
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgkAAAFkCAYAAACq4KjhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3Xl8lNXZ//HPNRiJgQAqUiyCCSA06lM1sSqyuKFQC0GL\n+DSK+1JrEX4stSpUYk20UgVjRatVK25prViFKvJoqRuktIa6EtwAUdqioMZhUSNzfn/MJGSSCclM\nZuaemXzfr9e85D5zL9ctIXPNOec+lznnEBEREWnK53UAIiIikpqUJIiIiEhEShJEREQkIiUJIiIi\nEpGSBBEREYlISYKIiIhEpCRBREREIlKSICIiIhEpSRAREZGIlCSIiIhIRO1KEszsajMLmNncVvab\nYGY1ZrbDzF4zs++357oiIiKSeDEnCWb2PeAS4LVW9hsCPAL8DjgceAJ4wswOjvXaIiIikngxJQlm\n1hV4CLgY+LyV3acAS5xzc51zbzvnZgOrgEmxXFtERESSI9aehPnAYufcsjbsOwR4rknb0lC7iIiI\npKg9oj3AzH5EcNjgyDYe0hvY1KRtU6i9pWvsC4wC1gNfRhujiIhIB5YN5AFLnXNb2nOiqJIEMzsA\nuBU42TlX147rGuB28/4o4OF2nF9ERKSjO5vgnMCYRduTUATsB1SbmYXaOgEjzGwS0Nk51/TD/7/A\nt5q09aJ570Jj6wEeeughCgoKogwx9UydOpV58+Z5HUbc6H5SVybdC+h+Ulkm3Qtk1v3U1NQwceJE\nCH2Wtke0ScJzwP80absfqAF+FSFBAKgCTgJua9R2cqi9JV8CFBQUUFhYGGWIqad79+4ZcR/1dD+p\nK5PuBXQ/qSyT7gUy735C2j1cH1WS4JzbBqxu3GZm24Atzrma0PYCYKNz7prQLhXAC2Y2DXgKKCHY\nI3FJO2MXERGRBIrHiotNew/60mhSonOuimBicCnwKvBDYJxzbjUiIiKSsqJ+uqEp59yJu9sOtS0E\nFrb3WiIiIpI8qt2QBCUlJV6HEFe6n9SVSfcCup9Ulkn3Apl3P/FikecaesvMCoHq6urqTJxIIiIi\nkjCrVq2iqKgIoMg5t6o952r3cIOISCbasGEDmzdv9joMkWZ69uxJv379knItJQkiIk1s2LCBgoIC\ntm/f7nUoIs3k5ORQU1OTlERBSYKISBObN29m+/btGbOgm2SO+oWSNm/erCRBRMRLmbKgm0is9HSD\niIiIRKQkQURERCJSkiAiIiIRKUkQERGRiJQkiIhIzEpLS/H5Yvsouf/++/H5fGzYsCHOUe3ywQcf\n4PP5eOCBB2I6PhkxpjIlCSIiHdDq1auZOHEiBxxwANnZ2fTp04eJEyeyenV0tffMLOYkwcwws5iO\nTZb2xFhZWUlFRUWcI0ouJQkiIh3M448/TmFhIX/729+48MILufPOO7n44ot5/vnnKSws5Mknn2zz\nuX7xi1/EvOjUueeey44dO5K2emCyPfLII2mfJGidBBGROHDOJexbcTzPvXbtWs4991wGDhzIiy++\nyD777NPw3pQpUxg2bBjnnHMOr7/+Onl5eS2eZ/v27eTk5ODz+dhzzz1jisXMYj5WkkM9CSIiMfL7\n/cyePJmR+fmc1rcvI/PzmT15Mn6/P2XPPWfOHHbs2MHdd98dliAA7LPPPvz2t79l69atzJkzp6G9\nft5BTU0NZ511Fvvssw/Dhw8Pe6+xL7/8ksmTJ7PffvvRrVs3TjvtNP7973/j8/n45S9/2bBfpPH+\nvLw8iouLWb58OUcffTR77bUXAwYM4MEHHwy7xmeffcaMGTP47ne/S25uLt27d+fUU0/l9ddfj/n/\nzerVqznxxBPJycmhb9++lJeXEwgEmu23aNEixowZQ58+fcjOzmbgwIGUlZWF7XvCCSfw1FNPNcyJ\n8Pl89O/fH4C6ujquvfZajjzySHr06EHXrl0ZMWIEzz//fMyxJ4p6EkREYuD3+xk/ZAjTamooDQQw\nwAFL589n/LJlLKyqIjc3N+XO/Ze//IW8vDyOPfbYiO+PGDGCvLw8/vKXv3DHHXcANPRiTJgwgUGD\nBnHjjTdSX0E40pj9eeedx2OPPca5557L0UcfzQsvvMAPfvCDZvtFOtbMePfdd5kwYQIXXXQR559/\nPvfddx8XXHABRx55ZMMy2WvXrmXRokVMmDCB/Px8Nm3axF133cXxxx/P6tWr6d27d1T/XzZt2sTx\nxx9PIBDgmmuuIScnh7vvvpvs7Oxm+95///3k5uYyffp0unbtyrJly7j22mvx+/3cdNNNAMyaNYva\n2lo2btzIrbfeinOOrl27AvDFF19w3333UVJSwqWXXorf7+fee+9l9OjR/OMf/+C73/1uVLEnlHMu\n5V5AIeCqq6udiEiyVVdXu9Z+B117xRVuic/nHDR7Pe3zudmTJ8d8/USdu7a21pmZO/3003e737hx\n45zP53Nbt251zjlXWlrqzMydffbZzfYtLS11Pp+vYXvVqlXOzNz06dPD9rvgggucz+dz1113XUPb\n/fff73w+n/vggw8a2vLy8pzP53PLly9vaPvkk09cdna2+9nPftbQ9vXXXzeL5YMPPnDZ2dmurKys\noW39+vXOzNyCBQt2e8//7//9P+fz+dwrr7zS0LZ582bXo0ePZjF++eWXzY6/7LLLXNeuXcPiGjNm\njMvPz2+2byAQcHV1dWFttbW1rnfv3u7iiy/ebZxt+dms3wcodO38PNZwg4hIDJYvXsyoCF3RAKMD\nAZYvWpRy564fqmitF6L+/S+++KKhzcy47LLLWr3GM888g5nxk5/8JKz9iiuuaOh9aM3BBx8c1tPR\ns2dPBg8ezNq1axvasrKyGv4cCAT49NNPycnJYfDgwaxatapN12lsyZIlHHPMMRQVFTW07bvvvpx9\n9tnN9u3cuXPDn7du3cqWLVsYNmwY27dvZ82aNa1ey8zYY49gR75zjs8++4yvv/6aI488MqbYE0lJ\ngohIlJxzdKmro6WphAbk1NW1+UMxWeeu//BvbV5DS8lEfn5+q9eoH4Nvuu/AgQPbHGekpx323ntv\nPvvss4Zt5xzz5s1j0KBBdO7cmZ49e9KrVy/eeOMNamtr23ytxnEfdNBBzdoHDx7crG316tWcfvrp\n9OjRg27durHffvtxzjnnALT52gsWLOCwww4jOzubfffdl169evHUU0/FFHsiaU6CiEiUzIxtWVk4\niPhh7oBtWVkxPZGQyHN369aN/fffv9XJfa+//jp9+vRpGEOvt9dee0V9zXrRxNupU6eI7Y0To/Ly\ncq699louuugiysrK2GefffD5fEyZMiXiZMNYY2yajNXW1jJixAh69OhBWVkZ/fv3Jzs7m+rqaq66\n6qo2Xfuhhx7iggsu4Ic//CFXXnklvXr1olOnTtxwww1hvSWpQEmCiEgMho4dy9L58xkd4UPhGZ+P\nYcXFKXnuMWPGcM8997BixYqIkxdfeukl1q9f32y4oK0OPPBAAoEA69atY8CAAQ3t77zzTswxR7Jw\n4UJOPPFEfve734W1f/755+y3335Rn+/AAw+MGOPbb78dtv3888/z2Wef8eSTTzJ06NCG9vfff7/Z\nsS0lRgsXLmTAgAE89thjYe3XXntt1HEnmoYbRERiMKO8nLkFBSzx+aj/rumAJT4f8woKmF5WlpLn\n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\njrVr1wKwefNmXnzxRX71q1/x+eefN+znnGPUqFGUlZXxySefsN9++8U1rlQV88RFM/MBZwI5QNVu\ndu1qZusJzn9YBVzjnFsd63VFRFLNmjVQVJTYa1RXw27mGUbte9/73m4nLsbDu+++S01NTcQPVDPj\n448/BmDDhg306dOH7OzssH0GDx4c95j69u0btr333nsDwTkR9TEDXH311Vx11VUtxq0koQVmdijB\npCAb8AOnO+dayqHfBi4EXge6Az8DVpjZIc65jbGFLCKSWr7zneCHeKKvkW6cc4wePZrp06dHfL8+\nCWjpyYlEPMLY0lMP9dcKBAIA/PznP2fkyJER983Pz497XKkqlp6ENcBhQA9gPPCAmY2IlCg45/4O\n/L1+28yqCA5LXArMbu1CU6dOpXv37mFtJSUlzca9RES8lJMT32/5qWh3Ewhbeq9///5s27aNE088\ncbfnzsvLY/ny5Xz55ZdhvQlvv/12bMG2w4ABAwDYc889W43bS9u2bQOgsrKSysrKsPdqa2vjdp2o\nkwTn3DfA2tDmKjM7CphC8KmHVo81s38BA9tyrXnz5iW8O0xERFrXpUsXnHNh4/SN34vUfuaZZ1Je\nXs6yZcuafeB+/vnndOvWDZ/Px6mnnsp9993HXXfdxZQpUwDYuXMnt99+e9LXZujduzfDhg3jzjvv\n5PLLL6dXr15h72/evJmePXsmNaZIfnb++Tz76qsRvzivWrWKojiNf8VjMSUf0LktO4bmMRwKdLyH\nTUVEUkQs3fhHHHEEPp+PG2+8kc2bN9O5c2dOPvlk9tlnH4qKirj33nu54YYbGDBgAL179+a4447j\nqquuYvHixXz/+9/nggsu4IgjjmDr1q28/vrrPP7442zcuJFu3bpx+umnc8wxxzBjxgzef//9hkcg\nt2/fntB7asmdd97JiBEjOPTQQ7nkkkvIz89n06ZNrFixgk2bNvHKK6/E7VqxOnvdOm6ZNYvSioqE\nXifadRLKgSUEH4XMBc4GjgNOCb3/APCRc+6a0PYvCA43vEdweOJK4EDgnjjFLyIiUWrLt/Om6wx8\n+9vf5s477+Smm27i4osvZufOnbz00ksce+yxlJaW8tFHH3HTTTexdetWTjrpJI477jhycnJ4+eWX\nKS8v57HHHmPBggV0796dQYMGUVZW1vCUgZnx1FNPMWXKFB544AE6derEaaedxi233MKRRx4Z8z1F\n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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Start training\n",
"with tf.Session() as sess:\n",
@@ -173,12 +134,12 @@
" #Display logs per epoch step\n",
" if (epoch+1) % display_step == 0:\n",
" c = sess.run(cost, feed_dict={X: train_X, Y:train_Y})\n",
- " print \"Epoch:\", '%04d' % (epoch+1), \"cost=\", \"{:.9f}\".format(c), \\\n",
- " \"W=\", sess.run(W), \"b=\", sess.run(b)\n",
+ " print (\"Epoch:\", '%04d' % (epoch+1), \"cost=\", \"{:.9f}\".format(c),\n",
+ " \"W=\", sess.run(W), \"b=\", sess.run(b))\n",
"\n",
- " print \"Optimization Finished!\"\n",
+ " print (\"Optimization Finished!\")\n",
" training_cost = sess.run(cost, feed_dict={X: train_X, Y: train_Y})\n",
- " print \"Training cost=\", training_cost, \"W=\", sess.run(W), \"b=\", sess.run(b), '\\n'\n",
+ " print (\"Training cost=\", training_cost, \"W=\", sess.run(W), \"b=\", sess.run(b), '\\n')\n",
"\n",
" #Graphic display\n",
" plt.plot(train_X, train_Y, 'ro', label='Original data')\n",
@@ -189,23 +150,14 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "image/png": "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\n1bqQvLw8xcTE+IQPSRVBEsGFAAIAACrExMRoRVaWUjMztXbyZK2dPFmpmZlakZWlmJiYBn298847\nT3/+85917NgxXXPNNX5DyIoVK3TnnXeqUaNG+vvf/37G12zcuLFSU1P1448/6tFHH7Xs++qrr/T6\n66+f8TWq0qZNG0VFRSknJ8cSfk6cOKHbb7/9jNZ+lJs4caJM09TUqVMt05wKCgr02GOP+YSr06np\n7LPPlmEYVd7uuHPnziooKNC///1vy/irr76q995770zeHuoJU7AAAICPpKSkOp3+FCzXe+ihh1RU\nVKRnnnlGv/jFL3TVVVepR48eOn78uNatW6esrCxFRUXpH//4hwYOHOhzfm0XjEtl04D+9a9/6amn\nntL69evVv39/7d69W0uWLNHw4cO1YsUKn4cO1gXDMHT77bfrySefVK9evXTttdfq2LFjWrt2rQ4c\nOKDBgwefcYdg3LhxWrx4sVatWqWePXvq2muv1fHjx/Xmm2/K5XIpLy/vjGtq3ry5+vXrp08++UQT\nJkxQQkKCIiIidO2116pnz5668847tXr1ag0YMEApKSmKjo7WF198oc8++0xjxozRkiVLzug9ou7R\nAQEAAGHDMAzNmDFDWVlZGj9+vL777jvNnj1bL7/8sn766Sfdc8892rJli0aNGlXl+ad6fX8/9f/8\n88/1m9/8Rt99952effZZffXVV3rhhRf061//WqZpVqwVOdW1TrUGxXvfo48+qpkzZyoqKkovvfSS\nli9fLpfLJbfbrbi4uNO6hrc333xTDz/8sEzT1N/+9jetWrVKv/vd75SRkeH3tU6npgULFmj48OFa\nvXq1pk+frmnTplVM17rqqqv09ttvq0ePHsrIyNDcuXMVGRmptWvXatiwYfU2xQ2nzzBPJ8qjXuTm\n5qpv377KyclRYqL3cjwAAE4P/78Er6lTp+qJJ57Qu+++W+Nni6B+1PTvCX+fzhwdEAAAgHpW/hDE\nk33zzTeaPXu2nE7nGS92BxoS1oAAAADUs4suukhdu3ZVz5491bx5c23dulXvvPOOTNPUyy+/bHmK\nOBDqCCAAAAD17A9/+INWrFihf/zjHzp06JBatWql5ORk3X333X5vHwuEMgIIAABAPXvggQf0wAMP\n2F0GEBRYAwIAAAAgYAggAAAAAAKGAAIAAAAgYAggAAAAAAKGAAIAAAAgYAggAAAAAAKGAAIAAAAg\n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\nlpbWdXkAgFO46CJr+Bg4MLjCBwCEMwJILezbt0+xsbGnPM40TQ0aNEgtW7ZUVFSUrr32Wm3bti0A\nFQIADEPKyancNk3po4/sq6cqPI0eQLgigNTQggULtGvXLo0dO7ba46KiojRx4kTNmTNHK1as0H33\n3acPPvhAAwYM0K5duwJULQCEn8RE60LzmJjg7nrwNHoA4cowzWD+5zk4bNq0SRdffLF69eqljz/+\nWIb3rVRO4bPPPtPAgQN1yy23aM6cOVUel5ubq759+yonJ4f1IwBQC97/LJeU+K7/CEblt+Gt6mn0\n3IYXCD58XztzLEI/hX379mn48OE6++yztWTJklqHD0kaMGCA+vXrp/fff78eKgSA8JWaKv38/L4K\nDenHauH+NHoA4YkAUo2DBw/q6quv1sGDB/Xpp5+qbdu2p/1aHTt21JYtW2p07KRJkxQdHW0ZGzdu\nnMaNG3fa1weAUOP986CjR6WmTe2p5UyF29PogYZi0aJFWrRokWWssLDQpmpCBwGkCsXFxfrVr36l\nbdu26YMPPtD5559/Rq/3/fffq3Xr1jU6dtasWbT0AKAK990nPfWUdawhdT0ANBz+fgBcPgULp48A\n4kdpaalSUlKUlZWllStXyuVy+T1u7969KiwsVNeuXRURESFJys/P97lT1j//+U/l5OTozjvvrPfa\nASCUeXc9fvyx7EGDAICGgwDix1133aVVq1ZpxIgRys/P18KFCy37x48fL0maMmWK0tPTtX37dsXF\nxUmS+vfvr1/+8pe66KKLFB0drZycHL322mvq1KmT7r///oC/FwAIBX/7m3TbbdYxuh4A0DARQPz4\n6quvZBiGVq1apVWrVvnsLw8ghmHI4XWblbFjx+qdd97RmjVrVFRUpHbt2umWW27RtGnTajwFCwBQ\nybvr8Z//SB062FMLAODMcRveIMJt3QCg0vLl0qhR1jH+xwJgN76vnTk6IACAoOPd9fj2W6l7d3tq\nAQDUrQbwmCYAQLj47DPf8GGahA8ACCV0QAAgwNxut9b8/PS8oSkpVd5pL9x4B4+PP5YuvdSeWgAA\n9YcAAgABUlBQoLTkZHXLy9NIj0eStGTePD0eH6+5mZmKiYmxuUJ7bNokXXihdYy1HgAQugggABAg\nacnJmuZ26+Qli/09HuV6PEpLTtaKrCzbarOLd9djyRJp9Gh7agEABAZrQAAgANxut7rl5cnf/VIS\n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\nMuXm5kryXfsQ7Spv1lDdNVPt2rXT3r17VVZWpvr169sdDRGKAhJm1q9fr/Hjx2vAgAG64447TMcx\nasKECRo5cqR27NihRYsWqby8PGqP5O7du1eTJk3SxIkTFRsbazpOWLjssst02WWXVa1vuOEG3XTT\nTerdu7ceffRRLV++3GA6+x0+fFhHjx7Vvffeq5kzZ0qSbrzxRh0/flwvvfSSJk+erISEBMMpzXv9\n9dfVoEEDjRw50nQUYzp37qyrrrpKI0aMUGxsrN555x1NmTJFbdu21bhx40zHs924ceM0btw4paen\n66GHHlJ5ebmeeOIJ7dq1S5Ki+u5glSr3QXWnGzVq1KjqayggqClOwQoju3fv1vXXX69WrVpp8eLF\nVUdiolWPHj00cOBAjRo1SsuWLdOhQ4eUkpJiOpYRf/rTn+RyuTR+/HjTUcJaQkKChg0bpo8//jjq\nrn+oPIXk5ptvDth+6623yrIsrV692kSssHLkyBEtW7ZMQ4YMUatWrUzHMeKNN97QPffco5dfflnp\n6em68cYbNWvWLN155516+OGHtW/fPtMRbTd27Fg99thjWrBggXr16qWLLrpImzZt0kMPPSRJ3HFQ\n/n9fqjsIeOzYsYCvAWqCAhImDh48qCFDhujgwYN699131bZtW9ORws6IESOUl5cXdc9IKSws1KxZ\ns5SRkaGioiJt2bJFmzdv1rFjx1RWVqYtW7ZE5ZuGU+nQoYNOnDihI0eOmI5iq/j4eEnSL37xi4Dt\nlRdS8jsiZWdn6+jRo1F7+pXkO5Wzb9++QafSpKSkqLS0NGrP5c/MzNTu3bu1atUq/ec//1Fubm7V\njS169OhhOJ15lb8v1T03Z+fOnYqNjWX6gdNCAQkDx48f1w033KDCwkK988476tmzp+lIYalyBHzg\nwAHDSexVVFQky7KUkZGhLl26qEuXLuratatyc3P1zTffqGvXrsrMzDQdM2x4vV41atQo6o5aXnzx\nxZKCz1ffsWOHJN/dWqLd/PnzFRMTo1//+temoxize/fuau8YV1ZWJsl3kX60atGihfr37191k48V\nK1bol7/8pc4991zDycyLj49XmzZttGbNmqDPeTweJSYmGkiFSEYBMayiokKpqanKzc3Vm2++qaSk\nJNORjPvuu++Ctp08eVJz585V48aNo+7hjBdccIGys7OVnZ2tpUuXVv3p1auXOnXqpKVLl+q3v/2t\n6Zi2q+7pu1988YXeeustDR482EAis1JTU2VZll5++eWA7bNmzVL9+vWVnJxsJliYKC4u1ocffqjh\nw4dXnbMejXr06KG1a9eqsLAwYPvrr78up9Op3r17G0oWXhYuXKg1a9ZowoQJpqOEjZtuuklvv/12\nwEGODz/8UBs2bFBqaqrBZIhEXIRu2B//+Ee99dZbSklJUXFxcdCdaqLxVIGxY8fq4MGDuvLKK9W+\nfXvt2rVL8+fP1zfffKO//vWvatKkiemItnK5XNVe+zJz5kw5HI6oPZqblpamxo0bq3///oqLi9NX\nX32lWbNmKSYmRk8++aTpeLZLTExUenq6XnnlFZWVlemqq67Sxx9/rCVLluixxx6L+tM633jjDZWX\nl0flv6k/9OCDD+rdd9/V5ZdfrvHjx8vlcumtt97Se++9pzFjxkTl78m///1vTZ48WYMGDZLL5dLq\n1as1Z84cDR06VBkZGabj2eK5557T/v37q8rFsmXLtG3bNklSRkaGmjVrpscee0xvvvmmkpOTdd99\n9+nQoUOaMWOGLrroIt11110G04dGTfbJ1q1b9eqrr0pS1XSo8llMnTp10qhRowwkjxAGH4IIy7KS\nk5Mtp9N5yj/RaOHChdagQYOsdu3aWQ0aNLBcLpc1aNAg6+233zYdLawkJydbvXv3Nh3DmGeffda6\n9NJLrdatW1sNGjSw2rdvb915552W1+s1Hc2YkydPWpMnT7a6dOliNWzY0OrRo4f1zDPPmI4VFi67\n7DKrXbt2VkVFhekoxuXl5VnXX3+9FR8fbzVs2NA699xzrWnTplnl5eWmoxnh9XqtIUOGWHFxcVbj\nxo2t888/33r66aetsrIy09Fs07lz51O+D9myZUvV161bt84aMmSIFRMTY8XGxlp33HGHtWfPHoPJ\nQ6cm+2TlypWWw+Go9muuvvpqw3+D8OawrCi7VQwAAAAAY7gGBAAAAIBtKCAAAAAAbEMBAQAAAGAb\nCggAAAAA21BAAAAAANiGAgIAAADANhQQAAAAALahgAAAAACwDQUEAAAAgG0oIAAAAABsQwEBAAAA\nYBsKCAAAAADbUEAAAAAA2IYCAgAAAMA2FBAAAAAAtqGAAAAAALANBQQAAACAbSggAAAAAGxDAQEA\nAABgGwoIAAAAANtQQAAAAADYhgICAAAAwDYUEAAAAAC2oYAAAAAAsA0FBAAAAIBtKCAAAAAAbEMB\nAQAAAGAbCggAAAAA21BAAAAAANiGAgIAAADANhQQAAAAALahgAAAAACwDQUEAAAAgG0oIAAAIPA3\nVQAAAC5JREFUAABsQwEBAAAAYBsKCAAAAADbUEAAAAAA2IYCAgAAAMA2FBAAAAAAtvl//SeRCv5k\nbl4AAAAASUVORK5CYII=\n",
- "text/plain": [
- ""
- ]
- },
- "execution_count": 1,
- "metadata": {},
- "output_type": "execute_result"
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Regression result"
]
@@ -214,23 +166,32 @@
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
- "display_name": "Python [default]",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.6.8"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 0
+ "nbformat_minor": 4
}
diff --git a/notebooks/2_BasicModels/linear_regression_eager_api.ipynb b/notebooks/2_BasicModels/linear_regression_eager_api.ipynb
old mode 100644
new mode 100755
index f517dc15..6bcf5b72
--- a/notebooks/2_BasicModels/linear_regression_eager_api.ipynb
+++ b/notebooks/2_BasicModels/linear_regression_eager_api.ipynb
@@ -9,14 +9,29 @@
"A linear regression implemented using TensorFlow's Eager API.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
+ },
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -29,9 +44,11 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": null,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -42,9 +59,11 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": null,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -63,9 +82,11 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": null,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -84,9 +105,11 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -99,40 +122,17 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": null,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Initial cost= 31.307329178 W= -0.7870768 b= -0.2507985\n",
- "Epoch: 0001 cost= 9.502781868 W= -0.26173288 b= -0.17560114\n",
- "Epoch: 0100 cost= 0.114994615 W= 0.36224815 b= 0.014603348\n",
- "Epoch: 0200 cost= 0.106785327 W= 0.34959725 b= 0.104292504\n",
- "Epoch: 0300 cost= 0.100346453 W= 0.33839324 b= 0.1837239\n",
- "Epoch: 0400 cost= 0.095296182 W= 0.32847065 b= 0.25407064\n",
- "Epoch: 0500 cost= 0.091335081 W= 0.3196829 b= 0.3163719\n",
- "Epoch: 0600 cost= 0.088228233 W= 0.31190023 b= 0.37154746\n",
- "Epoch: 0700 cost= 0.085791394 W= 0.30500764 b= 0.42041263\n",
- "Epoch: 0800 cost= 0.083880097 W= 0.2989034 b= 0.46368918\n",
- "Epoch: 0900 cost= 0.082380980 W= 0.2934973 b= 0.50201607\n",
- "Epoch: 1000 cost= 0.081205189 W= 0.28870946 b= 0.5359594\n"
- ]
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
},
- {
- "data": {
- "image/png": "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\nAElFTkSuQmCC\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Initial cost, before optimizing\n",
"print(\"Initial cost= {:.9f}\".format(\n",
@@ -159,23 +159,23 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python [default]",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.6.8"
}
},
"nbformat": 4,
- "nbformat_minor": 1
+ "nbformat_minor": 4
}
diff --git a/notebooks/2_BasicModels/logistic_regression.ipynb b/notebooks/2_BasicModels/logistic_regression.ipynb
old mode 100644
new mode 100755
index 39465835..e28e920c
--- a/notebooks/2_BasicModels/logistic_regression.ipynb
+++ b/notebooks/2_BasicModels/logistic_regression.ipynb
@@ -2,16 +2,14 @@
"cells": [
{
"cell_type": "markdown",
- "metadata": {
- "collapsed": true
- },
+ "metadata": {},
"source": [
"# Logistic Regression Example\n",
"\n",
"A logistic regression learning algorithm example using TensorFlow library.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
@@ -29,35 +27,44 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
"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"
- ]
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"import tensorflow as tf\n",
- "\n",
+ "import os\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)"
+ "data_path = \"./dataset/logistic_regression/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=True)"
]
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": null,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -91,33 +98,12 @@
"cell_type": "code",
"execution_count": null,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Epoch: 0001 cost= 1.182138959\n",
- "Epoch: 0002 cost= 0.664778162\n",
- "Epoch: 0003 cost= 0.552686284\n",
- "Epoch: 0004 cost= 0.498628905\n",
- "Epoch: 0005 cost= 0.465469866\n",
- "Epoch: 0006 cost= 0.442537872\n",
- "Epoch: 0007 cost= 0.425462044\n",
- "Epoch: 0008 cost= 0.412185303\n",
- "Epoch: 0009 cost= 0.401311587\n",
- "Epoch: 0010 cost= 0.392326203\n",
- "Epoch: 0011 cost= 0.384736038\n",
- "Epoch: 0012 cost= 0.378137191\n",
- "Epoch: 0013 cost= 0.372363752\n",
- "Epoch: 0014 cost= 0.367308579\n",
- "Epoch: 0015 cost= 0.362704660\n",
- "Epoch: 0016 cost= 0.358588599\n",
- "Epoch: 0017 cost= 0.354823110\n"
- ]
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Start training\n",
"with tf.Session() as sess:\n",
@@ -137,38 +123,47 @@
" avg_cost += c / total_batch\n",
" # Display logs per epoch step\n",
" if (epoch+1) % display_step == 0:\n",
- " print \"Epoch:\", '%04d' % (epoch+1), \"cost=\", \"{:.9f}\".format(avg_cost)\n",
+ " print (\"Epoch:\", '%04d' % (epoch+1), \"cost=\", \"{:.9f}\".format(avg_cost))\n",
"\n",
- " print \"Optimization Finished!\"\n",
+ " print (\"Optimization Finished!\")\n",
"\n",
" # Test model\n",
" correct_prediction = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1))\n",
" # Calculate accuracy for 3000 examples\n",
" accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))\n",
- " print \"Accuracy:\", accuracy.eval({x: mnist.test.images[:3000], y: mnist.test.labels[:3000]})"
+ " print (\"Accuracy:\", accuracy.eval({x: mnist.test.images[:3000], y: mnist.test.labels[:3000]}))"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
- "display_name": "Python [default]",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.6.8"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "source": [],
+ "metadata": {
+ "collapsed": false
+ }
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 0
+ "nbformat_minor": 4
}
diff --git a/notebooks/2_BasicModels/logistic_regression_eager_api.ipynb b/notebooks/2_BasicModels/logistic_regression_eager_api.ipynb
old mode 100644
new mode 100755
index 06aa5bca..e0d7884a
--- a/notebooks/2_BasicModels/logistic_regression_eager_api.ipynb
+++ b/notebooks/2_BasicModels/logistic_regression_eager_api.ipynb
@@ -9,7 +9,7 @@
"A logistic regression implemented using TensorFlow's Eager API.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
@@ -27,10 +27,17 @@
},
{
"cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"from __future__ import absolute_import, division, print_function\n",
@@ -40,10 +47,8 @@
},
{
"cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"# Set Eager API\n",
@@ -53,32 +58,25 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": null,
"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"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Import MNIST data\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=False)"
+ "import os\n",
+ "data_path = \"./dataset/logistic_regression_eager_api/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=False)"
]
},
{
"cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"# Parameters\n",
@@ -90,10 +88,8 @@
},
{
"cell_type": "code",
- "execution_count": 5,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"# Iterator for the dataset\n",
@@ -105,10 +101,8 @@
},
{
"cell_type": "code",
- "execution_count": 6,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"# Variables\n",
@@ -134,10 +128,8 @@
},
{
"cell_type": "code",
- "execution_count": 7,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"# SGD Optimizer\n",
@@ -149,28 +141,9 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Initial loss= 2.302584887\n",
- "Step: 0001 loss= 2.302584887 accuracy= 0.1172\n",
- "Step: 0100 loss= 0.952338457 accuracy= 0.7955\n",
- "Step: 0200 loss= 0.535867393 accuracy= 0.8712\n",
- "Step: 0300 loss= 0.485415280 accuracy= 0.8757\n",
- "Step: 0400 loss= 0.433947206 accuracy= 0.8843\n",
- "Step: 0500 loss= 0.381990731 accuracy= 0.8971\n",
- "Step: 0600 loss= 0.394154936 accuracy= 0.8947\n",
- "Step: 0700 loss= 0.391497582 accuracy= 0.8905\n",
- "Step: 0800 loss= 0.386373103 accuracy= 0.8945\n",
- "Step: 0900 loss= 0.332039326 accuracy= 0.9096\n",
- "Step: 1000 loss= 0.358993769 accuracy= 0.9002\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Training\n",
"average_loss = 0.\n",
@@ -213,17 +186,9 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Testset Accuracy: 0.9083\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Evaluate model on the test image set\n",
"testX = mnist.test.images\n",
@@ -236,23 +201,32 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 2",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.14"
+ "pygments_lexer": "ipython3",
+ "version": "3.6.8"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "source": [],
+ "metadata": {
+ "collapsed": false
+ }
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 1
+ "nbformat_minor": 4
}
diff --git a/notebooks/2_BasicModels/nearest_neighbor.ipynb b/notebooks/2_BasicModels/nearest_neighbor.ipynb
old mode 100644
new mode 100755
index c8fba06f..056c4899
--- a/notebooks/2_BasicModels/nearest_neighbor.ipynb
+++ b/notebooks/2_BasicModels/nearest_neighbor.ipynb
@@ -2,9 +2,7 @@
"cells": [
{
"cell_type": "markdown",
- "metadata": {
- "collapsed": true
- },
+ "metadata": {},
"source": [
"# Nearest Neighbor Example\n",
"\n",
@@ -12,41 +10,51 @@
"This example is using the MNIST database of handwritten digits (http://yann.lecun.com/exdb/mnist/)\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
]
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"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"
- ]
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"import numpy as np\n",
"import tensorflow as tf\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)"
+ "import os\n",
+ "data_path = \"./dataset/nearest_neighbor/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=True)"
]
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": null,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -72,221 +80,14 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": null,
"metadata": {
"collapsed": false,
- "scrolled": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Test 0 Prediction: 7 True Class: 7\n",
- "Test 1 Prediction: 2 True Class: 2\n",
- "Test 2 Prediction: 1 True Class: 1\n",
- "Test 3 Prediction: 0 True Class: 0\n",
- "Test 4 Prediction: 4 True Class: 4\n",
- "Test 5 Prediction: 1 True Class: 1\n",
- "Test 6 Prediction: 4 True Class: 4\n",
- "Test 7 Prediction: 9 True Class: 9\n",
- "Test 8 Prediction: 8 True Class: 5\n",
- "Test 9 Prediction: 9 True Class: 9\n",
- "Test 10 Prediction: 0 True Class: 0\n",
- "Test 11 Prediction: 0 True Class: 6\n",
- "Test 12 Prediction: 9 True Class: 9\n",
- "Test 13 Prediction: 0 True Class: 0\n",
- "Test 14 Prediction: 1 True Class: 1\n",
- "Test 15 Prediction: 5 True Class: 5\n",
- "Test 16 Prediction: 4 True Class: 9\n",
- "Test 17 Prediction: 7 True Class: 7\n",
- "Test 18 Prediction: 3 True Class: 3\n",
- "Test 19 Prediction: 4 True Class: 4\n",
- "Test 20 Prediction: 9 True Class: 9\n",
- "Test 21 Prediction: 6 True Class: 6\n",
- "Test 22 Prediction: 6 True Class: 6\n",
- "Test 23 Prediction: 5 True Class: 5\n",
- "Test 24 Prediction: 4 True Class: 4\n",
- "Test 25 Prediction: 0 True Class: 0\n",
- "Test 26 Prediction: 7 True Class: 7\n",
- "Test 27 Prediction: 4 True Class: 4\n",
- "Test 28 Prediction: 0 True Class: 0\n",
- "Test 29 Prediction: 1 True Class: 1\n",
- "Test 30 Prediction: 3 True Class: 3\n",
- "Test 31 Prediction: 1 True Class: 1\n",
- "Test 32 Prediction: 3 True Class: 3\n",
- "Test 33 Prediction: 4 True Class: 4\n",
- "Test 34 Prediction: 7 True Class: 7\n",
- "Test 35 Prediction: 2 True Class: 2\n",
- "Test 36 Prediction: 7 True Class: 7\n",
- "Test 37 Prediction: 1 True Class: 1\n",
- "Test 38 Prediction: 2 True Class: 2\n",
- "Test 39 Prediction: 1 True Class: 1\n",
- "Test 40 Prediction: 1 True Class: 1\n",
- "Test 41 Prediction: 7 True Class: 7\n",
- "Test 42 Prediction: 4 True Class: 4\n",
- "Test 43 Prediction: 1 True Class: 2\n",
- "Test 44 Prediction: 3 True Class: 3\n",
- "Test 45 Prediction: 5 True Class: 5\n",
- "Test 46 Prediction: 1 True Class: 1\n",
- "Test 47 Prediction: 2 True Class: 2\n",
- "Test 48 Prediction: 4 True Class: 4\n",
- "Test 49 Prediction: 4 True Class: 4\n",
- "Test 50 Prediction: 6 True Class: 6\n",
- "Test 51 Prediction: 3 True Class: 3\n",
- "Test 52 Prediction: 5 True Class: 5\n",
- "Test 53 Prediction: 5 True Class: 5\n",
- "Test 54 Prediction: 6 True Class: 6\n",
- "Test 55 Prediction: 0 True Class: 0\n",
- "Test 56 Prediction: 4 True Class: 4\n",
- "Test 57 Prediction: 1 True Class: 1\n",
- "Test 58 Prediction: 9 True Class: 9\n",
- "Test 59 Prediction: 5 True Class: 5\n",
- "Test 60 Prediction: 7 True Class: 7\n",
- "Test 61 Prediction: 8 True Class: 8\n",
- "Test 62 Prediction: 9 True Class: 9\n",
- "Test 63 Prediction: 3 True Class: 3\n",
- "Test 64 Prediction: 7 True Class: 7\n",
- "Test 65 Prediction: 4 True Class: 4\n",
- "Test 66 Prediction: 6 True Class: 6\n",
- "Test 67 Prediction: 4 True Class: 4\n",
- "Test 68 Prediction: 3 True Class: 3\n",
- "Test 69 Prediction: 0 True Class: 0\n",
- "Test 70 Prediction: 7 True Class: 7\n",
- "Test 71 Prediction: 0 True Class: 0\n",
- "Test 72 Prediction: 2 True Class: 2\n",
- "Test 73 Prediction: 7 True Class: 9\n",
- "Test 74 Prediction: 1 True Class: 1\n",
- "Test 75 Prediction: 7 True Class: 7\n",
- "Test 76 Prediction: 3 True Class: 3\n",
- "Test 77 Prediction: 7 True Class: 2\n",
- "Test 78 Prediction: 9 True Class: 9\n",
- "Test 79 Prediction: 7 True Class: 7\n",
- "Test 80 Prediction: 7 True Class: 7\n",
- "Test 81 Prediction: 6 True Class: 6\n",
- "Test 82 Prediction: 2 True Class: 2\n",
- "Test 83 Prediction: 7 True Class: 7\n",
- "Test 84 Prediction: 8 True Class: 8\n",
- "Test 85 Prediction: 4 True Class: 4\n",
- "Test 86 Prediction: 7 True Class: 7\n",
- "Test 87 Prediction: 3 True Class: 3\n",
- "Test 88 Prediction: 6 True Class: 6\n",
- "Test 89 Prediction: 1 True Class: 1\n",
- "Test 90 Prediction: 3 True Class: 3\n",
- "Test 91 Prediction: 6 True Class: 6\n",
- "Test 92 Prediction: 9 True Class: 9\n",
- "Test 93 Prediction: 3 True Class: 3\n",
- "Test 94 Prediction: 1 True Class: 1\n",
- "Test 95 Prediction: 4 True Class: 4\n",
- "Test 96 Prediction: 1 True Class: 1\n",
- "Test 97 Prediction: 7 True Class: 7\n",
- "Test 98 Prediction: 6 True Class: 6\n",
- "Test 99 Prediction: 9 True Class: 9\n",
- "Test 100 Prediction: 6 True Class: 6\n",
- "Test 101 Prediction: 0 True Class: 0\n",
- "Test 102 Prediction: 5 True Class: 5\n",
- "Test 103 Prediction: 4 True Class: 4\n",
- "Test 104 Prediction: 9 True Class: 9\n",
- "Test 105 Prediction: 9 True Class: 9\n",
- "Test 106 Prediction: 2 True Class: 2\n",
- "Test 107 Prediction: 1 True Class: 1\n",
- "Test 108 Prediction: 9 True Class: 9\n",
- "Test 109 Prediction: 4 True Class: 4\n",
- "Test 110 Prediction: 8 True Class: 8\n",
- "Test 111 Prediction: 7 True Class: 7\n",
- "Test 112 Prediction: 3 True Class: 3\n",
- "Test 113 Prediction: 9 True Class: 9\n",
- "Test 114 Prediction: 7 True Class: 7\n",
- "Test 115 Prediction: 9 True Class: 4\n",
- "Test 116 Prediction: 9 True Class: 4\n",
- "Test 117 Prediction: 4 True Class: 4\n",
- "Test 118 Prediction: 9 True Class: 9\n",
- "Test 119 Prediction: 7 True Class: 2\n",
- "Test 120 Prediction: 5 True Class: 5\n",
- "Test 121 Prediction: 4 True Class: 4\n",
- "Test 122 Prediction: 7 True Class: 7\n",
- "Test 123 Prediction: 6 True Class: 6\n",
- "Test 124 Prediction: 7 True Class: 7\n",
- "Test 125 Prediction: 9 True Class: 9\n",
- "Test 126 Prediction: 0 True Class: 0\n",
- "Test 127 Prediction: 5 True Class: 5\n",
- "Test 128 Prediction: 8 True Class: 8\n",
- "Test 129 Prediction: 5 True Class: 5\n",
- "Test 130 Prediction: 6 True Class: 6\n",
- "Test 131 Prediction: 6 True Class: 6\n",
- "Test 132 Prediction: 5 True Class: 5\n",
- "Test 133 Prediction: 7 True Class: 7\n",
- "Test 134 Prediction: 8 True Class: 8\n",
- "Test 135 Prediction: 1 True Class: 1\n",
- "Test 136 Prediction: 0 True Class: 0\n",
- "Test 137 Prediction: 1 True Class: 1\n",
- "Test 138 Prediction: 6 True Class: 6\n",
- "Test 139 Prediction: 4 True Class: 4\n",
- "Test 140 Prediction: 6 True Class: 6\n",
- "Test 141 Prediction: 7 True Class: 7\n",
- "Test 142 Prediction: 2 True Class: 3\n",
- "Test 143 Prediction: 1 True Class: 1\n",
- "Test 144 Prediction: 7 True Class: 7\n",
- "Test 145 Prediction: 1 True Class: 1\n",
- "Test 146 Prediction: 8 True Class: 8\n",
- "Test 147 Prediction: 2 True Class: 2\n",
- "Test 148 Prediction: 0 True Class: 0\n",
- "Test 149 Prediction: 1 True Class: 2\n",
- "Test 150 Prediction: 9 True Class: 9\n",
- "Test 151 Prediction: 9 True Class: 9\n",
- "Test 152 Prediction: 5 True Class: 5\n",
- "Test 153 Prediction: 5 True Class: 5\n",
- "Test 154 Prediction: 1 True Class: 1\n",
- "Test 155 Prediction: 5 True Class: 5\n",
- "Test 156 Prediction: 6 True Class: 6\n",
- "Test 157 Prediction: 0 True Class: 0\n",
- "Test 158 Prediction: 3 True Class: 3\n",
- "Test 159 Prediction: 4 True Class: 4\n",
- "Test 160 Prediction: 4 True Class: 4\n",
- "Test 161 Prediction: 6 True Class: 6\n",
- "Test 162 Prediction: 5 True Class: 5\n",
- "Test 163 Prediction: 4 True Class: 4\n",
- "Test 164 Prediction: 6 True Class: 6\n",
- "Test 165 Prediction: 5 True Class: 5\n",
- "Test 166 Prediction: 4 True Class: 4\n",
- "Test 167 Prediction: 5 True Class: 5\n",
- "Test 168 Prediction: 1 True Class: 1\n",
- "Test 169 Prediction: 4 True Class: 4\n",
- "Test 170 Prediction: 9 True Class: 4\n",
- "Test 171 Prediction: 7 True Class: 7\n",
- "Test 172 Prediction: 2 True Class: 2\n",
- "Test 173 Prediction: 3 True Class: 3\n",
- "Test 174 Prediction: 2 True Class: 2\n",
- "Test 175 Prediction: 1 True Class: 7\n",
- "Test 176 Prediction: 1 True Class: 1\n",
- "Test 177 Prediction: 8 True Class: 8\n",
- "Test 178 Prediction: 1 True Class: 1\n",
- "Test 179 Prediction: 8 True Class: 8\n",
- "Test 180 Prediction: 1 True Class: 1\n",
- "Test 181 Prediction: 8 True Class: 8\n",
- "Test 182 Prediction: 5 True Class: 5\n",
- "Test 183 Prediction: 0 True Class: 0\n",
- "Test 184 Prediction: 2 True Class: 8\n",
- "Test 185 Prediction: 9 True Class: 9\n",
- "Test 186 Prediction: 2 True Class: 2\n",
- "Test 187 Prediction: 5 True Class: 5\n",
- "Test 188 Prediction: 0 True Class: 0\n",
- "Test 189 Prediction: 1 True Class: 1\n",
- "Test 190 Prediction: 1 True Class: 1\n",
- "Test 191 Prediction: 1 True Class: 1\n",
- "Test 192 Prediction: 0 True Class: 0\n",
- "Test 193 Prediction: 4 True Class: 9\n",
- "Test 194 Prediction: 0 True Class: 0\n",
- "Test 195 Prediction: 1 True Class: 3\n",
- "Test 196 Prediction: 1 True Class: 1\n",
- "Test 197 Prediction: 6 True Class: 6\n",
- "Test 198 Prediction: 4 True Class: 4\n",
- "Test 199 Prediction: 2 True Class: 2\n",
- "Done!\n",
- "Accuracy: 0.92\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Start training\n",
"with tf.Session() as sess:\n",
@@ -297,36 +98,45 @@
" # Get nearest neighbor\n",
" nn_index = sess.run(pred, feed_dict={xtr: Xtr, xte: Xte[i, :]})\n",
" # Get nearest neighbor class label and compare it to its true label\n",
- " print \"Test\", i, \"Prediction:\", np.argmax(Ytr[nn_index]), \\\n",
- " \"True Class:\", np.argmax(Yte[i])\n",
+ " print (\"Test\", i, \"Prediction:\", np.argmax(Ytr[nn_index]),\n",
+ " \"True Class:\", np.argmax(Yte[i]))\n",
" # Calculate accuracy\n",
" if np.argmax(Ytr[nn_index]) == np.argmax(Yte[i]):\n",
" accuracy += 1./len(Xte)\n",
- " print \"Done!\"\n",
- " print \"Accuracy:\", accuracy"
+ " print (\"Done!\")\n",
+ " print (\"Accuracy:\", accuracy)"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
- "display_name": "Python [default]",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.6.8"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "source": [],
+ "metadata": {
+ "collapsed": false
+ }
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 0
+ "nbformat_minor": 4
}
diff --git a/notebooks/2_BasicModels/random_forest.ipynb b/notebooks/2_BasicModels/random_forest.ipynb
old mode 100644
new mode 100755
index 4b212efc..daca20a0
--- a/notebooks/2_BasicModels/random_forest.ipynb
+++ b/notebooks/2_BasicModels/random_forest.ipynb
@@ -11,15 +11,22 @@
"handwritten digits as training samples (http://yann.lecun.com/exdb/mnist/).\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
"cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"from __future__ import print_function\n",
@@ -35,36 +42,25 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.\n",
- "Extracting /tmp/data/train-images-idx3-ubyte.gz\n",
- "Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.\n",
- "Extracting /tmp/data/train-labels-idx1-ubyte.gz\n",
- "Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.\n",
- "Extracting /tmp/data/t10k-images-idx3-ubyte.gz\n",
- "Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.\n",
- "Extracting /tmp/data/t10k-labels-idx1-ubyte.gz\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Import MNIST data\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=False)"
+ "import os\n",
+ "data_path = \"./dataset/random_forest/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=False)"
]
},
{
"cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"# Parameters\n",
@@ -89,28 +85,9 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "INFO:tensorflow:Constructing forest with params = \n",
- "INFO:tensorflow:{'valid_leaf_threshold': 1, 'split_after_samples': 250, 'num_output_columns': 11, 'feature_bagging_fraction': 1.0, 'split_initializations_per_input': 3, 'bagged_features': None, 'min_split_samples': 5, 'max_nodes': 1000, 'num_features': 784, 'num_trees': 10, 'num_splits_to_consider': 784, 'base_random_seed': 0, 'num_outputs': 1, 'dominate_fraction': 0.99, 'max_fertile_nodes': 500, 'bagged_num_features': 784, 'dominate_method': 'bootstrap', 'bagging_fraction': 1.0, 'regression': False, 'num_classes': 10}\n",
- "INFO:tensorflow:training graph for tree: 0\n",
- "INFO:tensorflow:training graph for tree: 1\n",
- "INFO:tensorflow:training graph for tree: 2\n",
- "INFO:tensorflow:training graph for tree: 3\n",
- "INFO:tensorflow:training graph for tree: 4\n",
- "INFO:tensorflow:training graph for tree: 5\n",
- "INFO:tensorflow:training graph for tree: 6\n",
- "INFO:tensorflow:training graph for tree: 7\n",
- "INFO:tensorflow:training graph for tree: 8\n",
- "INFO:tensorflow:training graph for tree: 9\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Build the Random Forest\n",
"forest_graph = tensor_forest.RandomForestGraphs(hparams)\n",
@@ -130,28 +107,9 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Step 1, Loss: -0.000000, Acc: 0.112305\n",
- "Step 50, Loss: -123.800003, Acc: 0.863281\n",
- "Step 100, Loss: -274.200012, Acc: 0.863281\n",
- "Step 150, Loss: -425.399994, Acc: 0.872070\n",
- "Step 200, Loss: -582.799988, Acc: 0.917969\n",
- "Step 250, Loss: -740.200012, Acc: 0.912109\n",
- "Step 300, Loss: -895.799988, Acc: 0.939453\n",
- "Step 350, Loss: -998.000000, Acc: 0.924805\n",
- "Step 400, Loss: -998.000000, Acc: 0.940430\n",
- "Step 450, Loss: -998.000000, Acc: 0.914062\n",
- "Step 500, Loss: -998.000000, Acc: 0.927734\n",
- "Test Accuracy: 0.9204\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Start TensorFlow session\n",
"sess = tf.train.MonitoredSession()\n",
@@ -178,27 +136,27 @@
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
- "display_name": "Python 2",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.6.8"
},
"varInspector": {
"cols": {
- "lenName": 16.0,
- "lenType": 16.0,
- "lenVar": 40.0
+ "lenName": 16,
+ "lenType": 16,
+ "lenVar": 40
},
"kernels_config": {
"python": {
@@ -222,8 +180,17 @@
"_Feature"
],
"window_display": false
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "source": [],
+ "metadata": {
+ "collapsed": false
+ }
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 1
+ "nbformat_minor": 4
}
diff --git a/notebooks/2_BasicModels/word2vec.ipynb b/notebooks/2_BasicModels/word2vec.ipynb
index 5d9d83d4..a20bd0fb 100644
--- a/notebooks/2_BasicModels/word2vec.ipynb
+++ b/notebooks/2_BasicModels/word2vec.ipynb
@@ -13,14 +13,29 @@
"\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
+ },
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -29,7 +44,7 @@
"import collections\n",
"import os\n",
"import random\n",
- "import urllib\n",
+ "import urllib.request\n",
"import zipfile\n",
"\n",
"import numpy as np\n",
@@ -38,9 +53,21 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "config = tf.ConfigProto()\n",
+ "config.gpu_options.allow_growth=True"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -65,27 +92,28 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 5,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Downloading the dataset... (It may take some time)\n",
- "Done!\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
+ },
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Download a small chunk of Wikipedia articles collection\n",
"url = 'http://mattmahoney.net/dc/text8.zip'\n",
- "data_path = 'text8.zip'\n",
+ "data_path = './dataset/word2vec/text8.zip'\n",
+ "try:\n",
+ " os.makedirs(os.path.dirname(data_path))\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "\n",
"if not os.path.exists(data_path):\n",
" print(\"Downloading the dataset... (It may take some time)\")\n",
- " filename, _ = urllib.urlretrieve(url, data_path)\n",
+ " filename, _ = urllib.request.urlretrieve(url, data_path)\n",
" print(\"Done!\")\n",
"# Unzip the dataset file. Text has already been processed\n",
"with zipfile.ZipFile(data_path) as f:\n",
@@ -94,22 +122,16 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 6,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Words count: 17005207\n",
- "Unique words: 253854\n",
- "Vocabulary size: 50000\n",
- "Most common words: [('UNK', 418391), ('the', 1061396), ('of', 593677), ('and', 416629), ('one', 411764), ('in', 372201), ('a', 325873), ('to', 316376), ('zero', 264975), ('nine', 250430)]\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
+ },
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Build the dictionary and replace rare words with UNK token\n",
"count = [('UNK', -1)]\n",
@@ -128,7 +150,6 @@
"word2id = dict()\n",
"for i, (word, _)in enumerate(count):\n",
" word2id[word] = i\n",
- "\n",
"data = list()\n",
"unk_count = 0\n",
"for word in text_words:\n",
@@ -148,9 +169,11 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 7,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -188,9 +211,11 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 8,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -233,446 +258,29 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 9,
"metadata": {
- "collapsed": false,
- "scrolled": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Step 1, Average Loss= 520.3188\n",
- "Evaluation...\n",
- "\"five\" nearest neighbors: brothers, swinging, dissemination, fruitful, trichloride, dll, timur, torre,\n",
- "\"of\" nearest neighbors: malting, vaginal, cecil, xiaoping, arrangers, hydras, exhibits, splits,\n",
- "\"going\" nearest neighbors: besht, xps, sdtv, mississippi, frequencies, tora, reciprocating, tursiops,\n",
- "\"hardware\" nearest neighbors: burgh, residences, mares, attested, whirlwind, isomerism, admiration, ties,\n",
- "\"american\" nearest neighbors: tensile, months, baffling, cricket, kodak, risky, nicomedia, jura,\n",
- "\"britain\" nearest neighbors: superstring, interpretations, genealogical, munition, boer, occasional, psychologists, turbofan,\n",
- "Step 10000, Average Loss= 202.2640\n",
- "Step 20000, Average Loss= 96.5149\n",
- "Step 30000, Average Loss= 67.2858\n",
- "Step 40000, Average Loss= 52.5055\n",
- "Step 50000, Average Loss= 42.6301\n",
- "Step 60000, Average Loss= 37.3644\n",
- "Step 70000, Average Loss= 33.1220\n",
- "Step 80000, Average Loss= 30.5835\n",
- "Step 90000, Average Loss= 28.2243\n",
- "Step 100000, Average Loss= 25.5532\n",
- "Step 110000, Average Loss= 24.0891\n",
- "Step 120000, Average Loss= 21.8576\n",
- "Step 130000, Average Loss= 21.2192\n",
- "Step 140000, Average Loss= 19.8834\n",
- "Step 150000, Average Loss= 19.3362\n",
- "Step 160000, Average Loss= 18.3129\n",
- "Step 170000, Average Loss= 17.4952\n",
- "Step 180000, Average Loss= 16.8531\n",
- "Step 190000, Average Loss= 15.9615\n",
- "Step 200000, Average Loss= 15.0718\n",
- "Evaluation...\n",
- "\"five\" nearest neighbors: three, four, eight, six, seven, two, nine, one,\n",
- "\"of\" nearest neighbors: the, is, a, was, with, in, and, on,\n",
- "\"going\" nearest neighbors: time, military, called, with, used, state, most, new,\n",
- "\"hardware\" nearest neighbors: deaths, system, three, at, zero, two, s, UNK,\n",
- "\"american\" nearest neighbors: UNK, and, s, about, in, when, from, after,\n",
- "\"britain\" nearest neighbors: years, were, from, both, of, these, is, many,\n",
- "Step 210000, Average Loss= 14.9267\n",
- "Step 220000, Average Loss= 15.4700\n",
- "Step 230000, Average Loss= 14.0867\n",
- "Step 240000, Average Loss= 14.5337\n",
- "Step 250000, Average Loss= 13.2458\n",
- "Step 260000, Average Loss= 13.2944\n",
- "Step 270000, Average Loss= 13.0396\n",
- "Step 280000, Average Loss= 12.1902\n",
- "Step 290000, Average Loss= 11.7444\n",
- "Step 300000, Average Loss= 11.8473\n",
- "Step 310000, Average Loss= 11.1306\n",
- "Step 320000, Average Loss= 11.1699\n",
- "Step 330000, Average Loss= 10.8638\n",
- "Step 340000, Average Loss= 10.7910\n",
- "Step 350000, Average Loss= 11.0721\n",
- "Step 360000, Average Loss= 10.6309\n",
- "Step 370000, Average Loss= 10.4836\n",
- "Step 380000, Average Loss= 10.3482\n",
- "Step 390000, Average Loss= 10.0679\n",
- "Step 400000, Average Loss= 10.0070\n",
- "Evaluation...\n",
- "\"five\" nearest neighbors: four, three, six, seven, eight, two, one, zero,\n",
- "\"of\" nearest neighbors: and, in, the, a, for, by, is, while,\n",
- "\"going\" nearest neighbors: name, called, made, military, music, people, city, was,\n",
- "\"hardware\" nearest neighbors: power, a, john, the, has, see, and, system,\n",
- "\"american\" nearest neighbors: s, british, UNK, john, in, during, and, from,\n",
- "\"britain\" nearest neighbors: from, general, are, before, first, after, history, was,\n",
- "Step 410000, Average Loss= 10.1151\n",
- "Step 420000, Average Loss= 9.5719\n",
- "Step 430000, Average Loss= 9.8267\n",
- "Step 440000, Average Loss= 9.4704\n",
- "Step 450000, Average Loss= 9.5561\n",
- "Step 460000, Average Loss= 9.1479\n",
- "Step 470000, Average Loss= 8.8914\n",
- "Step 480000, Average Loss= 9.0281\n",
- "Step 490000, Average Loss= 9.3139\n",
- "Step 500000, Average Loss= 9.1559\n",
- "Step 510000, Average Loss= 8.8257\n",
- "Step 520000, Average Loss= 8.9081\n",
- "Step 530000, Average Loss= 8.8572\n",
- "Step 540000, Average Loss= 8.5835\n",
- "Step 550000, Average Loss= 8.4495\n",
- "Step 560000, Average Loss= 8.4193\n",
- "Step 570000, Average Loss= 8.3399\n",
- "Step 580000, Average Loss= 8.1633\n",
- "Step 590000, Average Loss= 8.2914\n",
- "Step 600000, Average Loss= 8.0268\n",
- "Evaluation...\n",
- "\"five\" nearest neighbors: three, four, six, two, seven, eight, one, zero,\n",
- "\"of\" nearest neighbors: and, the, in, including, with, for, on, or,\n",
- "\"going\" nearest neighbors: popular, king, his, music, and, time, name, being,\n",
- "\"hardware\" nearest neighbors: power, over, then, than, became, at, less, for,\n",
- "\"american\" nearest neighbors: english, s, german, in, french, since, john, between,\n",
- "\"britain\" nearest neighbors: however, were, state, first, group, general, from, second,\n",
- "Step 610000, Average Loss= 8.1733\n",
- "Step 620000, Average Loss= 8.2522\n",
- "Step 630000, Average Loss= 8.0434\n",
- "Step 640000, Average Loss= 8.0930\n",
- "Step 650000, Average Loss= 7.8770\n",
- "Step 660000, Average Loss= 7.9221\n",
- "Step 670000, Average Loss= 7.7645\n",
- "Step 680000, Average Loss= 7.9534\n",
- "Step 690000, Average Loss= 7.7507\n",
- "Step 700000, Average Loss= 7.7499\n",
- "Step 710000, Average Loss= 7.6629\n",
- "Step 720000, Average Loss= 7.6055\n",
- "Step 730000, Average Loss= 7.4779\n",
- "Step 740000, Average Loss= 7.3182\n",
- "Step 750000, Average Loss= 7.6399\n",
- "Step 760000, Average Loss= 7.4364\n",
- "Step 770000, Average Loss= 7.6509\n",
- "Step 780000, Average Loss= 7.3204\n",
- "Step 790000, Average Loss= 7.4101\n",
- "Step 800000, Average Loss= 7.4354\n",
- "Evaluation...\n",
- "\"five\" nearest neighbors: three, four, six, seven, eight, two, one, nine,\n",
- "\"of\" nearest neighbors: and, the, its, a, with, at, in, for,\n",
- "\"going\" nearest neighbors: were, man, music, now, great, support, popular, her,\n",
- "\"hardware\" nearest neighbors: power, system, then, military, high, against, since, international,\n",
- "\"american\" nearest neighbors: english, british, born, b, john, french, d, german,\n",
- "\"britain\" nearest neighbors: government, second, before, from, state, several, the, at,\n",
- "Step 810000, Average Loss= 7.2603\n",
- "Step 820000, Average Loss= 7.1646\n",
- "Step 830000, Average Loss= 7.3155\n",
- "Step 840000, Average Loss= 7.1274\n",
- "Step 850000, Average Loss= 7.1237\n",
- "Step 860000, Average Loss= 7.1528\n",
- "Step 870000, Average Loss= 7.0673\n",
- "Step 880000, Average Loss= 7.2167\n",
- "Step 890000, Average Loss= 7.1359\n",
- "Step 900000, Average Loss= 7.0940\n",
- "Step 910000, Average Loss= 7.1114\n",
- "Step 920000, Average Loss= 6.9328\n",
- "Step 930000, Average Loss= 7.0108\n",
- "Step 940000, Average Loss= 7.0630\n",
- "Step 950000, Average Loss= 6.8371\n",
- "Step 960000, Average Loss= 7.0466\n",
- "Step 970000, Average Loss= 6.8331\n",
- "Step 980000, Average Loss= 6.9670\n",
- "Step 990000, Average Loss= 6.7357\n",
- "Step 1000000, Average Loss= 6.6453\n",
- "Evaluation...\n",
- "\"five\" nearest neighbors: four, three, six, eight, seven, two, nine, zero,\n",
- "\"of\" nearest neighbors: the, became, including, first, second, from, following, and,\n",
- "\"going\" nearest neighbors: near, music, popular, made, while, his, works, most,\n",
- "\"hardware\" nearest neighbors: power, system, before, its, using, for, thus, an,\n",
- "\"american\" nearest neighbors: b, born, d, UNK, nine, john, english, seven,\n",
- "\"britain\" nearest neighbors: of, following, government, home, from, state, end, several,\n",
- "Step 1010000, Average Loss= 6.7193\n",
- "Step 1020000, Average Loss= 6.9297\n",
- "Step 1030000, Average Loss= 6.7905\n",
- "Step 1040000, Average Loss= 6.7709\n",
- "Step 1050000, Average Loss= 6.7337\n",
- "Step 1060000, Average Loss= 6.7617\n",
- "Step 1070000, Average Loss= 6.7489\n",
- "Step 1080000, Average Loss= 6.6259\n",
- "Step 1090000, Average Loss= 6.6415\n",
- "Step 1100000, Average Loss= 6.7209\n",
- "Step 1110000, Average Loss= 6.5471\n",
- "Step 1120000, Average Loss= 6.6508\n",
- "Step 1130000, Average Loss= 6.5184\n",
- "Step 1140000, Average Loss= 6.6202\n",
- "Step 1150000, Average Loss= 6.7205\n",
- "Step 1160000, Average Loss= 6.5821\n",
- "Step 1170000, Average Loss= 6.6200\n",
- "Step 1180000, Average Loss= 6.5089\n",
- "Step 1190000, Average Loss= 6.5587\n",
- "Step 1200000, Average Loss= 6.4930\n",
- "Evaluation...\n",
- "\"five\" nearest neighbors: three, four, six, seven, eight, two, nine, zero,\n",
- "\"of\" nearest neighbors: the, and, including, in, first, with, following, from,\n",
- "\"going\" nearest neighbors: near, popular, works, today, large, now, when, both,\n",
- "\"hardware\" nearest neighbors: power, system, computer, its, both, for, using, which,\n",
- "\"american\" nearest neighbors: born, d, john, german, b, UNK, english, s,\n",
- "\"britain\" nearest neighbors: state, following, government, home, became, people, were, the,\n",
- "Step 1210000, Average Loss= 6.5985\n",
- "Step 1220000, Average Loss= 6.4534\n",
- "Step 1230000, Average Loss= 6.5083\n",
- "Step 1240000, Average Loss= 6.4913\n",
- "Step 1250000, Average Loss= 6.4326\n",
- "Step 1260000, Average Loss= 6.3891\n",
- "Step 1270000, Average Loss= 6.1601\n",
- "Step 1280000, Average Loss= 6.4479\n",
- "Step 1290000, Average Loss= 6.3813\n",
- "Step 1300000, Average Loss= 6.5335\n",
- "Step 1310000, Average Loss= 6.2971\n",
- "Step 1320000, Average Loss= 6.3723\n",
- "Step 1330000, Average Loss= 6.4234\n",
- "Step 1340000, Average Loss= 6.3130\n",
- "Step 1350000, Average Loss= 6.2867\n",
- "Step 1360000, Average Loss= 6.3505\n",
- "Step 1370000, Average Loss= 6.2990\n",
- "Step 1380000, Average Loss= 6.3012\n",
- "Step 1390000, Average Loss= 6.3112\n",
- "Step 1400000, Average Loss= 6.2680\n",
- "Evaluation...\n",
- "\"five\" nearest neighbors: four, three, six, two, seven, eight, one, zero,\n",
- "\"of\" nearest neighbors: the, its, and, including, in, with, see, for,\n",
- "\"going\" nearest neighbors: near, great, like, today, began, called, an, another,\n",
- "\"hardware\" nearest neighbors: power, computer, system, for, program, high, control, small,\n",
- "\"american\" nearest neighbors: english, german, french, born, john, british, s, references,\n",
- "\"britain\" nearest neighbors: state, great, government, people, following, became, along, home,\n",
- "Step 1410000, Average Loss= 6.3157\n",
- "Step 1420000, Average Loss= 6.3466\n",
- "Step 1430000, Average Loss= 6.3090\n",
- "Step 1440000, Average Loss= 6.3330\n",
- "Step 1450000, Average Loss= 6.2072\n",
- "Step 1460000, Average Loss= 6.2363\n",
- "Step 1470000, Average Loss= 6.2736\n",
- "Step 1480000, Average Loss= 6.1793\n",
- "Step 1490000, Average Loss= 6.2977\n",
- "Step 1500000, Average Loss= 6.1899\n",
- "Step 1510000, Average Loss= 6.2381\n",
- "Step 1520000, Average Loss= 6.1027\n",
- "Step 1530000, Average Loss= 6.0046\n",
- "Step 1540000, Average Loss= 6.0747\n",
- "Step 1550000, Average Loss= 6.2524\n",
- "Step 1560000, Average Loss= 6.1247\n",
- "Step 1570000, Average Loss= 6.1937\n",
- "Step 1580000, Average Loss= 6.0450\n",
- "Step 1590000, Average Loss= 6.1556\n",
- "Step 1600000, Average Loss= 6.1765\n",
- "Evaluation...\n",
- "\"five\" nearest neighbors: three, four, six, two, seven, eight, one, zero,\n",
- "\"of\" nearest neighbors: the, and, its, for, from, modern, in, part,\n",
- "\"going\" nearest neighbors: great, today, once, now, while, her, like, by,\n",
- "\"hardware\" nearest neighbors: power, system, high, program, control, computer, typically, making,\n",
- "\"american\" nearest neighbors: born, english, british, german, john, french, b, d,\n",
- "\"britain\" nearest neighbors: country, state, home, government, first, following, during, from,\n",
- "Step 1610000, Average Loss= 6.1029\n",
- "Step 1620000, Average Loss= 6.0501\n",
- "Step 1630000, Average Loss= 6.1536\n",
- "Step 1640000, Average Loss= 6.0483\n",
- "Step 1650000, Average Loss= 6.1197\n",
- "Step 1660000, Average Loss= 6.0261\n",
- "Step 1670000, Average Loss= 6.1012\n",
- "Step 1680000, Average Loss= 6.1795\n",
- "Step 1690000, Average Loss= 6.1224\n",
- "Step 1700000, Average Loss= 6.0896\n",
- "Step 1710000, Average Loss= 6.0418\n",
- "Step 1720000, Average Loss= 6.0626\n",
- "Step 1730000, Average Loss= 6.0214\n",
- "Step 1740000, Average Loss= 6.1206\n",
- "Step 1750000, Average Loss= 5.9721\n",
- "Step 1760000, Average Loss= 6.0782\n",
- "Step 1770000, Average Loss= 6.0291\n",
- "Step 1780000, Average Loss= 6.0187\n",
- "Step 1790000, Average Loss= 5.9761\n",
- "Step 1800000, Average Loss= 5.7518\n",
- "Evaluation...\n",
- "\"five\" nearest neighbors: four, three, six, seven, eight, nine, two, zero,\n",
- "\"of\" nearest neighbors: the, from, in, became, and, second, first, including,\n",
- "\"going\" nearest neighbors: today, which, once, little, made, before, now, etc,\n",
- "\"hardware\" nearest neighbors: computer, power, program, system, high, typically, current, eventually,\n",
- "\"american\" nearest neighbors: b, d, born, actor, UNK, robert, william, english,\n",
- "\"britain\" nearest neighbors: government, state, country, from, world, great, of, in,\n",
- "Step 1810000, Average Loss= 5.9839\n",
- "Step 1820000, Average Loss= 5.9931\n",
- "Step 1830000, Average Loss= 6.0794\n",
- "Step 1840000, Average Loss= 5.9072\n",
- "Step 1850000, Average Loss= 5.9831\n",
- "Step 1860000, Average Loss= 6.0023\n",
- "Step 1870000, Average Loss= 5.9375\n",
- "Step 1880000, Average Loss= 5.9250\n",
- "Step 1890000, Average Loss= 5.9422\n",
- "Step 1900000, Average Loss= 5.9339\n",
- "Step 1910000, Average Loss= 5.9235\n",
- "Step 1920000, Average Loss= 5.9692\n",
- "Step 1930000, Average Loss= 5.9022\n",
- "Step 1940000, Average Loss= 5.9599\n",
- "Step 1950000, Average Loss= 6.0174\n",
- "Step 1960000, Average Loss= 5.9530\n",
- "Step 1970000, Average Loss= 5.9479\n",
- "Step 1980000, Average Loss= 5.8870\n",
- "Step 1990000, Average Loss= 5.9271\n",
- "Step 2000000, Average Loss= 5.8774\n",
- "Evaluation...\n",
- "\"five\" nearest neighbors: four, three, six, seven, eight, two, nine, zero,\n",
- "\"of\" nearest neighbors: and, the, from, in, within, first, including, with,\n",
- "\"going\" nearest neighbors: today, before, another, little, work, etc, now, him,\n",
- "\"hardware\" nearest neighbors: computer, program, system, both, making, designed, power, simple,\n",
- "\"american\" nearest neighbors: actor, born, d, robert, john, b, german, writer,\n",
- "\"britain\" nearest neighbors: government, state, following, great, england, became, country, from,\n",
- "Step 2010000, Average Loss= 5.9373\n",
- "Step 2020000, Average Loss= 5.9113\n",
- "Step 2030000, Average Loss= 5.9158\n",
- "Step 2040000, Average Loss= 5.9020\n",
- "Step 2050000, Average Loss= 5.8608\n",
- "Step 2060000, Average Loss= 5.7379\n",
- "Step 2070000, Average Loss= 5.7143\n",
- "Step 2080000, Average Loss= 5.9379\n",
- "Step 2090000, Average Loss= 5.8201\n",
- "Step 2100000, Average Loss= 5.9390\n",
- "Step 2110000, Average Loss= 5.7295\n",
- "Step 2120000, Average Loss= 5.8290\n",
- "Step 2130000, Average Loss= 5.9042\n",
- "Step 2140000, Average Loss= 5.8367\n",
- "Step 2150000, Average Loss= 5.7760\n",
- "Step 2160000, Average Loss= 5.8664\n",
- "Step 2170000, Average Loss= 5.7974\n",
- "Step 2180000, Average Loss= 5.8523\n",
- "Step 2190000, Average Loss= 5.8047\n",
- "Step 2200000, Average Loss= 5.8172\n",
- "Evaluation...\n",
- "\"five\" nearest neighbors: three, four, six, eight, two, seven, one, zero,\n",
- "\"of\" nearest neighbors: the, with, group, in, its, and, from, including,\n",
- "\"going\" nearest neighbors: produced, when, today, while, little, before, had, like,\n",
- "\"hardware\" nearest neighbors: computer, system, power, technology, program, simple, for, designed,\n",
- "\"american\" nearest neighbors: english, canadian, german, french, author, british, film, born,\n",
- "\"britain\" nearest neighbors: government, great, state, established, british, england, country, army,\n",
- "Step 2210000, Average Loss= 5.8847\n",
- "Step 2220000, Average Loss= 5.8622\n",
- "Step 2230000, Average Loss= 5.8295\n",
- "Step 2240000, Average Loss= 5.8484\n",
- "Step 2250000, Average Loss= 5.7917\n",
- "Step 2260000, Average Loss= 5.7846\n",
- "Step 2270000, Average Loss= 5.8307\n",
- "Step 2280000, Average Loss= 5.7341\n",
- "Step 2290000, Average Loss= 5.8519\n",
- "Step 2300000, Average Loss= 5.7792\n",
- "Step 2310000, Average Loss= 5.8277\n",
- "Step 2320000, Average Loss= 5.7196\n",
- "Step 2330000, Average Loss= 5.5469\n",
- "Step 2340000, Average Loss= 5.7177\n",
- "Step 2350000, Average Loss= 5.8139\n",
- "Step 2360000, Average Loss= 5.7849\n",
- "Step 2370000, Average Loss= 5.7022\n",
- "Step 2380000, Average Loss= 5.7447\n",
- "Step 2390000, Average Loss= 5.7667\n",
- "Step 2400000, Average Loss= 5.7625\n",
- "Evaluation...\n",
- "\"five\" nearest neighbors: three, four, six, seven, two, eight, zero, nine,\n",
- "\"of\" nearest neighbors: the, and, from, part, in, following, within, including,\n",
- "\"going\" nearest neighbors: where, once, little, now, again, while, off, produced,\n",
- "\"hardware\" nearest neighbors: system, computer, high, power, using, designed, systems, simple,\n",
- "\"american\" nearest neighbors: author, actor, english, born, writer, british, b, d,\n",
- "\"britain\" nearest neighbors: great, established, government, england, country, state, army, former,\n",
- "Step 2410000, Average Loss= 5.6953\n",
- "Step 2420000, Average Loss= 5.7413\n",
- "Step 2430000, Average Loss= 5.7242\n",
- "Step 2440000, Average Loss= 5.7397\n",
- "Step 2450000, Average Loss= 5.7755\n",
- "Step 2460000, Average Loss= 5.6881\n",
- "Step 2470000, Average Loss= 5.7471\n",
- "Step 2480000, Average Loss= 5.8159\n",
- "Step 2490000, Average Loss= 5.7452\n",
- "Step 2500000, Average Loss= 5.7547\n",
- "Step 2510000, Average Loss= 5.6945\n",
- "Step 2520000, Average Loss= 5.7318\n",
- "Step 2530000, Average Loss= 5.6682\n",
- "Step 2540000, Average Loss= 5.7660\n",
- "Step 2550000, Average Loss= 5.6956\n",
- "Step 2560000, Average Loss= 5.7307\n",
- "Step 2570000, Average Loss= 5.7015\n",
- "Step 2580000, Average Loss= 5.6932\n",
- "Step 2590000, Average Loss= 5.6386\n",
- "Step 2600000, Average Loss= 5.4734\n",
- "Evaluation...\n",
- "\"five\" nearest neighbors: four, three, six, seven, eight, nine, two, zero,\n",
- "\"of\" nearest neighbors: the, and, in, from, became, including, for, with,\n",
- "\"going\" nearest neighbors: little, again, just, a, now, where, to, for,\n",
- "\"hardware\" nearest neighbors: computer, program, system, software, designed, systems, technology, current,\n",
- "\"american\" nearest neighbors: actor, d, writer, b, born, singer, author, robert,\n",
- "\"britain\" nearest neighbors: great, established, government, england, country, in, from, state,\n",
- "Step 2610000, Average Loss= 5.7291\n",
- "Step 2620000, Average Loss= 5.6412\n",
- "Step 2630000, Average Loss= 5.7485\n",
- "Step 2640000, Average Loss= 5.5833\n",
- "Step 2650000, Average Loss= 5.6548\n",
- "Step 2660000, Average Loss= 5.7159\n",
- "Step 2670000, Average Loss= 5.6569\n",
- "Step 2680000, Average Loss= 5.6080\n",
- "Step 2690000, Average Loss= 5.7037\n",
- "Step 2700000, Average Loss= 5.6360\n",
- "Step 2710000, Average Loss= 5.6707\n",
- "Step 2720000, Average Loss= 5.6811\n",
- "Step 2730000, Average Loss= 5.6237\n",
- "Step 2740000, Average Loss= 5.7050\n",
- "Step 2750000, Average Loss= 5.6991\n",
- "Step 2760000, Average Loss= 5.6691\n",
- "Step 2770000, Average Loss= 5.7057\n",
- "Step 2780000, Average Loss= 5.6162\n",
- "Step 2790000, Average Loss= 5.6484\n",
- "Step 2800000, Average Loss= 5.6627\n",
- "Evaluation...\n",
- "\"five\" nearest neighbors: four, six, three, seven, eight, nine, two, one,\n",
- "\"of\" nearest neighbors: the, in, following, including, part, and, from, under,\n",
- "\"going\" nearest neighbors: again, before, little, away, once, when, eventually, then,\n",
- "\"hardware\" nearest neighbors: computer, system, software, program, systems, designed, for, design,\n",
- "\"american\" nearest neighbors: actor, writer, singer, author, born, robert, d, john,\n",
- "\"britain\" nearest neighbors: established, england, great, government, france, army, the, throughout,\n",
- "Step 2810000, Average Loss= 5.5900\n",
- "Step 2820000, Average Loss= 5.7053\n",
- "Step 2830000, Average Loss= 5.6064\n",
- "Step 2840000, Average Loss= 5.6891\n",
- "Step 2850000, Average Loss= 5.5571\n",
- "Step 2860000, Average Loss= 5.4490\n",
- "Step 2870000, Average Loss= 5.5428\n",
- "Step 2880000, Average Loss= 5.6832\n",
- "Step 2890000, Average Loss= 5.5973\n",
- "Step 2900000, Average Loss= 5.5816\n",
- "Step 2910000, Average Loss= 5.5647\n",
- "Step 2920000, Average Loss= 5.6001\n",
- "Step 2930000, Average Loss= 5.6459\n",
- "Step 2940000, Average Loss= 5.5622\n",
- "Step 2950000, Average Loss= 5.5707\n",
- "Step 2960000, Average Loss= 5.6492\n",
- "Step 2970000, Average Loss= 5.5633\n",
- "Step 2980000, Average Loss= 5.6323\n",
- "Step 2990000, Average Loss= 5.5440\n",
- "Step 3000000, Average Loss= 5.6209\n",
- "Evaluation...\n",
- "\"five\" nearest neighbors: four, three, six, eight, seven, two, zero, one,\n",
- "\"of\" nearest neighbors: the, in, and, including, group, includes, part, from,\n",
- "\"going\" nearest neighbors: once, again, when, quickly, before, eventually, little, had,\n",
- "\"hardware\" nearest neighbors: computer, system, software, designed, program, simple, systems, sound,\n",
- "\"american\" nearest neighbors: canadian, english, author, german, french, british, irish, australian,\n",
- "\"britain\" nearest neighbors: established, england, great, government, throughout, france, british, northern,\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
+ },
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Initialize the variables (i.e. assign their default value)\n",
"init = tf.global_variables_initializer()\n",
"\n",
- "with tf.Session() as sess:\n",
+ "with tf.Session(config=config) as sess:\n",
"\n",
" # Run the initializer\n",
" sess.run(init)\n",
"\n",
" # Testing data\n",
- " x_test = np.array([word2id[w] for w in eval_words])\n",
- "\n",
+ " x_test = np.array([word2id[str.encode(w)] for w in eval_words])\n",
" average_loss = 0\n",
- " for step in xrange(1, num_steps + 1):\n",
+ " for step in range(1, num_steps + 1):\n",
" # Get a new batch of data\n",
" batch_x, batch_y = next_batch(batch_size, num_skips, skip_window)\n",
" # Run training op\n",
@@ -690,11 +298,11 @@
" if step % eval_step == 0 or step == 1:\n",
" print(\"Evaluation...\")\n",
" sim = sess.run(cosine_sim_op, feed_dict={X: x_test})\n",
- " for i in xrange(len(eval_words)):\n",
+ " for i in range(len(eval_words)):\n",
" top_k = 8 # number of nearest neighbors\n",
" nearest = (-sim[i, :]).argsort()[1:top_k + 1]\n",
" log_str = '\"%s\" nearest neighbors:' % eval_words[i]\n",
- " for k in xrange(top_k):\n",
+ " for k in range(top_k):\n",
" log_str = '%s %s,' % (log_str, id2word[nearest[k]])\n",
" print(log_str)\n"
]
@@ -702,23 +310,32 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python [default]",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 1
+ "nbformat_minor": 4
}
diff --git a/notebooks/3_NeuralNetworks/autoencoder.ipynb b/notebooks/3_NeuralNetworks/autoencoder.ipynb
index 68318441..20d7a7f3 100644
--- a/notebooks/3_NeuralNetworks/autoencoder.ipynb
+++ b/notebooks/3_NeuralNetworks/autoencoder.ipynb
@@ -9,7 +9,7 @@
"Build a 2 layers auto-encoder with TensorFlow to compress images to a lower latent space and then reconstruct them.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
@@ -34,7 +34,16 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
@@ -47,32 +56,35 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 27,
"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"
- ]
- }
- ],
+ "outputs": [],
+ "source": [
+ "config = tf.ConfigProto()\n",
+ "config.gpu_options.allow_growth=True "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [],
"source": [
"# Import MNIST data\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=True)"
+ "import os\n",
+ "data_path = \"./dataset/autoencoder/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=True)"
]
},
{
"cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 29,
+ "metadata": {},
"outputs": [],
"source": [
"# Training Parameters\n",
@@ -107,7 +119,7 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
@@ -151,51 +163,13 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 31,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Step 1: Minibatch Loss: 0.438300\n",
- "Step 1000: Minibatch Loss: 0.146586\n",
- "Step 2000: Minibatch Loss: 0.130722\n",
- "Step 3000: Minibatch Loss: 0.117178\n",
- "Step 4000: Minibatch Loss: 0.109027\n",
- "Step 5000: Minibatch Loss: 0.102582\n",
- "Step 6000: Minibatch Loss: 0.099183\n",
- "Step 7000: Minibatch Loss: 0.095619\n",
- "Step 8000: Minibatch Loss: 0.089006\n",
- "Step 9000: Minibatch Loss: 0.087125\n",
- "Step 10000: Minibatch Loss: 0.083930\n",
- "Step 11000: Minibatch Loss: 0.077512\n",
- "Step 12000: Minibatch Loss: 0.077137\n",
- "Step 13000: Minibatch Loss: 0.073983\n",
- "Step 14000: Minibatch Loss: 0.074218\n",
- "Step 15000: Minibatch Loss: 0.074492\n",
- "Step 16000: Minibatch Loss: 0.074374\n",
- "Step 17000: Minibatch Loss: 0.070909\n",
- "Step 18000: Minibatch Loss: 0.069438\n",
- "Step 19000: Minibatch Loss: 0.068245\n",
- "Step 20000: Minibatch Loss: 0.068402\n",
- "Step 21000: Minibatch Loss: 0.067113\n",
- "Step 22000: Minibatch Loss: 0.068241\n",
- "Step 23000: Minibatch Loss: 0.062454\n",
- "Step 24000: Minibatch Loss: 0.059754\n",
- "Step 25000: Minibatch Loss: 0.058687\n",
- "Step 26000: Minibatch Loss: 0.059107\n",
- "Step 27000: Minibatch Loss: 0.055788\n",
- "Step 28000: Minibatch Loss: 0.057263\n",
- "Step 29000: Minibatch Loss: 0.056391\n",
- "Step 30000: Minibatch Loss: 0.057672\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Start Training\n",
"# Start a new TF session\n",
- "sess = tf.Session()\n",
+ "sess = tf.Session(config=config)\n",
"\n",
"# Run the initializer\n",
"sess.run(init)\n",
@@ -215,44 +189,9 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 32,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Original Images\n"
- ]
- },
- {
- "data": {
- "image/png": "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\nAAAAAElFTkSuQmCC\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Reconstructed Images\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
+ "outputs": [],
"source": [
"# Testing\n",
"# Encode and decode images from test set and visualize their reconstruction.\n",
@@ -288,23 +227,32 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 2",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2.0
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "source": [],
+ "metadata": {
+ "collapsed": false
+ }
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 0
-}
\ No newline at end of file
+ "nbformat_minor": 4
+}
diff --git a/notebooks/3_NeuralNetworks/bidirectional_rnn.ipynb b/notebooks/3_NeuralNetworks/bidirectional_rnn.ipynb
index 2435b229..02cba7c1 100644
--- a/notebooks/3_NeuralNetworks/bidirectional_rnn.ipynb
+++ b/notebooks/3_NeuralNetworks/bidirectional_rnn.ipynb
@@ -2,16 +2,14 @@
"cells": [
{
"cell_type": "markdown",
- "metadata": {
- "collapsed": true
- },
+ "metadata": {},
"source": [
"# Bi-directional Recurrent Neural Network Example\n",
"\n",
"Build a bi-directional recurrent neural network (LSTM) with TensorFlow.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
@@ -39,21 +37,21 @@
{
"cell_type": "code",
"execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
"metadata": {
- "collapsed": false
- },
- "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"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"from __future__ import print_function\n",
"\n",
@@ -63,15 +61,29 @@
"\n",
"# Import MNIST data\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=True)"
+ "import os\n",
+ "data_path = \"./dataset/bidirectional_rnn/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=True)"
]
},
{
"cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "config = tf.ConfigProto()\n",
+ "config.gpu_options.allow_growth=True "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
"outputs": [],
"source": [
"# Training Parameters\n",
@@ -93,10 +105,8 @@
},
{
"cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 5,
+ "metadata": {},
"outputs": [],
"source": [
"# Define weights\n",
@@ -111,9 +121,11 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 6,
"metadata": {
- "collapsed": false
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -146,10 +158,8 @@
},
{
"cell_type": "code",
- "execution_count": 5,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 7,
+ "metadata": {},
"outputs": [],
"source": [
"logits = BiRNN(X, weights, biases)\n",
@@ -171,74 +181,16 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 8,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Step 1, Minibatch Loss= 2.6218, Training Accuracy= 0.086\n",
- "Step 200, Minibatch Loss= 2.1900, Training Accuracy= 0.211\n",
- "Step 400, Minibatch Loss= 2.0144, Training Accuracy= 0.375\n",
- "Step 600, Minibatch Loss= 1.8729, Training Accuracy= 0.445\n",
- "Step 800, Minibatch Loss= 1.8000, Training Accuracy= 0.469\n",
- "Step 1000, Minibatch Loss= 1.7244, Training Accuracy= 0.453\n",
- "Step 1200, Minibatch Loss= 1.5657, Training Accuracy= 0.523\n",
- "Step 1400, Minibatch Loss= 1.5473, Training Accuracy= 0.547\n",
- "Step 1600, Minibatch Loss= 1.5288, Training Accuracy= 0.500\n",
- "Step 1800, Minibatch Loss= 1.4203, Training Accuracy= 0.555\n",
- "Step 2000, Minibatch Loss= 1.2525, Training Accuracy= 0.641\n",
- "Step 2200, Minibatch Loss= 1.2696, Training Accuracy= 0.594\n",
- "Step 2400, Minibatch Loss= 1.2000, Training Accuracy= 0.664\n",
- "Step 2600, Minibatch Loss= 1.1017, Training Accuracy= 0.625\n",
- "Step 2800, Minibatch Loss= 1.2656, Training Accuracy= 0.578\n",
- "Step 3000, Minibatch Loss= 1.0830, Training Accuracy= 0.656\n",
- "Step 3200, Minibatch Loss= 1.1522, Training Accuracy= 0.633\n",
- "Step 3400, Minibatch Loss= 0.9484, Training Accuracy= 0.680\n",
- "Step 3600, Minibatch Loss= 1.0470, Training Accuracy= 0.641\n",
- "Step 3800, Minibatch Loss= 1.0609, Training Accuracy= 0.586\n",
- "Step 4000, Minibatch Loss= 1.1853, Training Accuracy= 0.648\n",
- "Step 4200, Minibatch Loss= 0.9438, Training Accuracy= 0.750\n",
- "Step 4400, Minibatch Loss= 0.7986, Training Accuracy= 0.766\n",
- "Step 4600, Minibatch Loss= 0.8070, Training Accuracy= 0.750\n",
- "Step 4800, Minibatch Loss= 0.8382, Training Accuracy= 0.734\n",
- "Step 5000, Minibatch Loss= 0.7397, Training Accuracy= 0.766\n",
- "Step 5200, Minibatch Loss= 0.7870, Training Accuracy= 0.727\n",
- "Step 5400, Minibatch Loss= 0.6380, Training Accuracy= 0.828\n",
- "Step 5600, Minibatch Loss= 0.7975, Training Accuracy= 0.719\n",
- "Step 5800, Minibatch Loss= 0.7934, Training Accuracy= 0.766\n",
- "Step 6000, Minibatch Loss= 0.6628, Training Accuracy= 0.805\n",
- "Step 6200, Minibatch Loss= 0.7958, Training Accuracy= 0.672\n",
- "Step 6400, Minibatch Loss= 0.6582, Training Accuracy= 0.773\n",
- "Step 6600, Minibatch Loss= 0.5908, Training Accuracy= 0.812\n",
- "Step 6800, Minibatch Loss= 0.6182, Training Accuracy= 0.820\n",
- "Step 7000, Minibatch Loss= 0.5513, Training Accuracy= 0.812\n",
- "Step 7200, Minibatch Loss= 0.6683, Training Accuracy= 0.789\n",
- "Step 7400, Minibatch Loss= 0.5337, Training Accuracy= 0.828\n",
- "Step 7600, Minibatch Loss= 0.6428, Training Accuracy= 0.805\n",
- "Step 7800, Minibatch Loss= 0.6708, Training Accuracy= 0.797\n",
- "Step 8000, Minibatch Loss= 0.4664, Training Accuracy= 0.852\n",
- "Step 8200, Minibatch Loss= 0.4249, Training Accuracy= 0.859\n",
- "Step 8400, Minibatch Loss= 0.7723, Training Accuracy= 0.773\n",
- "Step 8600, Minibatch Loss= 0.4706, Training Accuracy= 0.859\n",
- "Step 8800, Minibatch Loss= 0.4800, Training Accuracy= 0.867\n",
- "Step 9000, Minibatch Loss= 0.4636, Training Accuracy= 0.891\n",
- "Step 9200, Minibatch Loss= 0.5734, Training Accuracy= 0.828\n",
- "Step 9400, Minibatch Loss= 0.5548, Training Accuracy= 0.875\n",
- "Step 9600, Minibatch Loss= 0.3575, Training Accuracy= 0.922\n",
- "Step 9800, Minibatch Loss= 0.4566, Training Accuracy= 0.844\n",
- "Step 10000, Minibatch Loss= 0.5125, Training Accuracy= 0.844\n",
- "Optimization Finished!\n",
- "Testing Accuracy: 0.890625\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Start training\n",
- "with tf.Session() as sess:\n",
+ "with tf.Session(config=config) as sess:\n",
"\n",
" # Run the initializer\n",
" sess.run(init)\n",
@@ -266,36 +218,36 @@
" print(\"Testing Accuracy:\", \\\n",
" sess.run(accuracy, feed_dict={X: test_data, Y: test_label}))\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
}
],
"metadata": {
"kernelspec": {
- "display_name": "Python 2",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.13"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 0
+ "nbformat_minor": 4
}
diff --git a/notebooks/3_NeuralNetworks/convolutional_network.ipynb b/notebooks/3_NeuralNetworks/convolutional_network.ipynb
index 19590f46..f6a60fbf 100644
--- a/notebooks/3_NeuralNetworks/convolutional_network.ipynb
+++ b/notebooks/3_NeuralNetworks/convolutional_network.ipynb
@@ -12,7 +12,7 @@
"for a raw TensorFlow implementation with variables.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
@@ -34,26 +34,30 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"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"
- ]
- }
- ],
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
"source": [
"from __future__ import division, print_function, absolute_import\n",
"\n",
"# Import MNIST data\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=False)\n",
+ "import os\n",
+ "data_path = \"./dataset/convolutional_network/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=False)\n",
"\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
@@ -62,7 +66,7 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -79,10 +83,8 @@
},
{
"cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"# Create the neural network\n",
@@ -124,10 +126,8 @@
},
{
"cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"# Define the model function (following TF Estimator Template)\n",
@@ -170,19 +170,9 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "INFO:tensorflow:Using default config.\n",
- "WARNING:tensorflow:Using temporary folder as model directory: /tmp/tmpdhd6F4\n",
- "INFO:tensorflow:Using config: {'_save_checkpoints_secs': 600, '_session_config': None, '_keep_checkpoint_max': 5, '_tf_random_seed': 1, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_save_checkpoints_steps': None, '_model_dir': '/tmp/tmpdhd6F4', '_save_summary_steps': 100}\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Build the Estimator\n",
"model = tf.estimator.Estimator(model_fn)"
@@ -190,69 +180,9 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "INFO:tensorflow:Create CheckpointSaverHook.\n",
- "INFO:tensorflow:Saving checkpoints for 1 into /tmp/tmpdhd6F4/model.ckpt.\n",
- "INFO:tensorflow:loss = 2.39026, step = 1\n",
- "INFO:tensorflow:global_step/sec: 238.314\n",
- "INFO:tensorflow:loss = 0.237997, step = 101 (0.421 sec)\n",
- "INFO:tensorflow:global_step/sec: 255.312\n",
- "INFO:tensorflow:loss = 0.0954537, step = 201 (0.392 sec)\n",
- "INFO:tensorflow:global_step/sec: 257.194\n",
- "INFO:tensorflow:loss = 0.121477, step = 301 (0.389 sec)\n",
- "INFO:tensorflow:global_step/sec: 255.018\n",
- "INFO:tensorflow:loss = 0.0539927, step = 401 (0.392 sec)\n",
- "INFO:tensorflow:global_step/sec: 254.293\n",
- "INFO:tensorflow:loss = 0.0440369, step = 501 (0.393 sec)\n",
- "INFO:tensorflow:global_step/sec: 256.501\n",
- "INFO:tensorflow:loss = 0.0247431, step = 601 (0.390 sec)\n",
- "INFO:tensorflow:global_step/sec: 252.956\n",
- "INFO:tensorflow:loss = 0.0738082, step = 701 (0.395 sec)\n",
- "INFO:tensorflow:global_step/sec: 253.222\n",
- "INFO:tensorflow:loss = 0.134998, step = 801 (0.395 sec)\n",
- "INFO:tensorflow:global_step/sec: 255.606\n",
- "INFO:tensorflow:loss = 0.00438448, step = 901 (0.391 sec)\n",
- "INFO:tensorflow:global_step/sec: 256.306\n",
- "INFO:tensorflow:loss = 0.0471991, step = 1001 (0.390 sec)\n",
- "INFO:tensorflow:global_step/sec: 255.352\n",
- "INFO:tensorflow:loss = 0.0371172, step = 1101 (0.392 sec)\n",
- "INFO:tensorflow:global_step/sec: 253.277\n",
- "INFO:tensorflow:loss = 0.0129522, step = 1201 (0.395 sec)\n",
- "INFO:tensorflow:global_step/sec: 252.49\n",
- "INFO:tensorflow:loss = 0.039862, step = 1301 (0.396 sec)\n",
- "INFO:tensorflow:global_step/sec: 253.902\n",
- "INFO:tensorflow:loss = 0.0520571, step = 1401 (0.394 sec)\n",
- "INFO:tensorflow:global_step/sec: 255.572\n",
- "INFO:tensorflow:loss = 0.0307549, step = 1501 (0.392 sec)\n",
- "INFO:tensorflow:global_step/sec: 254.32\n",
- "INFO:tensorflow:loss = 0.0108862, step = 1601 (0.393 sec)\n",
- "INFO:tensorflow:global_step/sec: 255.62\n",
- "INFO:tensorflow:loss = 0.0294434, step = 1701 (0.391 sec)\n",
- "INFO:tensorflow:global_step/sec: 254.349\n",
- "INFO:tensorflow:loss = 0.0179781, step = 1801 (0.393 sec)\n",
- "INFO:tensorflow:global_step/sec: 255.508\n",
- "INFO:tensorflow:loss = 0.0375271, step = 1901 (0.391 sec)\n",
- "INFO:tensorflow:Saving checkpoints for 2000 into /tmp/tmpdhd6F4/model.ckpt.\n",
- "INFO:tensorflow:Loss for final step: 0.00440777.\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 6,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"# Define the input function for training\n",
"input_fn = tf.estimator.inputs.numpy_input_fn(\n",
@@ -264,30 +194,9 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "INFO:tensorflow:Starting evaluation at 2017-08-21-14:25:29\n",
- "INFO:tensorflow:Restoring parameters from /tmp/tmpdhd6F4/model.ckpt-2000\n",
- "INFO:tensorflow:Finished evaluation at 2017-08-21-14:25:29\n",
- "INFO:tensorflow:Saving dict for global step 2000: accuracy = 0.9908, global_step = 2000, loss = 0.0382241\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "{'accuracy': 0.99080002, 'global_step': 2000, 'loss': 0.038224086}"
- ]
- },
- "execution_count": 7,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"# Evaluate the Model\n",
"# Define the input function for evaluating\n",
@@ -300,85 +209,9 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "INFO:tensorflow:Restoring parameters from /tmp/tmpdhd6F4/model.ckpt-2000\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n/LPVtEE0qL0Nal8SvbWrm71d3uqMff2Qz8c2bo8N6nf7DWpvg9qXRG/tqqs3DvuBpAg/kFTd4R+t\nefslg9rboPYl0Vu7aumt1nN+APWpe88PoCa1hN/2Mtv7bB+w/UAdPTRi+7DtXbZfrXuIsWoYtJO2\nd0+ZNs/2s7bfqn5PO0xaTb2ts320eu1etb28pt4W2P6j7Tds77H97Wp6ra9doa9aXre+H/bbniVp\nv6Q7JI1LelnSvRHxRl8bacD2YUnDEVH7NWHbX5J0RtIjEXFNNe0hSRMR8cPqH+fciPjegPS2TtKZ\nukdurgaUGZo6srSkuyR9QzW+doW+7lENr1sde/4bJR2IiEMR8XdJv5a0ooY+Bl5EbJd07qgZKyRt\nrB5v1OQfT9816G0gRMSxiHilenxa0kcjS9f62hX6qkUd4b9U0pEpz8c1WEN+h6SttnfaHqm7mWnM\nr4ZNl6TjkubX2cw0mo7c3E/njCw9MK9dOyNedxtv+H3ckoi4TtL/SVpTHd4OpJg8ZxukyzUtjdzc\nL9OMLP0vdb527Y543W11hP+opAVTnn+umjYQIuJo9fukpN9p8EYfPvHRIKnV75M19/MvgzRy83Qj\nS2sAXrtBGvG6jvC/LOkK25+3/WlJX5O0pYY+Psb2hdUbMbJ9oaQva/BGH94iaVX1eJWkJ2rs5T8M\nysjNjUaWVs2v3cCNeB0Rff+RtFyT7/gflPT9Onpo0Nd/S3qt+tlTd2+SHtXkYeA/NPneyDclXSRp\nm6S3JP1B0rwB6u1XknZJel2TQRuqqbclmjykf13Sq9XP8rpfu0JftbxufMIPSIo3/ICkCD+QFOEH\nkiL8QFKEH0iK8ANJEX4gKcIPJPVP82g/p9/JjhUAAAAASUVORK5CYII=\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Model prediction: 7\n"
- ]
- },
- {
- "data": {
- "image/png": "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\nTkSuQmCC\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Model prediction: 2\n"
- ]
- },
- {
- "data": {
- "image/png": "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\nAABJRU5ErkJggg==\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Model prediction: 1\n"
- ]
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADbdJREFUeJzt3W+MFPUdx/HPF2qfYB9ouRL8U7DFYIhJpTmxDwi2thow\nGvCBijGGRtNDg2KTPqiBxGKaJo22NE0kkGskPRtrbYLGCyGVlphSE9J4mPrvrv7NQSEniDQqIaYI\n3z7YufaU298suzM7c3zfr+Ryu/Pdnf068rmZ3d/M/szdBSCeaVU3AKAahB8IivADQRF+ICjCDwRF\n+IGgCD8QFOEHgiL8QFBf6OaLmRmnEwIlc3dr5XEd7fnNbKmZvWFmb5vZA52sC0B3Wbvn9pvZdElv\nSrpW0gFJL0q6zd2HE89hzw+UrBt7/kWS3nb3d939P5L+IGl5B+sD0EWdhP9CSf+acP9AtuwzzKzP\nzIbMbKiD1wJQsNI/8HP3fkn9Eof9QJ10suc/KOniCfcvypYBmAI6Cf+Lki41s0vM7IuSVkoaLKYt\nAGVr+7Df3T81s3slPSdpuqSt7v56YZ0BKFXbQ31tvRjv+YHSdeUkHwBTF+EHgiL8QFCEHwiK8ANB\nEX4gKMIPBEX4gaAIPxAU4QeCIvxAUIQfCIrwA0ERfiAowg8ERfiBoAg/EBThB4Ii/EBQhB8IivAD\nQXV1im5034wZM5L1Rx55JFlfvXp1sr53795k/eabb25a27dvX/K5KBd7fiAowg8ERfiBoAg/EBTh\nB4Ii/EBQhB8IqqNZes1sVNLHkk5K+tTde3Mezyy9XTZv3rxkfWRkpKP1T5uW3n+sXbu2aW3Tpk0d\nvTYm1+osvUWc5PMddz9SwHoAdBGH/UBQnYbfJe00s71m1ldEQwC6o9PD/sXuftDMviLpz2b2T3ff\nPfEB2R8F/jAANdPRnt/dD2a/D0t6RtKiSR7T7+69eR8GAuiutsNvZjPM7EvjtyVdJ+m1ohoDUK5O\nDvtnSXrGzMbX83t3/1MhXQEoXdvhd/d3JX2jwF7Qpp6enqa1gYGBLnaCqYShPiAowg8ERfiBoAg/\nEBThB4Ii/EBQfHX3FJC6LFaSVqxY0bS2aNFpJ1121ZIlS5rW8i4Hfvnll5P13bt3J+tIY88PBEX4\ngaAIPxAU4QeCIvxAUIQfCIrwA0F19NXdZ/xifHV3W06ePJmsnzp1qkudnC5vrL6T3vKm8L711luT\n9bzpw89WrX51N3t+ICjCDwRF+IGgCD8QFOEHgiL8QFCEHwiKcf4a2LFjR7K+bNmyZL3Kcf4PPvgg\nWT927FjT2pw5c4pu5zOmT59e6vrrinF+AEmEHwiK8ANBEX4gKMIPBEX4gaAIPxBU7vf2m9lWSTdI\nOuzul2fLzpf0lKS5kkYl3eLu/y6vzant6quvTtbnz5+frOeN45c5zr9ly5ZkfefOncn6hx9+2LR2\nzTXXJJ+7fv36ZD3PPffc07S2efPmjtZ9Nmhlz/9bSUs/t+wBSbvc/VJJu7L7AKaQ3PC7+25JRz+3\neLmkgez2gKTmU8YAqKV23/PPcvex7PZ7kmYV1A+ALul4rj5399Q5+2bWJ6mv09cBUKx29/yHzGy2\nJGW/Dzd7oLv3u3uvu/e2+VoAStBu+Aclrcpur5L0bDHtAOiW3PCb2ZOS9kiab2YHzOwuST+XdK2Z\nvSXpe9l9AFMI1/MXYO7cucn6nj17kvWZM2cm6518N37ed99v27YtWX/ooYeS9ePHjyfrKXnX8+dt\nt56enmT9k08+aVp78MEHk8999NFHk/UTJ04k61Xien4ASYQfCIrwA0ERfiAowg8ERfiBoBjqK8C8\nefOS9ZGRkY7WnzfU9/zzzzetrVy5MvncI0eOtNVTN9x3333J+saNG5P11HbLuwz6sssuS9bfeeed\nZL1KDPUBSCL8QFCEHwiK8ANBEX4gKMIPBEX4gaA6/hovlG9oaChZv/POO5vW6jyOn2dwcDBZv/32\n25P1K6+8ssh2zjrs+YGgCD8QFOEHgiL8QFCEHwiK8ANBEX4gKMb5uyDvevw8V111VUGdTC1m6cvS\n87ZrJ9t9w4YNyfodd9zR9rrrgj0/EBThB4Ii/EBQhB8IivADQRF+ICjCDwSVO85vZlsl3SDpsLtf\nni3bIOkHkt7PHrbO3XeU1WTd3X333cl63nfEY3I33nhjsr5w4cJkPbXd8/6f5I3znw1a2fP/VtLS\nSZb/yt2vyH7CBh+YqnLD7+67JR3tQi8AuqiT9/z3mtkrZrbVzM4rrCMAXdFu+DdL+rqkKySNSfpl\nsweaWZ+ZDZlZ+ovoAHRVW+F390PuftLdT0n6jaRFicf2u3uvu/e22ySA4rUVfjObPeHuTZJeK6Yd\nAN3SylDfk5K+LWmmmR2Q9BNJ3zazKyS5pFFJq0vsEUAJcsPv7rdNsvixEnqZsvLGoyPr6elpWluw\nYEHyuevWrSu6nf95//33k/UTJ06U9tp1wRl+QFCEHwiK8ANBEX4gKMIPBEX4gaD46m6Uav369U1r\na9asKfW1R0dHm9ZWrVqVfO7+/fsL7qZ+2PMDQRF+ICjCDwRF+IGgCD8QFOEHgiL8QFCM86MjO3ak\nv7h5/vz5XerkdMPDw01rL7zwQhc7qSf2/EBQhB8IivADQRF+ICjCDwRF+IGgCD8QFOP8BTCzZH3a\ntM7+xi5btqzt5/b39yfrF1xwQdvrlvL/26qcnpyvVE9jzw8ERfiBoAg/EBThB4Ii/EBQhB8IivAD\nQeWO85vZxZIelzRLkkvqd/dfm9n5kp6SNFfSqKRb3P3f5bVaX5s3b07WH3744Y7Wv3379mS9k7H0\nssfhy1z/li1bSlt3BK3s+T+V9CN3XyDpW5LWmNkCSQ9I2uXul0rald0HMEXkht/dx9z9pez2x5JG\nJF0oabmkgexhA5JWlNUkgOKd0Xt+M5sraaGkv0ua5e5jWek9Nd4WAJgiWj6338zOlbRN0g/d/aOJ\n57O7u5uZN3len6S+ThsFUKyW9vxmdo4awX/C3Z/OFh8ys9lZfbakw5M919373b3X3XuLaBhAMXLD\nb41d/GOSRtx944TSoKTxqU5XSXq2+PYAlMXcJz1a//8DzBZL+pukVyWNj9usU+N9/x8lfVXSPjWG\n+o7mrCv9YlPUnDlzkvU9e/Yk6z09Pcl6nS+bzevt0KFDTWsjIyPJ5/b1pd8tjo2NJevHjx9P1s9W\n7p6+xjyT+57f3V+Q1Gxl3z2TpgDUB2f4AUERfiAowg8ERfiBoAg/EBThB4LKHecv9MXO0nH+PEuW\nLEnWV6xIXxN1//33J+t1Hudfu3Zt09qmTZuKbgdqfZyfPT8QFOEHgiL8QFCEHwiK8ANBEX4gKMIP\nBMU4/xSwdOnSZD113XveNNWDg4PJet4U33nTkw8PDzet7d+/P/lctIdxfgBJhB8IivADQRF+ICjC\nDwRF+IGgCD8QFOP8wFmGcX4ASYQfCIrwA0ERfiAowg8ERfiBoAg/EFRu+M3sYjN73syGzex1M7s/\nW77BzA6a2T+yn+vLbxdAUXJP8jGz2ZJmu/tLZvYlSXslrZB0i6Rj7v6Lll+Mk3yA0rV6ks8XWljR\nmKSx7PbHZjYi6cLO2gNQtTN6z29mcyUtlPT3bNG9ZvaKmW01s/OaPKfPzIbMbKijTgEUquVz+83s\nXEl/lfQzd3/azGZJOiLJJf1UjbcGd+asg8N+oGStHva3FH4zO0fSdknPufvGSepzJW1398tz1kP4\ngZIVdmGPNb6e9TFJIxODn30QOO4mSa+daZMAqtPKp/2LJf1N0quSxueCXifpNklXqHHYPyppdfbh\nYGpd7PmBkhV62F8Uwg+Uj+v5ASQRfiAowg8ERfiBoAg/EBThB4Ii/EBQhB8IivADQRF+ICjCDwRF\n+IGgCD8QFOEHgsr9As+CHZG0b8L9mdmyOqprb3XtS6K3dhXZ25xWH9jV6/lPe3GzIXfvrayBhLr2\nVte+JHprV1W9cdgPBEX4gaCqDn9/xa+fUtfe6tqXRG/tqqS3St/zA6hO1Xt+ABWpJPxmttTM3jCz\nt83sgSp6aMbMRs3s1Wzm4UqnGMumQTtsZq9NWHa+mf3ZzN7Kfk86TVpFvdVi5ubEzNKVbru6zXjd\n9cN+M5su6U1J10o6IOlFSbe5+3BXG2nCzEYl9bp75WPCZrZE0jFJj4/PhmRmD0s66u4/z/5wnufu\nP65Jbxt0hjM3l9Rbs5mlv68Kt12RM14XoYo9/yJJb7v7u+7+H0l/kLS8gj5qz913Szr6ucXLJQ1k\ntwfU+MfTdU16qwV3H3P3l7LbH0san1m60m2X6KsSVYT/Qkn/mnD/gOo15bdL2mlme82sr+pmJjFr\nwsxI70maVWUzk8idubmbPjezdG22XTszXheND/xOt9jdvylpmaQ12eFtLXnjPVudhms2S/q6GtO4\njUn6ZZXNZDNLb5P0Q3f/aGKtym03SV+VbLcqwn9Q0sUT7l+ULasFdz+Y/T4s6Rk13qbUyaHxSVKz\n34cr7ud/3P2Qu59091OSfqMKt102s/Q2SU+4+9PZ4sq33WR9VbXdqgj/i5IuNbNLzOyLklZKGqyg\nj9OY2YzsgxiZ2QxJ16l+sw8PSlqV3V4l6dkKe/mMuszc3GxmaVW87Wo347W7d/1H0vVqfOL/jqT1\nVfTQpK+vSXo5+3m96t4kPanGYeAJNT4buUvSlyXtkvSWpL9IOr9Gvf1OjdmcX1EjaLMr6m2xGof0\nr0j6R/ZzfdXbLtFXJduNM/yAoPjADwiK8ANBEX4gKMIPBEX4gaAIPxAU4QeCIvxAUP8FAfaK+yOW\nZZUAAAAASUVORK5CYII=\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Model prediction: 0\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Predict single images\n",
"n_images = 4\n",
@@ -401,23 +234,32 @@
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
- "display_name": "Python 2",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 2
+ "nbformat_minor": 4
}
diff --git a/notebooks/3_NeuralNetworks/convolutional_network_raw.ipynb b/notebooks/3_NeuralNetworks/convolutional_network_raw.ipynb
index d7f2c15d..7e11810e 100644
--- a/notebooks/3_NeuralNetworks/convolutional_network_raw.ipynb
+++ b/notebooks/3_NeuralNetworks/convolutional_network_raw.ipynb
@@ -2,16 +2,14 @@
"cells": [
{
"cell_type": "markdown",
- "metadata": {
- "collapsed": true
- },
+ "metadata": {},
"source": [
"# Convolutional Neural Network Example\n",
"\n",
"Build a convolutional neural network with TensorFlow.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
@@ -33,22 +31,22 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 29,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
"metadata": {
- "collapsed": false
- },
- "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"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"from __future__ import division, print_function, absolute_import\n",
"\n",
@@ -56,15 +54,30 @@
"\n",
"# Import MNIST data\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=True)"
+ "import os\n",
+ "data_path = \"./dataset/convolutional_network_raw/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=True)"
]
},
{
"cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "config = tf.ConfigProto()\n",
+ "config.gpu_options.allow_growth=True \n",
+ "sess = tf.Session(config=config)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {},
"outputs": [],
"source": [
"# Training Parameters\n",
@@ -86,10 +99,8 @@
},
{
"cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 33,
+ "metadata": {},
"outputs": [],
"source": [
"# Create some wrappers for simplicity\n",
@@ -138,10 +149,8 @@
},
{
"cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 34,
+ "metadata": {},
"outputs": [],
"source": [
"# Store layers weight & bias\n",
@@ -184,71 +193,13 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 35,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Step 1, Minibatch Loss= 63763.3047, Training Accuracy= 0.141\n",
- "Step 10, Minibatch Loss= 26429.6680, Training Accuracy= 0.242\n",
- "Step 20, Minibatch Loss= 12171.8584, Training Accuracy= 0.586\n",
- "Step 30, Minibatch Loss= 6306.6318, Training Accuracy= 0.734\n",
- "Step 40, Minibatch Loss= 5113.7583, Training Accuracy= 0.711\n",
- "Step 50, Minibatch Loss= 4022.2131, Training Accuracy= 0.805\n",
- "Step 60, Minibatch Loss= 3125.4949, Training Accuracy= 0.867\n",
- "Step 70, Minibatch Loss= 2225.4875, Training Accuracy= 0.875\n",
- "Step 80, Minibatch Loss= 1843.3540, Training Accuracy= 0.867\n",
- "Step 90, Minibatch Loss= 1715.7744, Training Accuracy= 0.875\n",
- "Step 100, Minibatch Loss= 2611.2708, Training Accuracy= 0.906\n",
- "Step 110, Minibatch Loss= 4804.0913, Training Accuracy= 0.875\n",
- "Step 120, Minibatch Loss= 1067.5258, Training Accuracy= 0.938\n",
- "Step 130, Minibatch Loss= 2519.1514, Training Accuracy= 0.898\n",
- "Step 140, Minibatch Loss= 2687.9292, Training Accuracy= 0.906\n",
- "Step 150, Minibatch Loss= 1983.4077, Training Accuracy= 0.938\n",
- "Step 160, Minibatch Loss= 2844.6553, Training Accuracy= 0.930\n",
- "Step 170, Minibatch Loss= 3602.2524, Training Accuracy= 0.914\n",
- "Step 180, Minibatch Loss= 175.3922, Training Accuracy= 0.961\n",
- "Step 190, Minibatch Loss= 645.1918, Training Accuracy= 0.945\n",
- "Step 200, Minibatch Loss= 1147.6567, Training Accuracy= 0.938\n",
- "Step 210, Minibatch Loss= 1140.4148, Training Accuracy= 0.914\n",
- "Step 220, Minibatch Loss= 1572.8756, Training Accuracy= 0.906\n",
- "Step 230, Minibatch Loss= 1292.9274, Training Accuracy= 0.898\n",
- "Step 240, Minibatch Loss= 1501.4623, Training Accuracy= 0.953\n",
- "Step 250, Minibatch Loss= 1908.2997, Training Accuracy= 0.898\n",
- "Step 260, Minibatch Loss= 2182.2380, Training Accuracy= 0.898\n",
- "Step 270, Minibatch Loss= 487.5807, Training Accuracy= 0.961\n",
- "Step 280, Minibatch Loss= 1284.1130, Training Accuracy= 0.945\n",
- "Step 290, Minibatch Loss= 1232.4919, Training Accuracy= 0.891\n",
- "Step 300, Minibatch Loss= 1198.8336, Training Accuracy= 0.945\n",
- "Step 310, Minibatch Loss= 2010.5345, Training Accuracy= 0.906\n",
- "Step 320, Minibatch Loss= 786.3917, Training Accuracy= 0.945\n",
- "Step 330, Minibatch Loss= 1408.3556, Training Accuracy= 0.898\n",
- "Step 340, Minibatch Loss= 1453.7538, Training Accuracy= 0.953\n",
- "Step 350, Minibatch Loss= 999.8901, Training Accuracy= 0.906\n",
- "Step 360, Minibatch Loss= 914.3958, Training Accuracy= 0.961\n",
- "Step 370, Minibatch Loss= 488.0052, Training Accuracy= 0.938\n",
- "Step 380, Minibatch Loss= 1070.8710, Training Accuracy= 0.922\n",
- "Step 390, Minibatch Loss= 151.4658, Training Accuracy= 0.961\n",
- "Step 400, Minibatch Loss= 555.3539, Training Accuracy= 0.953\n",
- "Step 410, Minibatch Loss= 765.5746, Training Accuracy= 0.945\n",
- "Step 420, Minibatch Loss= 326.9393, Training Accuracy= 0.969\n",
- "Step 430, Minibatch Loss= 530.8968, Training Accuracy= 0.977\n",
- "Step 440, Minibatch Loss= 463.3909, Training Accuracy= 0.977\n",
- "Step 450, Minibatch Loss= 362.2226, Training Accuracy= 0.977\n",
- "Step 460, Minibatch Loss= 414.0034, Training Accuracy= 0.953\n",
- "Step 470, Minibatch Loss= 583.4587, Training Accuracy= 0.945\n",
- "Step 480, Minibatch Loss= 566.1262, Training Accuracy= 0.969\n",
- "Step 490, Minibatch Loss= 691.1143, Training Accuracy= 0.961\n",
- "Step 500, Minibatch Loss= 282.8893, Training Accuracy= 0.984\n",
- "Optimization Finished!\n",
- "Testing Accuracy: 0.976562\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Start training\n",
"with tf.Session() as sess:\n",
@@ -281,23 +232,32 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 2",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.13"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 0
+ "nbformat_minor": 4
}
diff --git a/notebooks/3_NeuralNetworks/dcgan.ipynb b/notebooks/3_NeuralNetworks/dcgan.ipynb
index 661cc74a..da929021 100644
--- a/notebooks/3_NeuralNetworks/dcgan.ipynb
+++ b/notebooks/3_NeuralNetworks/dcgan.ipynb
@@ -2,16 +2,14 @@
"cells": [
{
"cell_type": "markdown",
- "metadata": {
- "collapsed": true
- },
+ "metadata": {},
"source": [
"# Deep Convolutional Generative Adversarial Network Example\n",
"\n",
"Build a deep convolutional generative adversarial network (DCGAN) to generate digit images from a noise distribution with TensorFlow.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
@@ -40,7 +38,22 @@
"cell_type": "code",
"execution_count": 1,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
+ },
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -48,36 +61,48 @@
"\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
+ "import os\n",
"import tensorflow as tf"
]
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 3,
"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"
- ]
+ "outputs": [],
+ "source": [
+ "config = tf.ConfigProto()\n",
+ "config.gpu_options.allow_growth=True \n",
+ "sess = tf.Session(config=config)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Import MNIST data\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=True)"
+ "data_path = \"./dataset/dcgan/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=True)\n"
]
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 5,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -94,9 +119,11 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 6,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -206,41 +233,18 @@
},
{
"cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Step 1: Generator Loss: 3.590350, Discriminator Loss: 1.907586\n",
- "Step 500: Generator Loss: 1.254698, Discriminator Loss: 1.005236\n",
- "Step 1000: Generator Loss: 1.730409, Discriminator Loss: 0.837684\n",
- "Step 1500: Generator Loss: 1.962198, Discriminator Loss: 0.618827\n",
- "Step 2000: Generator Loss: 2.767945, Discriminator Loss: 0.378071\n",
- "Step 2500: Generator Loss: 2.370605, Discriminator Loss: 0.561247\n",
- "Step 3000: Generator Loss: 3.427798, Discriminator Loss: 0.402951\n",
- "Step 3500: Generator Loss: 4.904454, Discriminator Loss: 0.554856\n",
- "Step 4000: Generator Loss: 4.045284, Discriminator Loss: 0.454970\n",
- "Step 4500: Generator Loss: 4.577699, Discriminator Loss: 0.687195\n",
- "Step 5000: Generator Loss: 3.476081, Discriminator Loss: 0.210492\n",
- "Step 5500: Generator Loss: 3.898139, Discriminator Loss: 0.143352\n",
- "Step 6000: Generator Loss: 4.089877, Discriminator Loss: 1.082561\n",
- "Step 6500: Generator Loss: 5.911457, Discriminator Loss: 0.154059\n",
- "Step 7000: Generator Loss: 3.594872, Discriminator Loss: 0.152970\n",
- "Step 7500: Generator Loss: 6.067883, Discriminator Loss: 0.084864\n",
- "Step 8000: Generator Loss: 6.737456, Discriminator Loss: 0.402566\n",
- "Step 8500: Generator Loss: 6.630128, Discriminator Loss: 0.034838\n",
- "Step 9000: Generator Loss: 6.480587, Discriminator Loss: 0.427419\n",
- "Step 9500: Generator Loss: 7.200409, Discriminator Loss: 0.124268\n",
- "Step 10000: Generator Loss: 5.479313, Discriminator Loss: 0.191389\n"
- ]
+ "execution_count": 7,
+ "metadata": {
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Start Training\n",
"# Start a new TF session\n",
- "sess = tf.Session()\n",
+ "\n",
+ "# sess = tf.Session()\n",
"\n",
"# Run the initializer\n",
"sess.run(init)\n",
@@ -271,20 +275,13 @@
},
{
"cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\notDIBQsWAP7im5+fXyyxrjT0+tmzZwPetSTBpOQ+BSGkA53zV111VVLeT+fZxhtvzLJlywCoXbt2\nUt67NMy1YhiGkeXkrCKX0r7vvvsA+OabbwBvtkvtNW7cGIBbb70V8Gnd6TTxKorMt169ehX5Wcj8\n3X///dM6rnUh98eJJ54IwJgxY8JjpfFecUWiZI/CCaMoYaN///6AL1L0wgsvALD33nunYugVQpte\nI0aMALzrbuTIkUC8i7QpwUUblFLVm266aViErqxIcUup6vyKbkwrVT/uG/OF0fei8MNly5aFa3ry\n5MlFXmObnYZhGMZayTlFrmSYrl27AvDRRx8VeV5+PvlPtdkidffVV18BPlxo8803B+KpEOQbL1yi\noDAqJiYVnEmkROUPV6hglSpVwgJD2ghUeGkU+cJvvPHGIu+pEL4WLVoUeb2OdSYLTymxTJZg/fr1\ngcyUOi0r+t4GDRoE+FR1ra86deqUej5E16IsE6Fjp+StYcMSLQwUJqwyC3FEY9c+26WXXgp4Rf7n\nn3+G8y/vhmlFid/VyTAMwygXOaXIFyxYwGWXXQb48pjyVemOqJ1qhR5pZ15hiEoukR9W/udzzjkH\niJeSeumll4Di0SryPyqKo1+/fukd2FpQESGpPB2XPfbYg5tuugkoXkJAqkYWhUL15s+fX+T3KuD0\n7LPPAj7K4qijjgJgl13WWUU5JUi13XXXXYCf75VXXlnk95qb1qGSTd58800gUc423clpCmdVcwuN\nVaxatSp8TmtN81MJggcffBCAzz77DPDRKNESsJq/fq9knDgyZswYoPg61JxkpTjnQotfJUFMkRuG\nYRjrpMKNJZJJWRtLlITUQOvWrcNdYt0ltSt+yCGHAD6dX80HpAKltKUc5dNTbLPU76GHHlrhcSYL\nWRNKGZY1oWMpq0MlNDX2TKBjU69ePcD7FXVcWrVqFUbb6HdK9JFvW7G4UqsqOCWipYnV0u6TTz4B\nMhNPrnlrfWmOarunufbt2xfw/n/NXce4efPmTJgwIU2jTqCytR06dAD89y7+85//0LFjRwA6d060\n5FWij/5W548UuxS39nVkgUipynpS9EocGmpob0Bz1XmmY6RjrLmpXeS3334bzk8JQfrb8lj0aWks\nYRiGYcSDnPCR664/e/bsYkpcad6KpdZuuO6em222GeDvrirsr9fLh6dGAIoQyaQvT4pUpXejVpUU\n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\ndxzHqXD+H+DTZ0YHtS3wAAAAAElFTkSuQmCC\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
+ "execution_count": 8,
+ "metadata": {
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Testing\n",
"# Generate images from noise, using the generator network.\n",
@@ -311,23 +308,32 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 2",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 2
+ "nbformat_minor": 4
}
diff --git a/notebooks/3_NeuralNetworks/dynamic_rnn.ipynb b/notebooks/3_NeuralNetworks/dynamic_rnn.ipynb
index 31aa32ee..ba0b40ad 100644
--- a/notebooks/3_NeuralNetworks/dynamic_rnn.ipynb
+++ b/notebooks/3_NeuralNetworks/dynamic_rnn.ipynb
@@ -9,7 +9,7 @@
"TensorFlow implementation of a Recurrent Neural Network (LSTM) that performs dynamic computation over sequences with variable length. This example is using a toy dataset to classify linear sequences. The generated sequences have variable length.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
@@ -27,9 +27,16 @@
{
"cell_type": "code",
"execution_count": 1,
- "metadata": {
- "collapsed": true
- },
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
"outputs": [],
"source": [
"from __future__ import print_function\n",
@@ -40,10 +47,18 @@
},
{
"cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "config = tf.ConfigProto()\n",
+ "config.gpu_options.allow_growth=True "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
"outputs": [],
"source": [
"# ====================\n",
@@ -109,10 +124,8 @@
},
{
"cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 5,
+ "metadata": {},
"outputs": [],
"source": [
"# ==========\n",
@@ -150,10 +163,8 @@
},
{
"cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 6,
+ "metadata": {},
"outputs": [],
"source": [
"def dynamicRNN(x, seqlen, weights, biases):\n",
@@ -198,20 +209,13 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 7,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/Users/aymeric.damien/anaconda2/lib/python2.7/site-packages/tensorflow/python/ops/gradients_impl.py:93: UserWarning: Converting sparse IndexedSlices to a dense Tensor of unknown shape. This may consume a large amount of memory.\n",
- " \"Converting sparse IndexedSlices to a dense Tensor of unknown shape. \"\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"pred = dynamicRNN(x, seqlen, weights, biases)\n",
"\n",
@@ -229,75 +233,16 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 8,
"metadata": {
- "collapsed": false,
- "scrolled": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Step 1, Minibatch Loss= 0.864517, Training Accuracy= 0.42188\n",
- "Step 200, Minibatch Loss= 0.686012, Training Accuracy= 0.43269\n",
- "Step 400, Minibatch Loss= 0.682970, Training Accuracy= 0.48077\n",
- "Step 600, Minibatch Loss= 0.679640, Training Accuracy= 0.50962\n",
- "Step 800, Minibatch Loss= 0.675208, Training Accuracy= 0.53846\n",
- "Step 1000, Minibatch Loss= 0.668636, Training Accuracy= 0.56731\n",
- "Step 1200, Minibatch Loss= 0.657525, Training Accuracy= 0.62500\n",
- "Step 1400, Minibatch Loss= 0.635423, Training Accuracy= 0.67308\n",
- "Step 1600, Minibatch Loss= 0.580433, Training Accuracy= 0.75962\n",
- "Step 1800, Minibatch Loss= 0.475599, Training Accuracy= 0.81731\n",
- "Step 2000, Minibatch Loss= 0.434865, Training Accuracy= 0.83654\n",
- "Step 2200, Minibatch Loss= 0.423690, Training Accuracy= 0.85577\n",
- "Step 2400, Minibatch Loss= 0.417472, Training Accuracy= 0.85577\n",
- "Step 2600, Minibatch Loss= 0.412906, Training Accuracy= 0.85577\n",
- "Step 2800, Minibatch Loss= 0.409193, Training Accuracy= 0.85577\n",
- "Step 3000, Minibatch Loss= 0.406035, Training Accuracy= 0.86538\n",
- "Step 3200, Minibatch Loss= 0.403287, Training Accuracy= 0.87500\n",
- "Step 3400, Minibatch Loss= 0.400862, Training Accuracy= 0.87500\n",
- "Step 3600, Minibatch Loss= 0.398704, Training Accuracy= 0.86538\n",
- "Step 3800, Minibatch Loss= 0.396768, Training Accuracy= 0.86538\n",
- "Step 4000, Minibatch Loss= 0.395017, Training Accuracy= 0.86538\n",
- "Step 4200, Minibatch Loss= 0.393422, Training Accuracy= 0.86538\n",
- "Step 4400, Minibatch Loss= 0.391957, Training Accuracy= 0.85577\n",
- "Step 4600, Minibatch Loss= 0.390600, Training Accuracy= 0.85577\n",
- "Step 4800, Minibatch Loss= 0.389334, Training Accuracy= 0.86538\n",
- "Step 5000, Minibatch Loss= 0.388143, Training Accuracy= 0.86538\n",
- "Step 5200, Minibatch Loss= 0.387015, Training Accuracy= 0.86538\n",
- "Step 5400, Minibatch Loss= 0.385940, Training Accuracy= 0.86538\n",
- "Step 5600, Minibatch Loss= 0.384907, Training Accuracy= 0.86538\n",
- "Step 5800, Minibatch Loss= 0.383904, Training Accuracy= 0.85577\n",
- "Step 6000, Minibatch Loss= 0.382921, Training Accuracy= 0.86538\n",
- "Step 6200, Minibatch Loss= 0.381941, Training Accuracy= 0.86538\n",
- "Step 6400, Minibatch Loss= 0.380947, Training Accuracy= 0.86538\n",
- "Step 6600, Minibatch Loss= 0.379912, Training Accuracy= 0.86538\n",
- "Step 6800, Minibatch Loss= 0.378796, Training Accuracy= 0.86538\n",
- "Step 7000, Minibatch Loss= 0.377540, Training Accuracy= 0.86538\n",
- "Step 7200, Minibatch Loss= 0.376041, Training Accuracy= 0.86538\n",
- "Step 7400, Minibatch Loss= 0.374130, Training Accuracy= 0.85577\n",
- "Step 7600, Minibatch Loss= 0.371514, Training Accuracy= 0.85577\n",
- "Step 7800, Minibatch Loss= 0.367723, Training Accuracy= 0.85577\n",
- "Step 8000, Minibatch Loss= 0.362049, Training Accuracy= 0.85577\n",
- "Step 8200, Minibatch Loss= 0.353558, Training Accuracy= 0.85577\n",
- "Step 8400, Minibatch Loss= 0.341072, Training Accuracy= 0.86538\n",
- "Step 8600, Minibatch Loss= 0.323062, Training Accuracy= 0.87500\n",
- "Step 8800, Minibatch Loss= 0.299278, Training Accuracy= 0.89423\n",
- "Step 9000, Minibatch Loss= 0.273857, Training Accuracy= 0.90385\n",
- "Step 9200, Minibatch Loss= 0.248392, Training Accuracy= 0.91346\n",
- "Step 9400, Minibatch Loss= 0.221348, Training Accuracy= 0.92308\n",
- "Step 9600, Minibatch Loss= 0.191947, Training Accuracy= 0.92308\n",
- "Step 9800, Minibatch Loss= 0.159308, Training Accuracy= 0.93269\n",
- "Step 10000, Minibatch Loss= 0.136938, Training Accuracy= 0.96154\n",
- "Optimization Finished!\n",
- "Testing Accuracy: 0.952\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Start training\n",
- "with tf.Session() as sess:\n",
+ "with tf.Session(config=config) as sess:\n",
"\n",
" # Run the initializer\n",
" sess.run(init)\n",
@@ -330,23 +275,23 @@
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
- "display_name": "Python [default]",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
}
},
"nbformat": 4,
- "nbformat_minor": 1
+ "nbformat_minor": 4
}
diff --git a/notebooks/3_NeuralNetworks/gan.ipynb b/notebooks/3_NeuralNetworks/gan.ipynb
index 1bfb0bd5..8725214b 100644
--- a/notebooks/3_NeuralNetworks/gan.ipynb
+++ b/notebooks/3_NeuralNetworks/gan.ipynb
@@ -2,16 +2,14 @@
"cells": [
{
"cell_type": "markdown",
- "metadata": {
- "collapsed": true
- },
+ "metadata": {},
"source": [
"# Generative Adversarial Network Example\n",
"\n",
"Build a generative adversarial network (GAN) to generate digit images from a noise distribution with TensorFlow.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
@@ -40,47 +38,47 @@
},
{
"cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 69,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 70,
+ "metadata": {},
"outputs": [],
"source": [
"from __future__ import division, print_function, absolute_import\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
+ "import os\n",
"import tensorflow as tf"
]
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 71,
"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"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Import MNIST data\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=True)"
+ "data_path = \"./dataset/gan/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=True)"
]
},
{
"cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 72,
+ "metadata": {},
"outputs": [],
"source": [
"# Training Params\n",
@@ -101,10 +99,8 @@
},
{
"cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 73,
+ "metadata": {},
"outputs": [],
"source": [
"# Store layers weight & bias\n",
@@ -124,10 +120,8 @@
},
{
"cell_type": "code",
- "execution_count": 5,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 74,
+ "metadata": {},
"outputs": [],
"source": [
"# Generator\n",
@@ -191,56 +185,16 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 75,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Step 1: Generator Loss: 0.774581, Discriminator Loss: 1.300602\n",
- "Step 2000: Generator Loss: 4.521158, Discriminator Loss: 0.030166\n",
- "Step 4000: Generator Loss: 3.685439, Discriminator Loss: 0.125958\n",
- "Step 6000: Generator Loss: 4.412449, Discriminator Loss: 0.097088\n",
- "Step 8000: Generator Loss: 3.996747, Discriminator Loss: 0.150800\n",
- "Step 10000: Generator Loss: 3.850827, Discriminator Loss: 0.225699\n",
- "Step 12000: Generator Loss: 2.950704, Discriminator Loss: 0.279967\n",
- "Step 14000: Generator Loss: 3.741951, Discriminator Loss: 0.241062\n",
- "Step 16000: Generator Loss: 3.117743, Discriminator Loss: 0.432293\n",
- "Step 18000: Generator Loss: 3.647199, Discriminator Loss: 0.278121\n",
- "Step 20000: Generator Loss: 3.186711, Discriminator Loss: 0.313830\n",
- "Step 22000: Generator Loss: 3.737114, Discriminator Loss: 0.201730\n",
- "Step 24000: Generator Loss: 3.042442, Discriminator Loss: 0.454414\n",
- "Step 26000: Generator Loss: 3.340376, Discriminator Loss: 0.249428\n",
- "Step 28000: Generator Loss: 3.423218, Discriminator Loss: 0.369653\n",
- "Step 30000: Generator Loss: 3.219242, Discriminator Loss: 0.463535\n",
- "Step 32000: Generator Loss: 3.313017, Discriminator Loss: 0.276070\n",
- "Step 34000: Generator Loss: 3.413397, Discriminator Loss: 0.367721\n",
- "Step 36000: Generator Loss: 3.240625, Discriminator Loss: 0.446160\n",
- "Step 38000: Generator Loss: 3.175355, Discriminator Loss: 0.377628\n",
- "Step 40000: Generator Loss: 3.154558, Discriminator Loss: 0.478812\n",
- "Step 42000: Generator Loss: 3.210753, Discriminator Loss: 0.497502\n",
- "Step 44000: Generator Loss: 2.883431, Discriminator Loss: 0.395812\n",
- "Step 46000: Generator Loss: 2.584176, Discriminator Loss: 0.420783\n",
- "Step 48000: Generator Loss: 2.581381, Discriminator Loss: 0.469289\n",
- "Step 50000: Generator Loss: 2.752729, Discriminator Loss: 0.373544\n",
- "Step 52000: Generator Loss: 2.649749, Discriminator Loss: 0.463755\n",
- "Step 54000: Generator Loss: 2.468188, Discriminator Loss: 0.556129\n",
- "Step 56000: Generator Loss: 2.653330, Discriminator Loss: 0.377572\n",
- "Step 58000: Generator Loss: 2.697943, Discriminator Loss: 0.424133\n",
- "Step 60000: Generator Loss: 2.835973, Discriminator Loss: 0.413252\n",
- "Step 62000: Generator Loss: 2.751346, Discriminator Loss: 0.403332\n",
- "Step 64000: Generator Loss: 3.212001, Discriminator Loss: 0.534427\n",
- "Step 66000: Generator Loss: 2.878227, Discriminator Loss: 0.431244\n",
- "Step 68000: Generator Loss: 3.104266, Discriminator Loss: 0.426825\n",
- "Step 70000: Generator Loss: 2.871485, Discriminator Loss: 0.348638\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Start Training\n",
"# Start a new TF session\n",
- "sess = tf.Session()\n",
+ "config = tf.ConfigProto()\n",
+ "config.gpu_options.allow_growth=True \n",
+ "sess = tf.Session(config=config)\n",
+ "# sess = tf.Session()\n",
"\n",
"# Run the initializer\n",
"sess.run(init)\n",
@@ -263,20 +217,9 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 76,
"metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
+ "outputs": [],
"source": [
"# Testing\n",
"# Generate images from noise, using the generator network.\n",
@@ -301,23 +244,32 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 2",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 2
+ "nbformat_minor": 4
}
diff --git a/notebooks/3_NeuralNetworks/neural_network.ipynb b/notebooks/3_NeuralNetworks/neural_network.ipynb
index 62e70727..714572ea 100644
--- a/notebooks/3_NeuralNetworks/neural_network.ipynb
+++ b/notebooks/3_NeuralNetworks/neural_network.ipynb
@@ -11,7 +11,7 @@
"This example is using some of TensorFlow higher-level wrappers (tf.estimators, tf.layers, tf.metrics, ...), you can check 'neural_network_raw' example for a raw, and more detailed TensorFlow implementation.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
@@ -35,24 +35,27 @@
"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"
- ]
- }
- ],
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
"source": [
"from __future__ import print_function\n",
- "\n",
+ "import os\n",
"# Import MNIST data\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=False)\n",
+ "data_path = \"./dataset/neural_network/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=False)\n",
"\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
@@ -61,10 +64,8 @@
},
{
"cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 3,
+ "metadata": {},
"outputs": [],
"source": [
"# Parameters\n",
@@ -82,10 +83,8 @@
},
{
"cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 4,
+ "metadata": {},
"outputs": [],
"source": [
"# Define the input function for training\n",
@@ -96,10 +95,8 @@
},
{
"cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 5,
+ "metadata": {},
"outputs": [],
"source": [
"# Define the neural network\n",
@@ -117,10 +114,8 @@
},
{
"cell_type": "code",
- "execution_count": 5,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 6,
+ "metadata": {},
"outputs": [],
"source": [
"# Define the model function (following TF Estimator Template)\n",
@@ -160,19 +155,9 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 7,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "INFO:tensorflow:Using default config.\n",
- "WARNING:tensorflow:Using temporary folder as model directory: /tmp/tmpu7vjLA\n",
- "INFO:tensorflow:Using config: {'_save_checkpoints_secs': 600, '_session_config': None, '_keep_checkpoint_max': 5, '_tf_random_seed': 1, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_save_checkpoints_steps': None, '_model_dir': '/tmp/tmpu7vjLA', '_save_summary_steps': 100}\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Build the Estimator\n",
"model = tf.estimator.Estimator(model_fn)"
@@ -180,51 +165,9 @@
},
{
"cell_type": "code",
- "execution_count": 7,
- "metadata": {
- "scrolled": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "INFO:tensorflow:Create CheckpointSaverHook.\n",
- "INFO:tensorflow:Saving checkpoints for 1 into /tmp/tmpu7vjLA/model.ckpt.\n",
- "INFO:tensorflow:loss = 2.44919, step = 1\n",
- "INFO:tensorflow:global_step/sec: 602.544\n",
- "INFO:tensorflow:loss = 0.344767, step = 101 (0.167 sec)\n",
- "INFO:tensorflow:global_step/sec: 618.839\n",
- "INFO:tensorflow:loss = 0.277633, step = 201 (0.162 sec)\n",
- "INFO:tensorflow:global_step/sec: 626.418\n",
- "INFO:tensorflow:loss = 0.407796, step = 301 (0.160 sec)\n",
- "INFO:tensorflow:global_step/sec: 624.765\n",
- "INFO:tensorflow:loss = 0.376889, step = 401 (0.160 sec)\n",
- "INFO:tensorflow:global_step/sec: 624.091\n",
- "INFO:tensorflow:loss = 0.319697, step = 501 (0.160 sec)\n",
- "INFO:tensorflow:global_step/sec: 616.907\n",
- "INFO:tensorflow:loss = 0.39049, step = 601 (0.162 sec)\n",
- "INFO:tensorflow:global_step/sec: 623.371\n",
- "INFO:tensorflow:loss = 0.336831, step = 701 (0.161 sec)\n",
- "INFO:tensorflow:global_step/sec: 617.429\n",
- "INFO:tensorflow:loss = 0.312776, step = 801 (0.162 sec)\n",
- "INFO:tensorflow:global_step/sec: 620.825\n",
- "INFO:tensorflow:loss = 0.312817, step = 901 (0.161 sec)\n",
- "INFO:tensorflow:Saving checkpoints for 1000 into /tmp/tmpu7vjLA/model.ckpt.\n",
- "INFO:tensorflow:Loss for final step: 0.24931.\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 7,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
"source": [
"# Train the Model\n",
"model.train(input_fn, steps=num_steps)"
@@ -232,30 +175,9 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": 9,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "INFO:tensorflow:Starting evaluation at 2017-08-21-13:57:02\n",
- "INFO:tensorflow:Restoring parameters from /tmp/tmpu7vjLA/model.ckpt-1000\n",
- "INFO:tensorflow:Finished evaluation at 2017-08-21-13:57:02\n",
- "INFO:tensorflow:Saving dict for global step 1000: accuracy = 0.9189, global_step = 1000, loss = 0.286567\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "{'accuracy': 0.91890001, 'global_step': 1000, 'loss': 0.28656715}"
- ]
- },
- "execution_count": 8,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"# Evaluate the Model\n",
"# Define the input function for evaluating\n",
@@ -268,85 +190,9 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": 10,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "INFO:tensorflow:Restoring parameters from /tmp/tmpu7vjLA/model.ckpt-1000\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n/LPVtEE0qL0Nal8SvbWrm71d3uqMff2Qz8c2bo8N6nf7DWpvg9qXRG/tqqs3DvuBpAg/kFTd4R+t\nefslg9rboPYl0Vu7aumt1nN+APWpe88PoCa1hN/2Mtv7bB+w/UAdPTRi+7DtXbZfrXuIsWoYtJO2\nd0+ZNs/2s7bfqn5PO0xaTb2ts320eu1etb28pt4W2P6j7Tds77H97Wp6ra9doa9aXre+H/bbniVp\nv6Q7JI1LelnSvRHxRl8bacD2YUnDEVH7NWHbX5J0RtIjEXFNNe0hSRMR8cPqH+fciPjegPS2TtKZ\nukdurgaUGZo6srSkuyR9QzW+doW+7lENr1sde/4bJR2IiEMR8XdJv5a0ooY+Bl5EbJd07qgZKyRt\nrB5v1OQfT9816G0gRMSxiHilenxa0kcjS9f62hX6qkUd4b9U0pEpz8c1WEN+h6SttnfaHqm7mWnM\nr4ZNl6TjkubX2cw0mo7c3E/njCw9MK9dOyNedxtv+H3ckoi4TtL/SVpTHd4OpJg8ZxukyzUtjdzc\nL9OMLP0vdb527Y543W11hP+opAVTnn+umjYQIuJo9fukpN9p8EYfPvHRIKnV75M19/MvgzRy83Qj\nS2sAXrtBGvG6jvC/LOkK25+3/WlJX5O0pYY+Psb2hdUbMbJ9oaQva/BGH94iaVX1eJWkJ2rs5T8M\nysjNjUaWVs2v3cCNeB0Rff+RtFyT7/gflPT9Onpo0Nd/S3qt+tlTd2+SHtXkYeA/NPneyDclXSRp\nm6S3JP1B0rwB6u1XknZJel2TQRuqqbclmjykf13Sq9XP8rpfu0JftbxufMIPSIo3/ICkCD+QFOEH\nkiL8QFKEH0iK8ANJEX4gKcIPJPVP82g/p9/JjhUAAAAASUVORK5CYII=\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Model prediction: 7\n"
- ]
- },
- {
- "data": {
- "image/png": "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\nTkSuQmCC\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Model prediction: 2\n"
- ]
- },
- {
- "data": {
- "image/png": "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\nAABJRU5ErkJggg==\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Model prediction: 1\n"
- ]
- },
- {
- "data": {
- "image/png": "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\nXEl/lfQzd3/azGZJOiLJJf1UjbcGd+asg8N+oGStHva3FH4zO0fSdknPufvGSepzJW1398tz1kP4\ngZIVdmGPNb6e9TFJIxODn30QOO4mSa+daZMAqtPKp/2LJf1N0quSxueCXifpNklXqHHYPyppdfbh\nYGpd7PmBkhV62F8Uwg+Uj+v5ASQRfiAowg8ERfiBoAg/EBThB4Ii/EBQhB8IivADQRF+ICjCDwRF\n+IGgCD8QFOEHgsr9As+CHZG0b8L9mdmyOqprb3XtS6K3dhXZ25xWH9jV6/lPe3GzIXfvrayBhLr2\nVte+JHprV1W9cdgPBEX4gaCqDn9/xa+fUtfe6tqXRG/tqqS3St/zA6hO1Xt+ABWpJPxmttTM3jCz\nt83sgSp6aMbMRs3s1Wzm4UqnGMumQTtsZq9NWHa+mf3ZzN7Kfk86TVpFvdVi5ubEzNKVbru6zXjd\n9cN+M5su6U1J10o6IOlFSbe5+3BXG2nCzEYl9bp75WPCZrZE0jFJj4/PhmRmD0s66u4/z/5wnufu\nP65Jbxt0hjM3l9Rbs5mlv68Kt12RM14XoYo9/yJJb7v7u+7+H0l/kLS8gj5qz913Szr6ucXLJQ1k\ntwfU+MfTdU16qwV3H3P3l7LbH0san1m60m2X6KsSVYT/Qkn/mnD/gOo15bdL2mlme82sr+pmJjFr\nwsxI70maVWUzk8idubmbPjezdG22XTszXheND/xOt9jdvylpmaQ12eFtLXnjPVudhms2S/q6GtO4\njUn6ZZXNZDNLb5P0Q3f/aGKtym03SV+VbLcqwn9Q0sUT7l+ULasFdz+Y/T4s6Rk13qbUyaHxSVKz\n34cr7ud/3P2Qu59091OSfqMKt102s/Q2SU+4+9PZ4sq33WR9VbXdqgj/i5IuNbNLzOyLklZKGqyg\nj9OY2YzsgxiZ2QxJ16l+sw8PSlqV3V4l6dkKe/mMuszc3GxmaVW87Wo347W7d/1H0vVqfOL/jqT1\nVfTQpK+vSXo5+3m96t4kPanGYeAJNT4buUvSlyXtkvSWpL9IOr9Gvf1OjdmcX1EjaLMr6m2xGof0\nr0j6R/ZzfdXbLtFXJduNM/yAoPjADwiK8ANBEX4gKMIPBEX4gaAIPxAU4QeCIvxAUP8FAfaK+yOW\nZZUAAAAASUVORK5CYII=\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Model prediction: 0\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Predict single images\n",
"n_images = 4\n",
@@ -368,23 +214,32 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 2",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 1
+ "nbformat_minor": 4
}
diff --git a/notebooks/3_NeuralNetworks/neural_network_eager_api.ipynb b/notebooks/3_NeuralNetworks/neural_network_eager_api.ipynb
index 346f2e5d..551bf0d3 100644
--- a/notebooks/3_NeuralNetworks/neural_network_eager_api.ipynb
+++ b/notebooks/3_NeuralNetworks/neural_network_eager_api.ipynb
@@ -2,7 +2,11 @@
"cells": [
{
"cell_type": "markdown",
- "metadata": {},
+ "metadata": {
+ "pycharm": {
+ "name": "#%% md\n"
+ }
+ },
"source": [
"# Neural Network with Eager API\n",
"\n",
@@ -11,7 +15,7 @@
"This example is using some of TensorFlow higher-level wrappers (tf.estimators, tf.layers, tf.metrics, ...), you can check 'neural_network_raw' example for a raw, and more detailed TensorFlow implementation.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
@@ -33,9 +37,24 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
+ },
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -46,9 +65,11 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": null,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -59,31 +80,32 @@
},
{
"cell_type": "code",
- "execution_count": 3,
- "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": {
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Import MNIST data\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=False)"
+ "import os\n",
+ "data_path = \"./dataset/neural_network_eager_api/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=False)"
]
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": null,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -102,9 +124,11 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -117,9 +141,11 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": null,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -149,9 +175,11 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": null,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -178,28 +206,13 @@
},
{
"cell_type": "code",
- "execution_count": 8,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Initial loss= 2.340397596\n",
- "Step: 0001 loss= 2.340397596 accuracy= 0.0703\n",
- "Step: 0100 loss= 0.586046159 accuracy= 0.8305\n",
- "Step: 0200 loss= 0.253318846 accuracy= 0.9282\n",
- "Step: 0300 loss= 0.214748293 accuracy= 0.9377\n",
- "Step: 0400 loss= 0.180644721 accuracy= 0.9466\n",
- "Step: 0500 loss= 0.137285724 accuracy= 0.9591\n",
- "Step: 0600 loss= 0.119845696 accuracy= 0.9636\n",
- "Step: 0700 loss= 0.113618039 accuracy= 0.9665\n",
- "Step: 0800 loss= 0.109642141 accuracy= 0.9676\n",
- "Step: 0900 loss= 0.085067607 accuracy= 0.9746\n",
- "Step: 1000 loss= 0.079819344 accuracy= 0.9754\n"
- ]
+ "execution_count": null,
+ "metadata": {
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Training\n",
"average_loss = 0.\n",
@@ -242,17 +255,13 @@
},
{
"cell_type": "code",
- "execution_count": 9,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Testset Accuracy: 0.9719\n"
- ]
+ "execution_count": null,
+ "metadata": {
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Evaluate model on the test image set\n",
"testX = mnist.test.images\n",
@@ -265,23 +274,32 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 2",
+ "display_name": "PyCharm (jupyterconverter)",
"language": "python",
- "name": "python2"
+ "name": "pycharm-3058efaf"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.14"
+ "pygments_lexer": "ipython3",
+ "version": "3.6.8"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "source": [],
+ "metadata": {
+ "collapsed": false
+ }
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 1
+ "nbformat_minor": 4
}
diff --git a/notebooks/3_NeuralNetworks/neural_network_raw.ipynb b/notebooks/3_NeuralNetworks/neural_network_raw.ipynb
index 6d9dbd24..e9e67270 100644
--- a/notebooks/3_NeuralNetworks/neural_network_raw.ipynb
+++ b/notebooks/3_NeuralNetworks/neural_network_raw.ipynb
@@ -2,18 +2,23 @@
"cells": [
{
"cell_type": "markdown",
- "metadata": {
- "collapsed": true
- },
+ "metadata": {},
"source": [
"# Neural Network Example\n",
"\n",
"Build a 2-hidden layers fully connected neural network (a.k.a multilayer perceptron) with TensorFlow.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
{
"cell_type": "markdown",
"metadata": {},
@@ -33,38 +38,51 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
"metadata": {
- "collapsed": false
- },
- "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"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"from __future__ import print_function\n",
- "\n",
+ "import os\n",
"# Import MNIST data\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=True)\n",
+ "data_path = \"./dataset/neural_network/raw/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=True)\n",
"\n",
"import tensorflow as tf"
]
},
{
"cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "config = tf.ConfigProto()\n",
+ "config.gpu_options.allow_growth=True "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {},
"outputs": [],
"source": [
"# Parameters\n",
@@ -86,10 +104,8 @@
},
{
"cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 30,
+ "metadata": {},
"outputs": [],
"source": [
"# Store layers weight & bias\n",
@@ -107,9 +123,11 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 31,
"metadata": {
- "collapsed": false
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -126,9 +144,11 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 32,
"metadata": {
- "collapsed": false
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -151,29 +171,16 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 33,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Step 1, Minibatch Loss= 13208.1406, Training Accuracy= 0.266\n",
- "Step 100, Minibatch Loss= 462.8610, Training Accuracy= 0.867\n",
- "Step 200, Minibatch Loss= 232.8298, Training Accuracy= 0.844\n",
- "Step 300, Minibatch Loss= 85.2141, Training Accuracy= 0.891\n",
- "Step 400, Minibatch Loss= 38.0552, Training Accuracy= 0.883\n",
- "Step 500, Minibatch Loss= 55.3689, Training Accuracy= 0.867\n",
- "Optimization Finished!\n",
- "Testing Accuracy: 0.8729\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Start training\n",
- "with tf.Session() as sess:\n",
+ "with tf.Session(config=config) as sess:\n",
"\n",
" # Run the initializer\n",
" sess.run(init)\n",
@@ -202,23 +209,32 @@
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
- "display_name": "Python 2",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.13"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 0
+ "nbformat_minor": 4
}
diff --git a/notebooks/3_NeuralNetworks/recurrent_network.ipynb b/notebooks/3_NeuralNetworks/recurrent_network.ipynb
index 48fe57a8..92a5e555 100644
--- a/notebooks/3_NeuralNetworks/recurrent_network.ipynb
+++ b/notebooks/3_NeuralNetworks/recurrent_network.ipynb
@@ -2,16 +2,14 @@
"cells": [
{
"cell_type": "markdown",
- "metadata": {
- "collapsed": true
- },
+ "metadata": {},
"source": [
"# Recurrent Neural Network Example\n",
"\n",
"Build a recurrent neural network (LSTM) with TensorFlow.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
@@ -39,37 +37,56 @@
{
"cell_type": "code",
"execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
"metadata": {
- "collapsed": false
- },
- "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"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"from __future__ import print_function\n",
"\n",
"import tensorflow as tf\n",
+ "import os\n",
"from tensorflow.contrib import rnn\n",
"\n",
"# Import MNIST data\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=True)"
+ "data_path = \"./dataset/recurrent_network/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=True)"
]
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "config = tf.ConfigProto()\n",
+ "config.gpu_options.allow_growth=True \n",
+ "# sess = tf.Session(config=config)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
"metadata": {
- "collapsed": false
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -92,10 +109,8 @@
},
{
"cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 5,
+ "metadata": {},
"outputs": [],
"source": [
"# Define weights\n",
@@ -109,9 +124,11 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 6,
"metadata": {
- "collapsed": false
+ "jupyter": {
+ "outputs_hidden": false
+ }
},
"outputs": [],
"source": [
@@ -136,10 +153,8 @@
},
{
"cell_type": "code",
- "execution_count": 5,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 7,
+ "metadata": {},
"outputs": [],
"source": [
"logits = RNN(X, weights, biases)\n",
@@ -161,74 +176,16 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 8,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Step 1, Minibatch Loss= 2.6268, Training Accuracy= 0.102\n",
- "Step 200, Minibatch Loss= 2.0722, Training Accuracy= 0.328\n",
- "Step 400, Minibatch Loss= 1.9181, Training Accuracy= 0.336\n",
- "Step 600, Minibatch Loss= 1.8858, Training Accuracy= 0.336\n",
- "Step 800, Minibatch Loss= 1.7022, Training Accuracy= 0.422\n",
- "Step 1000, Minibatch Loss= 1.6365, Training Accuracy= 0.477\n",
- "Step 1200, Minibatch Loss= 1.6691, Training Accuracy= 0.516\n",
- "Step 1400, Minibatch Loss= 1.4626, Training Accuracy= 0.547\n",
- "Step 1600, Minibatch Loss= 1.4707, Training Accuracy= 0.539\n",
- "Step 1800, Minibatch Loss= 1.4087, Training Accuracy= 0.570\n",
- "Step 2000, Minibatch Loss= 1.3033, Training Accuracy= 0.570\n",
- "Step 2200, Minibatch Loss= 1.3773, Training Accuracy= 0.508\n",
- "Step 2400, Minibatch Loss= 1.3092, Training Accuracy= 0.570\n",
- "Step 2600, Minibatch Loss= 1.2272, Training Accuracy= 0.609\n",
- "Step 2800, Minibatch Loss= 1.1827, Training Accuracy= 0.633\n",
- "Step 3000, Minibatch Loss= 1.0453, Training Accuracy= 0.641\n",
- "Step 3200, Minibatch Loss= 1.0400, Training Accuracy= 0.648\n",
- "Step 3400, Minibatch Loss= 1.1145, Training Accuracy= 0.656\n",
- "Step 3600, Minibatch Loss= 0.9884, Training Accuracy= 0.688\n",
- "Step 3800, Minibatch Loss= 1.0395, Training Accuracy= 0.703\n",
- "Step 4000, Minibatch Loss= 1.0096, Training Accuracy= 0.664\n",
- "Step 4200, Minibatch Loss= 0.8806, Training Accuracy= 0.758\n",
- "Step 4400, Minibatch Loss= 0.9090, Training Accuracy= 0.766\n",
- "Step 4600, Minibatch Loss= 1.0060, Training Accuracy= 0.703\n",
- "Step 4800, Minibatch Loss= 0.8954, Training Accuracy= 0.703\n",
- "Step 5000, Minibatch Loss= 0.8163, Training Accuracy= 0.750\n",
- "Step 5200, Minibatch Loss= 0.7620, Training Accuracy= 0.773\n",
- "Step 5400, Minibatch Loss= 0.7388, Training Accuracy= 0.758\n",
- "Step 5600, Minibatch Loss= 0.7604, Training Accuracy= 0.695\n",
- "Step 5800, Minibatch Loss= 0.7459, Training Accuracy= 0.734\n",
- "Step 6000, Minibatch Loss= 0.7448, Training Accuracy= 0.734\n",
- "Step 6200, Minibatch Loss= 0.7208, Training Accuracy= 0.773\n",
- "Step 6400, Minibatch Loss= 0.6557, Training Accuracy= 0.773\n",
- "Step 6600, Minibatch Loss= 0.8616, Training Accuracy= 0.758\n",
- "Step 6800, Minibatch Loss= 0.6089, Training Accuracy= 0.773\n",
- "Step 7000, Minibatch Loss= 0.5020, Training Accuracy= 0.844\n",
- "Step 7200, Minibatch Loss= 0.5980, Training Accuracy= 0.812\n",
- "Step 7400, Minibatch Loss= 0.6786, Training Accuracy= 0.766\n",
- "Step 7600, Minibatch Loss= 0.4891, Training Accuracy= 0.859\n",
- "Step 7800, Minibatch Loss= 0.7042, Training Accuracy= 0.797\n",
- "Step 8000, Minibatch Loss= 0.4200, Training Accuracy= 0.859\n",
- "Step 8200, Minibatch Loss= 0.6442, Training Accuracy= 0.742\n",
- "Step 8400, Minibatch Loss= 0.5569, Training Accuracy= 0.828\n",
- "Step 8600, Minibatch Loss= 0.5838, Training Accuracy= 0.836\n",
- "Step 8800, Minibatch Loss= 0.5579, Training Accuracy= 0.812\n",
- "Step 9000, Minibatch Loss= 0.4337, Training Accuracy= 0.867\n",
- "Step 9200, Minibatch Loss= 0.4366, Training Accuracy= 0.844\n",
- "Step 9400, Minibatch Loss= 0.5051, Training Accuracy= 0.844\n",
- "Step 9600, Minibatch Loss= 0.5244, Training Accuracy= 0.805\n",
- "Step 9800, Minibatch Loss= 0.4932, Training Accuracy= 0.805\n",
- "Step 10000, Minibatch Loss= 0.4833, Training Accuracy= 0.852\n",
- "Optimization Finished!\n",
- "Testing Accuracy: 0.882812\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Start training\n",
- "with tf.Session() as sess:\n",
+ "with tf.Session(config=config) as sess:\n",
"\n",
" # Run the initializer\n",
" sess.run(init)\n",
@@ -256,37 +213,37 @@
" 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": {
"anaconda-cloud": {},
"kernelspec": {
- "display_name": "Python [default]",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 0
+ "nbformat_minor": 4
}
diff --git a/notebooks/3_NeuralNetworks/variational_autoencoder.ipynb b/notebooks/3_NeuralNetworks/variational_autoencoder.ipynb
index 76ae0a91..248383b0 100644
--- a/notebooks/3_NeuralNetworks/variational_autoencoder.ipynb
+++ b/notebooks/3_NeuralNetworks/variational_autoencoder.ipynb
@@ -2,16 +2,14 @@
"cells": [
{
"cell_type": "markdown",
- "metadata": {
- "collapsed": true
- },
+ "metadata": {},
"source": [
"# Variational Auto-Encoder Example\n",
"\n",
"Build a variational auto-encoder (VAE) to generate digit images from a noise distribution with TensorFlow.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
@@ -41,14 +39,22 @@
{
"cell_type": "code",
"execution_count": 1,
- "metadata": {
- "collapsed": true
- },
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
"outputs": [],
"source": [
"from __future__ import division, print_function, absolute_import\n",
"\n",
"import numpy as np\n",
+ "import os\n",
"import matplotlib.pyplot as plt\n",
"from scipy.stats import norm\n",
"import tensorflow as tf"
@@ -56,36 +62,34 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "config = tf.ConfigProto()\n",
+ "config.gpu_options.allow_growth=True "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.\n",
- "Extracting /tmp/data/train-images-idx3-ubyte.gz\n",
- "Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.\n",
- "Extracting /tmp/data/train-labels-idx1-ubyte.gz\n",
- "Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.\n",
- "Extracting /tmp/data/t10k-images-idx3-ubyte.gz\n",
- "Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.\n",
- "Extracting /tmp/data/t10k-labels-idx1-ubyte.gz\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Import MNIST data\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=True)"
+ "data_path = \"./dataset/variation_autoencoder/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=True)"
]
},
{
"cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 5,
+ "metadata": {},
"outputs": [],
"source": [
"# Parameters\n",
@@ -105,10 +109,8 @@
},
{
"cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 6,
+ "metadata": {},
"outputs": [],
"source": [
"# Variables\n",
@@ -130,10 +132,8 @@
},
{
"cell_type": "code",
- "execution_count": 5,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 7,
+ "metadata": {},
"outputs": [],
"source": [
"# Building the encoder\n",
@@ -157,15 +157,13 @@
},
{
"cell_type": "code",
- "execution_count": 6,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 8,
+ "metadata": {},
"outputs": [],
"source": [
"# Define VAE Loss\n",
"def vae_loss(x_reconstructed, x_true):\n",
- " # Reconstruction loss\n",
+ " # Reconstruction losshttps://notebook.nbai.io/user/shogan@nbai.io/notebooks/work/notebook/3_NeuralNetworks/variational_autoencoder_ok.ipynb#\n",
" encode_decode_loss = x_true * tf.log(1e-10 + x_reconstructed) \\\n",
" + (1 - x_true) * tf.log(1e-10 + 1 - x_reconstructed)\n",
" encode_decode_loss = -tf.reduce_sum(encode_decode_loss, 1)\n",
@@ -184,51 +182,13 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": 9,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Step 1, Loss: 645.076538\n",
- "Step 1000, Loss: 173.018188\n",
- "Step 2000, Loss: 165.299225\n",
- "Step 3000, Loss: 172.933685\n",
- "Step 4000, Loss: 161.475052\n",
- "Step 5000, Loss: 179.529831\n",
- "Step 6000, Loss: 166.430023\n",
- "Step 7000, Loss: 167.152176\n",
- "Step 8000, Loss: 159.920242\n",
- "Step 9000, Loss: 160.172363\n",
- "Step 10000, Loss: 150.077652\n",
- "Step 11000, Loss: 162.774567\n",
- "Step 12000, Loss: 156.187820\n",
- "Step 13000, Loss: 148.331573\n",
- "Step 14000, Loss: 153.757202\n",
- "Step 15000, Loss: 158.050598\n",
- "Step 16000, Loss: 163.068939\n",
- "Step 17000, Loss: 152.765152\n",
- "Step 18000, Loss: 151.136353\n",
- "Step 19000, Loss: 157.889664\n",
- "Step 20000, Loss: 149.112473\n",
- "Step 21000, Loss: 151.694885\n",
- "Step 22000, Loss: 153.153229\n",
- "Step 23000, Loss: 152.662323\n",
- "Step 24000, Loss: 150.556198\n",
- "Step 25000, Loss: 142.779984\n",
- "Step 26000, Loss: 148.985382\n",
- "Step 27000, Loss: 150.923401\n",
- "Step 28000, Loss: 161.761551\n",
- "Step 29000, Loss: 144.045578\n",
- "Step 30000, Loss: 151.272964\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Start Training\n",
"# Start a new TF session\n",
- "sess = tf.Session()\n",
+ "sess = tf.Session(config=config)\n",
"\n",
"# Run the initializer\n",
"sess.run(init)\n",
@@ -248,20 +208,9 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": 10,
"metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
+ "outputs": [],
"source": [
"# Testing\n",
"# Generator takes noise as input\n",
@@ -294,23 +243,32 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 2",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 2
+ "nbformat_minor": 4
}
diff --git a/notebooks/4_Utils/MNIST_data/t10k-images-idx3-ubyte.gz b/notebooks/4_Utils/MNIST_data/t10k-images-idx3-ubyte.gz
new file mode 100644
index 00000000..5ace8ea9
Binary files /dev/null and b/notebooks/4_Utils/MNIST_data/t10k-images-idx3-ubyte.gz differ
diff --git a/notebooks/4_Utils/MNIST_data/t10k-labels-idx1-ubyte.gz b/notebooks/4_Utils/MNIST_data/t10k-labels-idx1-ubyte.gz
new file mode 100644
index 00000000..a7e14154
Binary files /dev/null and b/notebooks/4_Utils/MNIST_data/t10k-labels-idx1-ubyte.gz differ
diff --git a/notebooks/4_Utils/MNIST_data/train-images-idx3-ubyte.gz b/notebooks/4_Utils/MNIST_data/train-images-idx3-ubyte.gz
new file mode 100644
index 00000000..b50e4b6b
Binary files /dev/null and b/notebooks/4_Utils/MNIST_data/train-images-idx3-ubyte.gz differ
diff --git a/notebooks/4_Utils/MNIST_data/train-labels-idx1-ubyte.gz b/notebooks/4_Utils/MNIST_data/train-labels-idx1-ubyte.gz
new file mode 100644
index 00000000..707a576b
Binary files /dev/null and b/notebooks/4_Utils/MNIST_data/train-labels-idx1-ubyte.gz differ
diff --git a/notebooks/4_Utils/save_restore_model.ipynb b/notebooks/4_Utils/save_restore_mode.ipynb
similarity index 79%
rename from notebooks/4_Utils/save_restore_model.ipynb
rename to notebooks/4_Utils/save_restore_mode.ipynb
index f70b2429..2b11ca6c 100644
--- a/notebooks/4_Utils/save_restore_model.ipynb
+++ b/notebooks/4_Utils/save_restore_mode.ipynb
@@ -2,9 +2,7 @@
"cells": [
{
"cell_type": "markdown",
- "metadata": {
- "collapsed": true
- },
+ "metadata": {},
"source": [
"# Save & Restore a Model\n",
"\n",
@@ -13,25 +11,31 @@
"(http://yann.lecun.com/exdb/mnist/).\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
"cell_type": "code",
"execution_count": 1,
- "metadata": {},
- "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"
- ]
+ "metadata": {
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "pycharm": {
+ "is_executing": false
+ }
+ },
+ "outputs": [],
"source": [
"from __future__ import print_function\n",
"\n",
@@ -47,12 +51,27 @@
"execution_count": 3,
"metadata": {},
"outputs": [],
+ "source": [
+ "config = tf.ConfigProto()\n",
+ "config.gpu_options.allow_growth=True"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "pycharm": {
+ "is_executing": false
+ }
+ },
+ "outputs": [],
"source": [
"# Parameters\n",
"learning_rate = 0.001\n",
"batch_size = 100\n",
"display_step = 1\n",
- "model_path = \"/tmp/model.ckpt\"\n",
+ "# model_path = \"/tmp/model.ckpt\"\n",
+ "model_path = \"./models/model.ckpt\"\n",
"\n",
"# Network Parameters\n",
"n_hidden_1 = 256 # 1st layer number of features\n",
@@ -102,9 +121,11 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 5,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -114,27 +135,17 @@
},
{
"cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Starting 1st session...\n",
- "Epoch: 0001 cost= 187.778896380\n",
- "Epoch: 0002 cost= 42.367902536\n",
- "Epoch: 0003 cost= 26.488964058\n",
- "First Optimization Finished!\n",
- "Accuracy: 0.9075\n",
- "Model saved in file: /tmp/model.ckpt\n"
- ]
+ "execution_count": null,
+ "metadata": {
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Running first session\n",
"print(\"Starting 1st session...\")\n",
- "with tf.Session() as sess:\n",
+ "with tf.Session(config=config) as sess:\n",
" # Initialize variables\n",
" sess.run(init)\n",
"\n",
@@ -152,8 +163,8 @@
" avg_cost += c / total_batch\n",
" # Display logs per epoch step\n",
" if epoch % display_step == 0:\n",
- " print \"Epoch:\", '%04d' % (epoch+1), \"cost=\", \\\n",
- " \"{:.9f}\".format(avg_cost)\n",
+ " print (\"Epoch:\", '%04d' % (epoch+1), \"cost=\",\n",
+ " \"{:.9f}\".format(avg_cost))\n",
" print(\"First Optimization Finished!\")\n",
"\n",
" # Test model\n",
@@ -169,27 +180,13 @@
},
{
"cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Starting 2nd session...\n",
- "Model restored from file: /tmp/model.ckpt\n",
- "Epoch: 0001 cost= 18.292712951\n",
- "Epoch: 0002 cost= 13.404136196\n",
- "Epoch: 0003 cost= 9.855191723\n",
- "Epoch: 0004 cost= 7.276933088\n",
- "Epoch: 0005 cost= 5.564581285\n",
- "Epoch: 0006 cost= 4.165259939\n",
- "Epoch: 0007 cost= 3.139393926\n",
- "Second Optimization Finished!\n",
- "Accuracy: 0.9385\n"
- ]
+ "execution_count": null,
+ "metadata": {
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Running a new session\n",
"print(\"Starting 2nd session...\")\n",
@@ -230,7 +227,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python [default]",
+ "display_name": "Python 3",
"language": "python",
"name": "python3"
},
@@ -243,10 +240,19 @@
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 1
+ "nbformat_minor": 4
}
diff --git a/notebooks/4_Utils/tensorboard_advanced.ipynb b/notebooks/4_Utils/tensorboard_advanced.ipynb
index 62aa8d76..01062e0a 100644
--- a/notebooks/4_Utils/tensorboard_advanced.ipynb
+++ b/notebooks/4_Utils/tensorboard_advanced.ipynb
@@ -10,27 +10,34 @@
"(http://yann.lecun.com/exdb/mnist/).\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 1,
"metadata": {
- "collapsed": false
+ "pycharm": {
+ "is_executing": false
+ }
},
- "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"
- ]
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "jupyter": {
+ "outputs_hidden": false
+ },
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
"source": [
"from __future__ import print_function\n",
"\n",
@@ -38,14 +45,22 @@
"\n",
"# Import MNIST data\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=True)"
+ "import os\n",
+ "data_path = \"./dataset/tensorboard_advanced/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=True)"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 3,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -54,7 +69,12 @@
"training_epochs = 25\n",
"batch_size = 100\n",
"display_step = 1\n",
- "logs_path = '/tmp/tensorflow_logs/example/'\n",
+ "# logs_path = '/tmp/tensorflow_logs/example/'\n",
+ "logs_path = './tensorflow_logs/example/'\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
"\n",
"# Network Parameters\n",
"n_hidden_1 = 256 # 1st layer number of features\n",
@@ -71,9 +91,11 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 4,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -108,9 +130,11 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 5,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -141,9 +165,14 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 6,
"metadata": {
- "collapsed": false
+ "jupyter": {
+ "outputs_hidden": false
+ },
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -166,52 +195,22 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 7,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Epoch: 0001 cost= 59.570364205\n",
- "Epoch: 0002 cost= 13.585465186\n",
- "Epoch: 0003 cost= 8.379069252\n",
- "Epoch: 0004 cost= 6.005265894\n",
- "Epoch: 0005 cost= 4.498054792\n",
- "Epoch: 0006 cost= 3.503682522\n",
- "Epoch: 0007 cost= 2.822272765\n",
- "Epoch: 0008 cost= 2.306899852\n",
- "Epoch: 0009 cost= 1.912765543\n",
- "Epoch: 0010 cost= 1.597006118\n",
- "Epoch: 0011 cost= 1.330172869\n",
- "Epoch: 0012 cost= 1.142490618\n",
- "Epoch: 0013 cost= 0.939443911\n",
- "Epoch: 0014 cost= 0.820920588\n",
- "Epoch: 0015 cost= 0.702543302\n",
- "Epoch: 0016 cost= 0.604815631\n",
- "Epoch: 0017 cost= 0.505682561\n",
- "Epoch: 0018 cost= 0.439700446\n",
- "Epoch: 0019 cost= 0.378268929\n",
- "Epoch: 0020 cost= 0.299557848\n",
- "Epoch: 0021 cost= 0.269859066\n",
- "Epoch: 0022 cost= 0.230899029\n",
- "Epoch: 0023 cost= 0.183722090\n",
- "Epoch: 0024 cost= 0.164173368\n",
- "Epoch: 0025 cost= 0.142141250\n",
- "Optimization Finished!\n",
- "Accuracy: 0.9336\n",
- "Run the command line:\n",
- "--> tensorboard --logdir=/tmp/tensorflow_logs \n",
- "Then open http://0.0.0.0:6006/ into your web browser\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
+ },
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Start training\n",
- "with tf.Session() as sess:\n",
- "\n",
+ "config = tf.ConfigProto()\n",
+ "config.gpu_options.allow_growth=True\n",
+ "with tf.Session(config=config) as sess:\n",
+ " \n",
" # Run the initializer\n",
" sess.run(init)\n",
"\n",
@@ -285,23 +284,32 @@
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
- "display_name": "Python [default]",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 1
+ "nbformat_minor": 4
}
diff --git a/notebooks/4_Utils/tensorboard_basic.ipynb b/notebooks/4_Utils/tensorboard_basic.ipynb
index 71a15649..92ec0c1c 100644
--- a/notebooks/4_Utils/tensorboard_basic.ipynb
+++ b/notebooks/4_Utils/tensorboard_basic.ipynb
@@ -2,24 +2,29 @@
"cells": [
{
"cell_type": "markdown",
- "metadata": {
- "collapsed": true
- },
+ "metadata": {},
"source": [
"# Tensorboard Basics\n",
"\n",
"Graph and Loss visualization using Tensorboard. This example is using the MNIST database of handwritten digits (http://yann.lecun.com/exdb/mnist/).\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
"outputs": [],
"source": [
"from __future__ import print_function\n",
@@ -28,15 +33,28 @@
"\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)"
+ "import os\n",
+ "data_path = \"./dataset/tensorboard_basic/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
- "metadata": {
- "collapsed": true
- },
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ " "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
"outputs": [],
"source": [
"# Parameters\n",
@@ -44,7 +62,7 @@
"training_epochs = 25\n",
"batch_size = 100\n",
"display_epoch = 1\n",
- "logs_path = '/tmp/tensorflow_logs/example/'\n",
+ "logs_path = './tensorflow_logs/example/'\n",
"\n",
"# tf Graph Input\n",
"# mnist data image of shape 28*28=784\n",
@@ -59,10 +77,8 @@
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
+ "execution_count": 4,
+ "metadata": {},
"outputs": [],
"source": [
"# Construct model and encapsulating all ops into scopes, making\n",
@@ -96,48 +112,14 @@
"cell_type": "code",
"execution_count": null,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Epoch: 0001 cost= 1.182138961\n",
- "Epoch: 0002 cost= 0.664609327\n",
- "Epoch: 0003 cost= 0.552565036\n",
- "Epoch: 0004 cost= 0.498541865\n",
- "Epoch: 0005 cost= 0.465393374\n",
- "Epoch: 0006 cost= 0.442491178\n",
- "Epoch: 0007 cost= 0.425474149\n",
- "Epoch: 0008 cost= 0.412152022\n",
- "Epoch: 0009 cost= 0.401320939\n",
- "Epoch: 0010 cost= 0.392305281\n",
- "Epoch: 0011 cost= 0.384732356\n",
- "Epoch: 0012 cost= 0.378109478\n",
- "Epoch: 0013 cost= 0.372409370\n",
- "Epoch: 0014 cost= 0.367236996\n",
- "Epoch: 0015 cost= 0.362727492\n",
- "Epoch: 0016 cost= 0.358627345\n",
- "Epoch: 0017 cost= 0.354815522\n",
- "Epoch: 0018 cost= 0.351413656\n",
- "Epoch: 0019 cost= 0.348314827\n",
- "Epoch: 0020 cost= 0.345429416\n",
- "Epoch: 0021 cost= 0.342749324\n",
- "Epoch: 0022 cost= 0.340224642\n",
- "Epoch: 0023 cost= 0.337897302\n",
- "Epoch: 0024 cost= 0.335720168\n",
- "Epoch: 0025 cost= 0.333691911\n",
- "Optimization Finished!\n",
- "Accuracy: 0.9143\n",
- "Run the command line:\n",
- "--> tensorboard --logdir=/tmp/tensorflow_logs \n",
- "Then open http://0.0.0.0:6006/ into your web browser\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Start Training\n",
+ " \n",
"with tf.Session() as sess:\n",
" sess.run(init)\n",
"\n",
@@ -195,7 +177,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python [default]",
+ "display_name": "Python 3",
"language": "python",
"name": "python3"
},
@@ -208,10 +190,19 @@
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 1
+ "nbformat_minor": 4
}
diff --git a/notebooks/5_DataManagement/build_an_image_dataset.ipynb b/notebooks/5_DataManagement/build_an_image_dataset.ipynb
old mode 100644
new mode 100755
index 9df1396d..3ad1a1d1
--- a/notebooks/5_DataManagement/build_an_image_dataset.ipynb
+++ b/notebooks/5_DataManagement/build_an_image_dataset.ipynb
@@ -2,9 +2,7 @@
"cells": [
{
"cell_type": "markdown",
- "metadata": {
- "collapsed": false
- },
+ "metadata": {},
"source": [
"# Build an Image Dataset in TensorFlow.\n",
"\n",
@@ -43,14 +41,29 @@
"such as the dataset path.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 1,
+ "metadata": {
+ "pycharm": {
+ "is_executing": false
+ }
+ },
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -61,8 +74,11 @@
"\n",
"# Dataset Parameters - CHANGE HERE\n",
"MODE = 'folder' # or 'file', if you choose a plain text file (see above).\n",
- "DATASET_PATH = '/path/to/dataset/' # the dataset file or root folder path.\n",
- "\n",
+ "DATASET_PATH = \"./dataset/build_an_image_dataset\" # the dataset file or root folder path.\n",
+ "try:\n",
+ " os.makedirs(DATASET_PATH)\n",
+ "except FileExistsError:\n",
+ " pass\n",
"# Image Parameters\n",
"N_CLASSES = 2 # CHANGE HERE, total number of classes\n",
"IMG_HEIGHT = 64 # CHANGE HERE, the image height to be resized to\n",
@@ -72,9 +88,12 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 3,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "name": "#%%\n",
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -141,9 +160,11 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 4,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -167,9 +188,11 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 5,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -209,7 +232,9 @@
"cell_type": "code",
"execution_count": null,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": true
+ }
},
"outputs": [],
"source": [
@@ -269,23 +294,32 @@
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
- "display_name": "Python [default]",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.6.8"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "source": [],
+ "metadata": {
+ "collapsed": false
+ }
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 2
+ "nbformat_minor": 4
}
diff --git a/notebooks/5_DataManagement/tensorflow_dataset_api.ipynb b/notebooks/5_DataManagement/tensorflow_dataset_api.ipynb
index 22c05e63..afc2df1d 100644
--- a/notebooks/5_DataManagement/tensorflow_dataset_api.ipynb
+++ b/notebooks/5_DataManagement/tensorflow_dataset_api.ipynb
@@ -11,38 +11,62 @@
"with queues, that make data processing and training faster (especially on GPU).\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
"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"
- ]
+ "metadata": {
+ "pycharm": {
+ "is_executing": true
+ }
+ },
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "pycharm": {
+ "is_executing": true
}
- ],
+ },
+ "outputs": [],
"source": [
"import tensorflow as tf\n",
"\n",
"# Import MNIST data (Numpy format)\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=True)"
+ "import os\n",
+ "data_path = \"./dataset/tensorflow_dataset_api/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=True)"
]
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "config = tf.ConfigProto()\n",
+ "config.gpu_options.allow_growth=True"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": true
+ }
},
"outputs": [],
"source": [
@@ -57,7 +81,7 @@
"n_classes = 10 # MNIST total classes (0-9 digits)\n",
"dropout = 0.75 # Dropout, probability to keep units\n",
"\n",
- "sess = tf.Session()\n",
+ "sess = tf.Session(config=config)\n",
"\n",
"# Create a dataset tensor from the images and the labels\n",
"dataset = tf.data.Dataset.from_tensor_slices(\n",
@@ -80,9 +104,11 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 5,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": true
+ }
},
"outputs": [],
"source": [
@@ -149,30 +175,13 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 6,
"metadata": {
- "scrolled": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Step 1, Minibatch Loss= 7.9429, Training Accuracy= 0.070\n",
- "Step 100, Minibatch Loss= 0.3491, Training Accuracy= 0.922\n",
- "Step 200, Minibatch Loss= 0.2343, Training Accuracy= 0.922\n",
- "Step 300, Minibatch Loss= 0.1838, Training Accuracy= 0.969\n",
- "Step 400, Minibatch Loss= 0.1715, Training Accuracy= 0.953\n",
- "Step 500, Minibatch Loss= 0.2730, Training Accuracy= 0.938\n",
- "Step 600, Minibatch Loss= 0.3427, Training Accuracy= 0.953\n",
- "Step 700, Minibatch Loss= 0.2261, Training Accuracy= 0.961\n",
- "Step 800, Minibatch Loss= 0.1487, Training Accuracy= 0.953\n",
- "Step 900, Minibatch Loss= 0.1438, Training Accuracy= 0.945\n",
- "Step 1000, Minibatch Loss= 0.1786, Training Accuracy= 0.961\n",
- "Optimization Finished!\n"
- ]
+ "pycharm": {
+ "is_executing": true
}
- ],
+ },
+ "outputs": [],
"source": [
"# Initialize the variables (i.e. assign their default value)\n",
"init = tf.global_variables_initializer()\n",
@@ -200,23 +209,32 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 2",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.14"
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 2
+ "nbformat_minor": 4
}
diff --git a/notebooks/6_MultiGPU/multigpu_basics.ipynb b/notebooks/6_MultiGPU/multigpu_basics_ok.ipynb
old mode 100644
new mode 100755
similarity index 68%
rename from notebooks/6_MultiGPU/multigpu_basics.ipynb
rename to notebooks/6_MultiGPU/multigpu_basics_ok.ipynb
index 1089b3e8..23db5e3a
--- a/notebooks/6_MultiGPU/multigpu_basics.ipynb
+++ b/notebooks/6_MultiGPU/multigpu_basics_ok.ipynb
@@ -2,9 +2,7 @@
"cells": [
{
"cell_type": "markdown",
- "metadata": {
- "collapsed": true
- },
+ "metadata": {},
"source": [
"# Multi-GPU Basics\n",
"\n",
@@ -17,14 +15,29 @@
"For this example, we are using 2 GTX-980\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "pycharm": {
+ "is_executing": false
+ }
+ },
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -37,7 +50,9 @@
"cell_type": "code",
"execution_count": 3,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -50,17 +65,23 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 4,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ },
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
"# Example: compute A^n + B^n on 2 GPUs\n",
"\n",
"# Create random large matrix\n",
- "A = np.random.rand(1e4, 1e4).astype('float32')\n",
- "B = np.random.rand(1e4, 1e4).astype('float32')\n",
+ "A = np.random.rand(10000, 10000).astype('float32')\n",
+ "B = np.random.rand(10000, 10000).astype('float32')\n",
"\n",
"# Creates a graph to store results\n",
"c1 = []\n",
@@ -76,9 +97,11 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": null,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -95,7 +118,7 @@
" sum = tf.add_n(c1) #Addition of all elements in c1, i.e. A^n + B^n\n",
"\n",
"t1_1 = datetime.datetime.now()\n",
- "with tf.Session(config=tf.ConfigProto(log_device_placement=log_device_placement)) as sess:\n",
+ "with tf.Session(config=tf.ConfigProto(allow_soft_placement=True)) as sess:\n",
" # Runs the op.\n",
" sess.run(sum)\n",
"t2_1 = datetime.datetime.now()"
@@ -103,9 +126,11 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": null,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -126,7 +151,7 @@
" sum = tf.add_n(c2) #Addition of all elements in c2, i.e. A^n + B^n\n",
"\n",
"t1_2 = datetime.datetime.now()\n",
- "with tf.Session(config=tf.ConfigProto(log_device_placement=log_device_placement)) as sess:\n",
+ "with tf.Session(config=tf.ConfigProto(allow_soft_placement=log_device_placement)) as sess:\n",
" # Runs the op.\n",
" sess.run(sum)\n",
"t2_2 = datetime.datetime.now()"
@@ -134,46 +159,52 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": null,
"metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Single GPU computation time: 0:00:11.833497\n",
- "Multi GPU computation time: 0:00:07.085913\n"
- ]
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ },
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
"source": [
- "print \"Single GPU computation time: \" + str(t2_1-t1_1)\n",
- "print \"Multi GPU computation time: \" + str(t2_2-t1_2)"
+ "print (\"Single GPU computation time: \" + str(t2_1-t1_1))\n",
+ "print (\"Multi GPU computation time: \" + str(t2_2-t1_2))"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
- "display_name": "Python [default]",
+ "display_name": "Python 3",
"language": "python",
- "name": "python2"
+ "name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
+ "pygments_lexer": "ipython3",
+ "version": "3.6.8"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": []
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 0
+ "nbformat_minor": 4
}
diff --git a/notebooks/6_MultiGPU/multigpu_cnn.ipynb b/notebooks/6_MultiGPU/multigpu_cnn_ok.ipynb
old mode 100644
new mode 100755
similarity index 80%
rename from notebooks/6_MultiGPU/multigpu_cnn.ipynb
rename to notebooks/6_MultiGPU/multigpu_cnn_ok.ipynb
index 2d4746d2..07e65e34
--- a/notebooks/6_MultiGPU/multigpu_cnn.ipynb
+++ b/notebooks/6_MultiGPU/multigpu_cnn_ok.ipynb
@@ -12,7 +12,7 @@
"for a raw TensorFlow implementation with variables.\n",
"\n",
"- Author: Aymeric Damien\n",
- "- Project: https://github.com/aymericdamien/TensorFlow-Examples/"
+ "- Project: https://github.com/nebulaai/TensorFlow-Examples/"
]
},
{
@@ -40,20 +40,28 @@
"cell_type": "code",
"execution_count": 1,
"metadata": {
- "collapsed": false
+ "pycharm": {
+ "is_executing": false
+ }
},
- "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"
- ]
+ "outputs": [],
+ "source": [
+ "!pip install tensorflow --user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false,
+ "jupyter": {
+ "outputs_hidden": false
+ },
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
"source": [
"from __future__ import print_function\n",
"\n",
@@ -63,7 +71,13 @@
"\n",
"# Import MNIST data\n",
"from tensorflow.examples.tutorials.mnist import input_data\n",
- "mnist = input_data.read_data_sets(\"/tmp/data/\", one_hot=True)\n",
+ "import os\n",
+ "data_path = \"./dataset/tensorboard_advanced/\"\n",
+ "try:\n",
+ " os.makedirs(data_path)\n",
+ "except FileExistsError:\n",
+ " pass\n",
+ "mnist = input_data.read_data_sets(data_path, one_hot=True)\n",
"\n",
"# Parameters\n",
"num_gpus = 2\n",
@@ -80,9 +94,11 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 3,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -131,9 +147,11 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 4,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -166,9 +184,11 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 5,
"metadata": {
- "collapsed": true
+ "pycharm": {
+ "is_executing": false
+ }
},
"outputs": [],
"source": [
@@ -190,42 +210,17 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 6,
"metadata": {
"collapsed": false,
- "scrolled": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Step 1: Minibatch Loss= 2.4077, Training Accuracy= 0.123, 682 Examples/sec\n",
- "Step 10: Minibatch Loss= 1.0067, Training Accuracy= 0.765, 6528 Examples/sec\n",
- "Step 20: Minibatch Loss= 0.2442, Training Accuracy= 0.945, 6803 Examples/sec\n",
- "Step 30: Minibatch Loss= 0.2013, Training Accuracy= 0.951, 6741 Examples/sec\n",
- "Step 40: Minibatch Loss= 0.1445, Training Accuracy= 0.962, 6700 Examples/sec\n",
- "Step 50: Minibatch Loss= 0.0940, Training Accuracy= 0.971, 6746 Examples/sec\n",
- "Step 60: Minibatch Loss= 0.0792, Training Accuracy= 0.977, 6627 Examples/sec\n",
- "Step 70: Minibatch Loss= 0.0593, Training Accuracy= 0.979, 6749 Examples/sec\n",
- "Step 80: Minibatch Loss= 0.0799, Training Accuracy= 0.984, 6368 Examples/sec\n",
- "Step 90: Minibatch Loss= 0.0614, Training Accuracy= 0.988, 6762 Examples/sec\n",
- "Step 100: Minibatch Loss= 0.0716, Training Accuracy= 0.983, 6338 Examples/sec\n",
- "Step 110: Minibatch Loss= 0.0531, Training Accuracy= 0.986, 6504 Examples/sec\n",
- "Step 120: Minibatch Loss= 0.0425, Training Accuracy= 0.990, 6721 Examples/sec\n",
- "Step 130: Minibatch Loss= 0.0473, Training Accuracy= 0.986, 6735 Examples/sec\n",
- "Step 140: Minibatch Loss= 0.0345, Training Accuracy= 0.991, 6636 Examples/sec\n",
- "Step 150: Minibatch Loss= 0.0419, Training Accuracy= 0.993, 6777 Examples/sec\n",
- "Step 160: Minibatch Loss= 0.0602, Training Accuracy= 0.984, 6392 Examples/sec\n",
- "Step 170: Minibatch Loss= 0.0425, Training Accuracy= 0.990, 6855 Examples/sec\n",
- "Step 180: Minibatch Loss= 0.0107, Training Accuracy= 0.998, 6804 Examples/sec\n",
- "Step 190: Minibatch Loss= 0.0204, Training Accuracy= 0.995, 6645 Examples/sec\n",
- "Step 200: Minibatch Loss= 0.0296, Training Accuracy= 0.993, 6747 Examples/sec\n",
- "Optimization Finished!\n",
- "Testing Accuracy: 0.990671\n"
- ]
+ "jupyter": {
+ "outputs_hidden": false
+ },
+ "pycharm": {
+ "is_executing": false
}
- ],
+ },
+ "outputs": [],
"source": [
"# Place all ops on CPU by default\n",
"with tf.device('/cpu:0'):\n",
@@ -306,23 +301,32 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 2",
+ "display_name": "PyCharm (jupyterconverter)",
"language": "python",
- "name": "python2"
+ "name": "pycharm-3058efaf"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
- "version": 2
+ "version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.13"
+ "pygments_lexer": "ipython3",
+ "version": "3.6.8"
+ },
+ "pycharm": {
+ "stem_cell": {
+ "cell_type": "raw",
+ "source": [],
+ "metadata": {
+ "collapsed": false
+ }
+ }
}
},
"nbformat": 4,
- "nbformat_minor": 0
+ "nbformat_minor": 4
}