{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "from fastai.basics import *" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## MNIST SGD" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Get the 'pickled' MNIST dataset from http://deeplearning.net/data/mnist/mnist.pkl.gz. We're going to treat it as a standard flat dataset with fully connected layers, rather than using a CNN." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "path = Config().data_path()/'mnist'" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[PosixPath('/home/ubuntu/.fastai/data/mnist/mnist.pkl.gz')]" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "path.ls()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "with gzip.open(path/'mnist.pkl.gz', 'rb') as f:\n", " ((x_train, y_train), (x_valid, y_valid), _) = pickle.load(f, encoding='latin-1')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(50000, 784)" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.imshow(x_train[0].reshape((28,28)), cmap=\"gray\")\n", "x_train.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(torch.Size([50000, 784]), tensor(0), tensor(9))" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x_train,y_train,x_valid,y_valid = map(torch.tensor, (x_train,y_train,x_valid,y_valid))\n", "n,c = x_train.shape\n", "x_train.shape, y_train.min(), y_train.max()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In lesson2-sgd we did these things ourselves:\n", "\n", "```python\n", "x = torch.ones(n,2) \n", "def mse(y_hat, y): return ((y_hat-y)**2).mean()\n", "y_hat = x@a\n", "```\n", "\n", "Now instead we'll use PyTorch's functions to do it for us, and also to handle mini-batches (which we didn't do last time, since our dataset was so small)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "bs=64\n", "train_ds = TensorDataset(x_train, y_train)\n", "valid_ds = TensorDataset(x_valid, y_valid)\n", "data = DataBunch.create(train_ds, valid_ds, bs=bs)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(torch.Size([64, 784]), torch.Size([64]))" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x,y = next(iter(data.train_dl))\n", "x.shape,y.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "class Mnist_Logistic(nn.Module):\n", " def __init__(self):\n", " super().__init__()\n", " self.lin = nn.Linear(784, 10, bias=True)\n", "\n", " def forward(self, xb): return self.lin(xb)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "model = Mnist_Logistic().cuda()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Mnist_Logistic(\n", " (lin): Linear(in_features=784, out_features=10, bias=True)\n", ")" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Linear(in_features=784, out_features=10, bias=True)" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.lin" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "torch.Size([64, 10])" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model(x).shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[torch.Size([10, 784]), torch.Size([10])]" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[p.shape for p in model.parameters()]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "lr=2e-2" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "loss_func = nn.CrossEntropyLoss()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def update(x,y,lr):\n", " wd = 1e-5\n", " y_hat = model(x)\n", " # weight decay\n", " w2 = 0.\n", " for p in model.parameters(): w2 += (p**2).sum()\n", " # add to regular loss\n", " loss = loss_func(y_hat, y) + w2*wd\n", " loss.backward()\n", " with torch.no_grad():\n", " for p in model.parameters():\n", " p.sub_(lr * p.grad)\n", " p.grad.zero_()\n", " return loss.item()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "losses = [update(x,y,lr) for x,y in data.train_dl]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAD8CAYAAABw1c+bAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJztnXeYVNX5x7/vlO0LW1h6WYqgoIAIAmIBC4KNaKIR/WGJhmA0Rk1i0NgiMZpojCU2VCzRYC8oIMWK9EXpdYGVDktd2GXbzPv7Y+6dPXPn3pk7u7Mzszvv53nm2XvPPffed8p+z7nvec97iJkhCIIgJA+OeBsgCIIgxBYRfkEQhCRDhF8QBCHJEOEXBEFIMkT4BUEQkgwRfkEQhCRDhF8QBCHJEOEXBEFIMkT4BUEQkgxXvA0wo1WrVlxYWBhvMwRBEJoMy5Yt28/MBXbqJqTwFxYWoqioKN5mCIIgNBmI6Ce7dcXVIwiCkGSI8AuCICQZIvyCIAhJhgi/IAhCkiHCLwiCkGSI8AuCICQZIvyCIAhJRrMR/upaL176djOW/XQw3qYIgiAkNM1G+Gs8Xrw2vwQPf74u3qYIgiAkNM1G+DNTXfjZqR2weucReL2ygLwgCIIVzUb4AaBNi1R4vIwjx2vibYogCELC0qyEPz8rFQCw/1hVnC0RBEFIXMIKPxF1IqKviWgdEa0hot+b1LmWiFZqrwVE1E85VkJEq4hoORE1aua1VlkpAID9x6ob8zaCIAhNGjvZOWsB/IGZfyCibADLiGgOM69V6mwFcA4zHyKi0QAmAxisHB/BzPujZ7Y5bVqkAQB2Hj7e2LcSBEFosoTt8TPzbmb+Qds+CmAdgA6GOguY+ZC2uwhAx2gbaofC/Eyku51Ys+tIPG4vCILQJIjIx09EhQBOBbA4RLWbAMxU9hnAbCJaRkTjIzUwEpwOwontsvHa/BL8dKC8MW8lCILQZLEt/ESUBeBDAHcwc5lFnRHwCf+fleJhzDwAwGgAtxLR2RbnjieiIiIqKi0ttf0GjGSl+rxXv3p9ab2vIQiC0JyxJfxE5IZP9N9m5o8s6vQF8AqAMcx8QC9n5l3a330APgZwutn5zDyZmQcy88CCAlurh5nidvre0pb90uMXBEEww05UDwF4FcA6Zn7Sok5nAB8BGMfMG5XyTG1AGESUCWAkgNXRMNyKv17WBwCQn5nSmLcRBEFostiJ6hkGYByAVUS0XCu7F0BnAGDmFwE8ACAfwPO+dgK1zDwQQBsAH2tlLgD/Y+YvovoODHTKy8CEc7pjyvdbwczQ7i0IgiBohBV+Zv4eQEj1ZOabAdxsUr4FQL/gMxqXvEw3qj1elFd7/D5/QRAEwUezmrmrk5vhc/McKpeJXIIgCEaapfDnaf79gyL8giAIQTRL4S/I9uXs2SUzeAVBEIJolsLfs002XA7Cyp0yg1cQBMFIsxT+NLcTXVtlYvO+Y/E2RRAEIeFolsIPADkZbpRVSl5+QRAEI81W+FukuVF2vDbeZgiCICQczVf4091Yu7sMhROno0TSNwiCIPhpvsKfVjdxa8WOw3G0RBAEIbFotsJ/qKLOvy9pGwRBEOpotsJ/Quss/7Ysvi4IglBHsxX+CcO7Y97dIwAAZSL8giAIfpqt8LudDnTKy0Ca2yE9fkEQBIVmK/w6LdPdOFIhwi8IgqCTFML/btF2vLd0e7xNEQRBSAiSQvgB4O4PV8bZEkEQhMQgaYRfEARB8GFnzd1ORPQ1Ea0jojVE9HuTOkREzxBRMRGtJKIByrHriWiT9ro+2m8gHOkpsgKXIAiCih1VrAXwB2b+QVs4fRkRzWHmtUqd0QBO0F6DAbwAYDAR5QF4EMBAAKydO42ZD0X1XYRg+8EK/3ZljQdpbmesbi0IgpCQhO3xM/NuZv5B2z4KYB2ADoZqYwC8yT4WAcghonYALgQwh5kPamI/B8CoqL6DMAzrke/flrBOQRCECH38RFQI4FQAiw2HOgBQw2Z2aGVW5WbXHk9ERURUVFpaGolZIbnz/J74++WnAAAOVchSjIIgCLaFn4iyAHwI4A5mLjMeNjmFQ5QHFzJPZuaBzDywoKDArllhcTkdKMzPAAAclnh+QRAEe8JPRG74RP9tZv7IpMoOAJ2U/Y4AdoUojyktM3yRPVdPXhTrWwuCICQcdqJ6CMCrANYx85MW1aYBuE6L7hkC4Agz7wYwC8BIIsololwAI7WymJKTkeLfZjZ94BAEQUga7ET1DAMwDsAqIlquld0LoDMAMPOLAGYAuAhAMYAKADdqxw4S0SQAS7XzHmbmg9Ez3x45Siz/riOV6JCTHmsTBEEQEoawws/M38PcV6/WYQC3WhybAmBKvayLEhkpdSGcwx77Ch9MGIqBhXlxtEgQBCF+NPuZu4BvIZYUV91bnbVmDw5LhI8gCElKUgg/ADxxZT//9svztqL/w3NE/AVBSEqSRvgzTGbsHquqjYMlgiAI8SV5hD8lWPglwEcQhGQkaYRf9fHrVHu8cbBEEAQhviSN8HtNevc1IvyCICQhSSP8gwpz8cAlvTG8V106iJpa8fUIgpB8JI3wExF+dWZXtG2R5i+78qUF2H+sKo5WCYIgxJ6kEX6dVlmp/u3KGi/+t3hbHK0RBEGIPUkn/PlZKQH7bmfSfQSCICQ5Sad6Tkdg9gm3M2Q2CkEQhGZH0gn/yR1aBuxLj18QhGQj6VRvQOdcvDN+SLzNEARBiBtJJ/wAAtIyV9Z44miJIAhC7ElK4Vdn8VbWyCQuQRCSi6QUftWvX1krPX5BEJILO0svTiGifUS02uL4n4houfZaTUQeIsrTjpUQ0SrtWFG0ja8vaiTPC99sluUYBUFIKuz0+F8HMMrqIDM/zsz9mbk/gHsAfGtYXnGEdnxgw0yNHhkpLpzYNtu/XyqzdwVBSCLCCj8zfwfA7jq5YwFMbZBFMcDpIHxxx9n+/T1HKuNojSAIQmyJmo+fiDLgezL4UClmALOJaBkRjY/WvaLF5HGnAQD+PWdjnC0RBEGIHdEc3L0UwHyDm2cYMw8AMBrArUR0tvmpABGNJ6IiIioqLS2NolnWnN7Vt+D61xtKsWnvUVzz8iJUVMuqXIIgNG+iKfxXw+DmYeZd2t99AD4GcLrVycw8mZkHMvPAgoICq2pRJScjBaP6tIXbSfjrZ2uxYPMBLNlq16slCILQNImK8BNRSwDnAPhUKcskomx9G8BIAKaRQfFkUNc81HgYCzbvBwCkm6zNKwiC0JywE845FcBCAL2IaAcR3UREE4hoglLtcgCzmblcKWsD4HsiWgFgCYDpzPxFNI2PBu1a+vLz6yt0eRk4XFGNm99YitKjEu0jCELzwxWuAjOPtVHndfjCPtWyLQD61dewWHGKIWlbZY0Hby/ehrnr9qH791twz+iT4mSZIAhC45CUM3dVOuamB+wfr/H41+J1OSRlsyAIzY+kF34iwr+urHswOV7tQa3H5/eRlM2CIDRHRNkAZKbWebwqaz2o8fp6/CL8giA0R0TZAGQpwq/2+CWHjyAIzZGwg7vJQJq7rv3776Kf8NOBCgDAd5v2o0frbIw6uW28TBMEQYg60uMHUOOp69nrog8AS7YexIS3lsXDJEEQhEZDhB/AqZ1zcHbP2MwWFgRBiDci/ADS3E68+SvLbBKCIAjNChF+BXWQVxAEobkiwq8w8/dn4YkrE36ysSAIQoMQ4VfolJeBS/q2Cyr3eCWsUxCE5oMIv4E0txOTxvTBvRed6C+rkgXZBUFoRojwmzBuaCF6tW3h3y87XotPl++UCV2CIDQLZDTTglRXXZs45NEv/dtj+neIhzmCIAhRQ3r8FqjCryOrcwmC0BwQ4bcg1RW8EteBY9VxsEQQBCG6iPBbkGLS4/cw46bXl2Lu2r1xsEgQBCE62Fl6cQoR7SMi0/VyiWg4ER0houXa6wHl2Cgi2kBExUQ0MZqGNzZmrp7j1R58uX4fbn6zKA4WCYIgRAc7Pf7XAYwKU2ceM/fXXg8DABE5ATwHYDSA3gDGElHvhhgbS8hk8a09ZZUAzJ8GBEEQmgphFYyZvwNQn1HN0wEUM/MWZq4G8A6AMfW4TlzISAkOeNpSegwAkCbCLwhCEyZaCjaUiFYQ0Uwi6qOVdQCwXamzQyszhYjGE1ERERWVlpZGyaz6k5eZgmfHnhpQpk/gTU8JHvgVBEFoKkRD+H8A0IWZ+wF4FsAnWrnZSuWWM6CYeTIzD2TmgQUFiZEi+byTWpuWp7l9wl9eVYvCidMxbcWuWJolCILQIBos/MxcxszHtO0ZANxE1Aq+Hn4npWpHAE1KIdPd5j17l8PXpu06fBwA8PTcjTGzSRAEoaE0WPiJqC2RbyiUiE7XrnkAwFIAJxBRVyJKAXA1gGkNvV8sIWWE94Lebfzb2WnugOOSyUEQhKaEnXDOqQAWAuhFRDuI6CYimkBEE7QqvwCwmohWAHgGwNXsoxbAbQBmAVgH4D1mXtM4b6NxOblDC1x8Sl3WzjYtUgEAWscfXmZU1ngwR+L7BUFoAoTN1cPMY8Mc/w+A/1gcmwFgRv1MSwxWPDASqW4HtpSW+8tqtTV69Y5+jYfx9Jeb8MI3m/H2zYMxrEerOFgqCIJgD4lLDEPLDDfS3E70bt8C8+4egX6dclDt8QKoy9O/8/BxvPDNZgDAZi3kUxAEIVER4Y+ATnkZSHESaj2MWo8Xx6uD8/QvLTmEv362Bl5ZvEUQhARF0jJHiNvpQHWtF1e+tBA/bjscdPwzLbTz5wM64uQOLWNtniAIQlikxx8hLqcDNV42FX0Vs5QPgiAIiYAIf4SkOAm7tfj9UDhE+QVBSFBE+CPE5XBg39GqsPVE+AVBSFRE+CPELQnaBEFo4oiKRYjbYa8nX+PxYkvpMVTVBkf+CIIgxBMR/ghxO+19ZPuPVeHcf32LBz5pkpOVBUFoxojwR0h2mr0I2L3aoi2Lth5oTHMEQRAiRoQ/Qjrmptuq9+cPVwEAUmw+IQiCIMQKUaUIadMiLajsTxf2sqzvMhF+j5dlZq8gCHFDhD9CTivMRfeCTJzTs26xmBNaZ1nWT3EGDwb3+MsMjH56XqPYJwiCEA4R/ghpnZ2GL/8wHP075fjL8jJTLOubDQYzAxv2Hm0U+wRBEMIhwl9PVEdNp7wMy3pupwOPzlyHa19ZJO4dQRASAhH+eqK6elJDTOpat6cML327BfOLD2DdnjJ/KmdBEIR4YWcFrilEtI+IVlscv5aIVmqvBUTUTzlWQkSriGg5ERVF0/B4c1qXXL/gu5wOPH11f9N6hytq/Nt7yypx4+tLY2KfIAiCFXZ6/K8DGBXi+FYA5zBzXwCTAEw2HB/BzP2ZeWD9TExc/GvvAhjTvwPenzA0ZP3So1X4bmNpDCwTBEGwJqzwM/N3AA6GOL6AmQ9pu4sAdIySbQnPu78Zgj+POhGZqb5JXYMK8zDlBuv2bV9Z+ORugiAIjU20ffw3AZip7DOA2US0jIjGR/lecad7QRZuGd49oOzEti0s6x8or25skwRBEMIStRW4iGgEfMJ/plI8jJl3EVFrAHOIaL32BGF2/ngA4wGgc+fO0TIr5rhCJHGrqK6NoSWCIAjmRKXHT0R9AbwCYAwz+5PTMPMu7e8+AB8DON3qGsw8mZkHMvPAgoICq2oJj9NE+Hu2yUKX/Ay8V7QjDhYJgiAE0mDhJ6LOAD4CMI6ZNyrlmUSUrW8DGAnANDKoOeFyBH+kuRkpSHc742CNIAhCMHbCOacCWAigFxHtIKKbiGgCEU3QqjwAIB/A84awzTYAvieiFQCWAJjOzF80wntIKJwmKRrSU5xITwkW/nW7ywL2X/5uC0Y9ZeoJEwRBiBphffzMPDbM8ZsB3GxSvgVAv+Azmjeqj3/COd3x4rebkeZyotrtDao7+ul5KHnsYgC+xG2PzFgXcPz+T1Zj/Z4yvD/hjMY1WhCEpCJqg7uCD134s9NcyNR6+U4nIcVidu/2gxW4673l6NO+ZdCx/y76qfEMFQQhaRHhjzIupwP3XXwShvdqjW+1yVopTge+2LTftP6L327G0pJDWFpyyF/m9TIcIaKD+j88Gye0zpInAUEQ6oXk6mkEbj6rG3ooqZqz01yWOXrMsndWe4LdQiqHK2oCGgpBEIRIEOFvRI5W+vL0hFqu8fUFJUFl4YRfEAShIYjwNyIt0325fArzM/Hrs7raPu+m15eissbTWGYJgpDkiI+/ERk3pAvys1JxySnt4HAQXp631dZ5S0sOYZ4yJsDMIAr2+T/3dTG6F2Ri1MntomazIAjNHxH+RsTldOCyfu3rde6GPXUx/tUeL1JdwfMAHp+1AQD8IaGCIAh2EFdPnOiQkx7y+BOz/ZOgUV0rPn9BEKKHCH+c6JgbWvhVqjThL9lfDmZZwUsQhIYhwh8ncjPqFmg/sW12yLrVtV6s3nkEw5/4Bq9+b2+cQBAEwQoR/hjSv1OOfzsnw+3ffnd86JW7qmq9KN53DACwfPvhxjFOEISkQYQ/hnxy6zB8euswAMDwXnWpp0PF+QO+Hr8e3mmW9lkQBCESJKonxvTrlINVD430r9fbp32LkOkZAKCyxhNS+H86UI7l2w9jTP8O0TdYEIRmhwh/HNBFf+VDI5FikrLByJjn5qNVVioAwGkSz3/58wtwsLwal/ZtH9SIzNtUivY56ehe4EshcaSiBhPeWoZ/XdUP7cNEFgmC0DwRV08caZHmRprNBVr2H/Mt1G7W4z+oreVbbrK047hXl+C8f33r35+2YicWbjmA578p9pc9OnMdCidOl4ghQUgSRPgTkNdvHGR57J2l2y2PHa0MFP7PVuwKqqPPAFZzxk3+bgsA4FiVrAksCMmACH+C8Pnv6taoH96rNd66aXDE1zAK/++m/hhUx6EJv9q710NLS49WRXxPQRCaHraEn4imENE+IjJdM5d8PENExUS0kogGKMeuJ6JN2uv6aBne3GiR5g7Y1xO8RYKeDTQU+hCBV5sMfLii2n+v/ceqI75nJHi9DK9FempBEGKH3R7/6wBGhTg+GsAJ2ms8gBcAgIjyADwIYDCA0wE8SES59TW2OWNcq9dqxa5QXPPKYsxduzdkHf0uXmb8dKAc/R+eg637ywE0rMdfUV2LCpMxBpUBf5uDc574ut73EAQhOthSF2b+DsDBEFXGAHiTfSwCkENE7QBcCGAOMx9k5kMA5iB0A5K0GKN1XCaLtpuhnlZd68XNbxaheN8x7DhU4S/vkp/h3/a7egDMXL0n4FrhhDsUfR6chd4PzApZ53BFDbYfPF7vewiCEB2i5ePvAEAdddyhlVmVCwYchm/CLGwz6BwC3vtN8Kzf85/8Fmf+o65n/dOBChROnI7/LizxNxTMwIFjgT18fZWwssoayxXDrJCAIEFoOkRL+M1UikOUB1+AaDwRFRFRUWlpaZTMajq4DMrvsCH8LocDqRG4hO7/dI0/qoeZceR44JhArZfh8TL6PjQbf/l4le3rRot3l25D8b6jMb+vICQb0RL+HQA6KfsdAewKUR4EM09m5oHMPLCgoMCsSrOmPq4ehwOmefpDoQ+ueplxsDxQ+D1eRq026msMGz1yvAYrth/GzFW7I7pfJNz/yRq8X7Sj0a4vCIKPaAn/NADXadE9QwAcYebdAGYBGElEudqg7kitTDBgdPW0z0nHfRefFPKcSHv8AFCjCbuXfRE9Acc8XksXz1UvLsSY5+bjlrd/wLrdZaZ1GoLXy6j2eP0pqAVBaDzshnNOBbAQQC8i2kFENxHRBCKaoFWZAWALgGIALwP4LQAw80EAkwAs1V4Pa2WCAaOrBwBuPqtbyHNGndwWqe4Ihb9WF37GQYPwezRXj87KHYfx7Uaf223D3joXTE2YxeD/+tkajHrqu8js0hqkcNcWBKHh2MrVw8xjwxxnALdaHJsCYErkpiUXJrofktduGIRhPVpFPNu2VhN2BlBR5Qk6pgr/Zf+ZDyB4aUd3mPxCr80vicgmoG6VMVltTBAaH5m5myCEiuJpkeZCyWMXByzX2CkvAymuyF09f5u+DoBvcLeyNlD4fT7+YFePsXGJNOLHDjUe1v6K8AtCYyPCnyBY5dmfe9c5+PqPwwEA6Sl1A7lubfA3UuHX8XrhT/WsM3XJNlNR7/tQ4LBMjceLNxaUYPybRfW6txn+Hr8IvyA0OpKWOUEgix5/j9ZZ/u2MAOH3Cb7LRlpnM2q9jMqaQJHdfaQSCzcfCKprbAtqvYwHp60BAKzfU4YT27aolw0qek+/ulYmBAhCYyM9/ibEjcMK/dtm4Z6X9Wtv+1rlmvvmkr7tAsqP2hgzeG/pdn8jtP9o4ACxOmNYJVzK56o49fi3HaiIaO5A8b5jKJw4Hct+khgFoekiwp9g/OZs60iey0/t6N82LuCS4nSga6vMoHNaZaUElQHA0SpfDH9+ZuDxxVuCe/xG3l+2AxXVPjdRlWGcQJ0xrKL78AFfwxF8XO/xexplDMGKsx//Guc/GRyBVFXrwdBHv8SsNYFpLeZt8kU5TVtuOh1FEJoEIvwJRMljF+Oei0LH7uuoLp73fjMUX/9peFBo5xUDOuBvPzvZ9Hw9hXNeZmpA+ecrI5ugZXQXWaFPDAOAuz9cGXRc9/Ev2nIQ3e+dgUPldU8SzIxtB8yfJBqLwxU12H2kMmgGs/6cJQ4poSkjwt9EcSuuntO75qFDTnrQLN4OOelITzEfxinT0jXkWTwR2KWq1oPZhl6xjpqCuSaM794YzbOnrNK//dr8Epz9+NdYvfNIAywNxvi0oqKnzDhcETi7WV/aUnITCU0ZEf4mitsk8N8Y4eNlDmggVMq0Hn9OBHn/h/cKTqVxvMaD8f9dZlpfDQ2t8QYKu9Hnb4zfV3MVLdnq86dvOxi9Xv+CzfvR674vLI97NfuM4a1kOA743kss3VOC0FBE+JsoxkXVAaCb5uPPzfCJuZetJ1vpQpVuseZv57yMoDLjYjEAQrpgPF7G8WoPRj31Hd5cUBJwzJiawTioq749XWQtIl79PDRtDbreMz10JY1FJtFLKpZCrqS11rn349Xofu8MW/cVhERAhL8ZcUaPVvjwlqF4adxAAMDQbvmm6VFV0txOXDEgOFN2Zmqwiyg7LbhMTeVg5Idth7D7yHGs33MUz3xVHHDMOIcg1IxdXYOtQl51Xl9QYtsFE26hGyvhd/jTWtcdn7pkW1CZ0PT52+drcctb5k+zTR2J429mnNYlDwCw7uFRSE9xoqgkdNhhmtuBJ6/qj49+2BlQnpUa/CSQbdLj/2ZDXQrtDjnp2Hm4bqGVa19ZjHN6mmdaNQ4Kq1E/AOAxuFIA4DeaS2n5AxcgJ8N6bIKZwzYS4dJOeA0ivrn0GFplpYJg7eOvqvUizeIJyoz7PlmFvh1ycNWgTuErCzHnle+3xtuERkN6/M0UfZavqn/jTUJFrYTKbM1fdQKZGWpKCR09yZuRoY99icdnrff3/I2Du7VKQ2AU4U37joW0Q29UajxevLd0u+k6v+GEX+3xMzPO+9e3uOrFhQEL2RipshnhpPPWom2mEU6C0NiI8Dcxerer3yzZUzvn4I8jewWVW6V86GTi408Lkwk0w+QpwQpm4LmvN/sTuhldPeqgqlFjr3xxYchrH9cakxe/2Yy7P1yJT1fsDKoTztWjNjb69TbsPep39ejHi5VGKFSUUKQwM2olfUW98XoZD3+2FltKQ3cSkhUR/ibGh7ecgWX3nW+7vh7imZeRghSXA7eN6IHTutStd2/V4zebDGY1EGz3uBn7teUfjYO7c9fuxaodvvBNM3c7M+O7jaV+N9BGZaxBXzv4gDYX4JBhwRkgfBy+as6BY3VzCvyuHm3//Ce/9R+zO6fBDk/O2Ygef5kZNBYSb3YfOe7/XhKZrQfKMWX+Vvw6ivmkwtHtnul4/pvi8BUTABH+JkZ6ihP5WanhK2r0ad8Ck8b0wRNX9gMA/PHCXuiYW+eSscrn36d9S9x+bg8MKsxV6oYW9nC9aDP01BHGHv9/vi7Gpf/5HoD5oOk/Z23AdVOWYNqKXdi49yhG/rtu9u1l/5mPfco8AOPZ93y0Ek/P3RhQZryH2uM/oEwmC+XqUbOdTl2yDYUTp9c7zfTr2pNQoi1Mc8ZjX/m/l0RGDweOZZitl4F/frEhZvdrCCL8zRwiwrihhchVUjOoPVirHr/bSbhrZC8M6JwbUPbHkT0t7xXOb26GnvLZKh0zM5uK7AvfbAYAvF+0w7+tc7C8Gqf//UvLey7cfAD7jxlXHzMMLiuCUa7kL1LXLDai+vifmOUTgKOVwU8bdtBdXWbjE/GkqQQu6S45T4wMTrTvKRwi/EmI6otO01xB7VumBdTR00Sfe2Jrf5mDCLede4J/f9E95wWcUx/ht+rx6zw1d1PQ4K7K98X78fGPwT58QO2dB55fXh3sPjE2POo9b/vfD3XX1P6aWaT2+PV5FvUVHr3hMU58U1m3uwxPzt4gYaQm6D3+EB9fVGloA/N+0XYUTpwe8KTamNhdenEUEW0gomIimmhy/N9EtFx7bSSiw8oxj3JsWjSNF+rH47/o59/WZ/bOn3huQB19KcjB3fIxpr8v66eaIhoA2hoaC7WRsIvu27fq8X+wbEe9F2cx9up1KkwykOpRRONeXYzb/vdDQI//kJK2Qf8H9zIHCa7qj9d7nPp1X/1+K8YoLhL13D+8tyLIl1/rX4oy8B7/XfQTbnlrGQ4cq8Lop+fhma+Kozq20FDKKmswZ+3euN3/qpcWBuRXCtVpiCYNdSm9v2wHAGDL/vJomBOWsMJPRE4AzwEYDaA3gLFE1Futw8x3MnN/Zu4P4FkAHymHj+vHmPmyKNou1JNCZeBWd10Y497VWbJP/bI/Ft5zLvq0bwkAmH3n2Zh394ig63ZtlYm5d50TkS26MFZZiLvHyzhyvH7uks9W+DJoqv/7zIwKkwFTvWc9b9N+fL5yt6Vg6IL96fJdQXl81H29x6k/yUz6fC1WKIOiqqB/+MOOoOR4uo4YI3vu/2Q1Zq7eg0GPzPWXJdIA8J8/WIlfv1mEkhgJmJElWw/i7cXb/N/f7iOVKJxYN5u79GgVNoWYdFhfYtXARAs7Pf7TARQz8xZmrgY29PlMAAAerklEQVTwDoAxIeqPBTA1GsYJ8UP9GRMR2rWsGxDu2SbbNNwzPcWJHq2zcP8lvYOO6ZzaOSdg38uMT37ciZXbzSNFjhyvwcFy8567XdTH8Moar6mfujbIx29xLaX8hW8DxxZ+N/VHHCqvxofLdviF3/i0ojcctQYfxFfr95oKuLHHr6N2MI8nkPDvOOSbwFffxrohqJ+fsQeuf+7nPP41LlACAaJFtAaRY9V+2BH+DgDUBOo7tLIgiKgLgK4AvlKK04ioiIgWEdHPrG5CROO1ekWlpeaTfoTYUZ8ejB7O6bFwrKa7nXjluoEBZTUexh3vLsdCi3UAjtd4sP9YNfp1bBmxPTqqIJRXmy80YxRoYx5+HbUR2VIa3Kud9Pla/OH9Ff4ZzFW1Xn/Iqr7vu1/g5ztj1R48NnN90PXUBmLGKvOU2de+shjvLt1meizW6PNCrKKRNuw5GjBYXl8+Xb4z4HMFfL17HePvV9flCpPxnfry+cpduOjpeU0ySZ8d4Teb+271Lq8G8AEzq59uZ2YeCOAaAE8RUXezE5l5MjMPZOaBBQXm0/yF6NHO4J83Up9BMV34O+YGPw0APhF3G0I+9xyxN5h1WX/TvoYtVBE6bvGPb8zC+arFdH01emPbwWDh33XkeMB+tceLr9bt8+/r6yCYTc4yyz6qPom8ZHjC0Nm6vxx//nCV6bHGwmpAWQ8PNhN3r5dx4VPf+WPr7/loJd5e/FNE9y09WoVFWw7g9+8sx01vBMboq08ZwcuFRn8c5PapP2Lt7jJUe7xRE/4wmUaihh3h3wFATSbSEYDV8kNXw+DmYeZd2t8tAL4BcGrEVgpRZ+5d5+CH+y+wPG6VzjkUem9v9Mlt8cGEofjR5PrGlcP22IxiyMu0nz7aiJ0ev91Zsuo/eIlJZlJjBtPqWi9KlZ7pkEd9YabGhgYwzz6qPolEKzTR62XsP1aFsnqGmgJ6zPp6zDQ8hegTBs1cPfpA/iLt6W7qku34y8er/cefmrsRN79hPeGKmTHokbm4evIiAMDOQ4GNbMBn5TW67qLfI9fHxUY9NS9mYaPRwk6StqUATiCirgB2wifu1xgrEVEvALkAFipluQAqmLmKiFoBGAbgn9EwXGgYmakuZFrMA3vk8pNxQpvsiK7Xo3WWP4SRiDCwMM80RLM+IZ9A8EphkaBGvZRXmff47boAVBeC2fs7bBC8OWv3Bjw9+MM0TRoah0l3T20gopXB4YnZG/C8Nveh5LGL63WNWq/X9Bp642/WqOhPXk6L/NpPzd0U5p7mfnudmlpr4TdraAPO9XhBCFzZzi5b95dHLWw0Vu1HWOFn5loiug3ALABOAFOYeQ0RPQygiJn1EM2xAN7hwG/jJAAvEZEXvqeLx5h5bXTfghBtrh3cxXbdyeNOQ1llLX5xWsegY8anhpvO7Gr5Tx+OvBDZOMNRpfX41+w6gp+/sMC0ztKSg+jXKcf0mMqP2w6HPH64InAg2splZNYDnb12L9bvKUPP1nWN7ty1e5GXmQIHEdbtLgtrnx3eXtzw8QCrHrTesOsuLRW9oQyXOdUK4wC80Y9fE5BYL/Bcj8UguU7/v85GeooLRfedj3W7yzD66XnKtcyzvaolDXUlrd1V5r9XLLCVlpmZZwCYYSh7wLD/kMl5CwCc0gD7hBjypwt7RbyI+Mg+bS2Pqf8sc+48O+KniL4dW2KlFgLZkCUiP/pxJ347ojsufsY61cC8Tftx05ldw15rusUAq85Bk7xARhZuPoCCbPMnmFFPzcNl/dr791/6bgte+m5L0AS7cDw5ewM65mXgqoHBKZ8rLNxdkWCViVR3eZg1DPrEQbO230rw3lxYgpPatcCgwrwgcTXeIqDHz5H1+MurPf6JfUb3lcfLcIVxfTZE91ftOOKfwR4rl5HM3BX83DqiB2bdeXajXNtsxbDbRvQAYD3xa8oNg/wiUZ8ev5o76PwnQ4fwfbux1O+6qA/6vQ5VhA89veaVRSF7iNNWBDe+xyKMhHnmq2Lc/cFKXPVScCZTNaJo+srdqKzx4KFpazD66XkB4yGf/LjTnw7jvwtLAtY8XrfH/OlD79Ubhbb0aBXO/MfXAIJdWvd9sipgAP6k+7/Ae0t9gYQPfLrGn401XI9f/Uwj8fEHRXAZ7AvXaAChBbusssY/5rHjUAXmrt0b4ArbrQQE2LlXNJCFWISY4DIR/j+M7InbzvWJ//PfbEZBdioWbt6PGat8/4itslLx/oQzMGPVbv/6ApFA8LmbrGLhjViFS5oxrEc+5hfXhaCmuRyorrUX3ZHidASJWDjatUxHWWXoiUe1Hm+Qj1pfr3jJ1oMozM8IOn7r/37AP3/eF69rS2Ou2VXmz956x7vLAQA3DivE/Z+uCTjvmpcXm9qgC/jeI5WYuWo3Rp/SDgDwnbIug9MgrG8t2ob+nepyQh2v8WDS52uDFqgJ9vEH3rvao7p6rBsFI7+xWDNaxyq0WX0boSbR9X1oNgDfWIje+LVIc2HlQxdq16m7UKS/i/oiPX4hJpgNXBIR0txOpLmduOuCnhg3pAueHTsAAHDdUN84w2ldcoMmhF3Qu03A/sjebTDz92eZ3jeSMYUDFikezOjWKjB9RSQrb6U4HRGnoXC7wr+PHn+ZGdB71GFmXPXSQlz+/ALTxu3w8Wpkag2rWf76SMYWdAF8t2g7bnn7BxzRZjOrwmvm4jfO/TCTv2BXj0HcI4jqsUqqZjZgb6cxj3TCWpkyBqJ+HFZzYKKNCL8QE+wKsNNBWD9pFB66tI9lnbsuCMwQevh4jWlK6Kpar2kufyuME4JCYfT5hhP+Ry4/2b/tYY74kd6u63erSaoE3Xe98/BxU5dReZUHrVv4xhB+MglRjUTUjBO33lxYAiCwN+5wUIDbCDBfc8GIlaunrLIGm/YeDRn6avy8rVwz/R+ejR+3HQqsa2EcKZJdVo+ZyvoTokP56cbK1SPCL8QEM1ePFWlup+mYgNW1Rp/cNmh+AADcfGbXiKIkIvmnM7orwjVs1w7ugqHd8gH4RDzSHv+aXfZ63XPX7sM/vwicAXxQeZIxmx1cUV3r703/5+vioOUyQ41bGD/344aB43/N2Yg+D3wRMPB6rLIWlzwbONBu7L2bfZoHDKk79K/rmpcX4YJ/f2dw9QSea9fnX1HtwbxN+23VVSkziWIKR8/7ZuK6KYsDGpBYzQAW4Rdigirkk8b0wYv/N6De19L91FmpLmz42yjccEZhUA98y98vwn2X9A7ZkzylQ0vcOKywXjY4DffzMgdE45jx71/2BwD0bJuN7SazdG3f20GWEUhT5m8NGqT+bGXoSK3yak+Ai+O9ou34pTIoHMoFVu3x4rx/fYNDmiibhXGWV3sCVlgza2DNvifVHbNudxl+9tz8gON6o756p69RVGcLG1d0C87FZF9gb3x9KYr3mYyv2PTxh2J+8QGw4tiyOx7VUET4hZig9tLHDS3EqJPbRXyN7gWZ6N8px38tgm+mKBEFTQzTGxqzgbn7L+mNp6/ujyk3DMKDIVxKAdczdEGNPf5aD2NQ17yQ12jbMg0X9mmDymoPFmw2z00UCt0Pz8zobJIkz4rHZ4VeFWrmqt3YW1bn5pq+cjcWa4PCAMImydtcWu4fB7ByeZQerbu+mY///k9WB5WpDcR6kygio3YfUHMiWaS51jlaWYvHZq63tU7yyh1H8OC0NSHrNCRDqir2sfLxS1SPEBNCuW7s8uUfhgNQwt+US7od5n0YM0+PnXh9I0aRMbqbqmo9ttYczkx14VhVbb18wpf2a493lm4Ho2E5XVKcjoAe8aGK0LbYyY66y5D+2Ig6kc2u903tlZudY2zU1fUXJrz1Q8Ax41PG019uxNQl29E+x978CLPgBNW+hiyR+aKSg0l8/EKzwthDbgj6IjHqP6OdqJdoYpzJWVnjRZrF+sUqmSkuVFTXWqaOCHluqq+fxmzuqmhlc5JbvlLPTk6md5bWJee1uocxb06DocDVx8z0kDkwCifU4PwNU5YE7OsD1naXTDQbw1G/g4b0+NXZ4OLjF5oV9U3VEOpaqva6LHr8d4/qFbA/0hAKasbyB+qSy103tAteNqSSBoLDDatqPUHi1Ltdi6DzMlNdOFRRg80mYZPhyEqte0A3E4jBXfOD3q9OV2XxHV34C7JTkZ0WWfI7q57trsPmwj/+7G4RXV/naGUtDiuzoF+0yEza876Z/m3joKxKWWVtwBOJ1cxjK8x6/Cp2evx2Ag3Exy80K6Ip/Gb/QFY9198O7+FPIja4ax4mm4i4Sl5mCnKUWcJ3XdAzaN6Aip6jqMbDQRk+zUJMdT+9MULFDuGE3+0knH2CeUrzjrnpuHZwZwBAQVZdugizlA6hsJpBbJXps0dBlmm5Hd5YWOLfLt4XeUMZCn195H1H7YXwepnx6Mx1AbmYMpRJhWqP/59frAcz47+LfgoY27A1A1ji+IXmRDRdPS3S3UhxOnDfxXUTu1TXy++02cAqS+49D2/86vSQ1712cGc8O9aXNVzPMqmPTfxqmGFcQGt8MpV/fj2WXxfoDJPZxpmp9R9W088d0i3PVERSXA7LGc4eL/sjbtoqq6n9WXlC+OPInkHnGbHqtFrF+usuuI656abHzehe4Hs6sUpwZ8awHvm26wJ1Pf7dNteD+GZDKV76dgsemb4OHi/jYHk1cjNS0CXfN8iuCv/z32zG7LV7cf8nq3GnNvsZMJ8cZkR8/EKz4N6LTgQQncFdHbfTgY2PjA7KCPrs2FPx7Z+G4w8jg90drVukWU6yOl2Lxnnk8lMwrEcrAHVCpQvdA5f2RsljF2P+xHPx0W/P8J+boQj5hX3a4r6LT8LE0b73bDbYm5kaeeoJnVSXA7PvPBuvXj/ItMef4nKYNjaAT/j13rq6tgERISfDtx/O7ZOV6sKtI0zXUbIUft0FlxVBg3dhiMR/Vpi51UKh9/g//nFnROcdrazF32esw4BJc7Dz8HG01Sa+GRe81wfE1Sc7O8IfLototBDhFxqV8Wd3r3fO90i5tF97dMnPDF/RwOs3DgpaPP6tmwfjsStOQcv0QDHskJOOAZ3r8sqkKu4cp4Nw81ndkJ3mE7lUG4O9xmvr/N+Qzv5tvc1MdTvQs002MlNd5j1+p9MysqhjboZ/0liuIeGd3oiYPS3o7iHA17C2UtxEamSTlatHD7MN5yPX+ePInvUaF1CfYuwQqY9ff681Hm/Ak4je0BoHd/UnCTXdhZ1xgBrp8QtCbMhIcQUtHt+uZTquPr2zxRl1g7tkMsdUnyykr0alUm3So+uQk45ptw3DzDvOwhndfS6LCefU9az1CWuq0Jr5gt0uQkaKec/64TF98MjPTsH/DemMId0C3SL6U43aiL124yAsvvc8TBpTl2rC5SSM6FWXSVUNpyw7bu77T9FcPXbHeHq0zrL9dDDj9rr8TLkZoZ9W8jMDGzvjBK/hvUIv96o3tF+u3xdQrj/xzV67N6D8mS+DF5W5/Z0fQ94DiHxGd32ROH5BaABEwDNjT0UvZa0BvWdnlkZCFW89nv63I7qjb0ffIjBTbhiEDXuOBqxb7HYQjEPBZiuSpTodAQPKDqoLg/StuObC3352CjbtDZyFqvf41Yaqf8cc5GpiSeRrHFwOBwpbZaJ7QSY2l5YHRDFZ+vi1z8DuEI+DyPYqWOp7zQkj/G1bpoGoLtbfmJNIb8OMWVfDkRlB1tglyqQ4K+y4g6KBrU+YiEYR0QYiKiaiiSbHbyCiUiJarr1uVo5dT0SbtNf10TReEOKFOsh5Wb/26NVWFX7fY3+q24EpNwzE3Lvq1ji4YkDwovHtFRdPmtsZtBKYmRBeP7QLnryqH0Yp/nC9nu4yeu4a87QYxt633nNXe/y6uwqA392lR04ZB3jNopd06oTffpI+u6iNaI7Feg3PaIP1vvEP835uVqrL/wSnN8B2sbpmfcjPTGnQfIBICCv8ROQE8ByA0QB6AxhLRL1Nqr7LzP211yvauXkAHgQwGMDpAB7U1uEVhGaL3mtLcztx7olt0ENZSjHV5fQ/Hejuho45of3TZqGqLqcDVwzoGJCjSBeNf/y8L64b2gVn9TR3XxjnPOjCrwq42tjk+IXfV2Z0VoXqparpNewQSRCA2khkW7iHOmmD9GP6tbcc+H75uoH+EOE0E/dcKKyuCSDiPFCpLkeDZgBHgp0e/+kAipl5CzNXA3gHwBib178QwBxmPsjMhwDMATCqfqYKQuJhJlMDC319m+EWwvv02P64ZnBnv1+5XRjhbxEi2uZE5UlDT1J25gmt8PCYk5GV6sL5J7XG3352csA5wQnmfH9TLXruLbXetJ7vxmphklDY1XOzsN9JBvv9dZWLWoWxdshNx5q/Xojrzyi0DKVVZ1yHenoxI1R47iV97eejeuNXpyPN7Uwo4e8AYLuyv0MrM/JzIlpJRB8QkT4rxO65gtCkYNOlQnyc1iUP6yeNwhlaaKiRE9u2wN8vPwXPjD0Vn9w6zHIwU0/EdoPWc+zaKngy1C3De+DnA3xhrUdNJle9cv0g/N+QLgFlRnHVffxWotdVi1XXRSkS3dcblUjWYzCSqjx9PDv2VH/vXnX1WLlcnETITHWBiAJ65+oaxmqYr/HpKtxAs1VjCQRHT4UiRRufMSaXayzsCL/ZN2b86j8DUMjMfQHMBfBGBOf6KhKNJ6IiIioqLS01qyIICYeV69rOilwt0tzo38nap/zxb8/AgonnYtyQLlh873kB4wg6Tgf51ywut7kur5UGm0UhAb4e9/2X9PavJ2Ds8b9wrflYwuw7z/a7UMyin8xt89VTBVh1/1zar73fvaWOG1i5XNQw0kylcVAHz9PcTn9jZszy+s74ISHFX7WhRVpgPXXc4Z8/72t5DcDX6Ka6nahMoB7/DgDqvO6OAAISfDPzAWbW5ya/DOA0u+cq15jMzAOZeWBBQejQKkGIN/XwdkRMflYq2uekg4jQpoV1Fskh3fLgdFDw7OII0Xv87VoG3is7zY2bzuzqFznjez+nVwFuN5kt3bNNNlK1BrCgRXAUkhl6j//RK+qE0uP14ozu+Xj8F74yffxBTd2h97yN8y7URiNDmTzXWrFH7bUbhb9TbkbIhe5VG9oZ5hKoLqT0FGfIhHipLofPx59APf6lAE4goq5ElALgagDT1ApEpDqzLgOwTtueBWAkEeVqg7ojtTJBaBbYjVZpTPKzUrH57xdhcLfI0hYYLU91ObB+0ih886fhIc+bcI5vgtVrNw7CZf3aI93txB3nm6d76NexJR694hQ8esUptmzSdfoXp3XEK1pepZM7tMT/fj0EV2p5ha7WFmFX/etEhA9vOQMf3jLU9HpAYI//VGUSXprb6XfdGcW5ZZgwUaCusco29PjVJ6h0tzPkwHFuZkpMB3fDxiIxcy0R3QafYDsBTGHmNUT0MIAiZp4G4HYiugxALYCDAG7Qzj1IRJPgazwA4GFmDh/MKghCo1GQnYqbzuwalKAtxeWw5aIaN7QQ44YWAoB/Qpfa/rmd5M8ySUQYq02Eu3FYIbJSXXj2q2IAwPyJ5yI7zYW+D832n6s+TJzfuw02/G1UkAvqrgt64tYRPYJsPa1LbtB8AtXVo/f4+3VsiV8NK8Skz9cC8PXM9Y67Os5x24jAp5iurTJN1zR+/cZBGPfqkqDxCXU/ze30p4kwo31LX0qR/SFWO4smtoJQmXkGgBmGsgeU7XsA3GNx7hQAUxpgoyAkHLpLwejXbQoQEe6/JDgiO9KIFisW3XOe6RKM+mpnuvC7HRQyYgkwH3cgIr/of3LrsAD3iFF8zXz8Q7u3CnhSS3WZ+/j/eGFgziercQT9XJeT8NqNg3Dja0uD6qSnOEKmXCaimLp6mt6vVhASgF+d2RXpKU5/b7Y5ECpCJRLys1KRnxXep28WwRPp2IlxcDwzxYlbR3THuSe2htMRmK1Uv51xuUXVDuPKaipWXj09KsrpcASktFAJ9SSlp5NIdcUunFOEXxDqgdvpwHWau6O5YJZiojFo1zINu49Umo6P1GeOgAoR4U8Xnmh6TA+HHW4izvrs6VbZvgbrvotPCqpj5qNnrmsQjAPLKmbJ864d3BnLfjrkf/pKdTtsrQEcDUT4BSHJ6ZyXgW0HK2I2UP3u+KH4dPlO08RqjRktddEpbfHj/Rf4cxD97+bBaKtFME36WR8M71WAAZ1zLbPJ/vuX/fHrN4twxYAO2FtW5c/SedYJBbj9vBNw4xmFAIAnruwXtHBMeooTHXPTsUNZovLWET0C0nVMHH0i7r7QfAW1aCPCLwhJzoe3nIGSA8GDlpHyzvghWL3zSNh6nfMz8LvzTvDvd8pLx/aDPkEMNTGuoRCRX/QBBEywy0hx4dJ+7U3Pm3H7WfAyo1NeBr64w5d36flvfOMULdPdcDoId11QF9VkXCcC8D0tfP/nc/H5yl1wOQjTV+0JCtENN94RTUT4BSHJKchORUG2vTj7UAzplh+U8tkO8+4+F2MnL8LCLQcspnfGl97tgxd5+fVZ3ZCfmWIq8mboYw2X9PU1LqNOtp/OoTGQfPyCIMSdW7XQSTORTUTcTgd+Oahz2KRy/kV0ojRwHi2kxy8IQtw584RWMVupLZZMv/0szC/enxAT/VRE+AVBEBqJk9q1wEkRrgccCxLr+UMQBEFodET4BUEQkgwRfkEQhCRDhF8QBCHJEOEXBEFIMkT4BUEQkgwRfkEQhCRDhF8QBCHJII7F4qERQkSlAH6q5+mtAOyPojnRRGyrH2Jb/RDb6kdTta0LM9tasDwhhb8hEFERMw+Mtx1miG31Q2yrH2Jb/UgG28TVIwiCkGSI8AuCICQZzVH4J8fbgBCIbfVDbKsfYlv9aPa2NTsfvyAIghCa5tjjFwRBEELQbISfiEYR0QYiKiaiiXGyYQoR7SOi1UpZHhHNIaJN2t9crZyI6BnN3pVENKAR7epERF8T0ToiWkNEv08g29KIaAkRrdBs+6tW3pWIFmu2vUtEKVp5qrZfrB0vbCzbFBudRPQjEX2eSLYRUQkRrSKi5URUpJXF/TvV7pdDRB8Q0Xrtdzc0EWwjol7a56W/yojojkSwTbvfndr/wWoimqr9f0T/98bMTf4FwAlgM4BuAFIArADQOw52nA1gAIDVStk/AUzUticC+Ie2fRGAmQAIwBAAixvRrnYABmjb2QA2AuidILYRgCxt2w1gsXbP9wBcrZW/COAWbfu3AF7Utq8G8G4Mvte7APwPwOfafkLYBqAEQCtDWdy/U+1+bwC4WdtOAZCTKLYpNjoB7AHQJRFsA9ABwFYA6crv7IbG+L01+ocboy9wKIBZyv49AO6Jky2FCBT+DQDaadvtAGzQtl8CMNasXgxs/BTABYlmG4AMAD8AGAzfJBWX8fsFMAvAUG3bpdWjRrSpI4AvAZwL4HNNABLFthIEC3/cv1MALTQBo0SzzWDPSADzE8U2+IR/O4A87ffzOYALG+P31lxcPfoHprNDK0sE2jDzbgDQ/rbWyuNis/Y4eCp8PeuEsE1zpSwHsA/AHPie3g4zc63J/f22acePAMhvLNsAPAXgbgBebT8/gWxjALOJaBkRjdfKEuE77QagFMBrmovsFSLKTBDbVK4GMFXbjrttzLwTwBMAtgHYDd/vZxka4ffWXITfbCXjRA9XirnNRJQF4EMAdzBzWaiqJmWNZhsze5i5P3y969MBnBTi/jGzjYguAbCPmZepxSHuH+vvdBgzDwAwGsCtRHR2iLqxtM0Fn8vzBWY+FUA5fO4TK+Lxv5AC4DIA74eralLWWL+3XABjAHQF0B5AJnzfrdX9621bcxH+HQA6KfsdAeyKky1G9hJROwDQ/u7TymNqMxG54RP9t5n5o0SyTYeZDwP4Bj5fag4RuUzu77dNO94SwMFGMmkYgMuIqATAO/C5e55KENvAzLu0v/sAfAxfo5kI3+kOADuYebG2/wF8DUEi2KYzGsAPzLxX208E284HsJWZS5m5BsBHAM5AI/zemovwLwVwgjb6nQLfI9y0ONukMw3A9dr29fD51/Xy67SogSEAjuiPmtGGiAjAqwDWMfOTCWZbARHlaNvp8P341wH4GsAvLGzTbf4FgK9Yc3JGG2a+h5k7MnMhfL+pr5j52kSwjYgyiShb34bPX70aCfCdMvMeANuJqJdWdB6AtYlgm8JY1Ll5dBvibds2AEOIKEP7n9U/t+j/3hp7ACVWL/hG3zfC5x/+S5xsmAqfb64Gvtb4Jvh8bl8C2KT9zdPqEoDnNHtXARjYiHadCd8j4EoAy7XXRQliW18AP2q2rQbwgFbeDcASAMXwPY6nauVp2n6xdrxbjL7b4aiL6om7bZoNK7TXGv03nwjfqXa//gCKtO/1EwC5CWRbBoADAFoqZYli218BrNf+F/4LILUxfm8yc1cQBCHJaC6uHkEQBMEmIvyCIAhJhgi/IAhCkiHCLwiCkGSI8AuCICQZIvyCIAhJhgi/IAhCkiHCLwiCkGT8P5eBsiVIJc0tAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(losses);" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "class Mnist_NN(nn.Module):\n", " def __init__(self):\n", " super().__init__()\n", " self.lin1 = nn.Linear(784, 50, bias=True)\n", " self.lin2 = nn.Linear(50, 10, bias=True)\n", "\n", " def forward(self, xb):\n", " x = self.lin1(xb)\n", " x = F.relu(x)\n", " return self.lin2(x)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "model = Mnist_NN().cuda()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "losses = [update(x,y,lr) for x,y in data.train_dl]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(losses);" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "model = Mnist_NN().cuda()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def update(x,y,lr):\n", " opt = optim.Adam(model.parameters(), lr)\n", " y_hat = model(x)\n", " loss = loss_func(y_hat, y)\n", " loss.backward()\n", " opt.step()\n", " opt.zero_grad()\n", " return loss.item()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "losses = [update(x,y,1e-3) for x,y in data.train_dl]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(losses);" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "ename": "AttributeError", "evalue": "'TensorDataset' object has no attribute 'loss_func'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlearn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mLearner\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mMnist_NN\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mloss_func\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mloss_func\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmetrics\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0maccuracy\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, data, model, opt_func, loss_func, metrics, true_wd, bn_wd, wd, train_bn, path, model_dir, callback_fns, callbacks, layer_groups, add_time)\u001b[0m\n", "\u001b[0;32m~/fastai/fastai/basic_train.py\u001b[0m in \u001b[0;36m__post_init__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 154\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodel_dir\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmkdir\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mparents\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mexist_ok\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 155\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodel\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdevice\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 156\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloss_func\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mifnone\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloss_func\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloss_func\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 157\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmetrics\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlistify\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmetrics\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 158\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlayer_groups\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlayer_groups\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mnn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSequential\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mflatten_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/fastai/fastai/basic_data.py\u001b[0m in \u001b[0;36m__getattr__\u001b[0;34m(self, k)\u001b[0m\n\u001b[1;32m 120\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mcls\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mdls\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpath\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdevice\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdevice\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdl_tfms\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdl_tfms\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcollate_fn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcollate_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mno_check\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mno_check\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 121\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 122\u001b[0;31m \u001b[0;32mdef\u001b[0m \u001b[0m__getattr__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m->\u001b[0m\u001b[0mAny\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrain_dl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 123\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__setstate__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mAny\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__dict__\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 124\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/fastai/fastai/basic_data.py\u001b[0m in \u001b[0;36m__getattr__\u001b[0;34m(self, k)\u001b[0m\n\u001b[1;32m 36\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 37\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__len__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m->\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 38\u001b[0;31m \u001b[0;32mdef\u001b[0m \u001b[0m__getattr__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m->\u001b[0m\u001b[0mAny\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 39\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__setstate__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mAny\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__dict__\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 40\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/fastai/fastai/basic_data.py\u001b[0m in \u001b[0;36mDataLoader___getattr__\u001b[0;34m(dl, k)\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDataLoader\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__init__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mintercept_args\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 20\u001b[0;31m \u001b[0;32mdef\u001b[0m \u001b[0mDataLoader___getattr__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m->\u001b[0m\u001b[0mAny\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdl\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdataset\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 21\u001b[0m \u001b[0mDataLoader\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__getattr__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mDataLoader___getattr__\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mAttributeError\u001b[0m: 'TensorDataset' object has no attribute 'loss_func'" ] } ], "source": [ "learn = Learner(data, Mnist_NN(), loss_func=loss_func, metrics=accuracy)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "> \u001b[0;32m/home/ubuntu/fastai/fastai/basic_data.py\u001b[0m(20)\u001b[0;36mDataLoader___getattr__\u001b[0;34m()\u001b[0m\n", "\u001b[0;32m 18 \u001b[0;31m\u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDataLoader\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__init__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mintercept_args\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0m\u001b[0;32m 19 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0m\u001b[0;32m---> 20 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mDataLoader___getattr__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m->\u001b[0m\u001b[0mAny\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdl\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdataset\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0m\u001b[0;32m 21 \u001b[0;31m\u001b[0mDataLoader\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__getattr__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mDataLoader___getattr__\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0m\u001b[0;32m 22 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0m\n", "ipdb> u\n", "> \u001b[0;32m/home/ubuntu/fastai/fastai/basic_data.py\u001b[0m(38)\u001b[0;36m__getattr__\u001b[0;34m()\u001b[0m\n", "\u001b[0;32m 36 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0m\u001b[0;32m 37 \u001b[0;31m \u001b[0;32mdef\u001b[0m \u001b[0m__len__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m->\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0m\u001b[0;32m---> 38 \u001b[0;31m \u001b[0;32mdef\u001b[0m \u001b[0m__getattr__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m->\u001b[0m\u001b[0mAny\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0m\u001b[0;32m 39 \u001b[0;31m \u001b[0;32mdef\u001b[0m \u001b[0m__setstate__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mAny\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__dict__\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0m\u001b[0;32m 40 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0m\n", "ipdb> print(k)\n", "loss_func\n", "ipdb> q\n" ] } ], "source": [ "%debug" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learn.lr_find()\n", "learn.recorder.plot()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [ "Total time: 00:03

\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracy
10.1291310.1259270.963500
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "learn.fit_one_cycle(1, 1e-2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "

" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learn.recorder.plot_lr(show_moms=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learn.recorder.plot_losses()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## fin" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 1 }