Skip to content

Instantly share code, notes, and snippets.

@phsamuel
Last active April 10, 2020 15:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save phsamuel/e2cead4282f295846d26bb435395b6df to your computer and use it in GitHub Desktop.
Save phsamuel/e2cead4282f295846d26bb435395b6df to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#!pip install fastai # run this one if you don't have fastai installed"
]
},
{
"cell_type": "code",
"execution_count": 454,
"metadata": {},
"outputs": [],
"source": [
"from fastai import *\n",
"from fastai.vision import *\n",
"\n",
"def softmax(x):\n",
" e=np.exp(x)\n",
" return e/np.sum(e,axis=0)\n",
"\n",
" \n",
"def return_drelu(dL,x): # y=max(x,0)\n",
" dx=np.zeros_like(x)\n",
" dx[x>0]=dL[x>0]\n",
" return dx\n"
]
},
{
"cell_type": "code",
"execution_count": 458,
"metadata": {},
"outputs": [],
"source": [
"# please complete the following functions, they should return gradient for a linear layer, note that x is input\n",
"# as a batch, each column is one sample\n",
"\n",
"def return_dW(dL,W,x): # say y = W x, compute dL/dW given x and dL/dy (=dL), make sure you can handle batch\n",
" fan_out, fan_in = W.shape\n",
" batch_size=x.shape[1]\n",
" \n",
" dW=np.zeros_like(W) # you should replace this line\n",
" return dW\n",
"\n",
"def return_dx(dL,W,x):\n",
" fan_out, fan_in = W.shape\n",
" batch_size=x.shape[1]\n",
" \n",
" dx=np.zeros_like(x) # you should replace this line\n",
" return dx\n"
]
},
{
"cell_type": "code",
"execution_count": 459,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 25 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"mnist=untar_data(URLs.MNIST_TINY)\n",
"tfms = get_transforms(do_flip=False)\n",
"\n",
"data = (ImageList.from_folder(mnist)\n",
" .split_by_folder() \n",
" .label_from_folder()\n",
" .transform(tfms, size=32)\n",
" .databunch()\n",
" .normalize(imagenet_stats))\n",
"\n",
"data.show_batch()"
]
},
{
"cell_type": "code",
"execution_count": 460,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cost: 5.809259167465824, Error rate: 0.484375\n",
"Cost: 5.9652292364920125, Error rate: 0.53125\n",
"Cost: 5.602260006646008, Error rate: 0.53125\n",
"Cost: 5.8391559203038, Error rate: 0.5\n",
"Cost: 5.741447309828689, Error rate: 0.515625\n",
"Cost: 5.611209179869465, Error rate: 0.46875\n",
"Cost: 6.033907366329177, Error rate: 0.515625\n",
"Cost: 5.784288888928853, Error rate: 0.53125\n",
"Cost: 5.896431556336266, Error rate: 0.53125\n",
"Cost: 5.947769443672568, Error rate: 0.53125\n",
"Cost: 5.8931924784975775, Error rate: 0.484375\n",
"Cost: 6.12974913666471, Error rate: 0.578125\n",
"Cost: 6.021590445829703, Error rate: 0.546875\n",
"Cost: 5.908051839584128, Error rate: 0.515625\n",
"Cost: 5.7731212308340805, Error rate: 0.46875\n",
"Cost: 5.789261725028032, Error rate: 0.5\n",
"Cost: 5.646568204539585, Error rate: 0.421875\n",
"Cost: 5.896817804876285, Error rate: 0.5625\n",
"Cost: 6.059646322789454, Error rate: 0.609375\n",
"Cost: 5.884097497680961, Error rate: 0.5\n",
"Cost: 5.667666657300261, Error rate: 0.390625\n",
"Cost: 5.865567311822412, Error rate: 0.515625\n",
"Cost: 5.400387897677762, Error rate: 0.375\n",
"Cost: 5.960702815591999, Error rate: 0.578125\n",
"Cost: 5.740528686383339, Error rate: 0.453125\n",
"Cost: 6.146677742683279, Error rate: 0.5625\n",
"Cost: 5.666020563097864, Error rate: 0.453125\n",
"Cost: 5.713605285051963, Error rate: 0.5\n",
"Cost: 5.9240327592314515, Error rate: 0.5625\n",
"Cost: 6.01840010488619, Error rate: 0.53125\n",
"Cost: 6.01991155728844, Error rate: 0.53125\n",
"Cost: 5.885152737676546, Error rate: 0.578125\n",
"Cost: 5.814729734311979, Error rate: 0.46875\n",
"Cost: 5.616095983152885, Error rate: 0.484375\n",
"Cost: 6.168541365816532, Error rate: 0.609375\n",
"Cost: 5.653377579199163, Error rate: 0.515625\n",
"Cost: 5.64974336677615, Error rate: 0.484375\n",
"Cost: 6.0309608764611164, Error rate: 0.5\n",
"Cost: 5.5413318730357295, Error rate: 0.46875\n",
"Cost: 5.864856827134741, Error rate: 0.5\n",
"Cost: 5.937659012726162, Error rate: 0.578125\n",
"Cost: 5.6982478325953965, Error rate: 0.484375\n",
"Cost: 5.712105071278958, Error rate: 0.546875\n",
"Cost: 5.64308797172937, Error rate: 0.46875\n",
"Cost: 5.408052237371329, Error rate: 0.4375\n",
"Cost: 5.981379148888182, Error rate: 0.546875\n",
"Cost: 5.977477757696311, Error rate: 0.59375\n",
"Cost: 5.855293123162325, Error rate: 0.4375\n",
"Cost: 5.87553188133754, Error rate: 0.59375\n",
"Cost: 5.847126661335028, Error rate: 0.5625\n"
]
}
],
"source": [
"from matplotlib import pyplot as plt\n",
"import numpy as np\n",
"import torch\n",
"\n",
"# read a batch\n",
"batch=data.one_batch()\n",
"# batch=my_batch()\n",
"\n",
"# get image dimensions\n",
"batch_size,no_channels,dimx,dimy=batch[0].shape\n",
"Nx=dimx*dimy+1\n",
"\n",
"# initialize parameters\n",
"learning_rate=0.0005\n",
"N1=200 # number of neurons in first hidden layer\n",
"N2=150 # number of neurons in second hidden layer\n",
"\n",
"W1=np.random.randn(N1,Nx)/np.sqrt(Nx/2) # Xavier initialization\n",
"W2=np.random.randn(2,N1)/np.sqrt(N1/2)\n",
"\n",
"\n",
"for it in range(50):\n",
" # reformat batch\n",
" x=np.array(batch[0])\n",
" x=x[:,0,:,:] # just take the first color (grayscale image anyway)\n",
" x=np.reshape(x,(x.shape[0],-1)).transpose()\n",
" x=np.concatenate((x,np.ones((1,64))))\n",
" label=np.array(batch[1])\n",
" yc=np.zeros((2,len(label)))\n",
" yc[label,range(len(label))]=1\n",
"\n",
" # forward pass\n",
" z1=W1 @ x\n",
" y1=np.maximum(0,z1) # relu\n",
" z2=W2 @ y1\n",
" y=softmax(z2)\n",
"\n",
" # compute gradient\n",
" dz2=y-yc\n",
"\n",
" dW2=return_dW(dz2,W2,y1)\n",
" dy1=return_dx(dz2,W2,y1)\n",
" \n",
" dz1=return_drelu(dy1,z1)\n",
" \n",
" dW1=return_dW(dz1,W1,x)\n",
"\n",
" # gradient descent\n",
" W1=W1-learning_rate*dW1\n",
" W2=W2-learning_rate*dW2\n",
"\n",
" print('Cost: %s, Error rate: %s' % (np.linalg.norm(dz2),sum(np.abs((y[0]>0.5).astype(np.int)-yc[0]))/batch_size))\n",
" batch=data.one_batch()\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"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.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment