Created
May 21, 2020 19:14
-
-
Save tanmayb123/59c45c0ade35b1e8e1c1a023895274c3 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"!pip install tensorflow==2.2" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import tensorflow as tf\n", | |
"import matplotlib.pyplot as plt\n", | |
"import numpy as np" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"@tf.function\n", | |
"def trilateration_error(r1, r2, r3, d1, d2, d3, g):\n", | |
" g1 = tf.math.sqrt(tf.reduce_sum((r1 - g) ** 2))\n", | |
" g2 = tf.math.sqrt(tf.reduce_sum((r2 - g) ** 2))\n", | |
" g3 = tf.math.sqrt(tf.reduce_sum((r3 - g) ** 2))\n", | |
" e1 = (d1 - g1) ** 2\n", | |
" e2 = (d2 - g2) ** 2\n", | |
" e3 = (d3 - g3) ** 2\n", | |
" return (e1 + e2 + e3) / 3." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"r1 = tf.convert_to_tensor([2, -2], dtype=tf.float32)\n", | |
"r2 = tf.convert_to_tensor([10, 8], dtype=tf.float32)\n", | |
"r3 = tf.convert_to_tensor([-1, 6], dtype=tf.float32)\n", | |
"d1 = tf.constant(4, dtype=tf.float32)\n", | |
"d2 = tf.constant(10, dtype=tf.float32)\n", | |
"d3 = tf.constant(5, dtype=tf.float32)\n", | |
"g = tf.convert_to_tensor([100, 100], dtype=tf.float32)\n", | |
"lr = tf.constant(0.3, dtype=tf.float32)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Error: 16888.2109375\n", | |
"Location: [44.88486 45.08783]\n", | |
"Error: 2764.168701171875\n", | |
"Location: [22.824139 23.131886]\n", | |
"Error: 503.17596435546875\n", | |
"Location: [13.945032 14.378352]\n", | |
"Error: 139.4102783203125\n", | |
"Location: [10.173733 10.987654]\n", | |
"Error: 76.73042297363281\n", | |
"Location: [7.724868 9.876369]\n", | |
"Error: 51.58062744140625\n", | |
"Location: [5.0082383 8.74973 ]\n", | |
"Error: 26.13784408569336\n", | |
"Location: [3.3503673 7.383498 ]\n", | |
"Error: 13.75202465057373\n", | |
"Location: [2.615611 6.263672]\n", | |
"Error: 8.697731018066406\n", | |
"Location: [2.3561246 5.318206 ]\n", | |
"Error: 5.7190446853637695\n", | |
"Location: [2.274096 4.4651375]\n", | |
"Error: 3.4275078773498535\n", | |
"Location: [2.23029 3.728766]\n", | |
"Error: 1.7982697486877441\n", | |
"Location: [2.1896534 3.1522222]\n", | |
"Error: 0.8373140096664429\n", | |
"Location: [2.1519592 2.7396262]\n", | |
"Error: 0.35726842284202576\n", | |
"Location: [2.120146 2.4629292]\n", | |
"Error: 0.1441587209701538\n", | |
"Location: [2.0947182 2.2850862]\n", | |
"Error: 0.05641952157020569\n", | |
"Location: [2.0748045 2.1737838]\n", | |
"Error: 0.021857935935258865\n", | |
"Location: [2.0592573 2.1052613]\n", | |
"Error: 0.008538853377103806\n", | |
"Location: [2.0470748 2.0635014]\n", | |
"Error: 0.0034286845475435257\n", | |
"Location: [2.0374796 2.0382106]\n", | |
"Error: 0.0014444519765675068\n", | |
"Location: [2.0298872 2.022954 ]\n", | |
"Error: 0.0006506851059384644\n", | |
"Location: [2.0238585 2.0137734]\n", | |
"Error: 0.0003170226118527353\n", | |
"Location: [2.0190597 2.0082583]\n", | |
"Error: 0.0001669249322731048\n", | |
"Location: [2.015233 2.0049486]\n", | |
"Error: 9.383381984662265e-05\n", | |
"Location: [2.0121787 2.002964 ]\n", | |
"Error: 5.536960088647902e-05\n", | |
"Location: [2.0097384 2.0017745]\n", | |
"Error: 3.374564403202385e-05\n", | |
"Location: [2.0077882 2.0010622]\n", | |
"Error: 2.0986735762562603e-05\n", | |
"Location: [2.0062292 2.0006354]\n", | |
"Error: 1.3210769793658983e-05\n", | |
"Location: [2.0049825 2.00038 ]\n", | |
"Error: 8.372879165108316e-06\n", | |
"Location: [2.0039856 2.0002272]\n", | |
"Error: 5.330524345481535e-06\n", | |
"Location: [2.0031884 2.000136 ]\n", | |
"Error: 3.4014337870758027e-06\n", | |
"Location: [2.0025506 2.0000813]\n", | |
"Error: 2.1737409952038433e-06\n", | |
"Location: [2.0020404 2.0000486]\n", | |
"Error: 1.3891819889977342e-06\n", | |
"Location: [2.0016322 2.000029 ]\n", | |
"Error: 8.881838766683359e-07\n", | |
"Location: [2.0013058 2.0000174]\n", | |
"Error: 5.683763220076798e-07\n", | |
"Location: [2.0010448 2.0000105]\n", | |
"Error: 3.639077021944104e-07\n", | |
"Location: [2.000836 2.0000062]\n", | |
"Error: 2.3298473195154656e-07\n", | |
"Location: [2.0006688 2.0000038]\n", | |
"Error: 1.4894226296746638e-07\n", | |
"Location: [2.000535 2.0000024]\n", | |
"Error: 9.53139860371266e-08\n", | |
"Location: [2.000428 2.0000014]\n", | |
"Error: 6.106537142613888e-08\n", | |
"Location: [2.0003424 2.000001 ]\n", | |
"Error: 3.9094707915410254e-08\n", | |
"Location: [2.000274 2.0000005]\n", | |
"Error: 2.500632945157122e-08\n", | |
"Location: [2.000219 2.0000002]\n", | |
"Error: 1.599566346044412e-08\n", | |
"Location: [2.0001752 2.0000002]\n", | |
"Error: 1.0219386226140159e-08\n", | |
"Location: [2.0001402 2.0000002]\n", | |
"Error: 6.568977362064743e-09\n", | |
"Location: [2.000112 2.0000002]\n", | |
"Error: 4.1855705568139e-09\n", | |
"Location: [2.0000896 2.0000002]\n", | |
"Error: 2.656027842107278e-09\n", | |
"Location: [2.0000718 2.0000002]\n", | |
"Error: 1.7053025658242404e-09\n", | |
"Location: [2.0000575 2.0000002]\n", | |
"Error: 1.0913936421275139e-09\n", | |
"Location: [2.000046 2.0000002]\n", | |
"Error: 6.927318163540974e-10\n", | |
"Location: [2.000037 2.0000002]\n", | |
"Error: 4.5171572038427144e-10\n", | |
"Location: [2.0000296 2.0000002]\n", | |
"Error: 2.932362686003387e-10\n", | |
"Location: [2.0000236 2.0000002]\n", | |
"Error: 1.894780721212186e-10\n", | |
"Location: [2.0000188 2.0000002]\n", | |
"Error: 1.1770377728037573e-10\n", | |
"Location: [2.000015 2.0000002]\n", | |
"Error: 7.579122746070865e-11\n", | |
"Location: [2.000012 2.0000002]\n" | |
] | |
} | |
], | |
"source": [ | |
"locations = [g.numpy()]\n", | |
"error = float(\"inf\")\n", | |
"while error > 1e-10:\n", | |
" with tf.GradientTape() as tape:\n", | |
" tape.watch(g)\n", | |
" error = trilateration_error(r1, r2, r3, d1, d2, d3, g)\n", | |
" print(\"Error: {}\".format(error))\n", | |
" grad = tape.gradient(error, g)\n", | |
" g = g + (grad * -lr)\n", | |
" locations.append(g.numpy())\n", | |
" print(\"Location: {}\".format(locations[-1]))\n", | |
" error = error.numpy()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"locations = np.array(locations)\n", | |
"references = np.array([[2, -2], [10, 8], [-1, 6]])\n", | |
"locations = np.concatenate([locations, references], axis=0)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.collections.PathCollection at 0x7f5f64480e80>" | |
] | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.scatter(locations[:, 0], locations[:, 1], c=[\"red\"] * (len(locations) - 3) + [\"green\"] * 3)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python", | |
"language": "python", | |
"name": "conda-env-python-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.10" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 4 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment