{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# MyNet training" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('data', (1, 1, 1, 2)),\n", " ('label', (1,)),\n", " ('label_data_1_split_0', (1,)),\n", " ('label_data_1_split_1', (1,)),\n", " ('ip0', (1, 1)),\n", " ('ip0_ip0_0_split_0', (1, 1)),\n", " ('ip0_ip0_0_split_1', (1, 1)),\n", " ('loss', ()),\n", " ('accuracy', ())]" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from PIL import Image\n", "\n", "%matplotlib inline\n", "\n", "caffe_root = '/home/max/caffe-master/' \n", "home = '/home/max/myPython/my_net_sum/'\n", "\n", "import sys\n", "sys.path.insert(0, caffe_root + 'python')\n", "import caffe\n", "\n", "# run scripts from caffe root\n", "import os\n", "os.chdir(caffe_root)\n", "\n", "caffe.set_mode_cpu()\n", "\n", "#Определим модель нейронной сети\n", "model_def = home + 'net.prototxt'\n", "\n", "#Загрузка нейронной сети\n", "net = caffe.Net(model_def, caffe.TEST)\n", "\n", "#Посмотрим параметры многомерных массивов для каждого слоя сети\n", "[(k, v.data.shape) for k, v in net.blobs.items()]" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#Load the solver\n", "solver = caffe.SGDSolver(home + 'solver.prototxt')\n", "\n", "#dir(solver)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('ip0', (1, 2), (1,))]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Посмотрим параметры многомерных массивов для градиентов слоев\n", "[(k, v[0].data.shape, v[1].data.shape) for k, v in net.params.items()]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('data', (1, 1, 1, 2)), ('label', (1,)), ('ip0', (1, 1)), ('loss', ())]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Посмотрим параметры многомерных массивов для каждого слоя сети\n", "[(k, v.data.shape) for k, v in solver.net.blobs.items()]" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#that is a forward propagation, a backward propagation \n", "#and the update of the net params given the gradients \n", "# (update of the net.params[k][j].data)\n", "#solver.step(1)\n", "\n", "# net forward\n", "#solver.net.forward() \n", "\n", "#solver solver\n", "solver.solve()\n", "\n", "# test net (there can be more than one)\n", "#solver.test_nets[0].forward() \n", "\n", "#save net model\n", "#solver.net.save(home+'mymodel2.caffemodel')\n", "\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "blobs data = [[[[ 0. 0.]]]]\n", "blobs label = [ 0.]\n", "blobs ip0 = [[ 0.00111614]]\n", "blobs loss = 6.22886659585e-07\n", "params = [[ 0.99945396 0.9993977 ]]\n", "params = [ 0.00111614]\n", "diff = [[ -1.01666865e-05 -1.06548923e-05]]\n", "diff = [ -6.60804562e-06]\n" ] } ], "source": [ "#solver.step(1)\n", "#solver.net.forward() \n", "\n", "#print 'net.blobs label =',net.blobs['label'].data[...] \n", "#contains the blobs\n", "print 'blobs data =',solver.net.blobs['data'].data[...]\n", "print 'blobs label =',solver.net.blobs['label'].data[...] \n", "print 'blobs ip0 =',solver.net.blobs['ip0'].data[...]\n", "#print 'blobs ip1 =',solver.net.blobs['ip1'].data[...]\n", "print 'blobs loss =',solver.net.blobs['loss'].data[...]\n", "#print 'blobs accuracy =',solver.net.blobs['accuracy'].data[...]\n", "\n", "#contains the weight parameters\n", "print 'params =',solver.net.params['ip0'][0].data[...] \n", "\n", "#contains the bias parameters\n", "print 'params =',solver.net.params['ip0'][1].data[...] \n", "\n", "#the gradients (computation of the net.blobs[k].diff \n", "#and net.params[k][j].diff from the loss layer until input layer)\n", "print 'diff =',solver.net.params['ip0'][0].diff\n", "print 'diff =',solver.net.params['ip0'][1].diff\n", "\n" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "blobs loss = 6.2288324898e-07\n", "params = [[ 0.99945807 0.99940234]]\n" ] } ], "source": [ "#train on range step\n", "for i in range(5000):\n", " solver.step(1)\n", " \n", "print 'blobs loss =',solver.net.blobs['loss'].data[...]\n", "print 'params =',solver.net.params['ip0'][0].data[...] " ] }, { "cell_type": "code", "execution_count": 75, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#save net\n", "net.save(home+'mymodel.caffemodel')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Drawing net to /home/max/myPython/my_net_sum/my_net.png\r\n" ] }, { "data": { "image/png": "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\nU6dO2kzsbdq0YdiwYXz22Weax79lyxb69Klw4K9CYRFsbW0ZMmSI9iQQHx/PqFGj8PPzIzQ0tFJP\nAobCfg2Zdu3aUVhYSEFBAa6urjVyzt69e3P16lUyMzN54oknqtxOrY7Ru3n3Y9faV3h8/Meltg2f\nVfKmfPGDdG25ve/g+7Y5aNAgrbbMveTm5mJnZ8fVq1cJDAzEycmJVatWsX//fs6dO0dcXByBgYF4\ne3vz+++/l9m+qsmtqI3cuHGD8PBwbt26pa273yjhO3fusGLFCqKiorhw4QITJ06kXbt2pKamIoTg\nscceY9euXRWec+1kV4qKCnh5ZSZ5f9zgdvY1HFt5YGWlk53Yd/oSPHc/eTlZNHZwLvMYZBGNHVrw\n27Ed5X6vzY2fn59FR367uLjw008/YW9vX6WS0LVa6IEyRb4iyps70jClXUZGBq1bt+a///0vjz76\nKKCbmxTA1dUVV1fXEoW5DJ1Vhkmw16xZA1Dq8TclJaXS9iqoU4XHRo4cWacyPTp37szJkye1e7Yi\nGjVqxIwZM5gxY4a2rkOHDtry7t27sbKyoudfZpbbTlFRgbZ89cxBTu39nCde1s3lUFiQx51cnbNk\nEPmyjnHvNohPp7fnxSW/GWW7OfD19dXi8JYmNzcXW1vbMmfIK49aL/TmolWrVppIHz16FD8/PzZu\n3FhiMgVLsGbNGnJycrCzszNq/2+//ZZ//etfZraqBljQDS+7rpa2wiiOd0uma1fz2jpnzhzatm1r\n1A/KggULuHLlSqn10dHRrFu3jpMnT1bbHisrK2JjYxk5cqS2zr+CjBtDmBXAvdsg3LsN0t5b2zTm\n+f9XOlvm3mMA7B2rH6M2lr59+7J//37t/dy5c2uNyBvIz8/nxIkTlUr8qDUjY001leDWrVsZNmxY\ntdoICgoiOTmZhIQEmjdvXvEBJsLW1pbU1NRKHxcUFMThw4fL7eGv7cT6JtcZobffYF6hb9KkSaVr\nzPz++++8++67WqZGTdSM9x8abvb0yi/ffojR7/5a7j5ZF4/z1cJ+Jjmf4YfVxsaG0aNH88UXX1BQ\nUFDBUTqvv2XLluzevZtt27axefNmAgMDadmyJcOGDUNKSV5eHnZ2dkyYMIFdu3aRmZlJRkYG1tbW\nWFtbM2fOHBYuXMizzz7LN998U+75DCEck1WvrGsMGzYMT0/Pas2atG3bNm05NTWVwYMH07JlS777\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Drawing net\n", "home_img=home+'my_net.png'\n", "model_def = home+'net.prototxt'\n", "\n", "!/home/max/caffe-master/python/draw_net.py $model_def $home_img\n", "\n", "im = plt.imshow(np.flipud(plt.imread(home_img)), origin='lower')\n", "plt.show()\n", "\n", "!shotwell $home_img" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Testing MyNet" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from PIL import Image\n", "\n", "%matplotlib inline\n", "\n", "caffe_root = '/home/max/caffe-master/' \n", "home = '/home/max/myPython/my_net_sum/'\n", "\n", "import sys\n", "sys.path.insert(0, caffe_root + 'python')\n", "import caffe\n", "\n", "# run scripts from caffe root\n", "import os\n", "os.chdir(caffe_root)\n", "\n", "caffe.set_mode_cpu()\n", "\n", "#Определим модель нейронной сети\n", "model_def2 = home + 'net2.prototxt'\n", "\n", "#load the model\n", "net = caffe.Net(model_def2, home+'mymodel.caffemodel', caffe.TEST)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "blobs data = [[[[ 0. 0.]]]]\n", "blobs ip0 = [[ 0.]]\n", "params = [[ 1. 1.]]\n", "params = [ 0.]\n" ] } ], "source": [ "#contains the blobs\n", "print 'blobs data =',net.blobs['data'].data[...]\n", "print 'blobs ip0 =',net.blobs['ip0'].data[...]\n", "\n", "\n", "#contains the weight parameters\n", "print 'params =',net.params['ip0'][0].data[...] \n", "\n", "#contains the bias parameters\n", "print 'params =',net.params['ip0'][1].data[...]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "l0=3\n", "l1=9\n", "blobs data = [[[[ 3. 9.]]]]\n", "ip0 = [[ 12.]]\n" ] } ], "source": [ "#input data\n", "l0 = input (\"l0=\")\n", "l1 = input (\"l1=\")\n", "\n", "#Установка data blob\n", "net.blobs['data'].data[...] = [[[[ l0,l1]]]]\n", "\n", "#compute\n", "out = net.forward()\n", "\n", "print 'blobs data =',net.blobs['data'].data[...]\n", "\n", "#predicted predicted class\n", "print 'ip0 = ',out['ip0']\n", "#print 'accuracy = ',out['accuracy'].argmax()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "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.12" } }, "nbformat": 4, "nbformat_minor": 2 }