Skip to content

Instantly share code, notes, and snippets.

@kevinbird15
Created September 5, 2020 00:08
Show Gist options
  • Save kevinbird15/a3aa9f9d3fc9607086c67532d8751040 to your computer and use it in GitHub Desktop.
Save kevinbird15/a3aa9f9d3fc9607086c67532d8751040 to your computer and use it in GitHub Desktop.
Sorted vs Unsorted
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "from fastai.vision.all import *",
"execution_count": 1,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "theta1_real = 2\ntheta2_real = 30",
"execution_count": 2,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "#The actual value of y when x is given with the proper theta1 and theta2 (what we are trying to figure out)\ndef f_target(x):\n return theta1_real*x+theta2_real\n\n#Squared Error\ndef loss_function_MSE(y_pred, y_actual):\n return torch.mean((y_pred - y_actual)**2)",
"execution_count": 24,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "x_unsorted = [14,86,28,51,28,29,72,62,84,15,42,62,47,35,9,38,44,99,13,21,28,20,8,64,99,70,27,17,8]",
"execution_count": 13,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "y_unsorted = [f_target(x) for x in x_unsorted]",
"execution_count": 14,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "x_sorted = sorted(x_unsorted)",
"execution_count": 15,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "y_sorted = [f_target(x) for x in x_sorted]",
"execution_count": 16,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "b_unsorted = [(x,y) for x,y in zip(x_unsorted, y_unsorted)]",
"execution_count": 17,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "b_sorted = [(x,y) for x,y in zip(x_sorted, y_sorted)]",
"execution_count": 18,
"outputs": []
},
{
"metadata": {
"trusted": true,
"scrolled": true
},
"cell_type": "code",
"source": "b_sorted",
"execution_count": 19,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 19,
"data": {
"text/plain": "[(8, 46),\n (8, 46),\n (9, 48),\n (13, 56),\n (14, 58),\n (15, 60),\n (17, 64),\n (20, 70),\n (21, 72),\n (27, 84),\n (28, 86),\n (28, 86),\n (28, 86),\n (29, 88),\n (35, 100),\n (38, 106),\n (42, 114),\n (44, 118),\n (47, 124),\n (51, 132),\n (62, 154),\n (62, 154),\n (64, 158),\n (70, 170),\n (72, 174),\n (84, 198),\n (86, 202),\n (99, 228),\n (99, 228)]"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true,
"scrolled": true
},
"cell_type": "code",
"source": "b_unsorted",
"execution_count": 20,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 20,
"data": {
"text/plain": "[(14, 58),\n (86, 202),\n (28, 86),\n (51, 132),\n (28, 86),\n (29, 88),\n (72, 174),\n (62, 154),\n (84, 198),\n (15, 60),\n (42, 114),\n (62, 154),\n (47, 124),\n (35, 100),\n (9, 48),\n (38, 106),\n (44, 118),\n (99, 228),\n (13, 56),\n (21, 72),\n (28, 86),\n (20, 70),\n (8, 46),\n (64, 158),\n (99, 228),\n (70, 170),\n (27, 84),\n (17, 64),\n (8, 46)]"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "class MySimpleModel(torch.nn.Module):\n def __init__(self):\n super(MySimpleModel, self).__init__()\n #self.theta = torch.tensor([1.0,1.0], requires_grad=True)\n self.theta = nn.Parameter(torch.tensor([1.0,1.0]), requires_grad=True)\n\n def forward(self, x):\n return self.theta[0]*x+self.theta[1]",
"execution_count": 21,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "class TestCallback(Callback):\n def before_batch(self):\n if self.training:\n self.theta0_guess+=[float(self.model.theta[0])]\n self.theta1_guess+=[float(self.model.theta[1])]\n plt.plot(2,30, 'ro', markersize=5)\n #print(self.model.theta.tolist())\n def before_epoch(self):\n try:\n self.theta0_guess = [self.theta0_guess[-1]]\n except:\n self.theta0_guess = []\n try:\n self.theta1_guess = [self.theta1_guess[-1]]\n except:\n self.theta1_guess = []\n \n def after_epoch(self):\n plt.plot(self.theta0_guess, self.theta1_guess)",
"execution_count": 22,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Unsorted Batch Size 4"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "dl = DataLoader(b_unsorted, bs=4)\ndls = DataLoaders(dl,dl)\nmodel = MySimpleModel()\nlearn = Learner(dls, model, loss_func=loss_function_MSE, lr=1, opt_func=partial(Adam, mom=0.9, sqr_mom=0.75, wd=0, decouple_wd=False), cbs=TestCallback, train_bn=False, moms=(0.95, 0.85, 0.95))\nlearn.fit(10)\nlearn.opt.state_dict()",
"execution_count": 31,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<IPython.core.display.HTML object>",
"text/html": "<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: left;\">\n <th>epoch</th>\n <th>train_loss</th>\n <th>valid_loss</th>\n <th>time</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>0</td>\n <td>2199.807617</td>\n <td>282.840057</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>1</td>\n <td>1440.947388</td>\n <td>840.700134</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>2</td>\n <td>1115.538086</td>\n <td>849.488953</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>3</td>\n <td>933.493225</td>\n <td>271.022919</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>4</td>\n <td>746.015686</td>\n <td>213.529480</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>5</td>\n <td>615.163452</td>\n <td>78.166389</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>6</td>\n <td>495.109619</td>\n <td>119.208229</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>7</td>\n <td>404.428986</td>\n <td>159.660217</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>8</td>\n <td>339.358276</td>\n <td>307.699158</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>9</td>\n <td>306.332458</td>\n <td>99.573959</td>\n <td>00:00</td>\n </tr>\n </tbody>\n</table>"
},
"metadata": {}
},
{
"output_type": "execute_result",
"execution_count": 31,
"data": {
"text/plain": "{'state': [{'grad_avg': tensor([260.3549, 2.3948]),\n 'sqr_avg': tensor([1.4923e+06, 3.5016e+02]),\n 'step': 80}],\n 'hypers': (#1) [{'wd': 0, 'sqr_mom': 0.75, 'lr': 1, 'mom': 0.9, 'eps': 1e-05}]}"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Sorted Batch Size 4"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "dl = DataLoader(b_sorted, bs=4)\ndls = DataLoaders(dl,dl)\nmodel = MySimpleModel()\nlearn = Learner(dls, model, loss_func=loss_function_MSE, lr=1, opt_func=partial(Adam, mom=0.9, sqr_mom=0.75, wd=0, decouple_wd=False), cbs=TestCallback, train_bn=False, moms=(0.95, 0.85, 0.95))\nlearn.fit(10)\nlearn.opt.state_dict()",
"execution_count": 25,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<IPython.core.display.HTML object>",
"text/html": "<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: left;\">\n <th>epoch</th>\n <th>train_loss</th>\n <th>valid_loss</th>\n <th>time</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>0</td>\n <td>1287.041992</td>\n <td>1695.315918</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>1</td>\n <td>1761.494019</td>\n <td>376.513123</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>2</td>\n <td>5253.080078</td>\n <td>3433.333008</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>3</td>\n <td>4523.949707</td>\n <td>3546.391113</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>4</td>\n <td>3574.913574</td>\n <td>369.142120</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>5</td>\n <td>3324.777588</td>\n <td>310.425323</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>6</td>\n <td>3491.915039</td>\n <td>1927.673950</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>7</td>\n <td>3391.500977</td>\n <td>1422.359253</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>8</td>\n <td>2801.747070</td>\n <td>573.152893</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>9</td>\n <td>2365.163574</td>\n <td>82.812347</td>\n <td>00:00</td>\n </tr>\n </tbody>\n</table>"
},
"metadata": {}
},
{
"output_type": "execute_result",
"execution_count": 25,
"data": {
"text/plain": "{'state': [{'grad_avg': tensor([958.6375, 1.7990]),\n 'sqr_avg': tensor([2.0487e+07, 2.6355e+03]),\n 'step': 80}],\n 'hypers': (#1) [{'wd': 0, 'sqr_mom': 0.75, 'lr': 1, 'mom': 0.9, 'eps': 1e-05}]}"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Unsorted Batch Size 1"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "dl = DataLoader(b_unsorted, bs=1)\ndls = DataLoaders(dl,dl)\nmodel = MySimpleModel()\nlearn = Learner(dls, model, loss_func=loss_function_MSE, lr=1, opt_func=partial(Adam, mom=0.9, sqr_mom=0.75, wd=0, decouple_wd=False), cbs=TestCallback, train_bn=False, moms=(0.95, 0.85, 0.95))\nlearn.fit(10)\nlearn.opt.state_dict()",
"execution_count": 29,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<IPython.core.display.HTML object>",
"text/html": "<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: left;\">\n <th>epoch</th>\n <th>train_loss</th>\n <th>valid_loss</th>\n <th>time</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>0</td>\n <td>1124.917236</td>\n <td>2080.948975</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>1</td>\n <td>1177.825928</td>\n <td>788.856384</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>2</td>\n <td>1314.128540</td>\n <td>856.325073</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>3</td>\n <td>1624.647339</td>\n <td>78.165588</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>4</td>\n <td>1472.566895</td>\n <td>130.857132</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>5</td>\n <td>945.018921</td>\n <td>114.889565</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>6</td>\n <td>647.485962</td>\n <td>1873.334106</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>7</td>\n <td>713.429382</td>\n <td>941.015442</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>8</td>\n <td>674.886963</td>\n <td>1304.736938</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>9</td>\n <td>627.374939</td>\n <td>1566.973755</td>\n <td>00:00</td>\n </tr>\n </tbody>\n</table>"
},
"metadata": {}
},
{
"output_type": "execute_result",
"execution_count": 29,
"data": {
"text/plain": "{'state': [{'grad_avg': tensor([606.0634, 6.9344]),\n 'sqr_avg': tensor([5.9263e+06, 7.9128e+02]),\n 'step': 290}],\n 'hypers': (#1) [{'wd': 0, 'sqr_mom': 0.75, 'lr': 1, 'mom': 0.9, 'eps': 1e-05}]}"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Sorted Batch Size 1"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "dl = DataLoader(b_sorted, bs=1)\ndls = DataLoaders(dl,dl)\nmodel = MySimpleModel()\nlearn = Learner(dls, model, loss_func=loss_function_MSE, lr=1, opt_func=partial(Adam, mom=0.9, sqr_mom=0.75, wd=0, decouple_wd=False), cbs=TestCallback, train_bn=False, moms=(0.95, 0.85, 0.95))\nlearn.fit(10)\nlearn.opt.state_dict()",
"execution_count": 30,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<IPython.core.display.HTML object>",
"text/html": "<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: left;\">\n <th>epoch</th>\n <th>train_loss</th>\n <th>valid_loss</th>\n <th>time</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>0</td>\n <td>551.996155</td>\n <td>208.899551</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>1</td>\n <td>388.655334</td>\n <td>169.198425</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>2</td>\n <td>416.790924</td>\n <td>145.466522</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>3</td>\n <td>528.337219</td>\n <td>626.934692</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>4</td>\n <td>394.201477</td>\n <td>120.823807</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>5</td>\n <td>357.592163</td>\n <td>128.293243</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>6</td>\n <td>279.638184</td>\n <td>171.010208</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>7</td>\n <td>358.699524</td>\n <td>431.342407</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>8</td>\n <td>378.889343</td>\n <td>292.884033</td>\n <td>00:00</td>\n </tr>\n <tr>\n <td>9</td>\n <td>326.339539</td>\n <td>19.134945</td>\n <td>00:00</td>\n </tr>\n </tbody>\n</table>"
},
"metadata": {}
},
{
"output_type": "execute_result",
"execution_count": 30,
"data": {
"text/plain": "{'state': [{'grad_avg': tensor([-447.2080, -4.8602]),\n 'sqr_avg': tensor([1.1026e+07, 1.4023e+03]),\n 'step': 290}],\n 'hypers': (#1) [{'wd': 0, 'sqr_mom': 0.75, 'lr': 1, 'mom': 0.9, 'eps': 1e-05}]}"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3",
"language": "python"
},
"language_info": {
"name": "python",
"version": "3.8.5",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"gist": {
"id": "",
"data": {
"description": "Sorted vs Unsorted",
"public": false
}
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment