Skip to content

Instantly share code, notes, and snippets.

@andiac
Last active March 15, 2022 18:40
Show Gist options
  • Save andiac/e8ccd5d22fa465ff76a6d5fa78bea41e to your computer and use it in GitHub Desktop.
Save andiac/e8ccd5d22fa465ff76a6d5fa78bea41e to your computer and use it in GitHub Desktop.
Heteroskedastic linear regression...
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "7c486eea-bd13-4df4-8893-375a0510fc36",
"metadata": {},
"outputs": [],
"source": [
"import torch\n",
"import numpy as np\n",
"import matplotlib\n",
"import matplotlib.pyplot as plt\n",
"from torch.nn.parameter import Parameter"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "69b90290-5389-4f14-82a2-2bb98dee3125",
"metadata": {},
"outputs": [],
"source": [
"x = np.random.uniform(0.0, 3.0, 100)\n",
"y = 0.3 * (3.0-x) + np.random.normal(0, 0.075*(3.0-x))"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "f713e5ba-2805-4d6d-a168-28302ebe3453",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7f64c91116d0>"
]
},
"execution_count": 3,
"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(x, y)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "5105b5ba-bd3a-45be-be87-88fc54b0c24a",
"metadata": {},
"outputs": [],
"source": [
"x = torch.tensor(x, dtype=torch.float32).unsqueeze(0)\n",
"y = torch.tensor(y, dtype=torch.float32)"
]
},
{
"cell_type": "markdown",
"id": "78c441a6-05d8-45b5-991a-50bd37e6b223",
"metadata": {},
"source": [
"## Linear Regression ($\\sigma$ fixed)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "d8eeaec7-0328-4e90-9364-5071e881fab2",
"metadata": {},
"outputs": [],
"source": [
"w = Parameter(torch.zeros(1, 1))\n",
"b = Parameter(torch.zeros(1))\n",
"optimizer = torch.optim.SGD([w,b], lr=0.1, momentum=0.0)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "def79ad8-f1a7-40a5-8984-b7db8a3bdbb1",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f64c901cb80>]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAnnUlEQVR4nO3deZSU9Z3v8fe3qwvolqVF9oIOBBVkERoRkqARjApoVBrNjSbHnDjxME6WGbM4g1lGZ/FChjt3sschxnEyyU1iRrolgqIJGjSJRqDYF4MySlezyibSQC+/+0d1Q1Fdy9PdT3Vtn9c5HLu6nq76PTz47V99n+/v+zPnHCIikv9Ksj0AERHxhwK6iEiBUEAXESkQCugiIgVCAV1EpECUZuuNBwwY4EaOHJmttxcRyUvr1q075JwbmOi5rAX0kSNHsnbt2my9vYhIXjKzt5I9p5SLiEiBUEAXESkQCugiIgVCAV1EpEAooIuIFIisVblkQm04wpJVO6k/2sCwijLunz2GeVWhbA9LRKRbFExArw1HeGDZZhoamwGIHG3ggWWbARTURaQoFEzKZcmqnWeDeZuGxmaWrNqZpRGJiHSvggno9UcbOvR9EZFCUzABfVhFWYe+LyJSaAomoN8/ewxlwcB53ysLBrh/9pgsjUhEpHulDehm9piZHTCzLWmOu9LMms3sdv+G5928qhCL5k8kVFGGAaGKMhbNn6gboiJSNLxUuTwOfA/4SbIDzCwAfBNY5c+wOmdeVUgBXESKVtoZunNuDXA4zWFfAJ4EDvgxKBER6bgu59DNLARUA494OHaBma01s7UHDx7s6luLiEgMP26Kfgv4O+dcc7oDnXNLnXNTnXNTBw5M2J9dREQ6yY+VolOBX5gZwADgRjNrcs7V+vDaIiLiUZcDunNuVNvXZvY48LSCuYhI90sb0M3s58BMYICZ1QEPAkEA51zavLmIiHSPtAHdOXen1xdzzn26S6MREZFOK5iVoiIixU4BXUSkQCigi4gUCAV0EZECoYAuIlIgFNBFRAqEArqISIFQQBcRKRAK6CIiBUIBXUSkQCigi4gUCAV0EZECoYAuIlIgFNBFRAqEArqISIFQQBcRKRAK6CIiBUIBXUSkQCigi4gUiLQB3cweM7MDZrYlyfOfNLNNrX/+YGaT/B+miIik42WG/jgwJ8Xzu4FrnHOXA/8ELPVhXCIi0kGl6Q5wzq0xs5Epnv9DzMNXgOE+jEtERDrI7xz6Z4Bnkj1pZgvMbK2ZrT148KDPby0iUtzSztC9MrNZRAP6VcmOcc4tpTUlM3XqVOfXe2dTbTjCklU7qT/awLCKMu6fPYZ5VaFsD0tEipAvAd3MLgceBeY6597x4zXzQW04wgPLNtPQ2AxA5GgDDyzbDKCgLiLdrssB3cwqgWXAXc6517s+pNwVPxt/73TT2WDepqGxmSWrdiqgi0i3SxvQzeznwExggJnVAQ8CQQDn3CPA3wMXAT8wM4Am59zUTA04WxLNxpOpT/GciEimeKlyuTPN8/cA9/g2ohy1ZNXOdrPxZIZVlGV4NCIi7WmlqEdeZ91lwQD3zx6T4dGIiLSngO5Rsln3heVBQhVlGBCqKGPR/InKn4tIVvhWtljo7p895rwcOkRn4w/ePF4BXERyggK6R21BWzXnIpKrFNA7YF5VSAFcRHKWcugiIgVCM/Q8prYDIhJLAT1Pqe2AiMRTyiVPJVro1NZ2QESKkwJ6nkq20EltB0SKlwJ6nkq20EltB0SKlwJ6nrp/9hjKgoHzvqe2AyLFTTdF85QWOolIPAX0PKaFTiISSwE9g1QnLiLdqagDeiYDrurERaS7Fe1N0baAGznagONcwK0NR3x5fdWJi0h3y+sZeldm2KkCrh8zaNWJi0h3SztDN7PHzOyAmW1J8ryZ2XfMbJeZbTKzKf4Ps71EM+z7frmBqn98ztMsO9MBV3XiItLdvKRcHgfmpHh+LnBJ658FwA+7Pqz0ku3xeeRko6fUSaYDrurERaS7pQ3ozrk1wOEUh9wK/MRFvQJUmNlQvwaYTKqZtJdcdaYD7ryqEIvmT9T2dCLSbfzIoYeAPTGP61q/tzf+QDNbQHQWT2VlZZfedFhFGZEUQT1d6qQ7FuaoTlxEupMfAd0SfM8lOtA5txRYCjB16tSEx3iVaI/PWF5SJwq43qmmXiT3+RHQ64ARMY+HA/U+vG5KbcHkoeVbOdrQeN5zylX7SzX1IvnBjzr05cCnWqtdPgAcc861S7dkwryqEBsevIFvfXxyp3LVteEIMxavZtTCFcxYvNq3GvRCo5p6kfyQdoZuZj8HZgIDzKwOeBAIAjjnHgFWAjcCu4CTwN2ZGmwynUmdaNbpnWrqRfJD2oDunLszzfMO+JxvI+ommV5YlEq+5aOT3YBWTb1Ibinapf/ZmnVmuuVAJqimXiQ/FG1Az9ZKznzMR6umXiQ/5HUvl65IVPbYHbPOfM1Hq8RTJPcV7Qw9W7NO9XgRkUwp2hk6ZGfWma1PBiJS+Io6oGdDru0Fmm8VNyKSnAJ6FuRKPlq1+CKFRQE9S3JhZpzNWnwR8Z8Cehbkysw4XytuRCSxoq1yyaZcqUVXxY1IYSnIgJ7rTbdyZWasFaAihaXgAnqipfVf/OUGRuZQcM+VmbFWgIoUloLLoSdKZ7TtpJErVRy5VIueKxU3ItJ1BTdDT5e2yIW+KZoZi0gmFNwMPd1eo5AbVRyaGYuI3/Juhv76/nf5y/9ay7Nb9nG6qf1+oolu9MVLlKvO9RupIiLp5N0Mfc/hk6x76yirtu6nX1mQmy4fSnVViKnvu5CnNtSfzaEHzGh2DuP8HasT5apzpS5cRKQrLLrhUPebOnWqW7t2bad+tqm5hZd3HaI2HGHV1v00NDZz0QU9ONbQSFPLufMpCwa47YoQL+w4mHJF5ozFqxOmaQJmtDinHicikjPMbJ1zbmqi5/Juhg5QGihh5phBzBwziBOnm3hu6z4eWLb5vGAO0RugL+w4yO8XXpvy9ZLl1Jtbf9lpxi4i+cBTDt3M5pjZTjPbZWYLEzzfz8x+bWYbzWyrmXXbRtG9e5Yyf8pwzjS1JHw+crSB5RvraTjTPt/exkv9dy5Ux4iIpJI2oJtZAPg+MBcYB9xpZuPiDvscsM05NwmYCfyrmfXweawpJQvKATP++udhrnz4N3zlVxv5/a5DNMfN5L3cSIXcqI4REUnGS8plGrDLOfcmgJn9ArgV2BZzjAP6mJkBvYHDQJPPY00p2WKdh6snMKRfL2rDEVZu3sd/r6tjSN9e3Dp5GNVTQowd0rddj/KS1huq8dTjRERymZeAHgL2xDyuA6bHHfM9YDlQD/QBPu6ca5cDMbMFwAKAysrKzow3qXQbR3xo9AD+8dYJPL9tP7XhCD9+eTf/vuZNxg7pw/wpIW6ZFDqba4+vegH1OBGR3Je2ysXMPgbMds7d0/r4LmCac+4LMcfcDswAvgSMBp4HJjnnjid73a5UufjhnROneXrTXmrCETbsOYoZzBg9gHlVIeZMGMJvtu3Per9yEZF4Xa1yqQNGxDweTnQmHutuYLGL/nbYZWa7gbHAnzox3oxJtKlE7edmsPvQe9SEI9SGI3zlVxv5eu1mbhg3hH+eN4GrLhlAMJB3669EpAh5maGXAq8DHwEiwGvAJ5xzW2OO+SGw3zn3kJkNBtYTnaEfSva63T1DT5ZGie2h4pxj/dtHWLY+worNezl6spGLLujBzZOGUV0V4vLh/YjeJhARyY5UM3RPC4vM7EbgW0AAeMw597CZ3QvgnHvEzIYBjwNDASM6W/9pqtfs7oCebPFQqKIsYZ36maYWXtx5gJpwhN9uP8CZ5hbeP/AC5leFuHVyiBH9y7tj2CIi5+lyQM+E7g7ooxauINGZGrB78U0pf/bYyUZWbtlLzfoIf/qfwwBMG9mfeVUhbpo4lH7lQf8HnGG5sKepiHRcwa0U7YxkXRi9lCL2Kw9y57RK7pxWyZ7DJ3lqQ4SacISv1mzmoeVbuXbsIOZVhZg1diA9S9PXs2ebeteIFKaimaF7yaF3hHOOLZHj1IQjLN8Y4dCJM+2aheVqvr2j6ScRyR2aoZO+Tr2jzIyJw/sxcXg/vnrjWF7edYiacIRl6+v4f6++zYj+ZVRPjvY8f//A3n6eSpd53dNUaRmR/FI0M/TucuJ0E89u2cdTGyL8ftchWhxMGlFB9eRh3DxpGBf17pmR9+1I8PUyQ/f7E42I+KMob4rmwuxy//FTrfn2erbvPU6gxLjm0oFUV4W4ftxgennoH+NFR4Ovl+OVlhHJTUWXcsmVm36D+/ZiwYdHs+DDo9mxrzXfvqGe1TsO0LtnKXMmDGF+VYjp77+IQEnn8+2JNsZu6w6Z6Hy9pJ+8pmVEJHcUZEDvaIDrDmOH9OWBuX3529ljeXX3O9Ssj/DMlsTNwjqqM8E33Z6mXakKEpHsKMg17bk8uwyUGB8aPYAlH5vE2q9fx3fvrGLcsL78+OXdzPnWS8z99kssXfMG+4+f8vyayYJsV4JvopbCalAmktsKcoaeL7PLXsEAN0+K3ixtaxa2LBzhf6/cwaJndpzXLKx3z+SXKlnr4K4EX7+rgkQk8wrypmi+V2i8efAEteEINRsi7DncQK9gCTeMG0L1lBBXXzyA0gTNwnLhJnAujEGk0KnKJU+DS1uzsJpwhKc3RZuFDeh9rlnYxFD3NwtL9vea779ERfJFUQb0QpOoWdjogRdQ3Xpzc/iFmW8WlipoL1m1U2WOIt1AAb3AJGsWVj0lxI0TMtcsLFVtev3Rhk43PxMR74quDr3QxTcLW76xnmXr63hg2WYefGorH7ks2ixs5hhvzcK8pqdSVQ+luxGdyRRYIaTXRPygGXqBcM6xOXKM2nD9ec3CPtraLOyKJM3COpL7TjVDT1Zps2j+RICM5deVu5dio5RLkWlqbuGlXYeoDUdYtXUfpxpbqOxfzrzJw6ieMpxRAy44e2xHlvinC57JZsqZbCNQ9Y/PceRkY0ZeWyQXKeVSZEoDJcwaM4hZYwZx4nQTq7bsoyYc4bsv7OI7q3cxeUQF1VUhPnr50A4twkpXm55s9WmmFnrVhiMJg7kfry2SjxTQC1zvnqXcdsVwbrtiOPuOnWL5xmizsAeXb+Wfnt5Gz9ISTjW1tPu5ZIuw0rUMSCRTC72WrNqZ8j1Fio2npf9mNsfMdprZLjNbmOSYmWa2wcy2mtnv/B2m+GFIv2izsGf+5mqeve9qPnPVKHom6PjYq7TE1yX+mWojkGoWrhYFUozSBnQzCwDfB+YC44A7zWxc3DEVwA+AW5xz44GP+T9U8dPYIX154MbLWP+N6/nszNGU9zgXcHsFA2zfd5wd+4778l7zqkIsmj+RUEUZRjS/7cdNy2Sz8IqyYKdfuzYcYcbi1YxauIIZi1dTG450ZYgi3SrtTVEz+yDwkHNuduvjBwCcc4tijvksMMw593Wvb6ybornnVGMzz2/bT004wu9eP0hzi+OyoX2ZXxXilsnDGNy3V7aHeB6/K1xUMSP5oKs3RUPAnpjHdcD0uGMuBYJm9iLQB/i2c+4nCQayAFgAUFlZ6eGtpbvEV6g8dPM4mlscNRvqeXjldhY9s50ZFw9g3uQQs9M0C+sufjcQy8W2yyId4WWG/jFgtnPuntbHdwHTnHNfiDnme8BU4CNAGfBH4Cbn3OvJXlczdH/4sagm3cz0jYMneCqmWVhZMMAN4wczryp5s7B8NGrhCq12lZzX1Rl6HTAi5vFwoD7BMYecc+8B75nZGmASkDSgS9f5tTNTspnpfb/cwJJVO7l/9hi+dMMYvnj9pax761yzsKc21J9tFja/ajgTQn27vVmYn/Kl7bJIMl6mVq8Bl5jZKDPrAdwBLI875ingajMrNbNyoimZ7f4OVeKlShF0RKpqkbZfErXhCGbG1JH9ebh6In/62kf497uuYOr7+vOzV97m5u+9zPX/tobvv7CLuiMnO3U+2aZNPSTfpZ2hO+eazOzzwCogADzmnNtqZve2Pv+Ic267mT0LbAJagEedc1syOXDxb8FOsplpm0R55J6lAWaPH8Ls8UM4drKRFZv3nk3/LFm1k2mj+lNdFeLGiUPpV5aZZmHJdDYNpU09JN9p6X8e82tJfaIcejyveeQ9h0+e3ZzjzYPv0SNQcrZZ2Kwxg+hRmtl8uypVpNBp6X+B8mvrudiZabKZutc88oj+5XzhI5fw+WsvZnPkGMvWR3h6Uz3PbNlHRXmQmyYOZf6UEFMqEzcL66rurFRRl0fJNQroeczPFEHbkv5kM9yO/pIwMy4fXsHlwyv4+k2X8dKuQ9Ssj/Dk+jp+9urb0WZhVSGqq0LnNQvrqu7aINyvG9IiflLKRdrJ5MzzxOkmnt2yj5pwHX944x2c47xmYRf17tml189kZ8dsvI9IPLXPlZzU1ixs2foIO/a9S2mJcc2lA6meEuK6ywbTK0GfmXS6K4eumnXJFuXQJSe1NQtb8OHRbN97nNpwhNoNEX674wC9e5Yyd8IQqqeE+MCoiygp8ZZv765KFdWsSy7SDF1ySnOL45U336EmHOHZLfs4cbqJof16cevkEPOnhLh0cJ9sDxHo3moa3XyVWEq5SF5qONPM89v3UxvTLGzc0L7MnxLilknDGOSxWVimAmJ3BFqVYUo8BXTJe4dOnObXG+upDUfYWHeMEoMZFw+guirE7PFDuCBJs7BsB8SuBn3dfJV4yqFL3hvQuyd3zxjF3TNG8cbBE2fz7V96YiNlwS3cMH4w1VUhroprFpbNDop+lDZ2VxmmFAYFdMk7owf25ss3jOFLrc3CloUjrDjbLKwnt0waRnVViAmhvp0KiH6lUvz4ZaKbr9IRCuiSt9qahU0d2Z8Hbx7HizsPUrM+wk9feYvHfr+biwf1pk+vUo6famr3s8kCop8LhvyYXfu1GliKgwK6FIREzcJqwnXsOnCi3bGpAmKyWfWXn9gIdCyo+zG7VsMw6QgFdCk4/cqDfGJ6JZ+YXsmewydZ9Mx2ntu6n6aWaAHApYN7U94jwJmmlnbNwpLNnpud6/BM3c9eOwrg4oWqXKQoOOfONgv79cZ63nnvDBXlQT56+VCqq841C5v8D89xtKEx6eukqi5JlHsHza7FXypbFInR2NzCy63Nwp7bto9TjS1U9i/nsqF9+O32/TS1JP/ZZEv7s10eKcVDZYsiMYKBEmaNGcSsMYPONgurDUdYtXV/2p9Nlv/WBtOSCwpjd1+RTurds5TbrxjOT++ZnvbYVPlv1YtLLlBAF2kVSlF9YsDlw/sxqG9PWlrapymTzdxVLy7dyVNAN7M5ZrbTzHaZ2cIUx11pZs1mdrt/QxTxV204wozFqxm1cAUzFq+mNhwBEm8S3au0hM/OHM1tVwxnS+QYn/jRq8z45moWP7OD1/e/e/Y4bTAtuSDtTVEzCwCvA9cDdcBrwJ3OuW0JjnseOEV0I+n/TvW6uikqmZas6iTVzctUq0TbmoXVrK9jzZ8P0dziGD+sL9VV0WZhf3jjHVW0SMZ1qcrFzD4IPOScm936+AEA59yiuOPuAxqBK4GnFdCLTy61eU1WddIrWMKRk+3LEjva7KqtWVhNOMKmDjQLE+mqrla5hIA9MY/rgPPuIJlZCKgGriUa0KXI5Noem8mqTuK/16ajNy9jm4XtOnCCpzZEqAmfaxY2e/xg5iVoFiaSSV4CeqKtYuKn9d8C/s4515xqJ3czWwAsAKisrPQ4RMkHuVa219EAPayirNOfMC4eFG0W9sXrLmXd20eoCUd4emM9tQmahaX6/0Okq7wE9DpgRMzj4UB93DFTgV+0/mMdANxoZk3OudrYg5xzS4GlEE25dHLMkoNyrWwvWR8ViM5QYv/xlQUDzBo7sMufMEpKjCtH9ufK1mZhL+w4SG34/GZh1VUhbp08jOEXlqd8rVxKX0n+8BLQXwMuMbNRQAS4A/hE7AHOuVFtX5vZ40Rz6LX+DVNyXa61eU3UR6WN41xQD7UGS78/YfQsDTBnwhDmTBjC0ZNnWLF579kgvWTVTqaP6k91VYi5E4fSryx43s92JH2lwC+x0ib3nHNNwOeBVcB24Ann3FYzu9fM7s30ACU/5FrZ3ryqEIvmT0xaW94WzH+/8FrmVYUy+gmjorwHn5z+Pn5174dYc/8svnz9pRx89zQLl23myod/w2d/to7ntu7jTGvPgVS/XGK1Bf7I0QYc5wJ/WxmmFB9Pt+KdcyuBlXHfeyTJsZ/u+rAk3+Rim9e2LoWjFq5od9MHzg/WyT5hOKLbwPlxLrGz6aH9evHF6y7hyMlGfr2xnpWb951tFpYsVRT/yyXX7ltI9qm2SnyTq21evaSDZo0dyM9eeTth4PejYic+jVJ/7BSP/O5NFs2fyNduuoyX/nyQmnA9v1pbl/I8YuXafQvJPtVTScFLlw6qDUd4cl0kYTBvkyjl0RGpZtPBQAnXjh3Md++s4h9uGU8gQSFMicFfzRx93vfUbkDiKaBLwYvNpxvR3HlsW9tEwTaRrsx8vc6mv7t6F80JfrO0OHho+Vbu+c/XWLFpL6cam7vlvkWyNgmSm5RykaKQKh3kNVCnmvmmqzbxWgWUaix/cdUontoQ4TfbD9CnZylzJw7hL64aSc36CHuPnfL9vkWuLRaT9DRDl6LnJUVhRANaolmql2oTr7PpZGMJmPGjNW8SMOOzM0dzw/ghrNi0l++/8AYAf3nNaP7j7it9DbReq20kdxRVQNfHR0kkUbANlhgXlkfrw2MXIiUK1l4CX7q0T6qxQHRPU0f0ZuoPXnyD1Tv28+DN4/nOnVWMGdKHH730Jjf82xpu+s5LPPrSmxw4fqrTfx9tdNM1/xTNFnTaIkxSSZYymbF4dcJUSWwzr2Rlkcm2q+vIWErMaE7y/2jsv99kzcLmTwlxw7j0zcJi37OiPIhzJN1btaONzMRf2lMUPP2PKRLPS7DO5L+tZO+f6j12HThBbTjaLCxytIHyHgFmjx8S/QU1+qJ2zcISTXaS0SQo+7SnKPr4KJ3j5WZmojYDXqtNOnsztU2if78XD+rNV2aP4UvXX8rat45QuyHaLKwmHGFgn3PNwsYPizYL81rlE0py01XtB3JH0QT0XOs1IvnBS7Du7CpZL1UkqXrSQOp/vyUlxrRR/Zk2qq1Z2AF+8MIb/Pjl3fz45d2Ulhizxw9J+QujjUHCTxuqhMktRRPQuzKLksKXbJbpNVh3ZpWsl6X7bf/96rJNnGxsafcas8YO9PRePUsDnGps4c8HTpz9XlOLY8XmvZ5+PtkvDrUfyC1FE9BzsdeI5IZ0s8xMtTTwmgacVxViyaqdnExw/As7Dnp+P6+plXipJj5e+85I9yiagA6522tEsitbs8yOpAH9uAeU7tgSoIXzyzSN6N/Fvzy7Azg/jVIbjrTrLd9GqczsKKo6dJFEsnXDvCNL97vat6U2HKEkzW5JLcD/LL6J1x+ey4Kr30/A7Gywrj92iq/8aiM/WvPm2eOXrNqZtAJIqczsKKoZukgi2bphnioNGJ/TnzV2IE+ui3S6kuaBZZuT1rO3CbQG/GCghBWb97Y7vqnF8fDK7azcspf5VaGk6RaHbohmiwK6FL1s3jBPlAZMlNN/cl2EKZX9eOXNIzQ7R8CM265InEKM/2Vw8kyTp9x5bABP9enk5OlmvvHU1qTPJ9tURDJPKRcpel6X5XeXZDn9P7xx+GzQbXaOJ9dFPPWVOXIy8YrPeLGBONmnk1BFGau++GFW/vXVzBrTvsKmR6CEL99wqaf3E/9phi5Cbt0wTzY7jk+YJLpx29lKlvi8d7pPLeOG9eU/7p7GsnV1PLxyO++8dwYDzjS38H9W7eTPB04wvyrEJYP7dHgs0nkK6CI5Jt3q0Fjxwb8zN3IN+OQHKs/7xeC1zHf+FcOZf8VwABrONPPctn3UhiMsXfMmP3zxDcYP60t1VYhbJg9jUJ9eHR6bdIynXi5mNgf4NhAAHnXOLY57/pPA37U+PAH8lXNuY6rX7O5eLiL5IlFvlWTlgfG9XJL1lakoC3JBz9Lzmm8da2jM2HqMg++e5ulN5zcLu+qSgcyvCnHD+MGU99BcsrO61MvFzALA94HrgTrgNTNb7pzbFnPYbuAa59wRM5sLLAWmd33oIsUn0ezYa5VLslTJQ7eM77aUUvxN2YVzx3LiVBM14Qj3/XLD2WZh1VUhPhTTLEw9Ybou7QzdzD4IPOScm936+AEA59yiJMdfCGxxzqW8Epqhi3SM14CXzcCYqk31LZOG8dr/HKZ2Qz0rNtVz/FTT2WZhF5YH+d7qXZxqamn3c4nKOIs52Hepfa6Z3Q7Mcc7d0/r4LmC6c+7zSY7/CjC27fi45xYACwAqKyuveOuttzp0IiKS27y2Ej7V2MyLOw+wbH2EF3YeoDHRRqqc6/CovQzOSRXQvZQtJlpelvBv38xmAZ/hXD79/B9ybqlzbqpzburAgd6aColI/vC66rZXMMCcCUNZ+qmpvPa165K+XuRog7bC6wAvAb0OGBHzeDhQH3+QmV0OPArc6px7x5/hiUg+6UyLgoryHikXI6kBmHdeAvprwCVmNsrMegB3AMtjDzCzSmAZcJdz7nX/hyki+aAj/WnS/VzPQAlXXzKAkiQtaNQArL20Ad051wR8HlgFbAeecM5tNbN7zeze1sP+HrgI+IGZbTAz3e0UKUKdXXWb6Oe+efvl/NdnprPk9kn0CLQPVZGjDUx/+Dfa7D1G0ewpKiL5q63KJVH6xQxuqxrO1266jAsv6JGF0XUvbRItIlnlV9lhsioagGDAuObSQcyfEuLasYPoFZfCKRTaJFpEssbPfUdT3Qj99IdG8tSGen6zfT99epVy44ShVE8JMW1kf0qSJeILjAK6iGSUnztClfcI8N6Z9s3HLiwP8rWbxrFw7mX88Y13+PZvX+eXa/fwy7V7AOhVWsJ9113KvTNHF/QiJQV0Eckov3aEqg1HEgZziC5UAgiUGIdOnGbD20fPf76phcXP7uDf17zBiVNNNLZEU81d+bSQi9QPXUQyqqvb57VJtZCooTHaMqA2HOHLT2w8G7DjHTnZ2O65QlqkpBm6iPguNq1RUR4kWGLnBdLO7AiVbkbvdau9RCJHG1jz+kFmXDyAQB7n2xXQRcRX8TdBj5xsJBgwKsqCXWrZm6pP/IXlQU+bewTMEgZ8Az712J8Y2Kcnt04axryqEOOH9cXSbKyda5RyERFfJQqsjc2OC3qWsnvxTfx+4bWdylffP3sMwQSz50CJ8eDN49PO4IMB487pIxKuZL1j2gj6l/fg4LunefTl3Xz0uy8z+1tr+MGLu/KqxYACuoj4yq+boPHmVYVY8rFJVJQFz37vwvIg//qxScyrCqXMyV9YHuTjV47ghR0HaWhsJtA68w5VlHHbFSFqw/UcPnnm7PHBEqOxyfEvz+5kxjdXc8fSP/LEa3s4fsrb/qzZopSLiPgqWWrEj94rqfZ+TdVmFzjvuWbnzubxE36iaHGcaW7hd/fPpDZcT+2GCH/75Ca+8dQWrhs3mOrJIa4ZM5BggpYE2aSVoiLiq1SbXGS6NDBZjXmqPu31RxsS9wOPeX5ov178rytHcOS9M/x6014Ov3eGC8uD3Nyab68aUdFt+XYt/ReRbpVri3dGLVyRMGgbyT9RJNrHtaIsyDc+Oo6K8iA14QjPb9vP6aYWRl5UHv30MDnEyAEXZOAMYsalgC4ixSzVDD1RqiaV2E8b755q5Jkt+6hZH+GV3e/gHEyprKB6ynA+OnFoRpqFKaCLSFFLlwaKr5s/cjL1zc/4LfUgetP3qQ311ITreH3/CYIBY+aYQVRX+dssTM25RKSotaV7kqWBYm+2zli8Om1Ab6vY+XrtZn7+6h6anSNg0bLIVfd9mG17j1OzPsLyjfU8vy3aLOymiUOprgpxZQabhWmGLiISI1m+PVaoooxZYwfy01febvdcW+69bRHTRRf0YNSAC9i29zgnzzQTqijjC9dezB3TKjs1Ps3QRUQ8SrUiFc61LfjSExsSPt/2y6BtReo7753h5JlmHrplHL2CAWoyuMNSbhVRiohkWaL9TdsSJG1b6gEk6f+VUENjM9/57S5unRzi8bundXp2no6nGbqZzQG+DQSAR51zi+Oet9bnbwROAp92zq33eawiIhmXLt8O0Tx7R0WONjBq4YqMlnGmDehmFgC+D1wP1AGvmdly59y2mMPmApe0/pkO/LD1vyIieSfVilTofBsDR2Z7sHtJuUwDdjnn3nTOnQF+Adwad8ytwE9c1CtAhZkN9XWkIiI5oqttDDLVg91LQA8Be2Ie17V+r6PHYGYLzGytma09ePBgR8cqIpITUuXZ2xp/BdK0AshEF0cvOfREo4q/HeDlGJxzS4GlEC1b9PDeIiI5x0uevU2yVap+NCuL5yWg1wEjYh4PB+o7cYyISMFIl2dvk6wLZEd3bPLCS8rlNeASMxtlZj2AO4DlcccsBz5lUR8Ajjnn9vo8VhGRvDOvKsSi+RMJVZRhnCt9zEqVi3Ouycw+D6wiWrb4mHNuq5nd2/r8I8BKoiWLu4iWLd7t+0hFRPKU19l8V3mqQ3fOrSQatGO/90jM1w74nL9DExGRjtBKURGRAqGALiJSIBTQRUQKhAK6iEiByFo/dDM7CLzVyR8fABzycTjZpHPJTYVyLoVyHqBzafM+59zARE9kLaB3hZmtTdbgPd/oXHJToZxLoZwH6Fy8UMpFRKRAKKCLiBSIfA3oS7M9AB/pXHJToZxLoZwH6FzSysscuoiItJevM3QREYmjgC4iUiByOqCb2Rwz22lmu8xsYYLnzcy+0/r8JjObko1xeuHhXGaa2TEz29D65++zMc50zOwxMztgZluSPJ9P1yTdueTLNRlhZi+Y2XYz22pmf5PgmLy4Lh7PJV+uSy8z+5OZbWw9l39IcIy/18U5l5N/iLbqfQN4P9AD2AiMizvmRuAZojsmfQB4Ndvj7sK5zASezvZYPZzLh4EpwJYkz+fFNfF4LvlyTYYCU1q/7gO8nsf/r3g5l3y5Lgb0bv06CLwKfCCT1yWXZ+iFtDm1l3PJC865NcDhFIfkyzXxci55wTm31zm3vvXrd4HttN/TNy+ui8dzyQutf9cnWh8GW//EV6H4el1yOaD7tjl1DvA6zg+2fjx7xszGd8/QfJcv18SrvLomZjYSqCI6G4yVd9clxblAnlwXMwuY2QbgAPC8cy6j18XTBhdZ4tvm1DnAyzjXE+3RcMLMbgRqgUsyPbAMyJdr4kVeXRMz6w08CdznnDse/3SCH8nZ65LmXPLmujjnmoHJZlYB1JjZBOdc7D0bX69LLs/QC2lz6rTjdM4db/t45qI7RAXNbED3DdE3+XJN0sqna2JmQaIB8GfOuWUJDsmb65LuXPLpurRxzh0FXgTmxD3l63XJ5YBeSJtTpz0XMxtiZtb69TSi1+adbh9p1+XLNUkrX65J6xh/DGx3zv3fJIflxXXxci55dF0Gts7MMbMy4DpgR9xhvl6XnE25uALanNrjudwO/JWZNQENwB2u9TZ4LjGznxOtMhhgZnXAg0Rv9uTVNQFP55IX1wSYAdwFbG7N1wJ8FaiEvLsuXs4lX67LUOA/zSxA9JfOE865pzMZw7T0X0SkQORyykVERDpAAV1EpEAooIuIFAgFdBGRAqGALiJSIBTQRUQKhAK6iEiB+P+SA46Y7IJ02wAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(x, y)\n",
"for e in range(50):\n",
" optimizer.zero_grad()\n",
" y_hat = torch.matmul(w, x) + b\n",
" y_hat.squeeze(0)\n",
" l = torch.mean((y-y_hat) * (y-y_hat))\n",
" l.backward()\n",
" optimizer.step()\n",
"xx = np.linspace(0, 3, 100)\n",
"plt.plot(xx, w.item()*xx + b.item())"
]
},
{
"cell_type": "markdown",
"id": "ac9b5102-2204-4d21-9fe5-aa0e026a068e",
"metadata": {},
"source": [
"## Heteroskedastic Linear Regression ($\\log(\\sigma^2) = x w_{\\text{var}} + b_{\\text{var}}$)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "949f40e4-111f-441b-a74e-c39bc9754650",
"metadata": {},
"outputs": [],
"source": [
"w_mu = Parameter(torch.zeros(1, 1))\n",
"b_mu = Parameter(torch.zeros(1))\n",
"w_var = Parameter(torch.zeros(1, 1))\n",
"b_var = Parameter(torch.zeros(1))\n",
"optimizer = torch.optim.Adam([w_mu, b_mu, w_var, b_var], lr=0.1)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "87db3c2a-bead-44e0-b120-f65142684800",
"metadata": {},
"outputs": [
{
"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(x, y)\n",
"for e in range(100):\n",
" optimizer.zero_grad()\n",
" mu = (torch.matmul(w_mu, x) + b_mu).squeeze(0)\n",
" log_var = (torch.matmul(w_var, x) + b_var).squeeze(0)\n",
" var = torch.exp(log_var)\n",
" # -log likelihood\n",
" l = -torch.mean(- (y-mu) * (y-mu) / (2*var) - torch.log(np.sqrt(2*np.pi) * torch.sqrt(var)))\n",
" l.backward()\n",
" optimizer.step()\n",
" xx = np.linspace(0, 3, 100)\n",
" plt.plot(xx, w_mu.item()*xx + b_mu.item())"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "5e960e69-2170-430a-a313-fdbb2111acc1",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.PolyCollection at 0x7f64c04be820>"
]
},
"execution_count": 9,
"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(x, y)\n",
"xx = np.linspace(0, 3, 100)\n",
"mu = w_mu.item()*xx + b_mu.item()\n",
"plt.plot(xx, mu)\n",
"\n",
"var = np.exp(w_var.item() * xx + b_var.item())\n",
"std = np.sqrt(var)\n",
"plt.fill_between(xx, mu - 1.96*std, mu + 1.96*std, alpha=0.2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a7cd2c2f-732d-4ba5-be9a-cd9d125ee5d5",
"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.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment