Skip to content

Instantly share code, notes, and snippets.

@j-min
Created March 1, 2017 14:25
Show Gist options
  • Save j-min/5c6b917b60d0244e10d8781a6fb1ab15 to your computer and use it in GitHub Desktop.
Save j-min/5c6b917b60d0244e10d8781a6fb1ab15 to your computer and use it in GitHub Desktop.
Simple backprop implementation in TensorFlow without its optimizer API
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Backpropagtion with TensorFlow\n",
"- SGD with 1 layer NN\n",
"- didn't use train/test split\n",
"- Reference: \n",
"https://github.com/hunkim/DeepLearningZeroToAll/blob/master/lab-09-5-softmax_back_prop.py"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Reproducibility\n",
"tf.set_random_seed(777)\n",
"np.random.seed(777)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Read Data"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"data_path = '../datasets/zoo.csv'"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1., 0., 0., ..., 0., 1., 1.],\n",
" [ 1., 0., 0., ..., 0., 1., 1.],\n",
" [ 0., 0., 1., ..., 0., 0., 4.],\n",
" ..., \n",
" [ 1., 0., 0., ..., 0., 1., 1.],\n",
" [ 0., 0., 1., ..., 0., 0., 7.],\n",
" [ 0., 1., 1., ..., 0., 0., 2.]], dtype=float32)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"xy = np.loadtxt(data_path, delimiter=',', dtype=np.float32)\n",
"xy"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(101, 17)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"xy.shape"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"def print_and_shape(name, x):\n",
" try:\n",
" # numpy array\n",
" print(f'{name}: {x.shape}')\n",
" except:\n",
" # tensor\n",
" print(f'{name}: {x.get_shape()}')"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"x_data: (101, 16)\n",
"x_data: (101, 16)\n",
"y_data: (101,)\n"
]
}
],
"source": [
"x_data = xy[:, :-1]\n",
"y_data = xy[:, -1]\n",
"print_and_shape('x_data', x_data)\n",
"print(f'x_data: {x_data.shape}')\n",
"print(f'y_data: {y_data.shape}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Hyperparameters"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"data_size, n_dim = x_data.shape # 101, 16\n",
"n_classes = 7\n",
"n_epoch = 5000\n",
"batch_size = 30\n",
"n_step = data_size // batch_size\n",
"learning_rate = 0.0005"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Placeholders"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"X: (?, 16)\n",
"Y: (?, 1)\n"
]
}
],
"source": [
"X = tf.placeholder(tf.float32, [None, n_dim])\n",
"Y = tf.placeholder(tf.int32, [None, 1])\n",
"print(f'X: {X.get_shape()}')\n",
"print(f'Y: {Y.get_shape()}')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Y_one_hot: (?, 7)\n"
]
}
],
"source": [
"Y_one_hot = tf.one_hot(Y, n_classes)\n",
"Y_one_hot = tf.reshape(Y_one_hot, [-1, n_classes])\n",
"Y_one_hot = tf.cast(Y_one_hot, tf.float32)\n",
"print(f'Y_one_hot: {Y_one_hot.get_shape()}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Model\n",
"- one layer perceptron"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"W: (16, 7)\n",
"b: (7,)\n"
]
}
],
"source": [
"W = tf.Variable(tf.random_normal([n_dim, n_classes]), name='weight')\n",
"b = tf.Variable(tf.random_normal([n_classes]), name='bias')\n",
"print(f'W: {W.get_shape()}')\n",
"print(f'b: {b.get_shape()}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Activation Function\n",
"- sigmoid"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def sigmoid(x):\n",
" return 1. / (1. + tf.exp(-x))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def d_sigmoid(x):\n",
" return sigmoid(x) * (1. - sigmoid(x))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Forward Propagation"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"layer1: (?, 7)\n",
"y_pred: (?, 7)\n"
]
}
],
"source": [
"layer1 = tf.matmul(X, W) + b\n",
"y_pred = sigmoid(layer1)\n",
"print(f'layer1: {layer1.get_shape()}')\n",
"print(f'y_pred: {y_pred.get_shape()}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Loss"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"diff: (?, 7)\n",
"loss: ()\n"
]
}
],
"source": [
"diff = y_pred - Y_one_hot\n",
"loss = 0.5 * tf.reduce_sum(tf.square(diff))\n",
"print(f'diff: {diff.get_shape()}')\n",
"print(f'loss: {loss.get_shape()}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Back Propagation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$loss\\quad =\\quad \\frac{1}{2} \\sum\\ (y_{pred} - y_{one\\_hot})^2$\n",
"\n",
"$\\frac{\\mathrm d loss}{\\mathrm d y_{pred}}\\quad =\\quad y_{pred} - y_{one\\_hot}\\quad (=diff)$"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"dloss_dypred: (?, 7)\n"
]
}
],
"source": [
"dloss_dypred = diff\n",
"print_and_shape('dloss_dypred', dloss_dypred)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"${ y }_{ pred }\\quad =\\quad \\sigma (layer_{1}) $\n",
"\n",
"$\\frac{\\mathrm d y _{ pred }}{\\mathrm d layer_{ 1 }}\\quad =\\quad \\sigma' (layer1)$"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"dypred_dlayer1: (?, 7)\n"
]
}
],
"source": [
"dypred_dlayer1 = d_sigmoid(layer1)\n",
"print_and_shape('dypred_dlayer1', dypred_dlayer1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$\\frac{\\mathrm d loss}{\\mathrm d layer_{ 1 }} = \\frac{\\mathrm d loss}{\\mathrm d y_{pred}} \\cdot \\frac{\\mathrm d y _{ pred }}{\\mathrm d layer_{ 1 }}$"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"dloss_dlayer1: (?, 7)\n"
]
}
],
"source": [
"dloss_dlayer1 = dloss_dypred * dypred_dlayer1\n",
"print_and_shape('dloss_dlayer1', dloss_dlayer1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$layer_{1}\\quad =\\quad XW + b$\n",
"\n",
"$\\frac{\\mathrm d layer _{ 1 }}{\\mathrm d w}\\quad =\\quad X^T$\n",
"\n",
"$\\frac{\\mathrm d layer _{ 1 }}{\\mathrm d b}\\quad =\\quad 1$"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"dlayer1_dw: (16, ?)\n",
"dlayer1_db: (7,)\n"
]
}
],
"source": [
"dlayer1_dw = tf.transpose(X)\n",
"dlayer1_db = tf.ones(n_classes)\n",
"print_and_shape('dlayer1_dw', dlayer1_dw)\n",
"print_and_shape('dlayer1_db', dlayer1_db)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$\\frac{\\mathrm d loss}{\\mathrm d w}\\quad =\\quad \\frac{\\mathrm d layer_{1}}{\\mathrm d w} \\cdot \\frac{\\mathrm d loss}{\\mathrm d layer_{ 1 }}$\n",
"\n",
"$\\frac{\\mathrm d loss}{\\mathrm d b}\\quad =\\quad \\frac{\\mathrm d layer_{1}}{\\mathrm d b} \\cdot \\frac{\\mathrm d loss}{\\mathrm d layer_{ 1 }}$"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"dloss_dw: (16, 7)\n",
"dloss_db: (7,)\n"
]
}
],
"source": [
"dloss_dw = tf.matmul(dlayer1_dw, dloss_dlayer1)\n",
"dloss_db = tf.reduce_mean(dlayer1_db * dloss_dlayer1, 0) # loss from all data in batch\n",
"print_and_shape('dloss_dw', dloss_dw)\n",
"print_and_shape('dloss_db', dloss_db)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### helper functions\n",
"- backprop_ops\n",
"- accuracy\n",
"- batch"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"backprop_ops = [\n",
" tf.assign(W, W - learning_rate * dloss_dw),\n",
" tf.assign(b, b - learning_rate * dloss_db)\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"prediction = tf.argmax(y_pred, 1)\n",
"true_label = tf.argmax(Y_one_hot, 1)\n",
"accuracy = tf.reduce_mean(tf.cast(tf.equal(prediction, true_label), tf.float32))"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def get_batch(x_data, y_data):\n",
" indices = np.random.choice(data_size, batch_size)\n",
" x_batch = x_data[indices]\n",
" y_batch = y_data[indices].reshape(-1 ,1)\n",
" return x_batch, y_batch"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Run Model"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training Done!\n",
"\n",
"Final accuracy: 0.8416\n"
]
}
],
"source": [
"with tf.Session() as sess:\n",
" # initialization\n",
" sess.run(tf.global_variables_initializer())\n",
" global_accuracy_history = []\n",
"\n",
" # Train\n",
" for epoch in range(n_epoch):\n",
" for step in range(n_step):\n",
" # get batch\n",
" x_batch, y_batch = get_batch(x_data, y_data)\n",
" \n",
" # run backprop\n",
" sess.run(backprop_ops, feed_dict={X: x_batch, Y: y_batch})\n",
" \n",
" # check batch_accuracy\n",
" batch_accuracy = sess.run(accuracy, feed_dict={X: x_batch, Y: y_batch})\n",
" # print(f'epoch: {epoch}, step: {step} | accuracy: {batch_accuracy:.4}')\n",
" global_accuracy_history.append(batch_accuracy)\n",
" \n",
" print('Training Done!\\n')\n",
"\n",
" # Test\n",
" final_accuracy = sess.run(accuracy, feed_dict={X: x_data, Y: y_data.reshape(-1, 1)})\n",
" print(f'Final accuracy: {final_accuracy:.4}')\n",
"\n",
"# pred = sess.run(prediction, feed_dict={X: x_data})\n",
"# for p, y in zip(pred, y_data):\n",
"# y = int(y)\n",
"# if p == y:\n",
"# print(f'Correct!\\t Prediction: {p}\\t True label: {y}')\n",
"# else:\n",
"# print(f'False!\\t Prediction: {p}\\t True label: {y}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Training Overview"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x110778400>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(20, 10))\n",
"plt.title('Learning Curve')\n",
"plt.xlabel('global step')\n",
"plt.ylabel('accuracy')\n",
"plt.ylim(0, 1)\n",
"plt.plot(range(n_epoch*n_step), global_accuracy_history)\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda env:tensorflow]",
"language": "python",
"name": "conda-env-tensorflow-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment