Skip to content

Instantly share code, notes, and snippets.

@ceberly
Last active April 4, 2018 19:04
Show Gist options
  • Save ceberly/5ed3ac579718f5e0d36fbf19b66bf258 to your computer and use it in GitHub Desktop.
Save ceberly/5ed3ac579718f5e0d36fbf19b66bf258 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"---",
"Instructions for updating:\n",
"Use the retry module or similar alternatives.\n"
]
}
],
"source": [
"%matplotlib inline\n",
"import tensorflow as tf\n",
"import tensorflow.contrib.eager as tfe\n",
"\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"True\n"
]
}
],
"source": [
"tf.enable_eager_execution()\n",
"print(tf.executing_eagerly())"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"X = np.arange(0, 10, 1)\n",
"dY = []"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"for x in X:\n",
" v = tfe.Variable(x)\n",
" with tfe.GradientTape() as tape:\n",
" y = v * v * v\n",
" dy = tape.gradient(y, [v])\n",
" dY.append(dy[0].numpy())"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"_, axes = plt.subplots(1, 2, sharey=True)\n",
"\n",
"axes[0].plot(X, dY, label='dY', color='orange')\n",
"axes[0].plot(X, np.power(X, 3), color='black')\n",
"\n",
"axes[1].plot(X, 3 * np.power(X, 2), color='green')\n",
"axes[1].plot(X, np.power(X, 3), color='black')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"X2 = np.arange(0, 8, 0.01)\n",
"dY2 = []"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"for x in X2:\n",
" v = tfe.Variable(x)\n",
" with tfe.GradientTape() as tape:\n",
" y = tf.sin(v)\n",
" dy = tape.gradient(y, [v])\n",
" dY2.append(dy[0].numpy())"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"_, axes = plt.subplots(1, 2, sharey=True)\n",
"\n",
"axes[0].plot(X2, dY2, label='dY', color='orange')\n",
"axes[0].plot(X2, np.sin(X2), label='sinx', color='black')\n",
"\n",
"axes[1].plot(X2, np.cos(X2), label='cosx', color='green')\n",
"axes[1].plot(X2, np.sin(X2), label='sinx', color='black')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment