@@ -17,7 +17,7 @@
},
{
"cell_type": "code",
"execution_count": 1,
"execution_count": 7,
"metadata": {
"collapsed": true
},
@@ -48,9 +48,15 @@
"metadata": {},
"source": [
"### Solution 1\n",
"1. $E(x) = -\\frac{1}{2}\\sum_{1,2}{-x_1x_2} - (0.5 + 0.5)$ ?\n",
"1. Write answer here.\n",
"1. Find local minimum"
"1. $E(x) = \\frac{1}{2}(x_1x_2 - x_1 - x_2)$\n",
"1. \\begin{array}{ l c r }\n",
" x_1 & x_2 & E(x) \\\\\n",
" 0 & 0 & 0 \\\\\n",
" 0 & 1 & -0.5 \\\\\n",
" 1 & 0 & -0.5 \\\\\n",
" 1 & 1 & -0.5 \\\\\n",
" \\end{array}\n",
"1. The stable states are the local minima. If we look at the previous question, these states are: ($x_1=0$ and $x_2=1, x_1=1 $and $x_2=0, x_1=1$ and $x_2=1$)"
]
},
{
@@ -108,27 +114,52 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# The optimization function\n",
"def optimize(n):\n",
" node_states = np.zeroes(n)\n",
" return node_states"
" node_states = np.random.randint(2, size=n)\n",
" print node_states\n",
" weights = np.full((n,n),-2)\n",
" for i in range(n):\n",
" weights[i,i] = 0\n",
" biases = np.repeat(1,n)\n",
" E = 1\n",
" a = np.zeros(n)\n",
" while E > 0:\n",
" for i in range(n):\n",
" #print weights[i]\n",
" a[i] = np.sum(np.dot(weights[:,i],node_states) + biases[i])\n",
" if a[i] >= 0:\n",
" node_states[i] = 1\n",
" else:\n",
" node_states[i] = 0\n",
" E = -0.5*np.dot(np.dot(node_states.T,weights),node_states) - np.dot(node_states.T, biases)\n",
" #print E, node_states\n",
" return node_states\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0 0 0 1 1 0 1 0 0 1 1 1 1 1 1 0 1]\n",
"[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]\n"
]
}
],
"source": [
"# Print solutions\n"
"# Print solutions\n",
"print optimize(17)"
]
},
{
@@ -144,20 +175,11 @@
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/jordythielen/anaconda2/lib/python2.7/site-packages/ipykernel_launcher.py:8: DeprecationWarning: `imresize` is deprecated!\n",
"`imresize` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.\n",
"Use ``skimage.transform.resize`` instead.\n",
" \n"
]
}
],
"execution_count": 12,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# The source image\n",
"f = urllib2.urlopen(\"https://homepages.cae.wisc.edu/~ece533/images/watch.png\")\n",
@@ -181,24 +203,24 @@
},
{
"cell_type": "code",
"execution_count": 8,
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5,1,u'x2')"
"<matplotlib.text.Text at 0xb85b860>"
]
},
"execution_count": 8,
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"image/png": "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\nSE0wBACk9v+bQ8IHz+YMKgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10db66710>"
"<matplotlib.figure.Figure at 0xb58fbe0>"
]
},
"metadata": {},
@@ -238,7 +260,7 @@
},
{
"cell_type": "code",
"execution_count": 9,
"execution_count": 53,
"metadata": {
"collapsed": true
},
@@ -247,13 +269,17 @@
"# Hopfield training\n",
"def hopfield_train(X):\n",
" m, n = X.shape\n",
"\n",
" #print m\n",
" # Initialize weights\n",
" \n",
" w = np.zeros((m,m))\n",
" #print w \n",
" # Hebbian learning\n",
" \n",
" # Avoid self-connections (diagonal)\n",
" \n",
" for i in range(m):\n",
" for j in range(m):\n",
" # Avoid self-connections (diagonal)\n",
" if i!=j:\n",
" w[i,j] = w[i,j] + np.dot(X[i,:], X[j,:]) \n",
" #per input pattern??\n",
" return w"
]
},
@@ -274,23 +300,23 @@
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true
},
"execution_count": 43,
"metadata": {},
"outputs": [],
"source": [
"# Hopfield testing\n",
"def hopfield_test(X, w, n_epochs=10):\n",
" \n",
"#???????????????????????????????????????????????????????????????????????????? \n",
" # Loop over epochs\n",
" \n",
" for e in range(n_epochs): \n",
" # Loop over examples\n",
" \n",
" for example in range(X.shape[1]):\n",
" count = 0\n",
" # Loop over nodes\n",
"\n",
" for node in w[:,example]:\n",
" # Update node\n",
" \n",
" Y = node + X[count, example]\n",
" count +=1\n",
" return Y"
]
},
@@ -311,13 +337,28 @@
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": true
},
"outputs": [],
"execution_count": 54,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 0. 2. 2. ..., 0. 0. 0.]\n",
" [ 2. 0. 2. ..., 0. 0. 0.]\n",
" [ 2. 2. 0. ..., 0. 0. 0.]\n",
" ..., \n",
" [ 0. 0. 0. ..., 0. 2. 2.]\n",
" [ 0. 0. 0. ..., 2. 0. 2.]\n",
" [ 0. 0. 0. ..., 2. 2. 0.]]\n"
]
}
],
"source": [
"# Run hopfield training\n"
"# Run hopfield training\n",
"weights = hopfield_train(X)\n",
"print weights\n",
"#so it prints out 2's which is wrong"
]
},
{
@@ -336,7 +377,7 @@
},
{
"cell_type": "code",
"execution_count": 15,
"execution_count": 36,
"metadata": {
"collapsed": true
},
@@ -360,17 +401,31 @@
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": true
},
"outputs": [],
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAD8CAYAAACVZ8iyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XuYHHW95/H3NzOTTC4DIckgSSbDDJuYC0nAYYiJQQ8h\nRhNE8CgorIB4IYebq2d1BY6K6OKz4llZjUZjngOKLhdFUHIi3sJlUZRLwAAJSSBIgEmAhASSTCaT\nuX33j64M0z2d6Znp6u7q6s/refqZ/lVV1+/bNVX1ra5f1a/M3RERkdI2pNABiIhI4SkZiIiIkoGI\niCgZiIgISgYiIoKSgYiIoGQgIiIoGYiICEoGIiIClBc6gL6MGzfO6+rqCh2GiEjRePzxx1939+qB\nfi7SyaCuro61a9cWOgwRkaJhZi8O5nM6TSQiIkoGIiKiZCAiIkS8zUBE4qe9vZ2mpiZaW1sLHUpR\nq6yspKamhoqKilDmp2QgInnV1NREVVUVdXV1mFmhwylK7s6uXbtoamqivr4+lHlmfZrIzCaZ2f1m\n9oyZbTCzz6WZxsxsmZltMbOnzKwh23pFpDi1trYyduxYJYIsmBljx44N9ddVGL8MOoAvuPsTZlYF\nPG5mf3L3Z3pMswSYErzeCfwo+CsiJUiJIHthL8Osfxm4+yvu/kTwfh+wEZiYMtlZwM884WFgtJmN\nz7ZuEREJR6hXE5lZHfAO4JGUUROBl3uUm+idMA7NY6mZrTWztTt37gwzPBGRnBg1ahQA27dv5+yz\nz+5z2u9+97u0tLQMaP4PPPAAZ5xxxqDj64/QkoGZjQLuBD7v7nsHOx93X+nuje7eWF094DuqRURC\n0dnZOeDPTJgwgV/96ld9TjOYZJAPoSQDM6sgkQhucfe70kyyDZjUo1wTDBMRybutW7cybdo0Pv7x\njzN9+nTOPvtsWlpaqKur48orr6ShoYE77riD559/nsWLF3PSSSfx7ne/m02bNgHwwgsvMG/ePGbN\nmsVXvvKVpPnOnDkTSCSTL37xi8ycOZPZs2fz/e9/n2XLlrF9+3YWLFjAggULAPjjH//IvHnzaGho\n4JxzzqG5uRmA3//+90ybNo2GhgbuuivdbjVcWTcgW6IV40Zgo7vfcJjJVgFXmNntJBqO97j7K9nW\nLSLF7ev/uYFntg/6REJaMyYcwdc+eHzG6TZv3syNN97I/Pnz+dSnPsUPf/hDAMaOHcsTTzwBwMKF\nC1mxYgVTpkzhkUce4bLLLuO+++7jc5/7HJdeeikXXnghy5cvTzv/lStXsnXrVtatW0d5eTm7d+9m\nzJgx3HDDDdx///2MGzeO119/neuuu441a9YwcuRIrr/+em644Qa+9KUvcfHFF3PfffcxefJkPvax\nj4W3gA4jjKuJ5gMXAE+b2bpg2L8BtQDuvgK4Bzgd2AK0AJ8MoV4RkUGbNGkS8+fPB+D8889n2bJl\nAN073ubmZv76179yzjnndH/m4MGDADz00EPceeedAFxwwQVceeWVvea/Zs0aLrnkEsrLE7vZMWPG\n9Jrm4Ycf5plnnumOo62tjXnz5rFp0ybq6+uZMmVKd3wrV64M5XsfTtbJwN3/AvR5jZO7O3B5tnWJ\nSLz05wg+V1IvzTxUHjlyJABdXV2MHj2adevW9fpsus8PhruzaNEibrvttqThh6szl9Q3kYiUpJde\neom//e1vANx6662ccsopSeOPOOII6uvrueOOO4DEjvvJJ58EYP78+dx+++0A3HLLLWnnv2jRIn78\n4x/T0dEBwO7duwGoqqpi3759AMydO5eHHnqILVu2ALB//36effZZpk2bxtatW3n++ecBeiWLXFAy\nEJGSNHXqVJYvX8706dN54403uPTSS3tNc8stt3DjjTdywgkncPzxx3P33XcD8L3vfY/ly5cza9Ys\ntm1Lfy3MZz7zGWpra5k9ezYnnHACt956KwBLly5l8eLFLFiwgOrqan76059y3nnnMXv27O5TRJWV\nlaxcuZIPfOADNDQ0cPTRR+duQQQscQYnmhobG10PtxGJl40bNzJ9+vSCxrB161bOOOMM1q9fX9A4\nspVuWZrZ4+7eONB56ZeBiIgoGYhI6amrqyv6XwVhUzIQERElAxERUTIQERGUDEREBCUDEZEBu+ii\nizL2TlpslAxEpKS5O11dXYUOo+CUDESk5GzdupWpU6dy4YUXMnPmTH7+85+n7Ub6G9/4BieffDIz\nZ85k6dKlRPkm3WyF0WupiMjg/O4qePXpcOd5zCxY8q2Mkz333HPcfPPNTJ48mQ9/+MO9upG+5ppr\nuOKKK7jmmmuARO+kq1ev5oMf/GC48UaEkoGIlKRjjz2WuXPnsnr16rTdSAPcf//9fPvb36alpYXd\nu3dz/PHHKxmIiISuH0fwuXKoq+rDdSPd2trKZZddxtq1a5k0aRLXXnstra2thQg1L9RmICIl7XDd\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0xb5b6ef0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Corrupt images\n",
"\n",
"X10 = corrupt_images(X, 10)\n",
"# Test associative memory properties\n",
"\n",
"# Plot results"
"pred = hopfield_test(X10, weights)\n",
"# Plot results\n",
"plt.figure()\n",
"plt.plot(pred, label = \"predicted\")\n",
"plt.plot(X, label = \"real\")\n",
"plt.legend()\n",
"plt.show() "
]
},
{
@@ -382,7 +437,7 @@
},
{
"cell_type": "code",
"execution_count": 17,
"execution_count": null,
"metadata": {
"collapsed": true
},
@@ -406,7 +461,7 @@
},
{
"cell_type": "code",
"execution_count": 18,
"execution_count": null,
"metadata": {
"collapsed": true
},
@@ -430,7 +485,7 @@
},
{
"cell_type": "code",
"execution_count": 19,
"execution_count": null,
"metadata": {
"collapsed": true
},
@@ -459,18 +514,6 @@
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.13"
}
},
"nbformat": 4,
@@ -17,7 +17,7 @@
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": 7,
"metadata": {
"collapsed": true
},
@@ -114,7 +114,7 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": 8,
"metadata": {
"collapsed": true
},
@@ -145,13 +145,14 @@
},
{
"cell_type": "code",
"execution_count": 166,
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0 0 0 1 1 0 1 0 0 1 1 1 1 1 1 0 1]\n",
"[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]\n"
]
}
@@ -174,8 +175,10 @@
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"execution_count": 12,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# The source image\n",
@@ -200,24 +203,24 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0xbd40f98>"
"<matplotlib.text.Text at 0xb85b860>"
]
},
"execution_count": 5,
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nSE0wBACk9v+bQ8IHz+YMKgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0xbcaac88>"
"<matplotlib.figure.Figure at 0xb58fbe0>"
]
},
"metadata": {},
@@ -257,7 +260,7 @@
},
{
"cell_type": "code",
"execution_count": 6,
"execution_count": 53,
"metadata": {
"collapsed": true
},
@@ -266,13 +269,17 @@
"# Hopfield training\n",
"def hopfield_train(X):\n",
" m, n = X.shape\n",
"\n",
" #print m\n",
" # Initialize weights\n",
" \n",
" w = np.zeros((m,m))\n",
" #print w \n",
" # Hebbian learning\n",
" \n",
" # Avoid self-connections (diagonal)\n",
" \n",
" for i in range(m):\n",
" for j in range(m):\n",
" # Avoid self-connections (diagonal)\n",
" if i!=j:\n",
" w[i,j] = w[i,j] + np.dot(X[i,:], X[j,:]) \n",
" #per input pattern??\n",
" return w"
]
},
@@ -293,23 +300,23 @@
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"execution_count": 43,
"metadata": {},
"outputs": [],
"source": [
"# Hopfield testing\n",
"def hopfield_test(X, w, n_epochs=10):\n",
" \n",
"#???????????????????????????????????????????????????????????????????????????? \n",
" # Loop over epochs\n",
" \n",
" for e in range(n_epochs): \n",
" # Loop over examples\n",
" \n",
" for example in range(X.shape[1]):\n",
" count = 0\n",
" # Loop over nodes\n",
"\n",
" for node in w[:,example]:\n",
" # Update node\n",
" \n",
" Y = node + X[count, example]\n",
" count +=1\n",
" return Y"
]
},
@@ -330,13 +337,28 @@
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"execution_count": 54,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 0. 2. 2. ..., 0. 0. 0.]\n",
" [ 2. 0. 2. ..., 0. 0. 0.]\n",
" [ 2. 2. 0. ..., 0. 0. 0.]\n",
" ..., \n",
" [ 0. 0. 0. ..., 0. 2. 2.]\n",
" [ 0. 0. 0. ..., 2. 0. 2.]\n",
" [ 0. 0. 0. ..., 2. 2. 0.]]\n"
]
}
],
"source": [
"# Run hopfield training\n"
"# Run hopfield training\n",
"weights = hopfield_train(X)\n",
"print weights\n",
"#so it prints out 2's which is wrong"
]
},
{
@@ -355,7 +377,7 @@
},
{
"cell_type": "code",
"execution_count": 9,
"execution_count": 36,
"metadata": {
"collapsed": true
},
@@ -379,17 +401,31 @@
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAD8CAYAAACVZ8iyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XuYHHW95/H3NzOTTC4DIckgSSbDDJuYC0nAYYiJQQ8h\nRhNE8CgorIB4IYebq2d1BY6K6OKz4llZjUZjngOKLhdFUHIi3sJlUZRLwAAJSSBIgEmAhASSTCaT\nuX33j64M0z2d6Znp6u7q6s/refqZ/lVV1+/bNVX1ra5f1a/M3RERkdI2pNABiIhI4SkZiIiIkoGI\niCgZiIgISgYiIoKSgYiIoGQgIiIoGYiICEoGIiIClBc6gL6MGzfO6+rqCh2GiEjRePzxx1939+qB\nfi7SyaCuro61a9cWOgwRkaJhZi8O5nM6TSQiIkoGIiKiZCAiIkS8zUBE4qe9vZ2mpiZaW1sLHUpR\nq6yspKamhoqKilDmp2QgInnV1NREVVUVdXV1mFmhwylK7s6uXbtoamqivr4+lHlmfZrIzCaZ2f1m\n9oyZbTCzz6WZxsxsmZltMbOnzKwh23pFpDi1trYyduxYJYIsmBljx44N9ddVGL8MOoAvuPsTZlYF\nPG5mf3L3Z3pMswSYErzeCfwo+CsiJUiJIHthL8Osfxm4+yvu/kTwfh+wEZiYMtlZwM884WFgtJmN\nz7ZuEREJR6hXE5lZHfAO4JGUUROBl3uUm+idMA7NY6mZrTWztTt37gwzPBGRnBg1ahQA27dv5+yz\nz+5z2u9+97u0tLQMaP4PPPAAZ5xxxqDj64/QkoGZjQLuBD7v7nsHOx93X+nuje7eWF094DuqRURC\n0dnZOeDPTJgwgV/96ld9TjOYZJAPoSQDM6sgkQhucfe70kyyDZjUo1wTDBMRybutW7cybdo0Pv7x\njzN9+nTOPvtsWlpaqKur48orr6ShoYE77riD559/nsWLF3PSSSfx7ne/m02bNgHwwgsvMG/ePGbN\nmsVXvvKVpPnOnDkTSCSTL37xi8ycOZPZs2fz/e9/n2XLlrF9+3YWLFjAggULAPjjH//IvHnzaGho\n4JxzzqG5uRmA3//+90ybNo2GhgbuuivdbjVcWTcgW6IV40Zgo7vfcJjJVgFXmNntJBqO97j7K9nW\nLSLF7ev/uYFntg/6REJaMyYcwdc+eHzG6TZv3syNN97I/Pnz+dSnPsUPf/hDAMaOHcsTTzwBwMKF\nC1mxYgVTpkzhkUce4bLLLuO+++7jc5/7HJdeeikXXnghy5cvTzv/lStXsnXrVtatW0d5eTm7d+9m\nzJgx3HDDDdx///2MGzeO119/neuuu441a9YwcuRIrr/+em644Qa+9KUvcfHFF3PfffcxefJkPvax\nj4W3gA4jjKuJ5gMXAE+b2bpg2L8BtQDuvgK4Bzgd2AK0AJ8MoV4RkUGbNGkS8+fPB+D8889n2bJl\nAN073ubmZv76179yzjnndH/m4MGDADz00EPceeedAFxwwQVceeWVvea/Zs0aLrnkEsrLE7vZMWPG\n9Jrm4Ycf5plnnumOo62tjXnz5rFp0ybq6+uZMmVKd3wrV64M5XsfTtbJwN3/AvR5jZO7O3B5tnWJ\nSLz05wg+V1IvzTxUHjlyJABdXV2MHj2adevW9fpsus8PhruzaNEibrvttqThh6szl9Q3kYiUpJde\neom//e1vANx6662ccsopSeOPOOII6uvrueOOO4DEjvvJJ58EYP78+dx+++0A3HLLLWnnv2jRIn78\n4x/T0dEBwO7duwGoqqpi3759AMydO5eHHnqILVu2ALB//36effZZpk2bxtatW3n++ecBeiWLXFAy\nEJGSNHXqVJYvX8706dN54403uPTSS3tNc8stt3DjjTdywgkncPzxx3P33XcD8L3vfY/ly5cza9Ys\ntm1Lfy3MZz7zGWpra5k9ezYnnHACt956KwBLly5l8eLFLFiwgOrqan76059y3nnnMXv27O5TRJWV\nlaxcuZIPfOADNDQ0cPTRR+duQQQscQYnmhobG10PtxGJl40bNzJ9+vSCxrB161bOOOMM1q9fX9A4\nspVuWZrZ4+7eONB56ZeBiIgoGYhI6amrqyv6XwVhUzIQERElAxERUTIQERGUDEREBCUDEZEBu+ii\nizL2TlpslAxEpKS5O11dXYUOo+CUDESk5GzdupWpU6dy4YUXMnPmTH7+85+n7Ub6G9/4BieffDIz\nZ85k6dKlRPkm3WyF0WupiMjg/O4qePXpcOd5zCxY8q2Mkz333HPcfPPNTJ48mQ9/+MO9upG+5ppr\nuOKKK7jmmmuARO+kq1ev5oMf/GC48UaEkoGIlKRjjz2WuXPnsnr16rTdSAPcf//9fPvb36alpYXd\nu3dz/PHHKxmIiISuH0fwuXKoq+rDdSPd2trKZZddxtq1a5k0aRLXXnstra2thQg1L9RmICIl7XDd\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0xb5b6ef0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Corrupt images\n",
"\n",
"X10 = corrupt_images(X, 10)\n",
"# Test associative memory properties\n",
"\n",
"# Plot results"
"pred = hopfield_test(X10, weights)\n",
"# Plot results\n",
"plt.figure()\n",
"plt.plot(pred, label = \"predicted\")\n",
"plt.plot(X, label = \"real\")\n",
"plt.legend()\n",
"plt.show() "
]
},
{
@@ -401,7 +437,7 @@
},
{
"cell_type": "code",
"execution_count": 11,
"execution_count": null,
"metadata": {
"collapsed": true
},
@@ -425,7 +461,7 @@
},
{
"cell_type": "code",
"execution_count": 12,
"execution_count": null,
"metadata": {
"collapsed": true
},
@@ -449,7 +485,7 @@
},
{
"cell_type": "code",
"execution_count": 13,
"execution_count": null,
"metadata": {
"collapsed": true
},
@@ -478,18 +514,6 @@
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.13"
}
},
"nbformat": 4,