diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9c38b29 --- /dev/null +++ b/.gitignore @@ -0,0 +1,82 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +#Ipython Notebook +.ipynb_checkpoints + +#vim swap +*.swp + +#media +*.mov +*.png +.DS* + +#HDF5 +*.h5 + +#dataset +CIFAR-10/* +data/* +archive/MNIST* + +#checkpoint +checkpoint +*ckpt* diff --git a/Dropout.ipynb b/Dropout.ipynb new file mode 100644 index 0000000..466f3a4 --- /dev/null +++ b/Dropout.ipynb @@ -0,0 +1,431 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Dropout\n", + "Dropout [1] is a technique for regularizing neural networks by randomly setting some features to zero during the forward pass. In this exercise you will implement a dropout layer and modify your fully-connected network to optionally use dropout.\n", + "\n", + "[1] Geoffrey E. Hinton et al, \"Improving neural networks by preventing co-adaptation of feature detectors\", arXiv 2012" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# As usual, a bit of setup\n", + "\n", + "import time\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from cs231n.classifiers.fc_net import *\n", + "from cs231n.data_utils import get_CIFAR10_data\n", + "from cs231n.gradient_check import eval_numerical_gradient, eval_numerical_gradient_array\n", + "from cs231n.solver import Solver\n", + "\n", + "%matplotlib inline\n", + "plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots\n", + "plt.rcParams['image.interpolation'] = 'nearest'\n", + "plt.rcParams['image.cmap'] = 'gray'\n", + "\n", + "# for auto-reloading external modules\n", + "# see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "\n", + "def rel_error(x, y):\n", + " \"\"\" returns relative error \"\"\"\n", + " return np.max(np.abs(x - y) / (np.maximum(1e-8, np.abs(x) + np.abs(y))))" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "X_val: (1000, 3, 32, 32)\n", + "X_train: (49000, 3, 32, 32)\n", + "X_test: (1000, 3, 32, 32)\n", + "y_val: (1000,)\n", + "y_train: (49000,)\n", + "y_test: (1000,)\n" + ] + } + ], + "source": [ + "# Load the (preprocessed) CIFAR10 data.\n", + "\n", + "data = get_CIFAR10_data()\n", + "for k, v in data.iteritems():\n", + " print '%s: ' % k, v.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Dropout forward pass\n", + "In the file `cs231n/layers.py`, implement the forward pass for dropout. Since dropout behaves differently during training and testing, make sure to implement the operation for both modes.\n", + "\n", + "Once you have done so, run the cell below to test your implementation." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running tests with p = 0.3\n", + "Mean of input: 10.0003050007\n", + "Mean of train-time output: 4.89566886357\n", + "Mean of test-time output: 10.0003050007\n", + "Fraction of train-time output set to zero: 0.300708\n", + "Fraction of test-time output set to zero: 0.0\n", + "Running tests with p = 0.6\n", + "Mean of input: 10.0003050007\n", + "Mean of train-time output: 1.59425522821\n", + "Mean of test-time output: 10.0003050007\n", + "Fraction of train-time output set to zero: 0.601388\n", + "Fraction of test-time output set to zero: 0.0\n", + "Running tests with p = 0.75\n", + "Mean of input: 10.0003050007\n", + "Mean of train-time output: 0.629850267955\n", + "Mean of test-time output: 10.0003050007\n", + "Fraction of train-time output set to zero: 0.748068\n", + "Fraction of test-time output set to zero: 0.0\n" + ] + } + ], + "source": [ + "x = np.random.randn(500, 500) + 10\n", + "\n", + "for p in [0.3, 0.6, 0.75]:\n", + " out, _ = dropout_forward(x, {'mode': 'train', 'p': p})\n", + " out_test, _ = dropout_forward(x, {'mode': 'test', 'p': p})\n", + "\n", + " print 'Running tests with p = ', p\n", + " print 'Mean of input: ', x.mean()\n", + " print 'Mean of train-time output: ', out.mean()\n", + " print 'Mean of test-time output: ', out_test.mean()\n", + " print 'Fraction of train-time output set to zero: ', (out == 0).mean()\n", + " print 'Fraction of test-time output set to zero: ', (out_test == 0).mean()\n", + " #print out_test" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Dropout backward pass\n", + "In the file `cs231n/layers.py`, implement the backward pass for dropout. After doing so, run the following cell to numerically gradient-check your implementation." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dx relative error: 4.11332893312e-11\n" + ] + } + ], + "source": [ + "x = np.random.randn(10, 10) + 10\n", + "dout = np.random.randn(*x.shape)\n", + "\n", + "dropout_param = {'mode': 'train', 'p': 0.8, 'seed': 123}\n", + "out, cache = dropout_forward(x, dropout_param)\n", + "dx = dropout_backward(dout, cache)\n", + "dx_num = eval_numerical_gradient_array(lambda xx: dropout_forward(xx, dropout_param)[0], x, dout)\n", + "\n", + "print 'dx relative error: ', rel_error(dx, dx_num)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fully-connected nets with Dropout\n", + "In the file `cs231n/classifiers/fc_net.py`, modify your implementation to use dropout. Specificially, if the constructor the the net receives a nonzero value for the `dropout` parameter, then the net should add dropout immediately after every ReLU nonlinearity. After doing so, run the following to numerically gradient-check your implementation." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running check with dropout = 0\n", + "Initial loss: 2.30157803634\n", + "W1 relative error: 1.20e-06\n", + "W2 relative error: 9.29e-07\n", + "W3 relative error: 3.09e-07\n", + "b1 relative error: 5.19e-09\n", + "b2 relative error: 1.57e-08\n", + "b3 relative error: 1.21e-10\n", + "\n", + "Running check with dropout = 0.25\n", + "Initial loss: 2.30218576939\n", + "W1 relative error: 2.05e-06\n", + "W2 relative error: 9.20e-07\n", + "W3 relative error: 8.84e-08\n", + "b1 relative error: 8.53e-09\n", + "b2 relative error: 4.51e-09\n", + "b3 relative error: 7.61e-11\n", + "\n", + "Running check with dropout = 0.5\n", + "Initial loss: 2.30235305652\n", + "W1 relative error: 4.66e-06\n", + "W2 relative error: 1.84e-07\n", + "W3 relative error: 1.06e-07\n", + "b1 relative error: 4.43e-08\n", + "b2 relative error: 4.25e-09\n", + "b3 relative error: 7.66e-11\n", + "\n" + ] + } + ], + "source": [ + "N, D, H1, H2, C = 2, 15, 20, 30, 10\n", + "X = np.random.randn(N, D)\n", + "y = np.random.randint(C, size=(N,))\n", + "\n", + "for dropout in [0, 0.25, 0.5]:\n", + " print 'Running check with dropout = ', dropout\n", + " model = FullyConnectedNet([H1, H2], input_dim=D, num_classes=C,\n", + " weight_scale=5e-2, dtype=np.float64,\n", + " dropout=dropout, seed=123)\n", + "\n", + " loss, grads = model.loss(X, y)\n", + " print 'Initial loss: ', loss\n", + "\n", + " for name in sorted(grads):\n", + " f = lambda _: model.loss(X, y)[0]\n", + " grad_num = eval_numerical_gradient(f, model.params[name], verbose=False, h=1e-5)\n", + " print '%s relative error: %.2e' % (name, rel_error(grad_num, grads[name]))\n", + " print" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Regularization experiment\n", + "As an experiment, we will train a pair of two-layer networks on 500 training examples: one will use no dropout, and one will use a dropout probability of 0.75. We will then visualize the training and validation accuracies of the two networks over time." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "(Iteration 1 / 125) loss: 8.596245\n", + "(Epoch 0 / 25) train acc: 0.224000; val_acc: 0.183000\n", + "(Epoch 1 / 25) train acc: 0.376000; val_acc: 0.222000\n", + "(Epoch 2 / 25) train acc: 0.446000; val_acc: 0.244000\n", + "(Epoch 3 / 25) train acc: 0.542000; val_acc: 0.238000\n", + "(Epoch 4 / 25) train acc: 0.612000; val_acc: 0.239000\n", + "(Epoch 5 / 25) train acc: 0.704000; val_acc: 0.312000\n", + "(Epoch 6 / 25) train acc: 0.792000; val_acc: 0.272000\n", + "(Epoch 7 / 25) train acc: 0.832000; val_acc: 0.284000\n", + "(Epoch 8 / 25) train acc: 0.874000; val_acc: 0.314000\n", + "(Epoch 9 / 25) train acc: 0.884000; val_acc: 0.285000\n", + "(Epoch 10 / 25) train acc: 0.936000; val_acc: 0.287000\n", + "(Epoch 11 / 25) train acc: 0.958000; val_acc: 0.292000\n", + "(Epoch 12 / 25) train acc: 0.974000; val_acc: 0.295000\n", + "(Epoch 13 / 25) train acc: 0.966000; val_acc: 0.296000\n", + "(Epoch 14 / 25) train acc: 0.982000; val_acc: 0.304000\n", + "(Epoch 15 / 25) train acc: 0.990000; val_acc: 0.318000\n", + "(Epoch 16 / 25) train acc: 0.994000; val_acc: 0.310000\n", + "(Epoch 17 / 25) train acc: 0.992000; val_acc: 0.296000\n", + "(Epoch 18 / 25) train acc: 0.988000; val_acc: 0.301000\n", + "(Epoch 19 / 25) train acc: 0.998000; val_acc: 0.305000\n", + "(Epoch 20 / 25) train acc: 0.996000; val_acc: 0.303000\n", + "(Iteration 101 / 125) loss: 0.064184\n", + "(Epoch 21 / 25) train acc: 1.000000; val_acc: 0.306000\n", + "(Epoch 22 / 25) train acc: 1.000000; val_acc: 0.307000\n", + "(Epoch 23 / 25) train acc: 0.998000; val_acc: 0.312000\n", + "(Epoch 24 / 25) train acc: 1.000000; val_acc: 0.304000\n", + "(Epoch 25 / 25) train acc: 1.000000; val_acc: 0.304000\n", + "0.75\n", + "(Iteration 1 / 125) loss: 2.458476\n", + "(Epoch 0 / 25) train acc: 0.232000; val_acc: 0.195000\n", + "(Epoch 1 / 25) train acc: 0.380000; val_acc: 0.257000\n", + "(Epoch 2 / 25) train acc: 0.468000; val_acc: 0.301000\n", + "(Epoch 3 / 25) train acc: 0.536000; val_acc: 0.280000\n", + "(Epoch 4 / 25) train acc: 0.524000; val_acc: 0.276000\n", + "(Epoch 5 / 25) train acc: 0.588000; val_acc: 0.298000\n", + "(Epoch 6 / 25) train acc: 0.658000; val_acc: 0.305000\n", + "(Epoch 7 / 25) train acc: 0.708000; val_acc: 0.306000\n", + "(Epoch 8 / 25) train acc: 0.724000; val_acc: 0.327000\n", + "(Epoch 9 / 25) train acc: 0.766000; val_acc: 0.318000\n", + "(Epoch 10 / 25) train acc: 0.766000; val_acc: 0.283000\n", + "(Epoch 11 / 25) train acc: 0.804000; val_acc: 0.326000\n", + "(Epoch 12 / 25) train acc: 0.812000; val_acc: 0.327000\n", + "(Epoch 13 / 25) train acc: 0.838000; val_acc: 0.300000\n", + "(Epoch 14 / 25) train acc: 0.854000; val_acc: 0.310000\n", + "(Epoch 15 / 25) train acc: 0.864000; val_acc: 0.329000\n", + "(Epoch 16 / 25) train acc: 0.896000; val_acc: 0.337000\n", + "(Epoch 17 / 25) train acc: 0.906000; val_acc: 0.323000\n", + "(Epoch 18 / 25) train acc: 0.928000; val_acc: 0.335000\n", + "(Epoch 19 / 25) train acc: 0.924000; val_acc: 0.334000\n", + "(Epoch 20 / 25) train acc: 0.930000; val_acc: 0.335000\n", + "(Iteration 101 / 125) loss: 0.971483\n", + "(Epoch 21 / 25) train acc: 0.936000; val_acc: 0.323000\n", + "(Epoch 22 / 25) train acc: 0.952000; val_acc: 0.340000\n", + "(Epoch 23 / 25) train acc: 0.944000; val_acc: 0.328000\n", + "(Epoch 24 / 25) train acc: 0.966000; val_acc: 0.332000\n", + "(Epoch 25 / 25) train acc: 0.968000; val_acc: 0.332000\n" + ] + } + ], + "source": [ + "# Train two identical nets, one with dropout and one without\n", + "\n", + "num_train = 500\n", + "small_data = {\n", + " 'X_train': data['X_train'][:num_train],\n", + " 'y_train': data['y_train'][:num_train],\n", + " 'X_val': data['X_val'],\n", + " 'y_val': data['y_val'],\n", + "}\n", + "\n", + "solvers = {}\n", + "dropout_choices = [0, 0.75]\n", + "for dropout in dropout_choices:\n", + " model = FullyConnectedNet([500], dropout=dropout)\n", + " print dropout\n", + "\n", + " solver = Solver(model, small_data,\n", + " num_epochs=25, batch_size=100,\n", + " update_rule='adam',\n", + " optim_config={\n", + " 'learning_rate': 5e-4,\n", + " },\n", + " verbose=True, print_every=100)\n", + " solver.train()\n", + " solvers[dropout] = solver" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n/DC33XYbJ510EgceeCCzZ8/ml7/85YDzly5dysknn8y0adM466yzePbZZ/uO33TTTZxwwglMnz6d\nd77zndx33319x+rq6njooYf69hctWsRFF13Eiy++yBlnnMHWrVuZOnUqBxxwAE888cSw3tvRal3d\nOiB5A8jPytO2pq1i1xjp3+Xg595www187GMfG9A+3GVSvC9KMwmUJEmaALq7Sw/w6uqqL9lejmv8\n8Y9/ZNKkSRxzzDF9bSeeeCJ/+MMfSp5/zz33cOKJJ/btv+lNb+LJJ5/k2WefHfG1Lr/8cnK5HHfd\ndRd33HEH119//W49Ot///ve54oor2L59O5MnT6apqYl/+Id/YNu2bXz2s5+lqalpwBf6a665hquv\nvprHH3+cSZMmkc1m+37OhQsX0traytNPP8173vMe3ve+97Fz586SsSUSCRKJBPvvvz9r167l8MMP\n5/nnn+cvf/kLhx566F7e1bHpDrpLtnf1dFXsGiP9uyx2ww038KpXvYp3vOMdA9qXLl3KwQcfzNvf\n/nbWr18/5PO9L0ozCZQkSZoAGhpKf9FMJndV7Brbt28fMHcLYOrUqTz//PNDnj9t2rS+/d7nPv/8\n8yO+1nXXXcdnPvMZZsyYwfTp01m2bNmA3qJEIsGiRYs47rjjqKuro729nWOPPZZzzz2Xuro6zjnn\nHF7/+tdz00039Z1/3nnncfzxx7P//vtzySWXcN1119HT08MPfvAD3vve9/Kud72L+vp6Pve5z/HS\nSy9x2223Dfne9MYy3B6s8dKQaCjZnqxLVuwaI/27LPa9732P8847b0DbpZdeysMPP8zWrVv55Cc/\nyfve974BPWzFvC9KMwmUJEmaALLZeaRSywe0pVLLyGTmVuwaU6ZM4S9/+cuAtueee46pU6cO6/zn\nnnsOCBOEkV7r8ccfH1BY49WvfvVu5xQf37p1627nHHXUUWzdurXk+a9+9avZsWMHTz/9NI8//viA\n5yYSCY488kgee+yxkrFFKbswS2pjakBb6s4UmQWZil1jpH+XvR599FHWr1+/WxI4e/ZsJk+ezD77\n7MN5553Hqaeeyk9+8pOS1/C+KM3CMJIkSRNAb+GWtraL6OqqJ5ncRSYzf9gFXcbjGq973evYuXMn\nDz74YN/Qv7vvvps3vOENJc8/4YQTuOuuu/jQhz7Ud+4hhxzC9OnT2XfffUd0rcMOO4xHH320b794\n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\n13OHDBkSrFy5sqMslUoFt99+e07v3Zfui+5+98lvfXagjwwHTT6ZpG5aXambIUmSVDKNjctpabmx\nU1lLy400Na0o2jV+//vf069fP9797nd3lJ1++un89re/zVp/7dq1nH766R37Y8eO5Y9//CPbtm3L\n+1q33XYb6XSap59+mtWrV/PAAw8c0KNz9913c/vtt7Nz504GDRpEbW0tn/vc59i6dSuf//znqa2t\nZdu2bR3177rrLu688062bNlCv379qK+v7/g+p0+fTmNjI6+99hof+chHuOSSS9izZ0/WtiUSCRKJ\nBAMHDmTp0qUcf/zx7NixgzfeeIPhw4cf4l/18DTe00jLGS2dyvKdSnW418j3Z5npBz/4AX/+53/O\n+eef36l87ty5vPOd7+S8887j0Ucf7fZ874vsen0QWLOhhkXXLDI7qCRJKmttbdln+bS2VmYtL8Q1\ndu7c2WnuFsCQIUPYsWNHt/WHDh3asd9+7o4dO/K+1v3338+1117LyJEjGTZsGPPmzeuUSTGRSPDJ\nT36S0047jYqKCpYvX8573vMeZsyYQUVFBVOnTuW9730vDz30UEf9mTNnMmbMGAYOHMhXvvIV7r//\nfvbt28f3v/99Lr74Yj70oQ9RWVnJF7/4Rd5++21WrVrV7b9Ne1uCImd2bQvaspbnM5XqcK+R788y\n03e/+11mzpzZqezmm2/mhRdeYPPmzXz605/mkksu4fnnn896vvdFdr0+CFz6naUGgJIkqexVVWXv\nbaiu3lu0awwePJg33nijU9n27dsZMmRITvW3b98OhAFCvtfasmVLp8QaJ5544gF1Mo9v3rz5gDon\nnXQSmzdvzlr/xBNPZPfu3bz22mts2bKl07mJRIJRo0axadOmrG0rpapEVdby6orqol0j359lu40b\nN/Loo48eEASOGzeOQYMG0b9/f2bOnMn48eN5+OGHs17D+yK7Xh8ESpIkCerrJ5FMzu9UlkzOo65u\nYtGuceqpp7Jnzx7Wr1/fUbZmzRr+4i/+Imv9973vfTz99NOd6h533HEMGzYs72uNGDGCjRs3duxn\nbrfLHAY4cuRINmzY0On4hg0bGDlyZNZrbNy4kf79+/POd76T448/vtO5QRDw0ksvdZw7cOBA3nrr\nrY7jW7Zs6XjvYicdqZ9eT/KpZKeyfKdSHe418v1Ztrvrrrs477zzGD16dM5t7cr7om/KaUKoJElS\n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\nQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot train and validation accuracies of the two models\n", + "\n", + "train_accs = []\n", + "val_accs = []\n", + "for dropout in dropout_choices:\n", + " solver = solvers[dropout]\n", + " train_accs.append(solver.train_acc_history[-1])\n", + " val_accs.append(solver.val_acc_history[-1])\n", + "\n", + "plt.subplot(3, 1, 1)\n", + "for dropout in dropout_choices:\n", + " plt.plot(solvers[dropout].train_acc_history, 'o', label='%.2f dropout' % dropout)\n", + "plt.title('Train accuracy')\n", + "plt.xlabel('Epoch')\n", + "plt.ylabel('Accuracy')\n", + "plt.legend(ncol=2, loc='lower right')\n", + " \n", + "plt.subplot(3, 1, 2)\n", + "for dropout in dropout_choices:\n", + " plt.plot(solvers[dropout].val_acc_history, 'o', label='%.2f dropout' % dropout)\n", + "plt.title('Val accuracy')\n", + "plt.xlabel('Epoch')\n", + "plt.ylabel('Accuracy')\n", + "plt.legend(ncol=2, loc='lower right')\n", + "\n", + "plt.gcf().set_size_inches(15, 15)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Question\n", + "Explain what you see in this experiment. What does it suggest about dropout?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Answer\n" + ] + } + ], + "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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/SensorCodeSample.cpp b/SensorCodeSample.cpp new file mode 100644 index 0000000..dcd221f --- /dev/null +++ b/SensorCodeSample.cpp @@ -0,0 +1,653 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "sstream" +#include "string" +#include "iomanip" +#include "typeinfo" +#include "opencv2/opencv.hpp" +#include "opencv2/highgui.hpp" +#include "opencv2/imgproc.hpp" +#include "opencv2/imgcodecs.hpp" +#include "opencv2/videoio.hpp" + +using namespace cv; +using namespace std; + +#define PI 3.14159265 +#define PAUSE printf("Press Enter key to continue..."); fgetc(stdin); + +void PrintSensorTargets(SensorTarget* targets, int numTargets) +{ + int targetIdx; + +// #ifdef __LINUX__ +// printf("\033[2J\033[1;1H"); +// #else +// system("cls"); +// #endif + if (numTargets > 0) + { + for (targetIdx = 0; targetIdx < numTargets; targetIdx++) + { + printf("Target #%d: \nX = %lf \nY = %lf \nZ = %lf \namplitude = %lf\n\n\n ", + targetIdx, + targets[targetIdx].xPosCm, + targets[targetIdx].yPosCm, + targets[targetIdx].zPosCm, + targets[targetIdx].amplitude); + } + } + else + { + printf("No target detected\n"); + } + //sleep(1); +} + +void showRTheta(int* rasterImage, int sizeX, int sizeY, int width, int height, Mat* new_frame) +{ + namedWindow("SHOW1",1); + int bound = sizeX * sizeY; + double ratioX = width/sizeX; + double ratioY = height/sizeY; + + Mat frame = Mat::zeros(sizeY,sizeX, CV_8UC1); + + //GetRawImageSlice phi-R output image + for (int i=0,j=0;i(j,idx) = rasterImage[i]; + } + resize(frame,*new_frame,(*new_frame).size(),ratioY,ratioX,INTER_NEAREST); + imshow("SHOW1", *new_frame); +} + +void showThetaPhi(int* rasterImage2, int sizeX2, int sizeY2, int sizeZ2, int width2, int height2, Mat* new_frame2) +{ + namedWindow("SHOW2",1); + int bound2 = sizeX2 * sizeY2 * sizeZ2; + double ratioX2 = width2/sizeX2; + double ratioY2 = height2/sizeY2; + + Mat frame2 = Mat::zeros(sizeY2,sizeX2, CV_8UC1); + + //GetRawImage output theta-phi mapping image + ///* + for (int i=0,j=0;i(j,idx) += rasterImage2[i]; + //cout << rasterImage2[i] <<" "; + //if((i+1)%sizeX2==0) cout< 0 ~ 2R + X += (rangeX / 2); + Y += (rangeY / 2); + + if (X>max_X) max_X = X; + if (Y>max_Y) max_Y = Y; + if (X(Y,X) += rasterImage2[i]; + } + frame3.mul(0.00390625); // value down to 0-255 + resize(frame3,*new_frame3,(*new_frame3).size(),ratioY3,ratioX3,INTER_NEAREST); + imshow("SHOW3", *new_frame3); + /* + cout << "rangeX: " << rangeX <= thres; + //mask out output + (*frame).copyTo(output,mask); + + + //locate object + int sumR=0,sumC=0,ctr=0,centerR=0,centerC=0; + for (int i=0;i<(output).rows;i++) + { + for (int j=0;j<(output).cols;j++) + { + if ((int)(output).at(i,j) != 0){ + //cout << (int)output.at(i,j) << " "; + sumR += i; + sumC += j; + ctr += 1; + } + } + cout << endl; + } + //cout << sumR << "," << sumC << "," << ctr <(centerR+i,centerC+i) = 100; + output.at(centerR-i,centerC-i) = 100; + output.at(centerR+i,centerC-i) = 100; + output.at(centerR-i,centerC+i) = 100; + } + */ + //show image + //imshow("SHOW4", output); +} + +//void saveImage(Mat *frame, int num, string path) +//{ +//} + +void log(Mat *frame) +{ + WALABOT_RESULT res; + AntennaPair * antennaPairs; + int numPairs; + res = Walabot_GetAntennaPairs(&antennaPairs, &numPairs); + assert(res == WALABOT_SUCCESS); + + //Walabot_GetSignal + double* signal; + double* timeAxis; + double x; + double y; + int numSamples; + fstream fp; + fp.open ("data/walabot.log",ios::out|ios::app); + for (int i=0;i Distance scanning through air; + // -> high-resolution images + // -> slower capture rate + res = Walabot_SetProfile(PROF_SENSOR); + assert(res == WALABOT_SUCCESS); + //cout << "2" << endl; + + // Setup arena - specify it by Cartesian coordinates(ranges and resolution on the x, y, z axes); + // In Sensor mode there is need to specify Spherical coordinates(ranges and resolution along radial distance and Theta and Phi angles). + res = Walabot_SetArenaR(minInCm, maxInCm, resICm); + assert(res == WALABOT_SUCCESS); + //cout << "3" << endl; + + // Sets polar range and resolution of arena (parameters in degrees). + res = Walabot_SetArenaTheta(minIndegrees, maxIndegrees, resIndegrees); + assert(res == WALABOT_SUCCESS); + //cout << "4" << endl; + + // Sets azimuth range and resolution of arena.(parameters in degrees). + res = Walabot_SetArenaPhi(minPhiInDegrees, maxPhiInDegrees, resPhiInDegrees); + assert(res == WALABOT_SUCCESS); + //cout << "5" << endl; + + FILTER_TYPE filterType = mtiMode ? + FILTER_TYPE_MTI : //Moving Target Identification: standard dynamic-imaging filter + FILTER_TYPE_NONE; + + res = Walabot_SetDynamicImageFilter(filterType); + assert(res == WALABOT_SUCCESS); + //cout << "6" << endl; + + // 3) Start: Start the system in preparation for scanning. + // ======================================================= + res = Walabot_Start(); + assert(res == WALABOT_SUCCESS); + //cout << "7" << endl; + + // 4) Trigger: Scan(sense) according to profile and record signals to be available + // for processing and retrieval. + // ================================================================================ + if (!mtiMode) // if MTI mode is not set - start calibrartion + { + // calibrates scanning to ignore or reduce the signals + res = Walabot_StartCalibration(); + assert(res == WALABOT_SUCCESS); + //cout << "8" << endl; + } + + /* + ################################################################# + # # + # Define opencv parameter(s) # + # # + ################################################################# + */ + + bool recording = true; // walabot start running flag + bool mode = false; // record video flag + int width = 640; // frame-w + int height = 480; // frame-h + int width2 = 640; // frame2-w + int height2 = 480; // frame2-h + Size frameSize(width, height); + VideoWriter video("data/Thz.mov", CV_FOURCC('m','p','4','v'),10,frameSize,false); + Mat new_frame = Mat::zeros(height, width, CV_8UC1); + Mat new_frame2 = Mat::zeros(height2, width2, CV_8UC1); + Mat new_frame3 = Mat::zeros(height2, width2, CV_8UC1); + Mat new_frame4 = Mat::zeros(height2, width2, CV_8UC1); + + if (!video.isOpened()) + { + // cout << "ERROR: Fail to write the video" << endl; + //return -1; + } + + // default webcam + VideoCapture cap(0); + //image folder path + string path = "data/001/"; + stringstream serialNum; + string fullPath; + int num = 0; + while (recording) + { + // calibrates scanning to ignore or reduce the signals + res = Walabot_GetStatus(&appStatus, &calibrationProcess); + assert(res == WALABOT_SUCCESS); + //cout << "9" << endl; + + // 5) Trigger: Scan(sense) according to profile and record signals to be + // available for processing and retrieval. + // ==================================================================== + res = Walabot_Trigger(); + assert(res == WALABOT_SUCCESS); + //cout << "10" << endl; + + // 6) Get action : retrieve the last completed triggered recording + // ================================================================ + res = Walabot_GetSensorTargets(&targets, &numTargets); + assert(res == WALABOT_SUCCESS); + //cout << "11" << endl; + + res = Walabot_GetRawImageSlice(&rasterImage, &sizeX, &sizeY, &sliceDepth, &power); + assert(res == WALABOT_SUCCESS); + res = Walabot_GetRawImage(&rasterImage2, &sizeX2, &sizeY2, &sizeZ2, &power2); + assert(res == WALABOT_SUCCESS); + //cout << "12" << endl; + + // ****************************** + // TODO: add processing code here + // ****************************** + + /*- + check value (print it all out) + */ + /* + cout << "sizeX2: " << sizeX2 <> webcam_frame; + namedWindow("SHOW99",1); + imshow("SHOW99", webcam_frame); + + + + // KEYBOARD INTERRUPT + int key = cv::waitKey(30) & 255; + + clock_t begin; + clock_t end; + if(key == 27) break; //press ESC to break + if(key == 114) // press "R "to re-Caliberate + { + cout << "Re-Caliberation!!" <> fullPath; + serialNum.clear(); + //cout << fullPath; + imwrite(fullPath,webcam_frame); + //saveImage(&webcam_frame,num,path); + } + //PrintSensorTargets(targets, numTargets); + } + + // 7) Stop and Disconnect. + // ====================== + res = Walabot_Stop(); + assert(res == WALABOT_SUCCESS); + //cout << "13" << endl; + + res = Walabot_Disconnect(); + assert(res == WALABOT_SUCCESS); + //cout << "14" << endl; + + video.release(); +} + + +#ifndef _SAMPLE_CODE_ +int main() +{ + SensorCode_SampleCode(); +} +#endif diff --git a/buildAll.sh b/buildAll.sh new file mode 100755 index 0000000..5525b82 --- /dev/null +++ b/buildAll.sh @@ -0,0 +1,8 @@ +#/bin/sh + +g++ -o sensorTarget.out SensorCodeSample.cpp -O2 -D__LINUX__ -lWalabotAPI -lopencv_core -lopencv_videoio -lopencv_highgui -lopencv_imgproc + +#g++ -o sensorBreathing.out SensorBreathingSampleCode.cpp -O2 -D__LINUX__ -lWalabotAPI + +#g++ -o inWall.out InWallSampleCode.cpp -O2 -D__LINUX__ -lWalabotAPI + diff --git a/frameworkpython b/frameworkpython new file mode 100755 index 0000000..851f7e6 --- /dev/null +++ b/frameworkpython @@ -0,0 +1,16 @@ +#!/bin/bash + +# what real Python executable to use +PYVER=2.7 +PATHTOPYTHON=/usr/local/bin/ +PYTHON=${PATHTOPYTHON}python${PYVER} + +# find the root of the virtualenv, it should be the parent of the dir this script is in +ENV=`$PYTHON -c "import os; print os.path.abspath(os.path.join(os.path.dirname(\"$0\"), '..'))"` + +export LC_ALL=en_US.UTF-8 +export LANG=en_US.UTF-8 + +# now run Python with the virtualenv set as Python's HOME +export PYTHONHOME=$ENV +exec $PYTHON "$@" diff --git a/knn.ipynb b/knn.ipynb new file mode 100644 index 0000000..37665af --- /dev/null +++ b/knn.ipynb @@ -0,0 +1,698 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# k-Nearest Neighbor (kNN) exercise\n", + "\n", + "*Complete and hand in this completed worksheet (including its outputs and any supporting code outside of the worksheet) with your assignment submission. For more details see the [assignments page](http://vision.stanford.edu/teaching/cs231n/assignments.html) on the course website.*\n", + "\n", + "The kNN classifier consists of two stages:\n", + "\n", + "- During training, the classifier takes the training data and simply remembers it\n", + "- During testing, kNN classifies every test image by comparing to all training images and transfering the labels of the k most similar training examples\n", + "- The value of k is cross-validated\n", + "\n", + "In this exercise you will implement these steps and understand the basic Image Classification pipeline, cross-validation, and gain proficiency in writing efficient, vectorized code." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The autoreload extension is already loaded. To reload it, use:\n", + " %reload_ext autoreload\n" + ] + } + ], + "source": [ + "# Run some setup code for this notebook.\n", + "\n", + "import random\n", + "import numpy as np\n", + "from cs231n.data_utils import load_CIFAR10\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# This is a bit of magic to make matplotlib figures appear inline in the notebook\n", + "# rather than in a new window.\n", + "%matplotlib inline\n", + "#get_ipython().magic(u'matplotlib inline')\n", + "plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots\n", + "plt.rcParams['image.interpolation'] = 'nearest'\n", + "plt.rcParams['image.cmap'] = 'gray'\n", + "\n", + "# Some more magic so that the notebook will reload external python modules;\n", + "# see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython\n", + "#get_ipython().magic(u'load_ext autoreload')\n", + "#get_ipython().magic(u'autoreload 2')\n", + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Training data shape: (50000, 32, 32, 3)\n", + "Training labels shape: (50000,)\n", + "Test data shape: (10000, 32, 32, 3)\n", + "Test labels shape: (10000,)\n" + ] + } + ], + "source": [ + "# Load the raw CIFAR-10 data.\n", + "cifar10_dir = 'cs231n/datasets/cifar-10-batches-py'\n", + "X_train, y_train, X_test, y_test = load_CIFAR10(cifar10_dir)\n", + "\n", + "# As a sanity check, we print out the size of the training and test data.\n", + "print 'Training data shape: ', X_train.shape\n", + "print 'Training labels shape: ', y_train.shape\n", + "print 'Test data shape: ', X_test.shape\n", + "print 'Test labels shape: ', y_test.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Visualize some examples from the dataset.\n", + "# We show a few examples of training images from each class.\n", + "# enumerate will show the list's content and index\n", + "# enumerate(['fat','ass']) => 0 fat; 1 ass;\n", + "classes = ['plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']\n", + "num_classes = len(classes)\n", + "samples_per_class = 7\n", + "for y, cls in enumerate(classes):\n", + " idxs = np.flatnonzero(y_train == y)\n", + " idxs = np.random.choice(idxs, samples_per_class, replace=False)\n", + " #print idxs\n", + " for i, idx in enumerate(idxs):\n", + " plt_idx = i * num_classes + y + 1\n", + " #plt.subplot will configure each pictures location\n", + " #the origin is on the top-left and it's in the fourth quadrant\n", + " plt.subplot(samples_per_class, num_classes, plt_idx)\n", + " plt.imshow(X_train[idx].astype('uint8'))\n", + " plt.axis('off')\n", + " plt.title(plt_idx)\n", + " #if i == 0:\n", + " # plt.title(cls)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Subsample the data for more efficient code execution in this exercise\n", + "num_training = 5000\n", + "mask = range(num_training)\n", + "X_train = X_train[mask]\n", + "y_train = y_train[mask]\n", + "#print X_train.shape\n", + "\n", + "num_test = 500\n", + "mask = range(num_test)\n", + "X_test = X_test[mask]\n", + "y_test = y_test[mask]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(5000, 3072) (500, 3072)\n", + "3072\n" + ] + } + ], + "source": [ + "# Reshape the image data into rows\n", + "# -1 in reshape function means one dimension\n", + "X_train = np.reshape(X_train, (X_train.shape[0], -1))\n", + "X_test = np.reshape(X_test, (X_test.shape[0], -1))\n", + "print X_train.shape, X_test.shape\n", + "print 32*32*3" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from cs231n.classifiers import KNearestNeighbor\n", + "\n", + "# Create a kNN classifier instance. \n", + "# Remember that training a kNN classifier is a noop: \n", + "# the Classifier simply remembers the data and does no further processing \n", + "classifier = KNearestNeighbor()\n", + "classifier.train(X_train, y_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We would now like to classify the test data with the kNN classifier. Recall that we can break down this process into two steps: \n", + "\n", + "1. First we must compute the distances between all test examples and all train examples. \n", + "2. Given these distances, for each test example we find the k nearest examples and have them vote for the label\n", + "\n", + "Lets begin with computing the distance matrix between all training and test examples. For example, if there are **Ntr** training examples and **Nte** test examples, this stage should result in a **Nte x Ntr** matrix where each element (i,j) is the distance between the i-th test and j-th train example.\n", + "\n", + "First, open `cs231n/classifiers/k_nearest_neighbor.py` and implement the function `compute_distances_two_loops` that uses a (very inefficient) double loop over all pairs of (test, train) examples and computes the distance matrix one element at a time." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(500, 5000)\n" + ] + } + ], + "source": [ + "# Open cs231n/classifiers/k_nearest_neighbor.py and implement\n", + "# compute_distances_two_loops.\n", + "\n", + "# Test your implementation:\n", + "dists = classifier.compute_distances_two_loops(X_test)\n", + "print dists.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "40155461.0\n", + "40155461.0\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# We can visualize the distance matrix: each row is a single test example and\n", + "# its distances to training examples\n", + "#print X_test[0].shape,classifier.X_train[0].shape\n", + "print ((X_test[1]-classifier.X_train[0])**2).sum()\n", + "print dists[1,0]\n", + "plt.imshow(dists, interpolation='none')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Inline Question #1:** Notice the structured patterns in the distance matrix, where some rows or columns are visible brighter. (Note that with the default color scheme black indicates low distances while white indicates high distances.)\n", + "\n", + "- What in the data is the cause behind the distinctly bright rows?\n", + "- What causes the columns?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Your Answer**: *fill this in.*\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Got 137 / 500 correct => accuracy: 0.274000\n" + ] + } + ], + "source": [ + "# Now implement the function predict_labels and run the code below:\n", + "# We use k = 1 (which is Nearest Neighbor).\n", + "y_test_pred = classifier.predict_labels(dists, k=1)\n", + "#print type(y_test_pred),type(y_test)\n", + "#print y_test_pred.shape,y_test.shape\n", + "#term=0\n", + "#print y_test_pred[term:term+10]\n", + "#print y_test[term:term+10]\n", + "# Compute and print the fraction of correctly predicted examples\n", + "num_correct = np.sum(y_test_pred == y_test)\n", + "accuracy = float(num_correct) / num_test\n", + "print 'Got %d / %d correct => accuracy: %f' % (num_correct, num_test, accuracy)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You should expect to see approximately `27%` accuracy. Now lets try out a larger `k`, say `k = 5`:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Got 142 / 500 correct => accuracy: 0.284000\n" + ] + } + ], + "source": [ + "y_test_pred = classifier.predict_labels(dists, k=5)\n", + "num_correct = np.sum(y_test_pred == y_test)\n", + "accuracy = float(num_correct) / num_test\n", + "print 'Got %d / %d correct => accuracy: %f' % (num_correct, num_test, accuracy)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You should expect to see a slightly better performance than with `k = 1`." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Difference was: 0.000000\n", + "Good! The distance matrices are the same\n" + ] + } + ], + "source": [ + "# Now lets speed up distance matrix computation by using partial vectorization\n", + "# with one loop. Implement the function compute_distances_one_loop and run the\n", + "# code below:\n", + "dists_one = classifier.compute_distances_one_loop(X_test)\n", + "\n", + "# To ensure that our vectorized implementation is correct, we make sure that it\n", + "# agrees with the naive implementation. There are many ways to decide whether\n", + "# two matrices are similar; one of the simplest is the Frobenius norm. In case\n", + "# you haven't seen it before, the Frobenius norm of two matrices is the square\n", + "# root of the squared sum of differences of all elements; in other words, reshape\n", + "# the matrices into vectors and compute the Euclidean distance between them.\n", + "difference = np.linalg.norm(dists - dists_one, ord='fro')\n", + "print 'Difference was: %f' % (difference, )\n", + "if difference < 0.001:\n", + " print 'Good! The distance matrices are the same'\n", + "else:\n", + " print 'Uh-oh! The distance matrices are different'" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Difference was: 0.000000\n", + "Good! The distance matrices are the same\n" + ] + } + ], + "source": [ + "# Now implement the fully vectorized version inside compute_distances_no_loops\n", + "# and run the code\n", + "dists_two = classifier.compute_distances_no_loops(X_test)\n", + "\n", + "# check that the distance matrix agrees with the one we computed before:\n", + "difference = np.linalg.norm(dists - dists_two, ord='fro')\n", + "print 'Difference was: %f' % (difference, )\n", + "if difference < 0.001:\n", + " print 'Good! The distance matrices are the same'\n", + "else:\n", + " print 'Uh-oh! The distance matrices are different'" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Two loop version took 37.960647 seconds\n", + "One loop version took 34.576735 seconds\n", + "No loop version took 0.387743 seconds\n" + ] + } + ], + "source": [ + "# Let's compare how fast the implementations are\n", + "def time_function(f, *args):\n", + " \"\"\"\n", + " Call a function f with args and return the time (in seconds) that it took to execute.\n", + " \"\"\"\n", + " import time\n", + " tic = time.time()\n", + " f(*args)\n", + " toc = time.time()\n", + " return toc - tic\n", + "\n", + "two_loop_time = time_function(classifier.compute_distances_two_loops, X_test)\n", + "print 'Two loop version took %f seconds' % two_loop_time\n", + "\n", + "one_loop_time = time_function(classifier.compute_distances_one_loop, X_test)\n", + "print 'One loop version took %f seconds' % one_loop_time\n", + "\n", + "no_loop_time = time_function(classifier.compute_distances_no_loops, X_test)\n", + "print 'No loop version took %f seconds' % no_loop_time\n", + "\n", + "# you should see significantly faster performance with the fully vectorized implementation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cross-validation\n", + "\n", + "We have implemented the k-Nearest Neighbor classifier but we set the value k = 5 arbitrarily. We will now determine the best value of this hyperparameter with cross-validation." + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{1: [0.245, 0.232, 0.259, 0.227, 0.235], 3: [0.251, 0.248, 0.243, 0.222, 0.232], 100: [0.233, 0.213, 0.229, 0.233, 0.243], 5: [0.252, 0.248, 0.245, 0.24, 0.246], 8: [0.255, 0.251, 0.266, 0.235, 0.252], 10: [0.261, 0.252, 0.254, 0.23, 0.264], 12: [0.265, 0.244, 0.261, 0.247, 0.259], 15: [0.261, 0.249, 0.257, 0.235, 0.262], 50: [0.256, 0.234, 0.263, 0.24, 0.247], 20: [0.261, 0.242, 0.265, 0.246, 0.26]}\n", + "k = 1, accuracy = 0.245000\n", + "k = 1, accuracy = 0.232000\n", + "k = 1, accuracy = 0.259000\n", + "k = 1, accuracy = 0.227000\n", + "k = 1, accuracy = 0.235000\n", + "k = 3, accuracy = 0.251000\n", + "k = 3, accuracy = 0.248000\n", + "k = 3, accuracy = 0.243000\n", + "k = 3, accuracy = 0.222000\n", + "k = 3, accuracy = 0.232000\n", + "k = 5, accuracy = 0.252000\n", + "k = 5, accuracy = 0.248000\n", + "k = 5, accuracy = 0.245000\n", + "k = 5, accuracy = 0.240000\n", + "k = 5, accuracy = 0.246000\n", + "k = 8, accuracy = 0.255000\n", + "k = 8, accuracy = 0.251000\n", + "k = 8, accuracy = 0.266000\n", + "k = 8, accuracy = 0.235000\n", + "k = 8, accuracy = 0.252000\n", + "k = 10, accuracy = 0.261000\n", + "k = 10, accuracy = 0.252000\n", + "k = 10, accuracy = 0.254000\n", + "k = 10, accuracy = 0.230000\n", + "k = 10, accuracy = 0.264000\n", + "k = 12, accuracy = 0.265000\n", + "k = 12, accuracy = 0.244000\n", + "k = 12, accuracy = 0.261000\n", + "k = 12, accuracy = 0.247000\n", + "k = 12, accuracy = 0.259000\n", + "k = 15, accuracy = 0.261000\n", + "k = 15, accuracy = 0.249000\n", + "k = 15, accuracy = 0.257000\n", + "k = 15, accuracy = 0.235000\n", + "k = 15, accuracy = 0.262000\n", + "k = 20, accuracy = 0.261000\n", + "k = 20, accuracy = 0.242000\n", + "k = 20, accuracy = 0.265000\n", + "k = 20, accuracy = 0.246000\n", + "k = 20, accuracy = 0.260000\n", + "k = 50, accuracy = 0.256000\n", + "k = 50, accuracy = 0.234000\n", + "k = 50, accuracy = 0.263000\n", + "k = 50, accuracy = 0.240000\n", + "k = 50, accuracy = 0.247000\n", + "k = 100, accuracy = 0.233000\n", + "k = 100, accuracy = 0.213000\n", + "k = 100, accuracy = 0.229000\n", + "k = 100, accuracy = 0.233000\n", + "k = 100, accuracy = 0.243000\n" + ] + } + ], + "source": [ + "num_folds = 5\n", + "k_choices = [1, 3, 5, 8, 10, 12, 15, 20, 50, 100]\n", + "\n", + "X_train_folds = []\n", + "y_train_folds = []\n", + "################################################################################\n", + "# TODO: #\n", + "# Split up the training data into folds. After splitting, X_train_folds and #\n", + "# y_train_folds should each be lists of length num_folds, where #\n", + "# y_train_folds[i] is the label vector for the points in X_train_folds[i]. #\n", + "# Hint: Look up the numpy array_split function. #\n", + "################################################################################\n", + "#pass\n", + "X_train_folds = np.array_split(X_train,num_folds)\n", + "y_train_folds = np.array_split(y_train,num_folds)\n", + "#print len(X_train_folds), len(y_train_folds)\n", + "#print X_train_folds[0].shape\n", + "################################################################################\n", + "# END OF YOUR CODE #\n", + "################################################################################\n", + "\n", + "# A dictionary holding the accuracies for different values of k that we find\n", + "# when running cross-validation. After running cross-validation,\n", + "# k_to_accuracies[k] should be a list of length num_folds giving the different\n", + "# accuracy values that we found when using that value of k.\n", + "k_to_accuracies = {}\n", + "\n", + "\n", + "################################################################################\n", + "# TODO: #\n", + "# Perform k-fold cross validation to find the best value of k. For each #\n", + "# possible value of k, run the k-nearest-neighbor algorithm num_folds times, #\n", + "# where in each case you use all but one of the folds as training data and the #\n", + "# last fold as a validation set. Store the accuracies for all fold and all #\n", + "# values of k in the k_to_accuracies dictionary. #\n", + "################################################################################\n", + "#pass\n", + "for k_num in k_choices:#[0:2]:\n", + " k_to_accuracies[k_num]=[]\n", + " for fold_num in range(0,num_folds):\n", + " if fold_num == num_folds-1:\n", + " v_idx = 0\n", + " else:\n", + " v_idx = num_folds-1\n", + " classifier = KNearestNeighbor()\n", + " classifier.train(X_train_folds[fold_num], y_train_folds[fold_num])\n", + " dists = classifier.compute_distances_no_loops(X_train_folds[v_idx])\n", + " y_val_pred = classifier.predict_labels(dists, k=k_num)\n", + " num_correct = np.sum(y_train_folds[v_idx] == y_val_pred)\n", + " num_val = y_train_folds[v_idx].shape[0]\n", + " #print num_val\n", + " accuracy = float(num_correct) / num_val\n", + " k_to_accuracies[k_num].append(accuracy)\n", + "print k_to_accuracies\n", + "################################################################################\n", + "# END OF YOUR CODE #\n", + "################################################################################\n", + "\n", + "# Print out the computed accuracies\n", + "for k in sorted(k_to_accuracies):\n", + " for accuracy in k_to_accuracies[k]:\n", + " print 'k = %d, accuracy = %f' % (k, accuracy)" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nhaFef/318Na3wqWXwiteMfzzIU9lfvGLeYr0rLNghx1GX3+tHnooT60efzw897lw8ME5zHV0jP49\n1TiebSqpGeo929TwpkKNpFXIlCnw3vfCRz9a2+u//e18ssGFFy5bqzbU82+/HT7wAXjxi/N2Wy94\nQWPqr9XSpXk07rjj4JJLYO+94cAD8/SqimN4k9QMtgrRuPCvf8FFF+Vpx1odeig8/viyPVCH8vOf\nw3bb5fB23nm1B7dGmjABurvzlO0ll+Qwt+22+SSHxYsNEJKkZRx5U6FqHXk74YQc3s46a2Svv/HG\nfLLBn/4EG2+8/POfeCKfTfrzn+f2I9tv3/j66/HYY/kEjWOPzbUedFAedVxrreYcT8/myJukZnDk\nTePCGWfAhz888te95jX5TM+9917+7NPbbsttO26/PZ9NOprg1myrr573bL3qqty77qKL8jTqwQfD\nDTcUXZ0kqSiGN7W9226Dm2+Grq7Rvf7Tn85bWx1/fL49b14Oax/+MMyfD+us07hamyEin3zxk5/A\nNdfkejs7YdKkPM379NNFVyhJaiWnTVWoWqZNv/51uPfeZeFrJK/vd9NN+ezRf/87n316zjm5HUi9\nippW+89/8lmxxx2XfzYHHph72xWxXm8sc9pUUjM4baox78c/Ht2U6UCvfjV885v5+uWXNya4FWmo\nbbj23ddtuCRprHPkTYWqZeRt443hlluW34i+1tfX+/xWv1897rsv795wwgnwspfltXHveQ+sumrR\nlZVXO/1+JY0djrxpzPvQhwYPblrei16Umwz3b8M1Z86ybbjuvbfo6iRJjWJ4U0NUKhW6uqbR1TWN\nysAtEIZ5fv/1wR6fNOl9AGy44e8bW+wY178N129+s2wbrs03dxsuSRornDZV3SqVClOnTqev7ygg\n70U6f/5curu7a3j+dDo61lvu+ZVKhXe/eyaPP346sOWzHh/IadPaPPggzJ2bT/pYY43cM85tuIZX\nlt+vpHJxeywMb0Xr6prG4sVTgOnVe+YyadICFi2aN6Lnn3fePM47Dw466Ar+/e/NgNWGfT/D28gs\nXQqLFuWzVP/0J9hnH/jEJ9yGayhl+/1KKgfXvGkMeBHXXXcAL31p3nh+/fV7gXOLLmpMmjABJk+G\nX/4yb8P11FPLtuH69a8NKpJUBoY31a2nZwYdHTOBucBcOjpm0tMzo4bnnwdAxKuYNOnlXHVVHhX6\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot the raw observations\n", + "# Use plt.scatter to present each accuracy's location\n", + "# errorbar will show bar(std) and line(mean)\n", + "for k in k_choices:\n", + " accuracies = k_to_accuracies[k]\n", + " plt.scatter([k] * len(accuracies), accuracies)\n", + "\n", + "# plot the trend line with error bars that correspond to standard deviation\n", + "accuracies_mean = np.array([np.mean(v) for k,v in sorted(k_to_accuracies.items())])\n", + "accuracies_std = np.array([np.std(v) for k,v in sorted(k_to_accuracies.items())])\n", + "plt.errorbar(k_choices, accuracies_mean, yerr=accuracies_std)\n", + "plt.title('Cross-validation on k')\n", + "plt.xlabel('k')\n", + "plt.ylabel('Cross-validation accuracy')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Got 135 / 500 correct => accuracy: 0.270000\n" + ] + } + ], + "source": [ + "# Based on the cross-validation results above, choose the best value for k, \n", + "# retrain the classifier using all the training data, and test it on the test\n", + "# data. You should be able to get above 28% accuracy on the test data.\n", + "best_k = 12\n", + "\n", + "classifier = KNearestNeighbor()\n", + "classifier.train(X_train, y_train)\n", + "y_test_pred = classifier.predict(X_test, k=best_k)\n", + "\n", + "# Compute and display the accuracy\n", + "num_correct = np.sum(y_test_pred == y_test)\n", + "accuracy = float(num_correct) / num_test\n", + "print 'Got %d / %d correct => accuracy: %f' % (num_correct, num_test, accuracy)" + ] + }, + { + "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.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/main.py b/main.py new file mode 100644 index 0000000..dbcf309 --- /dev/null +++ b/main.py @@ -0,0 +1,249 @@ +from model.NNWalabot3 import * +from tool.log2 import * +import time +import matplotlib.pyplot as plt +import sys +import os +import cv2 + +def quick_scan(X,y,X1,y1,e,lr_range=[-3.0,-3.7],reg_range=[1,0],epoch=1,sample=10): + results = {} + learning_rates = lr_range + regularization_strengths = reg_range + #best_val = -1 + best_val = np.inf + best_lr, best_reg = None, None + + tic = time.time() + for i in range(sample): + print '['+str(i)+']' + # random choose lr & reg within the range + lr = 10**np.random.uniform(learning_rates[0],learning_rates[1]) + reg = 10**np.random.uniform(regularization_strengths[0],regularization_strengths[1]) + print 'lr:\t'+str(lr) + print 'reg:\t'+str(reg) + + net = modelX() + net.loss(X,y,X1,y1,e,mode='train',lr=lr,reg=reg,batch=10,epoch=epoch) + #results[(lr,reg)]=(net.X_acc_history[-1],net.X1_acc_history[-1]) + #results[(lr,reg)]=(net.X_loss_history[-1],net.X1_loss_history[-1]) + cmd = 'echo '+str(lr)+' '+str(reg)+' '+str(net.X_acc_history[-1])+' '+str(net.X1_acc_history[-1])+'>>qs.log' + os.system(cmd) + if best_val > net.X1_acc_history[-1]: + best_val = net.X1_acc_history[-1] + best_lr = lr + best_reg = reg + # shrink mem + #del net + + toc = time.time() + print 'Total Training: computed in %fs' % (toc - tic) + print 'Best Validation Record %.5f' % (best_val) + print 'Best Validation learning rate %.10f' % (best_lr) + print 'Best Validation regularization %.10f' % (best_reg) + + +def quick_scan_plot(): + ########################################## + # Visualize the cross-validation results # + ########################################## + import math + + data=None + results={} + data = np.loadtxt('qs.log') + for i in range(data.shape[0]): + results[(data[i,0],data[i,1])] = (data[i,2],data[i,3]) + + x_scatter = [math.log10(x[0]) for x in results] + y_scatter = [math.log10(x[1]) for x in results] + + print x_scatter,y_scatter + + # plot training accuracy + marker_size = 100 + colors = [results[x][0] for x in results] + plt.subplot(2, 1, 1) + plt.scatter(x_scatter, y_scatter, marker_size, c=colors) + plt.colorbar() + plt.xlabel('log learning rate') + plt.ylabel('log regularization strength') + plt.title('Training Accuracy') + + # plot validation accuracy + colors = [results[x][1] for x in results] # default size of markers is 20 + plt.subplot(2, 1, 2) + plt.scatter(x_scatter, y_scatter, marker_size, c=colors) + plt.colorbar() + plt.xlabel('log learning rate') + plt.ylabel('log regularization strength') + plt.title('Validation Accuracy') + plt.savefig("loss.png") + plt.show() + +def marathon(X,y,X1,y1,X2,y2,e,lr=1e-4,reg=1e-4,epoch=20): + net = modelX() + #''' + opt = raw_input('Restart training??[y/n]') + if opt=='y': + net.loss(X,y,X1,y1,e,mode='train',lr=lr,reg=reg,batch=10,epoch=epoch) + elif opt=='n': + net.loss(X,y,X1,y1,e,mode='train',lr=lr,reg=reg,batch=10,epoch=epoch,opt=False) + #''' + #_net = modelX() + #_net.loss(X2,y2,X1,y1,mode='test') + + #################################################### + # Visualize training loss and train / val accuracy # + #################################################### + plt.subplot(2, 1, 1) + plt.title('Training loss') + plt.plot(net.X_loss_history, 'o') + plt.xlabel('Iteration') + + plt.subplot(2, 1, 2) + plt.title('Accuracy') + plt.plot(net.X_acc_history, '-o', label='train') + plt.plot(net.X1_acc_history, '-o', label='val') + plt.plot([0.5] * len(net.X1_acc_history), 'k--') + plt.xlabel('Epoch') + plt.legend(loc='lower right') + plt.gcf().set_size_inches(15, 12) + plt.savefig("graph.png") + plt.show() + pass + +def review(X,y,X1,y1,e): + net = modelX() + _,_ = net.loss(X,y,X1,y1,e,mode='test') + +def duel(X,y,X1,y1,e): + net = modelX() + org_output,org_output1 = net.loss(X,y,X1,y1,e,mode='test') + #for i in range(1024): + # if y[0,i]!=1 and y[0,i]!=0: + # print y[0,i] + #raw_input('pause') + for _ in range(org_output.shape[0]): + idx = int(np.random.rand()* org_output.shape[0]) + #print idx + tmp = np.ceil(org_output[idx] * (org_output[idx]>0.5)) + #tmp = org_output[idx] +# for i in range(1024): +# if tmp[i]!=1 and tmp[i]!=0: +# print i, tmp[i] +# raw_input('pause') + pred_pic = tmp.reshape(32,32)*255 + corr_pic = y[idx].reshape(32,32)*255 + + plt.clf() + plt.subplot(121) + plt.imshow(pred_pic,cmap='Greys_r') + plt.subplot(122) + plt.imshow(corr_pic,cmap='Greys_r') + + plt.savefig('data/compare_img/{0}.png'.format(idx)) + +def mask_input(X,y,X1,y1,e): + idx = 800#int(sys.argv[1]) + #print idx,type(idx) + span = 3 + #mask_num = 1024 + #interval = X.shape[2]/mask_num + + #mask = np.zeros((1,1,mask_num,40)) + + net = modelX() + inp = X[idx:idx+3,:,:,:].reshape((span/1,1,2048,40)) + oup = y[idx:idx+3].reshape((span/1,-1)) + #inp = X[idx::-40,:,:,:].reshape((span/1,1,2048,40)) + #oup = y[idx::-40].reshape((span/1,-1)) + #print input[:,:,mask_num*i:mask_num*(i+1),:].shape + #raw_input() + # input[:,:,mask_num*i:mask_num*(i+1),:] = mask + #print input.shape + #print output.shape + #raw_input() + pred, _ = net.loss(X,y,inp,oup,e,mode='test') + #''' + tmp = np.ceil(pred * (pred>0.5)) + pred_pic = tmp.reshape(3,32,32)*255 + corr_pic = oup.reshape(3,32,32)*255 + + plt.clf() + plt.subplot(231) + plt.imshow(pred_pic[0],cmap='Greys_r') + plt.subplot(232) + plt.imshow(pred_pic[1],cmap='Greys_r') + plt.subplot(233) + plt.imshow(pred_pic[2],cmap='Greys_r') + plt.subplot(234) + plt.imshow(corr_pic[0],cmap='Greys_r') + plt.subplot(235) + plt.imshow(corr_pic[1],cmap='Greys_r') + plt.subplot(236) + plt.imshow(corr_pic[2],cmap='Greys_r') + + plt.savefig('data/mask_input/{0}.png'.format(0)) + #''' +if __name__=='__main__': + os.system('cp tmp tmp.bak && echo > tmp') + e = mp.Event() + e2 = mp.Event() + prev_cpu = mp.Value('d',0.0) + prev_mem = mp.Value('d',0.0) + prev_swap = mp.Value('d',0.0) + ctr = mp.Value('d',0.0) + state = mp.Value('d',0.0) + + p1 = mp.Process(target=log, args=(e,e2,prev_cpu,prev_mem,prev_swap,ctr,state)) + p1.start() + start = time.time() + trainData,trainLabel,valData,valLabel,testData,testLabel = load() + #print testData.shape, testLabel.shape + print time.time()-start + + # speedup test + #testData = testData[0:100,:] + #testLabel = testLabel[0:100,:] + + #trainData = trainData.reshape(-1,32,32,3) + #valData = valData.reshape(-1,32,32,3) + #testData = testData.reshape(-1,32,32,3) + + trainData = trainData.astype(np.float) + valData = valData.astype(np.float) + testData = testData.astype(np.float) + + ''' + trainData *= 6. + valData *= 6. + testData *= 6. + ''' + + #trainData = trainData-np.mean(trainData,axis=0) + #valData = valData-np.mean(trainData,axis=0) + #testData = testData-np.mean(trainData,axis=0) + + print 'max',trainData.max(),'min',trainData.min(), 'mean',trainData.mean() + print 'max',trainLabel.max(),'min',trainLabel.min(), 'mean',trainLabel.mean() + ''' + ctr0,ctr1,ctrx= 0,0,0 + for i in trainLabel[640]: + if i==0: ctr0+=1 + elif i==1: ctr1+=1 + else: ctrx+=1 + print ctr0,ctr1,ctrx,ctr0+ctr1+ctrx + ''' + start = time.time() +# quick_scan_plot() +# quick_scan(trainData[0:960],trainLabel[0:960], +# valData,valLabel,e,lr_range=[-2,-3],reg_range=[-2,-3],epoch=10,sample=1) +# marathon(trainData,trainLabel,valData,valLabel,testData,testLabel,e, +# lr=0.00138100536852,reg=0.00140667975999, epoch=10) +# review(testData,testLabel,valData,valLabel,e) +# duel(testData,testLabel,valData,valLabel,e) +# mask_input(testData,testLabel,valData,valLabel,e) + e2.set() + print time.time()-start + pass diff --git a/mo.sh b/mo.sh new file mode 100644 index 0000000..deebebd --- /dev/null +++ b/mo.sh @@ -0,0 +1,8 @@ +#!bin/sh +while true +do + cat tmp | grep start |wc -l && cat tmp | grep cpu|wc -l + tail -n4 tmp| head -n3 + sleep 1 + clear +done diff --git a/model/NNWalabot1.py b/model/NNWalabot1.py new file mode 100644 index 0000000..2517655 --- /dev/null +++ b/model/NNWalabot1.py @@ -0,0 +1,250 @@ +import numpy as np +import tensorflow as tf +from utils.layers import * +from utils.initParams import * +from utils.monitor2 import * +# All DNN w/o softmax +# DNN-262144 DNN-262144 DNN-262144 DNN-2 +# + +#################### +# Random Minibatch # +#################### +def random_minibatch(data,label,size): + """ + Random choose minibatch from data and corresponding label + * size : minibatch size + """ + mask = [np.arange(size,data.shape[0])] + new_data = np.zeros_like(data) + new_data = np.delete(new_data,mask,axis=0) + new_label = np.zeros_like(label) + new_label = np.delete(new_label,mask,axis=0) + + for i in range(size): + idx = np.floor(np.random.uniform(low=0,high=data.shape[0])).astype(np.int64) + new_data[i] += data[idx] + new_label[i] += label[idx] + return new_data, new_label + +class modelX(): + def __init__(self): + ############ + # Variable # + ############ + # x: image input + # y_hat: image label + # f: cnn filter weight + # fb: cnn filter bias + # w: fc weight + # b: fc bias + # conv_para: cnn stride padding + # pool_para: maxpool stride padding kernel + # regularizer: L2 loss + self.x = tf.placeholder(tf.float32,[None,327680]) + self.y_hat = tf.placeholder(tf.float32,[None, 2]) + #self.f1 = weight([3,3,3,3]) + #self.fb1 = bias([3]) + #self.bng1 = gamma([3]) + #self.bnb1 = beta([3]) + #self.half_f1 = weight([4,4,3,3]) + #self.half_fb1 = bias([3]) + #self.half_bng1 = gamma([3]) + #self.half_bnb1 = beta([3]) + #self.f2 = weight([3,3,3,3]) + #self.fb2 = bias([3]) + #self.bng2 = gamma([3]) + #self.bnb2 = beta([3]) + #self.half_f2 = weight([4,4,3,3]) + #self.half_fb2 = bias([3]) + #self.half_bng2 = gamma([3]) + #self.half_bnb2 = beta([3]) + #self.f3 = weight([3,3,3,3]) + #self.fb3 = bias([3]) + #self.bng3 = gamma([3]) + #self.bnb3 = beta([3]) + #self.f4 = weight([3,3,3,3]) + #self.fb4 = bias([3]) + #self.bng4 = gamma([3]) + #self.bnb4 = beta([3]) + self.w1 = weight([327680,500]) + self.b1 = bias([500]) + self.w2 = weight([500,100]) + self.b2 = bias([100]) + self.w3 = weight([100,50]) + self.b3 = bias([50]) + self.w4 = weight([50,2]) + self.b4 = bias([2]) + #self.conv_para = {'stride':1, + # 'pad':'SAME'} + #self.conv_para2 = {'stride':2, + # 'pad':'SAME'} + #self.pool_para = {'stride':2, + # 'pad':'SAME#', + # 'kernel':2} + + self.regularizers = tf.add_n([tf.nn.l2_loss(v) for v in tf.trainable_variables()]) + + ######### + # Layer # + ######### + #self._cnn1 = cnn_relu_bn(self.x,self.f1,self.fb1,self.conv_para,self.bng1,self.bnb1) + #self.cnn1 = cnn_relu_bn(self._cnn1,self.half_f1,self.half_fb1,self.conv_para2,self.half_bng1,self.half_bnb1) + #print self.cnn1.get_shape() + #self._cnn2 = cnn_relu_bn(self.cnn1,self.f2,self.fb2,self.conv_para,self.bng2,self.bnb2) + #self.cnn2 = cnn_relu_bn(self._cnn2,self.half_f2,self.half_fb2,self.conv_para2,self.half_bng2,self.half_bnb2) + #print self.cnn2.get_shape() + #self.cnn3 = cnn_relu_bn(self.cnn2,self.f3,self.fb3,self.conv_para,self.bng3,self.bnb3) + #self.cnn4 = cnn_relu_bn(self.cnn3,self.f4,self.fb4,self.conv_para,self.bng4,self.bnb4) + # flatten last cnn layer's output + #self.cnn4_output = tf.reshape(self.cnn4,[-1,64*3]) + self.dnn1 = dnn_relu(self.x,self.w1,self.b1) + self.dnn2 = dnn_relu(self.dnn1,self.w2,self.b2) + self.dnn3 = dnn_relu(self.dnn2,self.w3,self.b3) + self.dnn4 = dnn(self.dnn3, self.w4, self.b4) + #self.softmax = softmax(self.dnn2) + + def loss(self,X,y,X1,y1,e,mode='test',lr=2e-4,reg=1e-5,batch=5,epoch=21,opt=True,verbose=True): + # monitor record + FILE='tmp' + + # history record + self.X_loss_history = [] + self.X1_loss_history = [] + self.X_acc_history = [] + self.X1_acc_history = [] + + # loss function + #cross_entropy = -tf.reduce_sum(self.y_hat*tf.log(self.softmax)) + cross_entropy = tf.reduce_sum(tf.square(tf.sub(self.dnn4,self.y_hat))) + cross_entropy += reg*self.regularizers + + # optimizer + #f = tf.train.GradientDescentOptimizer(lr).minimize(cross_entropy) + #f = tf.train.MomentumOptimizer(lr,0.9).minimize(cross_entropy) + f = tf.train.RMSPropOptimizer(lr,0.9,0.9,1e-5).minimize(cross_entropy) + + # initialize session & saver + if verbose: + cmd = 'echo ini var and saver start>> tmp' + os.system(cmd) + e.set() + init = tf.initialize_all_variables() + saver = tf.train.Saver() + #sess = tf.InteractiveSession() + sess = tf.Session() + sess.run(init) + if verbose: + cmd = 'echo ini var and saver end>> tmp' + os.system(cmd) + e.clear() + + # outcome + #pred = tf.equal(tf.argmax(self.softmax,1),tf.argmax(self.y_hat,1)) + #acc = tf.reduce_mean(tf.cast(pred,tf.float32)) + + ######### + # Train # + ######### + if mode=='train': + # whether restart new training session + if opt: + good_record = 0.0 + low_loss = np.inf + else: + if verbose: + cmd = 'echo load para start>> tmp' + os.system(cmd) + e.set() + saver.restore(sess, "model.ckpt") + low_loss = sess.run(cross_entropy,feed_dict={self.x:X1,self.y_hat:y1}) + if verbose: + cmd = 'echo load para end>> tmp' + os.system(cmd) + e.clear() + + num = X.shape[0] + for i in range(epoch): + for j in range(num/batch): + if verbose: + cmd = 'echo random minibatch start>> tmp' + os.system(cmd) + e.set() + batch_xs, batch_ys = random_minibatch(X,y,batch) + if verbose: + cmd = 'echo random minibatch end>> tmp' + os.system(cmd) + e.clear() + + if verbose: + cmd = 'echo train start>> tmp' + os.system(cmd) + e.set() + sess.run(f,feed_dict={self.x:batch_xs,self.y_hat:batch_ys}) + if verbose: + cmd = 'echo train end>> tmp' + os.system(cmd) + e.clear() + # every 10 iter check status + if j%100==0: + if verbose: + cmd = 'echo check all train data start>> tmp' + os.system(cmd) + e.set() + loss = sess.run(cross_entropy,feed_dict={self.x:X,self.y_hat:y}) + if verbose: + cmd = 'echo check all train data end>> tmp' + os.system(cmd) + e.clear() + if verbose: + cmd = 'echo check all val data start>> tmp' + os.system(cmd) + e.set() + loss1 = sess.run(cross_entropy,feed_dict={self.x:X1,self.y_hat:y1}) + if verbose: + cmd = 'echo check all val data end>> tmp' + os.system(cmd) + e.clear() + self.X_loss_history += [loss] + self.X1_loss_history += [loss1] + #self.X_acc_history += [accuracy] + #self.X1_acc_history += [accuracy1] + # save best record + #if accuracy1 >= good_record:# and loss1 < low_loss: + if loss1 < low_loss: + #good_record = accuracy1 + low_loss = loss1 + if verbose: + cmd = 'echo save para start>> tmp' + os.system(cmd) + e.set() + save_path = saver.save(sess, "model.ckpt",write_meta_graph=False) + if verbose: + cmd = 'echo save para end>> tmp' + os.system(cmd) + e.clear() + print("!!Model saved in file: %s" % save_path) + print("epoch %2d/%2d,\titer %2d/%2d," %(i,epoch,j,num/batch)) + print("Train Loss %.10f" %(loss)) + print("Valid Loss %.10f" %(loss1)) + if loss1 == np.nan: + print 'nan issue' + break + ######## + # Test # + ######## + elif mode=='test': + saver.restore(sess, "model.ckpt") + print("Model restored.") + loss = sess.run(cross_entropy,feed_dict={self.x:X1,self.y_hat:y1}) + print("Vali Loss %.10f"%(loss)) + loss = sess.run(cross_entropy,acc,feed_dict={self.x:X,self.y_hat:y}) + print("Test Loss %.10f"%(loss)) + pass + + #sess.close() + #del sess + #del saver + +if __name__=='__main__': + pass diff --git a/model/NNWalabot2.py b/model/NNWalabot2.py new file mode 100644 index 0000000..c9de540 --- /dev/null +++ b/model/NNWalabot2.py @@ -0,0 +1,295 @@ +import numpy as np +import tensorflow as tf +import multiprocessing as mp +from utils.layers import * +from utils.initParams import * +from utils.monitor2 import * +# All DNN w/o softmax +# DNN-262144 DNN-262144 DNN-262144 DNN-2 +# + +#################### +# Random Minibatch # +#################### +def random_minibatch(data,label,size): + """ + Random choose minibatch from data and corresponding label + * size : minibatch size + """ + mask = [np.arange(size,data.shape[0])] + new_data = np.zeros_like(data) + new_data = np.delete(new_data,mask,axis=0) + new_label = np.zeros_like(label) + new_label = np.delete(new_label,mask,axis=0) + + for i in range(size): + idx = np.floor(np.random.uniform(low=0,high=data.shape[0])).astype(np.int64) + new_data[i] += data[idx] + new_label[i] += label[idx] + return new_data, new_label + +class modelX(): + def __init__(self): + ############ + # Variable # + ############ + # x: image input + # y_hat: image label + # f: cnn filter weight + # fb: cnn filter bias + # w: fc weight + # b: fc bias + # conv_para: cnn stride padding + # pool_para: maxpool stride padding kernel + # regularizer: L2 loss + + # Input & label + self.x = tf.placeholder(tf.float32,[None,1,8192,40]) + self.y_hat = tf.placeholder(tf.float32,[None, 1024]) + + # CNN-1 + self.f1 = weight([1,3,40,40]) + self.fb1 = bias([40]) + self.bng1 = gamma([40]) + self.bnb1 = beta([40]) + + # CNN-2 (pooling) + self.half_f1 = weight([1,4,40,40]) + self.half_fb1 = bias([40]) + self.half_bng1 = gamma([40]) + self.half_bnb1 = beta([40]) + + # CNN-3 + self.f2 = weight([1,3,40,40]) + self.fb2 = bias([40]) + self.bng2 = gamma([40]) + self.bnb2 = beta([40]) + + # CNN-4 (pooling) + self.half_f2 = weight([1,4,40,40]) + self.half_fb2 = bias([40]) + self.half_bng2 = gamma([40]) + self.half_bnb2 = beta([40]) + + # CNN-5 + self.f3 = weight([1,3,40,40]) + self.fb3 = bias([40]) + self.bng3 = gamma([40]) + self.bnb3 = beta([40]) + + # CNN-6 (pooling) + self.half_f3 = weight([1,4,40,40]) + self.half_fb3 = bias([40]) + self.half_bng3 = gamma([40]) + self.half_bnb3 = beta([40]) + + # CNN-7 + self.f4 = weight([1,3,40,40]) + self.fb4 = bias([40]) + self.bng4 = gamma([40]) + self.bnb4 = beta([40]) + + # FC-1 + self.w1 = weight([40960,4096]) + self.b1 = bias([4096]) + + # FC-2 + self.w2 = weight([4096,4096]) + self.b2 = bias([4096]) + + # FC-3 + self.w3 = weight([4096,1024]) + self.b3 = bias([1024]) + self.conv_para = {'stride':1, + 'pad':'SAME'} + self.conv_para2 = {'stride':2, + 'pad':'SAME'} + #self.pool_para = {'stride':2, + # 'pad':'SAME#', + # 'kernel':2} + + self.regularizers = tf.add_n([tf.nn.l2_loss(v) for v in tf.trainable_variables()]) + + ######### + # Layer # + ######### + self._cnn1 = cnn1d_relu_bn(self.x,self.f1,self.fb1,self.conv_para,self.bng1,self.bnb1) + self.cnn1 = cnn1d_relu_bn(self._cnn1,self.half_f1,self.half_fb1,self.conv_para2,self.half_bng1,self.half_bnb1) + #print self.cnn1.get_shape() + self._cnn2 = cnn1d_relu_bn(self.cnn1,self.f2,self.fb2,self.conv_para,self.bng2,self.bnb2) + self.cnn2 = cnn1d_relu_bn(self._cnn2,self.half_f2,self.half_fb2,self.conv_para2,self.half_bng2,self.half_bnb2) + #print self.cnn2.get_shape() + self._cnn3 = cnn1d_relu_bn(self.cnn2,self.f3,self.fb3,self.conv_para,self.bng3,self.bnb3) + self.cnn3 = cnn1d_relu_bn(self._cnn3,self.half_f3,self.half_fb3,self.conv_para2,self.half_bng3,self.half_bnb3) + self.cnn4 = cnn1d_relu_bn(self.cnn3,self.f4,self.fb4,self.conv_para,self.bng4,self.bnb4) + # flatten last cnn layer's output + self.cnn4_output = tf.reshape(self.cnn4,[-1,1024*40]) + self.dnn1 = dnn_relu(self.cnn4_output,self.w1,self.b1) + self.dnn2 = dnn_relu(self.dnn1,self.w2,self.b2) + # last layer without relu!!!! + self.dnn3 = dnn_sigmoid(self.dnn2,self.w3,self.b3) + #self.softmax = softmax(self.dnn2) + + def loss(self,X,y,X1,y1,e,mode='test',lr=2e-4,reg=1e-5,batch=5,epoch=21,opt=True,verbose=True): + # monitor record + FILE='tmp' + + # history record + self.X_loss_history = [] + self.X1_loss_history = [] + self.X_acc_history = [] + self.X1_acc_history = [] + + # loss function + #cross_entropy = -tf.reduce_sum(self.y_hat*tf.log(self.softmax)) + cross_entropy = tf.reduce_sum(tf.square(tf.sub(self.dnn3,self.y_hat))) + cross_entropy += reg*self.regularizers + + # optimizer + #f = tf.train.GradientDescentOptimizer(lr).minimize(cross_entropy) + #f = tf.train.MomentumOptimizer(lr,0.9).minimize(cross_entropy) + f = tf.train.RMSPropOptimizer(lr,0.9,0.9,1e-5).minimize(cross_entropy) + + # initialize session & saver + if verbose: + cmd = 'echo ini var and saver start>> tmp' + os.system(cmd) + e.set() + init = tf.initialize_all_variables() + saver = tf.train.Saver() + last_saver = tf.train.Saver() + #sess = tf.InteractiveSession() + sess = tf.Session() + sess.run(init) + if verbose: + cmd = 'echo ini var and saver end>> tmp' + os.system(cmd) + e.clear() + + # outcome + #pred = tf.equal(tf.argmax(self.softmax,1),tf.argmax(self.y_hat,1)) + pred = tf.equal( tf.cast(tf.less(self.dnn3,0.5),tf.float32), tf.cast(tf.less(self.y_hat,0.5),tf.float32) ) + acc = tf.reduce_mean(tf.cast(pred,tf.float32)) + + ######### + # Train # + ######### + if mode=='train': + # whether restart new training session + if opt: + good_record = 0.0 + low_loss = np.inf + else: + if verbose: + cmd = 'echo load para start>> tmp' + os.system(cmd) + e.set() + saver.restore(sess, "model.ckpt") + low_loss = sess.run(cross_entropy,feed_dict={self.x:X1,self.y_hat:y1}) + if verbose: + cmd = 'echo load para end>> tmp' + os.system(cmd) + e.clear() + + num = X.shape[0] + for i in range(epoch): + for j in range(num/batch): + if verbose: + cmd = 'echo random minibatch start>> tmp' + os.system(cmd) + e.set() + batch_xs, batch_ys = random_minibatch(X,y,batch) + if verbose: + cmd = 'echo random minibatch end>> tmp' + os.system(cmd) + e.clear() + + if verbose: + cmd = 'echo train start>> tmp' + os.system(cmd) + e.set() + sess.run(f,feed_dict={self.x:batch_xs,self.y_hat:batch_ys}) + if verbose: + cmd = 'echo train end>> tmp' + os.system(cmd) + e.clear() + # every 10 iter check status + if j%100==0: + if verbose: + cmd = 'echo check all train data start>> tmp' + os.system(cmd) + e.set() + loss,accuracy = sess.run([cross_entropy,acc],feed_dict={self.x:X,self.y_hat:y}) + if verbose: + cmd = 'echo check all train data end>> tmp' + os.system(cmd) + e.clear() + if verbose: + cmd = 'echo check all val data start>> tmp' + os.system(cmd) + e.set() + loss1,accuracy1 = sess.run([cross_entropy,acc],feed_dict={self.x:X1,self.y_hat:y1}) + if verbose: + cmd = 'echo check all val data end>> tmp' + os.system(cmd) + e.clear() + self.X_loss_history += [loss] + self.X1_loss_history += [loss1] + self.X_acc_history += [accuracy] + self.X1_acc_history += [accuracy1] + # save best record + if accuracy1 >= good_record:# and loss1 < low_loss: + #if loss1 < low_loss: + good_record = accuracy1 + low_loss = loss1 + if verbose: + cmd = 'echo save para start>> tmp' + os.system(cmd) + e.set() + save_path = saver.save(sess, "model.ckpt",write_meta_graph=False) + if verbose: + cmd = 'echo save para end>> tmp' + os.system(cmd) + e.clear() + print("!!Model saved in file: %s" % save_path) + print("epoch %2d/%2d,\titer %2d/%2d," %(i,epoch,j,num/batch)) + print("Train Loss %.10f Train Accuracy %.10f" %(loss,accuracy)) + print("Valid Loss %.10f Valid Accuracy %.10f" %(loss1,accuracy1)) + save_path = last_saver.save(sess, "last_model.ckpt",write_meta_graph=False) + ######## + # Test # + ######## + elif mode=='test': + saver.restore(sess, "last_model.ckpt") + print("Model restored.") + loss,accuracy,org_output = sess.run([cross_entropy,acc,self.dnn3],feed_dict={self.x:X1,self.y_hat:y1}) + print("Vali Loss %.10f Vali Accuracy %.10f" %(loss,accuracy)) + loss1,accuracy1,org_output1 = sess.run([cross_entropy,acc,self.dnn3],feed_dict={self.x:X,self.y_hat:y}) + print("Test Loss %.10f Test Accuracy %.10f" %(loss1,accuracy1)) + return org_output, org_output1 + pass + + #sess.close() + #del sess + #del saver + +def test(): + pass + + e = mp.Event() + + X = np.random.normal(0,1,(10,1,8192,40)) + y = np.random.normal(0,1,(10,1024)) + X1 = np.random.normal(0,1,(10,1,8192,40)) + y1 = np.random.normal(0,1,(10,1024)) + + + net = modelX() + net.loss(X,y,X1,y1,e,mode='train',lr=1e-3,reg=0,batch=10,epoch=100) + + print max(net.X1_acc_history) + print min(net.X1_loss_history) + +if __name__=='__main__': + #test() + pass diff --git a/model/NNWalabot3.py b/model/NNWalabot3.py new file mode 100644 index 0000000..d7681de --- /dev/null +++ b/model/NNWalabot3.py @@ -0,0 +1,318 @@ +import numpy as np +import tensorflow as tf +import multiprocessing as mp +from utils.layers import * +from utils.initParams import * +from utils.monitor2 import * +# All DNN w/o softmax +# CNN - CNN1/2 - CNN - CNN1/2 - CNN - CNN1/2 - CNN (7) +# DNN-10240x4096 DNN-4096x4096 DNN-4096x1024 (3) +# !! Reduce CNN to 5 or 6 layers + +#################### +# Random Minibatch # +#################### +def random_minibatch(data,label,size): + """ + Random choose minibatch from data and corresponding label + * size : minibatch size + """ + mask = [np.arange(size,data.shape[0])] + new_data = np.zeros_like(data) + new_data = np.delete(new_data,mask,axis=0) + new_label = np.zeros_like(label) + new_label = np.delete(new_label,mask,axis=0) + + for i in range(size): + idx = np.floor(np.random.uniform(low=0,high=data.shape[0])).astype(np.int64) + new_data[i] += data[idx] + new_label[i] += label[idx] + return new_data, new_label + +def _log(opt,e,cmd): + if opt: + os.system(cmd) + e.set() + else: + os.system(cmd) + e.clear() + +class modelX(): + def __init__(self): + ############ + # Variable # + ############ + # x: image input + # y_hat: image label + # f: cnn filter weight + # fb: cnn filter bias + # w: fc weight + # b: fc bias + # conv_para: cnn stride padding + # pool_para: maxpool stride padding kernel + # regularizer: L2 loss + + # Input & label + self.x = tf.placeholder(tf.float32,[None,1,2048,40]) + self.y_hat = tf.placeholder(tf.float32,[None, 1024]) + + # CNN-1 + self.f1 = weight([1,3,40,40]) + self.fb1 = bias([40]) + self.bng1 = gamma([40]) + self.bnb1 = beta([40]) + self.bnm1 = beta([40]) + self.bnv1 = beta([40]) + + # CNN-2 (pooling) + self.half_f1 = weight([1,4,40,40]) + self.half_fb1 = bias([40]) + self.half_bng1 = gamma([40]) + self.half_bnb1 = beta([40]) + self.half_bnm1 = beta([40]) + self.half_bnv1 = beta([40]) + + # CNN-3 + self.f2 = weight([1,3,40,40]) + self.fb2 = bias([40]) + self.bng2 = gamma([40]) + self.bnb2 = beta([40]) + self.bnm2 = beta([40]) + self.bnv2 = beta([40]) + + # CNN-4 (pooling) + self.half_f2 = weight([1,4,40,40]) + self.half_fb2 = bias([40]) + self.half_bng2 = gamma([40]) + self.half_bnb2 = beta([40]) + self.half_bnm2 = beta([40]) + self.half_bnv2 = beta([40]) + + # CNN-5 + self.f3 = weight([1,3,40,40]) + self.fb3 = bias([40]) + self.bng3 = gamma([40]) + self.bnb3 = beta([40]) + self.bnm3 = beta([40]) + self.bnv3 = beta([40]) + + # CNN-6 (pooling) + self.half_f3 = weight([1,4,40,40]) + self.half_fb3 = bias([40]) + self.half_bng3 = gamma([40]) + self.half_bnb3 = beta([40]) + self.half_bnm3 = beta([40]) + self.half_bnv3 = beta([40]) + + # CNN-7 + self.f4 = weight([1,3,40,40]) + self.fb4 = bias([40]) + self.bng4 = gamma([40]) + self.bnb4 = beta([40]) + self.bnm4 = beta([40]) + self.bnv4 = beta([40]) + + # FC-1 + self.w1 = weight([10240,4096]) + self.b1 = bias([4096]) + self.bng5 = gamma([4096]) + self.bnb5 = beta([4096]) + self.bnm5 = beta([4096]) + self.bnv5 = beta([4096]) + + # FC-2 + self.w2 = weight([4096,2048]) + self.b2 = bias([2048]) + self.bng6 = gamma([2048]) + self.bnb6 = beta([2048]) + self.bnm6 = beta([2048]) + self.bnv6 = beta([2048]) + + # FC-3 + self.w3 = weight([2048,1024]) + self.b3 = bias([1024]) + self.conv_para = {'stride':1, + 'pad':'SAME'} + self.conv_para2 = {'stride':2, + 'pad':'SAME'} + #self.pool_para = {'stride':2, + # 'pad':'SAME#', + # 'kernel':2} + + self.regularizers = tf.add_n([tf.nn.l2_loss(v) for v in tf.trainable_variables()]) + + ######### + # Layer # + ######### + self._cnn1 = cnn1d_relu_bn(self.x,self.f1,self.fb1,self.conv_para,self.bng1,self.bnb1,self.bnm1,self.bnv1) + self.cnn1 = cnn1d_relu_bn(self._cnn1,self.half_f1,self.half_fb1,self.conv_para2,self.half_bng1,self.half_bnb1,self.half_bnm1,self.half_bnv1) + #self.cnn1 = cnn1d_relu_bn(self.x,self.half_f1,self.half_fb1,self.conv_para2,self.half_bng1,self.half_bnb1) + #print self.cnn1.get_shape() + self._cnn2 = cnn1d_relu_bn(self.cnn1,self.f2,self.fb2,self.conv_para,self.bng2,self.bnb2,self.bnm2,self.bnv2) + self.cnn2 = cnn1d_relu_bn(self._cnn2,self.half_f2,self.half_fb2,self.conv_para2,self.half_bng2,self.half_bnb2,self.half_bnm2,self.half_bnv2) + #print self.cnn2.get_shape() + self._cnn3 = cnn1d_relu_bn(self.cnn2,self.f3,self.fb3,self.conv_para,self.bng3,self.bnb3,self.bnm3,self.bnv3) + self.cnn3 = cnn1d_relu_bn(self._cnn3,self.half_f3,self.half_fb3,self.conv_para2,self.half_bng3,self.half_bnb3,self.half_bnm3,self.half_bnv3) + self.cnn4 = cnn1d_relu_bn(self.cnn3,self.f4,self.fb4,self.conv_para,self.bng4,self.bnb4,self.bnm4,self.bnv4) + # flatten last cnn layer's output + self.cnn4_output = tf.reshape(self.cnn4,[-1,256*40]) + #self.dnn1 = dnn_relu(self.cnn4_output,self.w1,self.b1) + #self.dnn2 = dnn_relu(self.dnn1,self.w2,self.b2) + self.dnn1 = dnn_relu_bn(self.cnn4_output,self.w1,self.b1,self.bng5,self.bnb5,self.bnm5,self.bnv5) + self.dnn2 = dnn_relu_bn(self.dnn1,self.w2,self.b2,self.bng6,self.bnb6,self.bnm6,self.bnv6) + # last layer without relu!!!! + self.dnn3 = dnn_sigmoid(self.dnn2,self.w3,self.b3) + #self.softmax = softmax(self.dnn2) + + def loss(self,X,y,X1,y1,e,mode='test',lr=2e-4,reg=1e-5,batch=5,epoch=21,opt=True,verbose=True): + # history record + self.X_loss_history = [] + self.X1_loss_history = [] + self.X_acc_history = [] + self.X1_acc_history = [] + + # loss function + #cross_entropy = -tf.reduce_sum(self.y_hat*tf.log(self.softmax)) + _reg = tf.constant(reg) + cross_entropy = tf.reduce_sum(tf.square(tf.sub(self.dnn3,self.y_hat))) + cross_entropy = tf.add(cross_entropy, tf.mul(_reg,self.regularizers)) + + # optimizer + #f = tf.train.GradientDescentOptimizer(lr).minimize(cross_entropy) + #f = tf.train.MomentumOptimizer(lr,0.9).minimize(cross_entropy) + #f = tf.train.RMSPropOptimizer(lr,0.9,0.9,1e-5).minimize(cross_entropy) + f = tf.train.RMSPropOptimizer(lr).minimize(cross_entropy) + + # outcome + #pred = tf.equal(tf.argmax(self.softmax,1),tf.argmax(self.y_hat,1)) + pred = tf.equal( tf.cast(tf.less(self.dnn3,0.5),tf.float32), tf.cast(tf.less(self.y_hat,0.5),tf.float32) ) + acc = tf.reduce_mean(tf.cast(pred,tf.float32)) + + # initialize session & saver + if verbose: _log(1,e,'echo ini var and saver start>> tmp') + init = tf.initialize_all_variables() + saver = tf.train.Saver() + last_saver = tf.train.Saver() + #sess = tf.InteractiveSession() + sess = tf.Session() + sess.run(init) + if verbose:_log(0,e,'echo ini var and saver end>> tmp') + + ######### + # Train # + ######### + if mode=='train': + # whether restart new training session + if opt: + good_record = 0.0 + low_loss = np.inf + else: + if verbose:_log(1,e,'echo load para start>> tmp') + saver.restore(sess, "model.ckpt") + X1_loss = 0 + X1_acc = 0 + for X1_idx in range(X1.shape[0]): + _loss,_accuracy = sess.run([cross_entropy,acc], + feed_dict={self.x:X1[X1_idx:X1_idx+1], + self.y_hat:y1[X1_idx:X1_idx+1]}) + X1_loss += _loss + X1_acc += _accuracy + low_loss = X1_loss + good_record = X1_acc/X1.shape[0] + if verbose:_log(0,e,'echo load para end>> tmp') + + num = X.shape[0] + for i in range(epoch): + for j in range(num/batch): + if verbose:_log(1,e,'echo random minibatch start>> tmp') + batch_xs, batch_ys = random_minibatch(X,y,batch) + if verbose:_log(0,e,'echo random minibatch end>> tmp') + + if verbose:_log(1,e,'echo train start>> tmp') + sess.run(f,feed_dict={self.x:batch_xs,self.y_hat:batch_ys}) + if verbose:_log(0,e,'echo train end>> tmp') + + # every 10 iter check status (in order to eliminate bn => feed it one by one) + if j%100==0: + if verbose:_log(1,e,'echo check all train data start>> tmp') + X_loss = 0 + X_acc = 0 + for X_idx in range(X.shape[0]): + _loss,_accuracy = sess.run([cross_entropy,acc], + feed_dict={self.x:X[X_idx:X_idx+1], + self.y_hat:y[X_idx:X_idx+1]}) + X_loss += _loss + X_acc += _accuracy + if verbose:_log(0,e,'echo check all train data end>> tmp') + + X1_loss = 0 + X1_acc = 0 + if verbose:_log(1,e,'echo check all val data start>> tmp') + for X1_idx in range(X1.shape[0]): + _loss1,_accuracy1 = sess.run([cross_entropy,acc], + feed_dict={self.x:X1[X1_idx:X1_idx+1], + self.y_hat:y1[X1_idx:X1_idx+1]}) + X1_loss += _loss1 + X1_acc += _accuracy1 + if verbose:_log(0,e,'echo check all val data end>> tmp') + + loss = X_loss + loss1 = X1_loss + accuracy = X_acc/X.shape[0] + accuracy1 = X1_acc/X1.shape[0] + + self.X_loss_history += [loss] + self.X1_loss_history += [loss1] + self.X_acc_history += [accuracy] + self.X1_acc_history += [accuracy1] + # save best record + if accuracy1 >= good_record:# and loss1 < low_loss: + good_record = accuracy1 + low_loss = loss1 + if verbose:_log(1,e,'echo save para start>> tmp') + save_path = saver.save(sess, "model.ckpt",write_meta_graph=False) + if verbose:_log(0,e,'echo save para end>> tmp') + print("######## Model saved in file: %s ########" % save_path) + print("epoch %2d/%2d,\titer %2d/%2d," %(i,epoch,j,num/batch)) + print("Train Loss %.10f Train Accuracy %.10f" %(loss,accuracy)) + print("Valid Loss %.10f Valid Accuracy %.10f" %(loss1,accuracy1)) + + # Force to save the last parameters + save_path = last_saver.save(sess, "last_model.ckpt",write_meta_graph=False) + + ######## + # Test # + ######## + elif mode=='test': + saver.restore(sess, "last_model.ckpt") + print("Model restored.") + loss,accuracy,org_output = sess.run([cross_entropy,acc,self.dnn3],feed_dict={self.x:X1,self.y_hat:y1}) + print("Vali Loss %.10f Vali Accuracy %.10f" %(loss,accuracy)) + loss1,accuracy1,org_output1 = sess.run([cross_entropy,acc,self.dnn3],feed_dict={self.x:X,self.y_hat:y}) + print("Test Loss %.10f Test Accuracy %.10f" %(loss1,accuracy1)) + return org_output, org_output1 + + #sess.close() + #del sess + #del saver + +def test(): + pass + + e = mp.Event() + + X = np.random.normal(0,1,(10,1,2048,40)) + y = np.random.randint(2,size=(10,1024)).astype(np.int32) + X1 = np.random.normal(0,1,(10,1,2048,40)) + y1 = np.random.randint(2,size=(10,1024)).astype(np.int32) + + + net = modelX() + net.loss(X,y,X1,y1,e,mode='train',lr=1e-6,reg=1e-1,batch=10,epoch=100) + + print max(net.X1_acc_history) + print min(net.X1_loss_history) + +if __name__=='__main__': + #test() + pass diff --git a/model/NNWalabot4.py b/model/NNWalabot4.py new file mode 100644 index 0000000..eb0d46d --- /dev/null +++ b/model/NNWalabot4.py @@ -0,0 +1,318 @@ +import numpy as np +import tensorflow as tf +import multiprocessing as mp +from utils.layers import * +from utils.initParams import * +from utils.monitor2 import * +# All DNN w/o softmax +# CNN - CNN1/2 - CNN - CNN1/2 - CNN - CNN1/2 - CNN (7) +# DNN-10240x4096 DNN-4096x4096 DNN-4096x1024 (3) +# !! Reduce CNN to 5 or 6 layers + +#################### +# Random Minibatch # +#################### +def random_minibatch(data,label,size): + """ + Random choose minibatch from data and corresponding label + * size : minibatch size + """ + mask = [np.arange(size,data.shape[0])] + new_data = np.zeros_like(data) + new_data = np.delete(new_data,mask,axis=0) + new_label = np.zeros_like(label) + new_label = np.delete(new_label,mask,axis=0) + + for i in range(size): + idx = np.floor(np.random.uniform(low=0,high=data.shape[0])).astype(np.int64) + new_data[i] += data[idx] + new_label[i] += label[idx] + return new_data, new_label + +def _log(opt,e,cmd): + if opt: + os.system(cmd) + e.set() + else: + os.system(cmd) + e.clear() + +class modelX(): + def __init__(self): + ############ + # Variable # + ############ + # x: image input + # y_hat: image label + # f: cnn filter weight + # fb: cnn filter bias + # w: fc weight + # b: fc bias + # conv_para: cnn stride padding + # pool_para: maxpool stride padding kernel + # regularizer: L2 loss + + # Input & label + self.x = tf.placeholder(tf.float32,[None,1,2048,40]) + self.y_hat = tf.placeholder(tf.float32,[None, 1025]) + + # CNN-1 + self.f1 = weight([1,3,40,40]) + self.fb1 = bias([40]) + self.bng1 = gamma([40]) + self.bnb1 = beta([40]) + self.bnm1 = beta([40]) + self.bnv1 = beta([40]) + + # CNN-2 (pooling) + self.half_f1 = weight([1,4,40,40]) + self.half_fb1 = bias([40]) + self.half_bng1 = gamma([40]) + self.half_bnb1 = beta([40]) + self.half_bnm1 = beta([40]) + self.half_bnv1 = beta([40]) + + # CNN-3 + self.f2 = weight([1,3,40,40]) + self.fb2 = bias([40]) + self.bng2 = gamma([40]) + self.bnb2 = beta([40]) + self.bnm2 = beta([40]) + self.bnv2 = beta([40]) + + # CNN-4 (pooling) + self.half_f2 = weight([1,4,40,40]) + self.half_fb2 = bias([40]) + self.half_bng2 = gamma([40]) + self.half_bnb2 = beta([40]) + self.half_bnm2 = beta([40]) + self.half_bnv2 = beta([40]) + + # CNN-5 + self.f3 = weight([1,3,40,40]) + self.fb3 = bias([40]) + self.bng3 = gamma([40]) + self.bnb3 = beta([40]) + self.bnm3 = beta([40]) + self.bnv3 = beta([40]) + + # CNN-6 (pooling) + self.half_f3 = weight([1,4,40,40]) + self.half_fb3 = bias([40]) + self.half_bng3 = gamma([40]) + self.half_bnb3 = beta([40]) + self.half_bnm3 = beta([40]) + self.half_bnv3 = beta([40]) + + # CNN-7 + self.f4 = weight([1,3,40,40]) + self.fb4 = bias([40]) + self.bng4 = gamma([40]) + self.bnb4 = beta([40]) + self.bnm4 = beta([40]) + self.bnv4 = beta([40]) + + # FC-1 + self.w1 = weight([10240,4096]) + self.b1 = bias([4096]) + self.bng5 = gamma([4096]) + self.bnb5 = beta([4096]) + self.bnm5 = beta([4096]) + self.bnv5 = beta([4096]) + + # FC-2 + self.w2 = weight([4096,2048]) + self.b2 = bias([2048]) + self.bng6 = gamma([2048]) + self.bnb6 = beta([2048]) + self.bnm6 = beta([2048]) + self.bnv6 = beta([2048]) + + # FC-3 + self.w3 = weight([2048,1024]) + self.b3 = bias([1024]) + self.conv_para = {'stride':1, + 'pad':'SAME'} + self.conv_para2 = {'stride':2, + 'pad':'SAME'} + #self.pool_para = {'stride':2, + # 'pad':'SAME#', + # 'kernel':2} + + self.regularizers = tf.add_n([tf.nn.l2_loss(v) for v in tf.trainable_variables()]) + + ######### + # Layer # + ######### + self._cnn1 = cnn1d_relu_bn(self.x,self.f1,self.fb1,self.conv_para,self.bng1,self.bnb1,self.bnm1,self.bnv1) + self.cnn1 = cnn1d_relu_bn(self._cnn1,self.half_f1,self.half_fb1,self.conv_para2,self.half_bng1,self.half_bnb1,self.half_bnm1,self.half_bnv1) + #self.cnn1 = cnn1d_relu_bn(self.x,self.half_f1,self.half_fb1,self.conv_para2,self.half_bng1,self.half_bnb1) + #print self.cnn1.get_shape() + self._cnn2 = cnn1d_relu_bn(self.cnn1,self.f2,self.fb2,self.conv_para,self.bng2,self.bnb2,self.bnm2,self.bnv2) + self.cnn2 = cnn1d_relu_bn(self._cnn2,self.half_f2,self.half_fb2,self.conv_para2,self.half_bng2,self.half_bnb2,self.half_bnm2,self.half_bnv2) + #print self.cnn2.get_shape() + self._cnn3 = cnn1d_relu_bn(self.cnn2,self.f3,self.fb3,self.conv_para,self.bng3,self.bnb3,self.bnm3,self.bnv3) + self.cnn3 = cnn1d_relu_bn(self._cnn3,self.half_f3,self.half_fb3,self.conv_para2,self.half_bng3,self.half_bnb3,self.half_bnm3,self.half_bnv3) + self.cnn4 = cnn1d_relu_bn(self.cnn3,self.f4,self.fb4,self.conv_para,self.bng4,self.bnb4,self.bnm4,self.bnv4) + # flatten last cnn layer's output + self.cnn4_output = tf.reshape(self.cnn4,[-1,256*40]) + #self.dnn1 = dnn_relu(self.cnn4_output,self.w1,self.b1) + #self.dnn2 = dnn_relu(self.dnn1,self.w2,self.b2) + self.dnn1 = dnn_relu_bn(self.cnn4_output,self.w1,self.b1,self.bng5,self.bnb5,self.bnm5,self.bnv5) + self.dnn2 = dnn_relu_bn(self.dnn1,self.w2,self.b2,self.bng6,self.bnb6,self.bnm6,self.bnv6) + # last layer without relu!!!! + self.dnn3 = dnn_sigmoid(self.dnn2,self.w3,self.b3) + #self.softmax = softmax(self.dnn2) + + def loss(self,X,y,X1,y1,e,mode='test',lr=2e-4,reg=1e-5,batch=5,epoch=21,opt=True,verbose=True): + # history record + self.X_loss_history = [] + self.X1_loss_history = [] + self.X_acc_history = [] + self.X1_acc_history = [] + + # loss function + #cross_entropy = -tf.reduce_sum(self.y_hat*tf.log(self.softmax)) + _reg = tf.constant(reg) + cross_entropy = tf.reduce_sum(tf.square(tf.sub(self.dnn3,self.y_hat))) + cross_entropy = tf.add(cross_entropy, tf.mul(_reg,self.regularizers)) + + # optimizer + #f = tf.train.GradientDescentOptimizer(lr).minimize(cross_entropy) + #f = tf.train.MomentumOptimizer(lr,0.9).minimize(cross_entropy) + #f = tf.train.RMSPropOptimizer(lr,0.9,0.9,1e-5).minimize(cross_entropy) + f = tf.train.RMSPropOptimizer(lr).minimize(cross_entropy) + + # outcome + #pred = tf.equal(tf.argmax(self.softmax,1),tf.argmax(self.y_hat,1)) + pred = tf.equal( tf.cast(tf.less(self.dnn3,0.5),tf.float32), tf.cast(tf.less(self.y_hat,0.5),tf.float32) ) + acc = tf.reduce_mean(tf.cast(pred,tf.float32)) + + # initialize session & saver + if verbose: _log(1,e,'echo ini var and saver start>> tmp') + init = tf.initialize_all_variables() + saver = tf.train.Saver() + last_saver = tf.train.Saver() + #sess = tf.InteractiveSession() + sess = tf.Session() + sess.run(init) + if verbose:_log(0,e,'echo ini var and saver end>> tmp') + + ######### + # Train # + ######### + if mode=='train': + # whether restart new training session + if opt: + good_record = 0.0 + low_loss = np.inf + else: + if verbose:_log(1,e,'echo load para start>> tmp') + saver.restore(sess, "model.ckpt") + X1_loss = 0 + X1_acc = 0 + for X1_idx in range(X1.shape[0]): + _loss,_accuracy = sess.run([cross_entropy,acc], + feed_dict={self.x:X1[X1_idx:X1_idx+1], + self.y_hat:y1[X1_idx:X1_idx+1]}) + X1_loss += _loss + X1_acc += _accuracy + low_loss = X1_loss + good_record = X1_acc/X1.shape[0] + if verbose:_log(0,e,'echo load para end>> tmp') + + num = X.shape[0] + for i in range(epoch): + for j in range(num/batch): + if verbose:_log(1,e,'echo random minibatch start>> tmp') + batch_xs, batch_ys = random_minibatch(X,y,batch) + if verbose:_log(0,e,'echo random minibatch end>> tmp') + + if verbose:_log(1,e,'echo train start>> tmp') + sess.run(f,feed_dict={self.x:batch_xs,self.y_hat:batch_ys}) + if verbose:_log(0,e,'echo train end>> tmp') + + # every 10 iter check status (in order to eliminate bn => feed it one by one) + if j%100==0: + if verbose:_log(1,e,'echo check all train data start>> tmp') + X_loss = 0 + X_acc = 0 + for X_idx in range(X.shape[0]): + _loss,_accuracy = sess.run([cross_entropy,acc], + feed_dict={self.x:X[X_idx:X_idx+1], + self.y_hat:y[X_idx:X_idx+1]}) + X_loss += _loss + X_acc += _accuracy + if verbose:_log(0,e,'echo check all train data end>> tmp') + + X1_loss = 0 + X1_acc = 0 + if verbose:_log(1,e,'echo check all val data start>> tmp') + for X1_idx in range(X1.shape[0]): + _loss1,_accuracy1 = sess.run([cross_entropy,acc], + feed_dict={self.x:X1[X1_idx:X1_idx+1], + self.y_hat:y1[X1_idx:X1_idx+1]}) + X1_loss += _loss1 + X1_acc += _accuracy1 + if verbose:_log(0,e,'echo check all val data end>> tmp') + + loss = X_loss + loss1 = X1_loss + accuracy = X_acc/X.shape[0] + accuracy1 = X1_acc/X1.shape[0] + + self.X_loss_history += [loss] + self.X1_loss_history += [loss1] + self.X_acc_history += [accuracy] + self.X1_acc_history += [accuracy1] + # save best record + if accuracy1 >= good_record:# and loss1 < low_loss: + good_record = accuracy1 + low_loss = loss1 + if verbose:_log(1,e,'echo save para start>> tmp') + save_path = saver.save(sess, "model.ckpt",write_meta_graph=False) + if verbose:_log(0,e,'echo save para end>> tmp') + print("######## Model saved in file: %s ########" % save_path) + print("epoch %2d/%2d,\titer %2d/%2d," %(i,epoch,j,num/batch)) + print("Train Loss %.10f Train Accuracy %.10f" %(loss,accuracy)) + print("Valid Loss %.10f Valid Accuracy %.10f" %(loss1,accuracy1)) + + # Force to save the last parameters + save_path = last_saver.save(sess, "last_model.ckpt",write_meta_graph=False) + + ######## + # Test # + ######## + elif mode=='test': + saver.restore(sess, "last_model.ckpt") + print("Model restored.") + loss,accuracy,org_output = sess.run([cross_entropy,acc,self.dnn3],feed_dict={self.x:X1,self.y_hat:y1}) + print("Vali Loss %.10f Vali Accuracy %.10f" %(loss,accuracy)) + loss1,accuracy1,org_output1 = sess.run([cross_entropy,acc,self.dnn3],feed_dict={self.x:X,self.y_hat:y}) + print("Test Loss %.10f Test Accuracy %.10f" %(loss1,accuracy1)) + return org_output, org_output1 + + #sess.close() + #del sess + #del saver + +def test(): + pass + + e = mp.Event() + + X = np.random.normal(0,1,(10,1,2048,40)) + y = np.random.randint(2,size=(10,1025)).astype(np.int32) + X1 = np.random.normal(0,1,(10,1,2048,40)) + y1 = np.random.randint(2,size=(10,1024)).astype(np.int32) + + + net = modelX() + net.loss(X,y,X1,y1,e,mode='train',lr=1e-6,reg=1e-1,batch=10,epoch=100) + + print max(net.X1_acc_history) + print min(net.X1_loss_history) + +if __name__=='__main__': + #test() + pass diff --git a/model/__init__.py b/model/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/model/utils/__init__.py b/model/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/model/utils/initParams.py b/model/utils/initParams.py new file mode 100644 index 0000000..42cb36c --- /dev/null +++ b/model/utils/initParams.py @@ -0,0 +1,28 @@ +import tensorflow as tf +import numpy as np +import math + +def weight(shape,name=None): + if len(shape)==2: + fin = shape[0] + fout = shape[1] + elif len(shape)==4: + fin = shape[0]*shape[1]*shape[2] + fout = shape[0]*shape[1]*shape[3] + low = -1*np.sqrt(1.0/(fin+fout)) # use 4 for sigmoid, 1 for tanh activation + high = 1*np.sqrt(1.0/(fin+fout)) + return tf.Variable(tf.random_uniform(shape, minval=low, maxval=high, dtype=tf.float32),name=name) + #w = tf.truncated_normal(shape, stddev=std) + #return tf.Variable(w) + +def bias(shape,name=None): + b = tf.constant(0.1, shape=shape) + return tf.Variable(b,name=name) + +def gamma(shape,name=None): + g = tf.constant(1.0,shape=shape) + return tf.Variable(g,name=name) + +def beta(shape,name=None): + b = tf.constant(0.0,shape=shape) + return tf.Variable(b,name=name) diff --git a/model/utils/layers.py b/model/utils/layers.py new file mode 100644 index 0000000..9f8561b --- /dev/null +++ b/model/utils/layers.py @@ -0,0 +1,157 @@ +# +# build all combinational layers +# +# +import tensorflow as tf +import numpy as np + +################ +# Normal Layer # +################ +def dnn(x,w,b): + return tf.matmul(x, w) + b + +def cnn(x,w,b,para): + s = [1,para['stride'],para['stride'],1] + p = para['pad'] + return tf.nn.conv2d(x, w, strides=s, padding=p) + b + +def cnn1d(x,w,b,para): + s = [1,1,para['stride'],1] + p = para['pad'] + return tf.nn.conv2d(x, w, strides=s, padding=p) + b + +def rnn(x,w,b): + pass + +################# +# Special Layer # +################# +def dropout(x, p): + return tf.nn.dropout(x,p) + +def batchnorm(x, gamma, beta, r_mean, r_var): + mean, var = tf.nn.moments(x,[0]) + update_mean = tf.assign(r_mean,0.9 * r_mean + 0.1 * mean) + update_var = tf.assign(r_var,0.9 * r_var + 0.1 * var) + with tf.control_dependencies([update_mean,update_var]): + return tf.nn.batch_normalization(x,tf.clip_by_value(r_mean,1e-10,100),tf.clip_by_value(r_var,1e-10,100), + offset=beta,scale=gamma,variance_epsilon=1e-5) + +def maxpool(x, para): + k = [1,para['kernel'],para['kernel'],1] + s = [1,para['stride'],para['stride'],1] + p = para['pad'] + return tf.nn.max_pool(x, k, strides=s, padding=p) + +############## +# Activation # +############## +def relu(x): + return tf.nn.relu(x) + +def sigmoid(x): + return tf.nn.sigmoid(x) + +def tanh(x): + return tf.nn.tanh(x) + +def softmax(x): + return tf.nn.softmax(x) + +def log_softmax(x): + return tf.nn.log_softmax(x) + +######### +# Combo # +######### +def cnn_relu(x,w,b,conv_para): + return relu(cnn(x,w,b,conv_para)) + +def cnn_relu_maxpool(x,w,b,conv_para,pool_para): + return maxpool(relu(cnn(x,w,b,conv_para)),pool_para) + +def cnn_relu_bn(x,w,b,conv_para,gamma,beta,r_mean,r_var): + output1 = relu(cnn(x,w,b,conv_para)) + shape = output1.get_shape().as_list() + bn = tf.reshape(output1,[-1,shape[-1]]) + output2 = batchnorm(bn,gamma,beta,r_mean,r_var) + output = tf.reshape(output2,[-1,shape[1],shape[2],shape[3]]) + return output + +def cnn1d_relu_bn(x,w,b,conv_para,gamma,beta,r_mean,r_var): + output1 = relu(cnn1d(x,w,b,conv_para)) + #output1 = cnn1d(x,w,b,conv_para) + shape = output1.get_shape().as_list() + bn = tf.reshape(output1,[-1,shape[-1]]) + output2 = batchnorm(bn,gamma,beta,r_mean,r_var) + output = tf.reshape(output2,[-1,shape[1],shape[2],shape[3]]) + return output + #return relu(output) + +def cnn1d_relu(x,w,b,conv_para): + return relu(cnn1d(x,w,b,conv_para)) + +def cnn_relu_maxpool_bn(x,w,b,conv_para,pool_para,gamma,beta,r_mean,r_var): + output1 = maxpool(relu(cnn(x,w,b,conv_para)),pool_para) + shape = output1.get_shape().as_list() + print shape,type(shape) + bn = tf.reshape(output1,[-1,shape[-1]]) + output2 = batchnorm(bn,gamma,beta,r_mean,r_var) + output = tf.reshape(output2,[-1,shape[1],shape[2],shape[3]]) + return output + +def dnn_relu(x,w,b): + return relu(dnn(x,w,b)) + +def dnn_relu_dropout(x,w,b,p): + return dropout(relu(dnn(x,w,b)),p) + +def dnn_relu_bn(x,w,b,gamma,beta,r_mean,r_var): + output = batchnorm(dnn(x,w,b),gamma,beta,r_mean,r_var) + return relu(output) + +def dnn_sigmoid(x,w,b): + return sigmoid(dnn(x,w,b)) + +######## +# TEST # +######## +def test(): + #variable + data = np.ones((2,3,3,3)) + x = tf.placeholder(tf.float32, [None, 3,3,3]) + W = tf.Variable(tf.truncated_normal([2,3,3,3],stddev=1e-5)) + b = tf.Variable(tf.zeros([3])) + + #para + conv_para = {'stride':1, + 'pad':'SAME'} + pool_para = {'stride':1, + 'pad':'SAME', + 'kernel':2} + bn_para = {'gamma':W,#same size as x + 'beta':b} #last dimension + #y = dnn(x,W,b) + #y = cnn(x,W,b,conv_para) + #y = sigmoid(x) + #y = log_softmax(x) + #y = maxpool(x,pool_para) + #y = dropout(x,0.5) + #y = batchnorm(x,bn_para) + + #init + init = tf.initialize_all_variables() + sess = tf.Session() + sess.run(init) + output = sess.run([y],feed_dict={x:data})[0] + + #test + print output;print output.shape + +######## +# MAIN # +######## +if __name__=='__main__': + test() + pass diff --git a/model/utils/monitor.py b/model/utils/monitor.py new file mode 100644 index 0000000..6159538 --- /dev/null +++ b/model/utils/monitor.py @@ -0,0 +1,99 @@ +import psutil +import os +import subprocess + +def checktmp(FILE): + #bullet-proof + if not os.path.exists(FILE): + cmd = 'touch tmp' + os.system(cmd) + + #check last line start/end flag + cmd = 'tail -n1 '+FILE + string = os.popen(cmd).read()[:-1] + #print string,len(string),len(string.split(' ')[-1]) + string = string.split(' ')[-1] + if string=='[start]': + #print 'Enter state 1' + state = 1 + return state + elif string=='[end]': + #print 'Enter state 0' + state = 0 + return state + return -1 + +#sudo +def mem(): + #p = psutil.Process(pid) + #print p.memory_full_info() + #print p.memory_percent() + cpu = psutil.cpu_percent() + mem = psutil.virtual_memory().percent + swap = psutil.swap_memory().percent + return cpu, mem, swap + +def monitor(FILE): + state = 0 + base_cpu, base_mem, base_swap = None, None, None + history_cpu, history_mem, history_swap =[],[],[] + while True: + os.system('sleep 0.1') + if state == 0: + flag = checktmp(FILE) + if flag == -1 or flag == 0: + #base_cpu, base_mem, base_swap = mem() +# print state,'record base' + pass + elif flag == 1: #start + state = 1 + print state,'Enter to state 1' + elif state == 1: + flag = checktmp(FILE) + if flag == -1 or flag == 1: #record + cpu,memo,swap = mem() + history_cpu += [cpu]#-base_cpu] + history_mem += [memo]#-base_mem] + history_swap += [swap]#-base_swap] +# print state,'record cpu/mem/swap' + elif flag == 0: #end + avg_cpu = sum(history_cpu) / float(len(history_cpu)) + max_cpu = max(history_cpu) + del history_cpu[:] + avg_mem = sum(history_mem) / float(len(history_mem)) + max_mem = max(history_mem) + del history_mem[:] + avg_swap = sum(history_swap) / float(len(history_swap)) + max_swap = max(history_swap) + del history_swap[:] + + line = 'avg_cpu:\t'+str(avg_cpu)+'\tmax_cpu:\t'+str(max_cpu) + print line + insert(3,line,FILE) + line = 'avg_mem:\t'+str(avg_mem)+'\t\tmax_mem:\t'+str(max_mem) + print line + insert(3,line,FILE) + line = 'avg_swap:\t'+str(avg_swap)+'\t\tmax_swap:\t'+str(max_swap) + print line + insert(3,line,FILE) + + state = 0 + print state, 'return to state 0' + + +def insert(opt,title,FILE): + with open(FILE,'a') as f: + if opt==1:#start + line = title + ' [start]\n' + f.write(line) + elif opt==2:#end + line = title + ' [end]\n' + f.write(line) + if opt==3:# + line = title + '\n' + f.write(line) + +if __name__=='__main__': + pass +# FILE = 'tmp' +# monitor(FILE) diff --git a/model/utils/monitor2.py b/model/utils/monitor2.py new file mode 100644 index 0000000..83d83ab --- /dev/null +++ b/model/utils/monitor2.py @@ -0,0 +1,77 @@ +import multiprocessing as mp +import psutil as ps +import os +import time + +def log(e,e2,prev_cpu,prev_mem,prev_swap,ctr,state): + while True: + if state.value==0 and e.is_set(): + state.value = 1 + elif state.value==0 and not e.is_set(): + pass + elif state.value==1 and e.is_set(): + prev_cpu.value = (prev_cpu.value*ctr.value + ps.cpu_percent()) / (ctr.value+1) + prev_mem.value = (prev_mem.value*ctr.value + ps.virtual_memory().percent) / (ctr.value+1) + prev_swap.value = (prev_swap.value*ctr.value + ps.swap_memory().percent) / (ctr.value+1) + ctr.value += 1 + elif state.value==1 and not e.is_set(): + state.value = 0 + cmd1 = 'echo cpu:'+str(prev_cpu.value)+'>> tmp' + cmd2 = 'echo mem:'+str(prev_mem.value)+'>> tmp' + cmd3 = 'echo swap:'+str(prev_swap.value)+'>> tmp' + os.system(cmd1) + os.system(cmd2) + os.system(cmd3) +# print prev_cpu.value +# print prev_mem.value +# print prev_swap.value +# print ctr.value + prev_cpu.value=0 + prev_mem.value=0 + prev_swap.value=0 + ctr.value=0 + + if e2.is_set(): + break + +def ctrl(e,flag): + if flag: + e.set() + else: + e.clear() + + +if __name__ == '__main__': + pass + ''' + e = mp.Event() + e2 = mp.Event() + prev_cpu = mp.Value('d',0.0) + prev_mem = mp.Value('d',0.0) + prev_swap = mp.Value('d',0.0) + ctr = mp.Value('d',0.0) + state = mp.Value('d',0.0) + + p1 = mp.Process(target=log, args=(e,e2,prev_cpu,prev_mem,prev_swap,ctr,state)) + p1.start() + + for i in range(10): + if i%2==0: + print i + print 'p1',p1.is_alive() + print 'e',e.is_set() + time.sleep(1) + ctrl(e,True) + print 'p1',p1.is_alive() + print 'e',e.is_set() + else: + print i + print 'p1',p1.is_alive() + print 'e',e.is_set() + time.sleep(1) + ctrl(e,False) + print 'p1',p1.is_alive() + print 'e',e.is_set() + + e2.set() + ''' diff --git a/pull.sh b/pull.sh new file mode 100755 index 0000000..c5c7ed2 --- /dev/null +++ b/pull.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +#scp hduser@thz:/home/hduser/Projects/walabot/SensorCodeSample.cpp . +#scp hduser@thz:/home/hduser/walabot/tool/log2h5.py tool/ +#scp hduser@thz:/home/hduser/walabot/main.py . +#scp hduser@thz:/home/hduser/walabot/model/NNWalabot1.py model/ +#scp hduser@thz:/home/hduser/walabot/qs.sh . +#scp hduser@thz:/home/hduser/walabot/mo.sh . +#scp hduser@thz:/home/hduser/walabot/model/NNWalabot2.py model/ +#scp hduser@thz:/home/hduser/walabot/model/NNWalabot3.py model/ +#scp hduser@thz:/home/hduser/walabot/model/utils/layers.py model/utils/ +#scp hduser@thz:/home/hduser/walabot/model/utils/initParams.py model/utils/ +#scp hduser@thz:/home/hduser/walabot/log.py test/ +scp hduser@thz:/home/hduser/walabot/_.py test/ +scp hduser@thz:/home/hduser/walabot/tool/plot.py test/ +#scp hduser@thz:/home/hduser/walabot/log3.py test/ diff --git a/push.sh b/push.sh new file mode 100755 index 0000000..5777763 --- /dev/null +++ b/push.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +#scp SensorCodeSample.cpp hduser@thz:/home/hduser/walabot/ +#scp tool/log2h5.py hduser@thz:/home/hduser/walabot/tool/ +#scp main.py hduser@thz:/home/hduser/walabot/ +#scp qs.sh hduser@thz:/home/hduser/walabot/ +#scp model/NNWalabot1.py hduser@thz:/home/hduser/walabot/model/ +#scp model/NNWalabot2.py hduser@thz:/home/hduser/walabot/model/ +#scp model/NNWalabot3.py hduser@thz:/home/hduser/walabot/model/ +scp model/NNWalabot4.py hduser@thz:/home/hduser/walabot/model/ +#scp model/utils/monitor2.py hduser@thz:/home/hduser/walabot/model/utils/ +#scp model/utils/initParams.py hduser@thz:/home/hduser/walabot/model/utils/ +#scp _monitor.py hduser@thz:/home/hduser/walabot/ +#scp test/macbuild.sh hduser@thz:/home/hduser/walabot/ +#scp test/log.py hduser@thz:/home/hduser/walabot/ +#scp test/log.py hduser@thz:/home/hduser/walabot/tool/ +#scp test/log2.py hduser@thz:/home/hduser/walabot/ +#scp test/log2.py hduser@thz:/home/hduser/walabot/tool/ +#scp test/log3.py hduser@thz:/home/hduser/walabot/ +#scp test/log3.py hduser@thz:/home/hduser/walabot/tool/ +#scp model/utils/layers.py hduser@thz:/home/hduser/walabot/model/utils/ +#scp test/plot.py hduser@thz:/home/hduser/walabot/tool/ diff --git a/qs.sh b/qs.sh new file mode 100644 index 0000000..6d5d4bf --- /dev/null +++ b/qs.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +i="0" +while [ $i -lt 20 ] +do + echo $i + python main.py + #echo $i + i=$(($i+1)) +done diff --git a/show.ipynb b/show.ipynb new file mode 100644 index 0000000..7e686d1 --- /dev/null +++ b/show.ipynb @@ -0,0 +1,192 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import time\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]\n", + "(16,)\n", + "[ 0.00000000e+00 3.82683432e-01 7.07106781e-01 9.23879533e-01\n", + " 1.00000000e+00 9.23879533e-01 7.07106781e-01 3.82683432e-01\n", + " 1.22464680e-16 -3.82683432e-01 -7.07106781e-01 -9.23879533e-01\n", + " -1.00000000e+00 -9.23879533e-01 -7.07106781e-01 -3.82683432e-01]\n", + "(16,)\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from test.plot import *\n", + "show()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "k=np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]).reshape(3,5)\n", + "for i in range(k.shape[1]):\n", + " plt.scatter([i]*k.shape[0], k[:,i])\n", + "k_mean = k.mean(axis=0)\n", + "k_std = k.std(axis=0)\n", + "\n", + "plt.errorbar(np.arange(k.shape[1]),k_mean,yerr=k_std)\n", + "line = []\n", + "label = []\n", + "for i in range(k.shape[0]):\n", + " tmp, = plt.plot(np.arange(k.shape[1]),k[i,:],label='Line{0}'.format(i))\n", + " line += [tmp]\n", + " #label += ['Line{0}'.format(i)]\n", + "\n", + "plt.title('Raw Signal')\n", + "plt.xlabel('Time')\n", + "plt.ylabel('Energy')\n", + "plt.legend(handles=line, bbox_to_anchor=(1, 0.3),loc=2)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from test.plot import *\n", + "toggle()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdgAAAEhCAYAAADcRLFIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XucVXW9//HXxxtCJEIqWoKgppIXYMbjJTiBZimiaGUl\nJGaiB0zUn5l5y8D02OkUlZYejYMadjctTdEwFY1zjpYMg4h4Qcgr4gVBucj18/vju9bMms3eM3uG\nWXutPfN+Ph77Mfuy9t5fvw58+K71/b6/5u6IiIhI+9om6waIiIh0RCqwIiIiKVCBFRERSYEKrIiI\nSApUYEVERFKgAisiIpKCzAqsmf3TzOaZ2Vwz+3uJY643sxfMrN7MBlW6jSIiIm21XYbfvRkY7u7v\nFnvRzEYA+7j7x83scOAm4IhKNlBERKStsjxFbC18/0nAdAB3fwLoYWa9K9EwERGRrZVlgXXgQTP7\nh5mdXeT1jwGvJB6/Fj0nIiKSe1meIh7i7kvNbFdCoV3o7rMzbI+IiEi7yazAuvvS6OdbZvZH4DAg\nWWBfA/okHu8ZPbcFM1OgsohIK7m7Zd2GjiyTU8Rm1s3Mukf3PwR8Fni64LB7gNOjY44AVrj7slKf\n6e65vk2aNCnzNqidaqfa2fHa+frrzr33Ot/9rnPSSU6fPk6PHs7w4c43vuH88pfOwoXOxo1N3yfp\ny2oE2xv4YzTy3A74lbvPNLPxgLv7z919hpkdb2aLgNXA1zJqq4hI5tzhlVegrg7mzAk/6+pg/Xqo\nrYWaGhgzBqZMgf79YRulHGQukwLr7kuAQWa2DfAk8Mno+ZvjY8xsGHAasDh66nigrsJNFRGpOHdY\nvHjLYrrddo3F9Kyzwv0+fcB0ojeXspzkBHAB8AywU4nXH3P3URVsT2qGDx+edRPKona2L7WzfXXE\ndm7aBC+80LSYzp0LO+0UCmlNDZx/fiime+yRXpul/VlW5+LNbE/gVuDfgW8UFtJoBPtNdz+xjM9y\nXVMQkbzbuBEWLmxaTOfNg912ayym8W3XXdNti5nhmuSUqixHsD8GLgZ6NHPMkWZWT5g9fLG7P1OR\nlomIbKV162DBgqaneJ9+OpzSjYvoySfD4MHQs2fWrZU0ZFJgzWwksMzd681sOCHVqdAcoK+7r4li\nE/8E7FfBZoqIlGXtWnjqqabF9NlnYZ99GovpmDEwaBB8+MNZt1YqJasR7BBglJkdD3QFPmxm0939\n9PgAd1+VuH+/md1oZr3cfXmxD5w8eXLD/eHDh1fNtRoRqS7vvx9O6yaL6YsvwgEHNBbTs86CQw6B\nbt2ybm2jWbNmMWvWrKyb0alkdg22oQHhWutFRa7B9vZo3auZHQb83t37lfgMXYMVkXa3YkWYcJQs\npq+8Agcd1PR66UEHQZcuWbe2dXQNNn1ZzyJuIrkOFjjFzM4BNgBrgS9n2jgR6dDeequxiMa3ZcvC\nad2aGvjsZ+HSS2HAANh++6xbK9Ug8xFse9AIVkRaY+nSpqPSujpYuXLLmbz77Qfbbpt1a9OhEWz6\nMi2wiaCJV4utdzWz64ERhCSnM9y9vsTnqMCKyBbi9KPCYppMP6qpCfc7W/qRCmz6sj5FXDJoQhuu\ni0hrxOlHhcVU6UeSlcwKbBQ0cTxR0ESRQ5psuG5mPZITn0Sk89q0CZ5/vmkhVfqR5E2egyZKbbiu\nAivSicTpR8mRaWH60aWXVib9SKQ18hw00SpaBytS/datC2lHyZFpnH40eHAYkSr9qG20DrbyMpnk\nZGbXEnbK2UgUNAHclQyaMLObgEfc/XfR42eBYcVOEWuSk0j1Wbs2jESTxbQw/aimRulHadEkp/Rl\nvkynmaCJ44Fz3X1ktOH6T9y96CQnFViRfHv/faivb1pMC9OPamryl37UkanApi/rWcRNaMN1keq3\nYsWWgQ3J9KOhQ8MEpGpMPxJpjaxOEXcBHgN2iG53u/vlBccMA+6mccP1u9z9mhKfpxGsSAbeemvL\nKME334SBA5uuMT3gAKUf5Y1GsOnLcj/YbtFOOdsC/0M4Tfw/ideLnjou8VkqsCIpW7q06T6mxdKP\namvh4x/vuOlHHYkKbPoyO0Xs7muiu12AbYB3ixym//kiFRanHxUW02T60ZgxMGVK50s/EmmNLIMm\ntiHs+boPcFOJzdS14bpIiuL0o8JiqvQjka2X5Qh2MzDYzHYCZprZMHd/NHFIqzZc1zpYkeZt2gQv\nvNC0mBamH11wQfip9KOOR+tgKy/zZToAZnYlsMbdpzRzzBKgttiG67oGK9JUnH6ULKaF6Ue1tSGw\nQelHnZOuwaYvqySnXYAN7r7SzLoCnwGuKjimcMN1K1ZcRTq7detgwYKmxTROP4qL6ec+FwIblH4k\nUjlZnSLeA/iFmRlhgtPt7v6QNlwXad7atfDUU02LaWH60Ve+EpbJKP1IJFtZFdjnCYVzh6gNvQDc\n/eb4AHe/wcz2J+wHa8C6DNopkpn332+MEoyLaWH60dlnw8EHK/1IJI/yvA52BDAxiko8HLhOUYnS\nUa1YESYcJYtpMv0ovmZ64IFKP5L2oWuw6cvzOljtBysd0ttvN40RnDOnafrRscfCZZcp/Uik2uV5\nHaz2g5WqF6cfJYvpe++F2bs1NWHrte9+V+lHIh1RntfBilSNZPpRsphu2NB4infMGPjhD5V+JNJZ\nZL6bjru/Z2b3AYcCyQL7GtAn8XjP6LmiFDQhlZJMP0peMy1MP7rxRqUfSX4oaKLystpNp3Ad7F+A\nq9z9ocQx2g9WMpdMP4qLaWH6UVxUlX4k1USTnNKXVYE9GPgFYflNvA72hwXrYDGznwHHEe0H6+51\nJT5PBVa2WjL9KC6mSj+SjkoFNn1ZnSJ+F1gB9AY2A+uh6TrYaLu602jcD/Z4oGiBFWmtZPpRXEwL\n049OPlnpRyLSdlmNYHcHdnf3ejPrTphNfJK7P5s4RvvBSrtIph/FxbQw/ai2VulH0rloBJu+TEaw\n7v4G8EZ0f5WZLSQswXm24FD9z5dWKSf96KyzlH4kIunLfDcdM+sHzAIOcvdVieeHAXcCr9LCfrAa\nwXZOSj8SaTuNYNOXaYGNTg/PAq5297uLvLY5sR/sde5edD9YFdiOL5l+FBfTZPpRXEyVfiRSHhXY\n9GWZ5LQd8AfCDOK7C19Pjmbd/X4zu9HMepXask7rYDuOZPpRXExXrmw6+ejqq5V+JNIaWgdbeVmG\n/U8H3nb3b5R4vXA/2N+7e78Sx2oEW4WS6UdxIa2rg/XrG9eWxre991b6kUh70gg2fVnNIh4CPAbM\nBzy6XQ7sRbQO1szOBZL7wV7o7k+U+DwV2JxLph8li2ky/Si+9e2r9CORtKnApi+rU8QvEWIR43Ww\nU939geQB2g+2eiXTj+JiWph+dP754edHP5p1a0VE0pHndbDaD7YKJNOP4mJamH5UUxPSj3bbLevW\nikhMI9j05XkdrPaDzZk4/Sh5irdY+tHgwUo/EhHJfDedaB3sIKDw+qr2g81QnH6ULKaF6UdjxoQo\nQaUfiYhsKdMCG50e/gNwQXJZjlRWuelHhxyi9CMRkXLldh0s2g82FXH6UXJk+vLLITqwpgaGDAkT\nkA46SOlHIh2J1sFWXp7XwWo/2K301ltbFtNly8Jp3eQEpAEDlH4k0tloklP6crsONjpO+8GWKU4/\nShbTZPpRfNtvP6UfiYgKbCVkHvbfHjpTgU2mHyULqtKPRKQ1VGDTl+Up4mnACcAydz+kyOvDgLtp\n3HD9Lne/psRndcgCm0w/ShZTpR+JyNZSgU1flgV2KLAKmN5Mge00G64n04/iYlqYfhTflH4kIltL\nBTZ9mc0idvfZZrZXC4d1yP/5yfSjuJgWph9deqnSj0REqlnmQRMtONLM6mlhw/U8i9OPksW0MP3o\npJOUfiQi0tHkucDOAfomNlz/E1B0w3XIxzrYOP0oWUwL049Gj1b6kYhUntbBVl6ms4ijU8R/LnYN\ntsixS4DaYhuuZ3ENdtUqqK9vWkwL049qapR+JCL5pGuw6ct6BGuUuM5aZMN1K1ZcKyFOP0oW01de\nCWlHcfrReecp/UhERBplOYv418Bw4COEAP9JwA5kvOH62283FtK4mL75Jgwc2Dgqra0NI1WlH4lI\ntdIINn1ZxhCsBbYFnnP3vu5+q7vfHKc4ufsNwMNAd6AbKWy4vnQp3HcfXH01fO5zsNdesO++8L3v\nhZjBk04Kr69YAbNnw/XXwxlnhNze1hbXarn2oXa2L7WzfamdUk2yLLC3AseWejGa2LSPu38cGA/c\n1NYvcg+B9n/6E3znO3DCCbDHHuGU7nXXwerVYfLRww/D8uXwyCMwZQp85SthpNoe0YLV8gdO7Wxf\namf7UjulmuR5HWybNlwvTD+Kb9tu25h+NG4c3HhjWCqj9CMREUlD1pOcmtOqDde/+c1QSOfODUtg\n4uul550XCusee1SiySIiIkFul+mY2Z+B77n7/0aP/wp8q9iOOmZW3TmJIiIZ0CSndOV5BFv2huv6\nJRERkbzJejOzkutggXuA0wGiDddXtHT9VUREJC8yG8Em18Ga2csUrIN19xlmdryZLSLacD2rtoqI\niLRWh9hwXUREJG+yPkVcNjM7zsyeNbPnzeySEsdcb2YvmFm9mQ2qdBujNjTbTjMbZmYrzKwuun07\ngzZOM7NlZvZUM8fkoS+bbWce+jJqx55m9rCZLTCz+WZ2fonjMu3TctqZdZ+aWRcze8LM5kbtvLbE\ncVn3ZYvtzLovC9qyTdSGe0q8nvmf9w7J3XN/I/xDYBGwF7A9UA8cUHDMCOC+6P7hwOM5becw4J6M\n+3MoMAh4qsTrmfdlme3MvC+jduwODIrudweey+nvZzntzLxPgW7Rz22Bx4EheevLMtuZeV8m2nIh\n8Mti7clLf3bEW7WMYA8DXnD3l9x9A/BbQhBFUpNgCqCHmfWubDPLaidkvJG8u88G3m3mkDz0ZTnt\nhIz7EsDd33D3+uj+KmAhYc12UuZ9WmY7IfvfzzXR3S6Ef7QW/g5k3pfRd7fUTsjB76eZ7QkcD/x3\niUNy0Z8dUbUU2MLQiVfZ8i+GUsEUlVROOyHaSN7M7jOzT1Smaa2Sh74sV6760sz6EUbdhRtT5KpP\nm2knZNyn0enMucAbwCx3f6bgkFz0ZRnthHz8fv4YuBgoNeEmF/3ZEaVaYItdQzOznmY208yeM7O/\nmFmPEu9tuJYJnJxmOyss3kh+EPAzwkby0ja56ksz6w78AbggGiHmUgvtzLxP3X2zuw8mrH3/lJkN\nq3QbylFGOzPvSzMbCSyLzlw0tyxSUpD2CLZYoP+lwF/dfX/CbjmXFb7JzLYh/EIeCxxIuC4wIHFI\nsdCJsoMpUvQa0Le5Nrj7qvjUkrvfD2xvZr0q18Sy5KEvW5SnvjSz7QhF63Z3v7vIIbno05bamac+\ndff3gPuAQwteykVfxkq1Myd9OQQYZWaLgd8AR5nZ9IJjctWfHUmqBbbENbSTgF9E939B8dFp4bXM\nW4EBZraXme0AnEoIokjKQzDFP4B9m2tn8tqGZbuRfLWEfJRsZ476EuAW4Bl3v67E63np02bbmXWf\nmtku8VktM+sKfIYwWTAp874sp51Z9yWAu1/uYTvQvQl/Hz3s7qcXHJZ5f3ZUWQRN7Bb/z3P3N8xs\ntyLHFF4TeAWYDcwk/KNgmrsvNLPx5CiYwt03mdnE5toJnGJmyY3kv1zpdlqVhHy01E5y0JdRO4cA\nXwHmR9fkHLicMJs8N31aTjvJvk/3AH5hZkb4M3S7uz+Utz/r5bST7PuypBz2Z4eUetCEFQT6m9ly\nd++VeP0dd/9IwXu+ABzr7v8WPT4NOMzdS60vVFqGiEgruXLcU5XFLOJl8akTM9sdeLPIMS1eyyyU\n9nqmrb1NmjQp8zaonWqn2tmx27l5s/Pqq8499ziTJzujRjkf+5iz887O0Uc73/ym8+tfO88+qzFJ\nJVTiFHHhNbR7gDOA7wNfBYpNCGm4lgksJVw7GJ1uM0VEqoc7vPRS2Ac7vs2ZA5s3hz2wa2pg7Fj4\n8Y+hf38wjVUrLtUCW+Ia2n8Ad5jZmcBLwJeiY/cAprr7CV7iWmaabRURyavNm+HFF5sW0ro66No1\nFNKaGhg/PhTWj31MxTQvUi2w7j6mxEvHmNkFwFnA38xsqrtfD5yQOGYt0BtYDHzJzLZz92vSbG+a\nhg8fnnUTyqJ2ti+1s311hnZu2gTPPde0mNbXQ8+ejcX0ootg8GDYfff2a7O0v0x20zGzAwlrsv4F\n2AjcD0xw98WJY4YBF7n7qDI+z7P47xAR2RobNsAzzzQtpk89BXvs0VhMa2tDMf3IR1r+vNYwM1yT\nnFKV1X6wA4An3H0dgJk9Bnwe+GHBcfqfLyIdwgcfwNNPNz3Fu2AB9OvXWExPOQUGDYIeRfPtpNpk\nVWCfBq4xs57AOkIQ9T+KHHekmdUTZhBf7MWzPkVEcmX16jASTRbT55+Hj3+8sZh+9atwyCHQvXvW\nrZW0ZLbhupl9DTgXWAUsANa5+zcSr3cHNrv7GjMbAVzn7vuV+CydIhaRTLz3XrhGmiymS5bAJz7R\neIq3pgYOPhh23DHr1jbSKeL0ZTWCxd1vJUQgYmb/TtPkJjwRQu7u95vZjWbWy0tEjU2ePLnh/vDh\nw6tmMoSIVI/ly2Hu3KbF9LXXwki0pgaOOipMQPrEJ2CHHbJubVOzZs1i1qxZWTejU8lyBLuru79l\nZn2BB4AjPIRmx6/39ihSMcrx/L279yvxWRrBiki7evPNpoW0rg7eeSdcI41HpTU1sP/+sF1mQ5W2\n0wg2fVkW2MeAXoSczgvdfVYyH9PMzgWSOZ4XetgMuNhnqcCKSJu4w+uvb1lMV69ueoq3pgb23Re2\nqZZdtFugApu+LAtsvA4WQsDE9UWOuR4YQQigPsPDnobFPksFVkRalEw/ShbTOP0oWUz79evYgQ0q\nsOnL5MRGtA52HGH/xI3A/WZ2b8E62BHAPu7+cTM7HLgJOCKL9opI9UmmHyWLaZx+VFsL55wT7iv9\nSNKQ53WwJwHTAdz9CTPrkbwuKyISi9OPkoU0Tj+KR6VKP5JKy/M62MI9YV+LnlOBFenE4vSjZDGN\n04/iYnrllemkH4m0RiYF1t2fNbPvAw8S1sHOBTZl0RYRya9i6UfPPNM0/eiLX1T6keRTbtfBEkas\nfRKPm90TVutgRapbnH6UHJnG6UdxHu9XvwoDB8KHPpR1a6uP1sFWXp7XwR4PnOvuI83sCOAn7l50\nkpNmEYtUlzj9KFlMlyyBAw9sHJnmMf2oI9Es4vTldh1sdMzPgOMIy3S+5u51JT5LBVYkp+L0o2Qx\njdOPksti8ph+1JGpwKYvswLbnlRgRfKhVPrR4MFNR6bVmn7UkajApi/LEexlwGmEyU3zCSPU9YnX\nhwF3EzZcB7ir1IbrKrAildVZ0486EhXY9GW14fpewCPAAe6+3sx+B9zn7tMTx2jDdZEcSKYfJQuq\ne9NC2hnSjzoSFdj0ZXWS5j1gPfAhM9sMdANeL3Kc/ueLVFAy/ShZTJV+JNJ6Wa2DfdfMpgAvA2uA\nme7+1yKHasN1kZTE6UfJYhqnH8XFVOlHIm2XVRbx3sCFwF7ASuAPZjbG3X+dOGwO0Dex4fqfgKIb\nroPWwYo0J04/ShbTOP0oLqZKP+rYtA628rK6Bvsl4DPufnb0eCxwuLtPbOY9S4DaYhuu6xqsSKNk\n+lFcTBcsaEw/iq+bKv2oc9M12PRldQ32OeBKM9uRkEX8aQqyiItsuG7FiqtIZ7ZmDcyb17SYxulH\ncTE9/fSw5rR796xbK9K5ZHUNdp6ZTSecBt4E1AE/LwiaOMXMkhuufzmLtorkRZx+FBfTujpYvDgE\nNNTUwGGHwYQJSj8SyYssl3onv3t7wgj15vgJd7/BzPYnbLhuhJGuSKcQpx8lR6Zx+lFNDQwfDt/4\nhtKPRPIsz+tgRwAToyziw4HrlEUsHVGcfpS8vf12uEaavGaq9CNpT7oGm748r4PVhuvSoSTTj5Ij\n0zj9qKYGTjkFrr1W6UciHUGe18Fqw3WpWoXpR/Ft06bGEenpp8NPfqL0I5GOKs/rYFtF62AlK4Xp\nR/Ftxx3DutLaWhg/PvxU+pFkRetgKy+362DN7CbgEXf/XfT4WWBYsVPEugYrlVKYflRXFyYjxelH\n8TVTpR9J3ukabPpyuw4WuAc4F/hdtOH6Cl1/lUoqTD+qqwtrTuP0o5oa+Pa3lX4kIsXldh2su88w\ns+PNbBHRhutZtFU6h8L0o7q6kH60115NJyAp/UhEypXVNdj9gDGE0asBnwPq3P36xDHDCPvFxvvB\nHk8oxCJbpTD9qK4unPaN04/iCUhKPxKRrZHZhusNDTDbBniVcA32lcTz2g9WtlpL6UfxjF6lH0ln\no2uw6cvDsvVjgBeTxTVB//OlbEo/EpE8ycMIdhowx91vLHh+GHAnYXTb7H6wGsF2PoXpR3PmwDvv\nKP1IpFwawaYv0796zGx7YBRwaZGXtR+sKP1IpJ1oHWzlZTqCNbNRwNfd/bgyjtV+sB1csfSjOXNC\nkEM8Io1/Kv1IZOtoBJu+rE+ejQZ+U+wF7QfbsRWmH82ZE3527do4Mp0wIfxU+pGIVKPMRrBm1g14\nCdjb3d+PnmtYB2tm5wLJ/WAvdPcnSnyWRrA51lL6UTwqVfqRSOVoBJu+rKIS9wN+BzhhpvDewJXJ\ndbDRcdcT9oNdDZzh7vUlPk8FNicK04/mzIGnnmpMP0oWU6UfiWRHBTZ9eZhFXGodrPaDzblk+lF8\ninfBgnB9NFlMlX4kkj8qsOnL+hoslF4Hq/1gcySZfhQX0+efb0w/qq2Fr35V6UciIrE8FNgvU3yi\nk/aDzUgy/SgupkuWhICG2lo4/HA45xylH4mINCfP62ClAlpKPzrqKLjoIqUfiYi0VtYj2BGEFKe3\nirz2GtAn8XjP6LmiFDTRsmT6UTwyjdOPamvh+OPhiivggAOUfiTS0ShoovKyDpr4DfCAu/+iyGvH\nA+dGk5yOAH6iSU7lKUw/iotpnH4UTz6qqVH6kUhnpUlO6cvtOtjo8c+A44j2g3X3otvVdeYCm0w/\nigtpXV1j+lGymCr9SERiKrDpy7LA9gD+GzgI2AycmQySiML+76ZxP9i73P2aEp/VKQpsMv0oWUzj\n9KNkMVX6kYg0RwU2fVleabsOmOHuXzSz7YBuRY55rJz9YDuiZPpRXEzr65umH110kdKPRETyKpMC\na2Y7Af/q7mcAuPtG4L1ih1ayXVlJph/FxbQw/ejKK5V+JCJSTbIawfYH3jazW4GBwJPABe6+tuC4\nI82snhb2g60mcfpR8hRvYfrRF7+o9CMRkWqXVRZxLfA4cKS7P2lmPwFWuvukxDHdgc2J/WCvc/ei\n+8Hm9Rrs6tVhJJospoXpRzU1Sj8SkcrTNdj0ZTWCfRV4xd2fjB7/AbgkeYC7r0rcv9/MbjSzXqW2\nrMt6HWycfpQspnH6UU2N0o9EJFtaB1t5Wc4ifhQ4292fN7NJQDd3vyTxeuF+sL93934lPquiI9g4\n/ShZTJPpR/HIVOlHIpJXGsGmL8sCO5CwTGd7wlKcrwGnkrP9YOP0o2QxjdOPksV0//2VfiQi1UMF\nNn2Zb1fXHtqjwCbTj5LFNE4/ShZTpR+JSLVTgU1fZmUi2n7uDjNbaGYLoj1fC4+53sxeMLN6MxvU\nXt/tDv/8J9x5Z8jeHTEirCUdNAhuuAHWrw9br/3tb+F08EMPwQ9+AKeeCvvt17biWi3XPtTO9qV2\nti+1U6pJluOwOGhiAGGpzsLki9HM4X3c/ePAeOCmtnzJ5s3wwgvw29/Ct74FxxwT1pIOGQK33RZO\n655zThi1vvkmPPAAXHstfOEL0L9/+6UhVcsfOLWzfamd7UvtlGqS56CJVm+4HqcfJU/xJtOPamqU\nfiQiIpWR1Qi2IWjCzOrM7Odm1rXgmFIbrhf1yU+GYIaTToJ77w0F9MorYfHicDr4rrvg299uPB0s\nkpWDDjqIxx57LPXvOeqoo7jllltS/x4RKS7PQRN/Br7n7v8bPf4r8K1iO+qYWfXP1BIRqTBNckpX\nboMmaMWG6/olkVLMbAlhp6ZHzGw3YCbwl+Sa6xS+cxIwHDjV3ZeZWV/gU+7+y7S+s0Q7HgFud3cN\nY0UykMkp4ug66itmFkcffhoozBm+BzgdINpwfUVz119FmmEA7v4m8BfgwIYXzI6PLlOsNLOXouIY\nv3abmV0Y3f+omW02s3Oix/uY2Tslvu9Q4I/x76u7v5wsrma2xMyOju7vaGa/MLPl0Wz6i83slYJj\nLzKzeWb2rpn9xsx2iF7b2cz+bGZvmtk70f2Sl1FEpLKynEV8PvCrKMx/IHCtmY03s38DcPcZwBIz\nWwTcDHw9u6ZKR2BmewIjgGRgySpgrLv3AEYCE8ws3iLxUcJIFGAY8CLwqejxp4BSF1IfBy4ys3PM\n7KAWmjUZ6Av0Az4DnAYUXvL4IvBZwtyFgcAZ0fPbALcQzvT0BdYAP2vh+0SkQjLLHnL3ecC/FDx9\nc8ExEyvXIunA/mRhvVV34G7g3+MX3P2xxP2nzey3hGJ6D6HA/jB6+VPAfwJXRo+HRa8Xcy2wHBgD\n/Cga6V7u7tOLHPtFYLy7vwe8Z2bXA5MKjrkuERv6Z2BQ1N7lwB+jY9aZ2feAh5rpBxGpoKrJIzKz\n48zsWTN73syKXj9LK5iiNVpqp5kNM7MV0WnJOjP7dgZtnGZmy8zsqWaOyUNfNtvOVvTlSe6+E2E0\nehRQm/iMw8zs4eg06wrCmutdANx9MbDazAYD/wrcC7weXdpoKLBmtmf0GQvMbD5wnrv/l7v/K7Az\noeDeYmbTzewF4KPAPlETPkqYkxBLzpyPJS+NrCH8QwEz62pmN5vZP6O2PwrsbFZ89XZhO83s/K3o\n01SYWRcze8LM5kbtvLbEcZn+fpbTzqz7sqAt20RtuKfE65n/ee+Q3D33N8I/BBYBexGyi+uBAwqO\nGQHcF90/HHg8p+0cBtyTcX8OJYyCnirxeuZ9WWY7W+xLYAlwdOLxNcAjiceLCJcrto8e/xiYnnj9\ndsKI97nNRECGAAAeSUlEQVTo8X9Gj9+lcRb+7sCg6H534Lki/99XAE9G918HnonuLwaOSRx3FvBy\nM+2fFLePMJp+GNg1ejwQ2ARsEz1+hDDBi1a0Mw+/n92in9sSTrcPyenvZ0vtzLwvE225EPhlsfbk\npT874q1aRrCHAS+4+0vuvgH4LSGIIqlJMAXQw8x6V7aZZbUTokk3WXH32YQCUUoe+rKcdkLr+/In\nwGEWdmiCUGjedfcN0XNjCo5/DJhI4/XWWdHj2R79jeTub7h7fXR/FbAOGBFNYNrWzL4afc+t0Wes\nAz4U9envgcuiCUsfA85txX9Ld8JGGO+ZWS/C9dySirRzIcXXlmf9+7kmutuF8I/Wwt+BvPx+ttRO\nyLgvoWHuwfGEzVWKyUV/dkTVUmALQydeZcu/GFoVTJGSctoJcGR0KuY+M/tEZZrWKnnoy3K11JdN\nJgy5+9vAbcCl0VPnAleb2Urg28DvCt7/KKGQxddbZwNdKXH91cz6EU77jgWWAm8RdoV6EpibaNPb\nhD79LqF/lxCWEN1BKMBF21/gJ0C36LP+F5hR8HrJ90btHETTCV+xTH8/o9OZc4E3gFnuXrjCIBe/\nn2W0E/LxZ/3HwMWU/n3IRX92RKlOcjKzacAJwDJ3PyR6bhJwNvBmdNjl7v5AkfceR/gLZBvCXwJr\n02xrBc0B+rr7Ggt5y38C9mvhPVJci33p7nsXvsndz03cvxO4s9QXuPvzhFOA8eP3gKK7/JpZd8Ka\n7nHufnfBa39OtslCcEo8Cjo9cdwEEtdkC9vv7lcl7i8lXFNOmpp4/egW2nlBNJJNyvz30903A4Mt\nRKrONLNh7l5qQllmymhn5n1pZiMJf//Wm9lwcjCi7kzSHsHeChxb5PkfuXtNdCtWXLchLDc4lrBm\n8XBgQOKQYqETZQdTpOg1wnKJkm1w91XxqSV3vx/YPjq9lyd56MsW5akvzWw7QtG6vbC4Ror2qZnt\nbmaftGB/4CLgrqzamac+jf4xcx9hXXFSrn4/S7UzJ305BBhlZouB3wBHmVnhbPZc9WdHkmqBbeYa\nWkv/iiq8lnkrMMDM9rKwyP5UwjKKpDwEU/wD2Le5diavbUTX/MzDcotKM0r/f8hDX8ZKtjNHfQlh\nPeoz7n5diddL9ekOhOVp7wF/JSy7+a+s2pl1n5rZLmbWI7rflbA2uL7gsMx/P8tpZ9Z9CeDul7t7\n3+hMyKnAw+5+esFhmfdnR5XVOtiJZjaWcF3qIndfWfB64TWBVwjXvmYS/lEwzd0Xmtl4wN395+4+\nw0IqzyJgNfC19P8zmnL3TWY2sbl2AqdYSAPaQDjt/eVKt9PMfk1YsvIRM3uZMDN1B3LUl+W0kxz0\nZdTOIcBXgPnRNTkHLifMJm+2T939ZeDgvLST7Pt0D+AXZmaEP0O3u/tDefuzXk47yb4vS8phf3ZI\nqYf9m9lewJ8T12B3Bd52dzeza4A93H1cwXu+ABzr7v8WPT4NOMzdt1i3F72usH8RkVZy5binquKz\niN39LW+s6lPZMs0JyriWWeRzc32bNGlS5m1QO9VOtbPjtnPzZufFF5077nAuu8z57GedXXZxdtvN\nGTHCueIK5847nSVLwrGSvkqcIm5yDc3Mdnf3N6KHnweeLvKehmuZhKUOpwKj026oiEg12LwZXngB\n6urCbc4cmDsXuneHmppwmzgx/PzoR6F4tpekLe1lOsWuoR1lIYprM/BPQjQdZrYHMNXdT/AS1zLT\nbKuISB5t3AjPPtu0mNbXw667NhbTb30LBg+G3oqHyJW0R7BrCWsIn/PoGixRmo2ZXQT8ADgTGtb0\nnZB4703ASkIh/jzwHym3NVXDhw/PugllUTvbl9rZvjp6O9evhwULGgtpXR3Mnw977tlYTE88MRTT\nXnlb3CdbSHWSk5kNJWwHNj1RYOPorv8G9gdqvcjU9WjdVq27txSVh5l5mv8dIiLtbe3aUDyTxXTh\nQth778ZiWlMDgwbBTju1//ebGa5JTqlKdQTr7rOj66iF4uiuojs7ROLp7yIiVW3VKpg3r2kxXbQI\n9t+/sZCeeSYMHAjdumXdWmkvFV8Ha2Ez61fcfb41f+XdgQfNbBPwc3ef2tzBIiJ5sHJlmHCULKYv\nvQQHHRQK6Sc/GSYgHXwwdOmSdWslTRUtsFHiyeWE1JOGp0scPsTdl0brZh80s4UekqGKmjx5csP9\n4cOHV821GhGpXm+/vWUxfeONMBKtqYFjjoFLLoEBA2D77bNt66xZs5g1a1a2jehkKho0YWYHEeLg\n1hAKa7y+9TB3f7OZz5gEvO/uPyrxuq7Bikiq3nij6UzeujpYsSJMOIpP89bWwn77wbbbtvx5WdM1\n2PRVosD2IxTYLeLgzGwJUFM4kcnMuhE2jV5lZh8iLNe5yt1nlvgOFVgRaRfu8OqrWxbTdeuaTj6q\nrQ0Tkrap0pkiKrDpS3sWccM6WGAZMMndb028vhg41N2XJ9fBmll/Qui5E05j/8rdSy7TUYEVkbZw\nhyVLtiym22wTCmiymPbt27ECG1Rg05fFOligYR1sv/hxch2suy8xs0tp3A9W1VNEtko56UfnnRd+\n7rFHxyqmko1croON9oN9Hvg08DohOvFUd3+2xPdoBCsiDcpJP6qtDddPd9st69ZmQyPY9OV1HWzD\nfrAAZvZb4CSgaIEVkc6rpfSj2loYNSoU0549s26tdCZ5XQdbuB/sq4SiKyKdWEvpR7W1MHp0WCaT\nRvqRSGvkeR2siHRiyfSjuKDG6UfxBKRx4+CQQ5R+JPlU6RHsPoSJTfMsDF/3BOaYWeE62FbvB6ug\nCZHqtWJFuEZaLP2otjakH517rtKPtoaCJiqvrElOZnYXMA243903t+oL2rYOdlvgOcIkp6XA34HR\npbas0yQnkerRXPpRcmlMHtKPOjJNckpfuQX2GOBrwBHAHcCt7v5cGe9r0zrY6LXjgOto3A9W62BF\nqkxz6UfJYlot6UcdiQps+lq1TMfMegCjgSsIk5CmAr909w0ljp9GWNu6LF6mY2bfJcwIduBt4Ax3\nf7XIe/9J436wG9y95CQnFViRbCXTj+JCWph+FBfUak4/6khUYNNXdoE1s48ApwFjCWtTfwUMBQ52\n9+El3rPFOlgz6+7uq6L75wED3f2sIu/VfrAiOZRMP0oW02T6Ufyzo6UfdSQqsOkra5KTmf2REApx\nO3BilLoE8Dsze7LU+4qtg42La+RDhFFs0a9F+8GKZCqZfhQXU6UfiZSn3GuwR7n7I236gsRuOonn\nrgFOJ+yqc7i7ryzyvsXACqDF/WA1ghXZesn0o7iYKv2o49IINn3lFtjPF3l6JTC/uW3movduUWAT\nr10CHODuXyvy2h7J/WCBiaX2g1WBFWmdOP0oeYo3mX6ULKZKP+qYVGDTV+462HHAkUA8ih0OzAH6\nm9l33f32Nn7/r4EZxV6IT0O7+1vRKerDAG24LtJKcfpRspgm049qapR+1BloHWzllTuCnQmMdfdl\n0ePewHTCjOLH3P2gZt7bj8Q6WDPb190XRffPI2y2PrbgPdoPVqQN4vSjZDGN04+SI1OlH4lGsOkr\ndwS7Z1xcI28CfaL1q0WX6EDTdbBm9jIwCRhpZvsDG4HFwDnRscl1sL2BP5pZcj/YosVVpLOK04+S\nxTROP6qpCelH550XHiv9SKTyyh3B3kiILrwjeuoLhAD+i4F73f2o1FpYBo1gpaOL04+SxTROP0qO\nTJV+JOXSCDZ95RZYAz5PWPcK8D/AnS1Vta0MmjiOxg3Xp7n795v5HhVY6TDi9KNkMY3Tj5LFVOlH\nsjVUYNPXYoGNcoH/2pZRaluDJrThunQGcfpRspAWph/FxVTpR9LeVGDT1+I1WHffZGabzaxHsfWq\nLby3rUET2nBdOhR3WLy4aSEtTD8680z42c9gr70U2CDSEZQ7yWkVMN/MHgRWx0+6+/lt+dLCoIki\nh2jDdalacfpRcmRamH40cWIorEo/Eum4yi2wd0W3duHu3wa+HQVN/ISwU89W0TpYyUKcfpQspsn0\no8GD4VvfCj979866tdKZaR1s5bUm7L8r0LecbeoK3tdcklMfYEbhXrFmdgQw2d2Pix5fCnipiU66\nBiuVUE76UVxUe/XKurUizdM12PSVG/Z/IvBDYAdCetMg4LvuPqqct0e3+LMagiaAk4H6Iu/5B7Bv\nVJyXAqcSQi1EKqKc9KNTT4VBg5R+JCLFlXuKeDLhGugsAHevN7O9W3pTW4MmoolVEwkJTvEynYWt\n+O8SKVs56UdnnhnWnCr9SETKVW6B3eDuK63pbIzNZbxvLbAt8Fximc4A4EDCLjkAH0BD9vAJiffe\nROOG658H/qPMtoqUVE760cSJcPDBSj8Ska1TbtDENOAh4FJCitP5wPbuPqGF9xVbB3sM8LC7bzaz\n/yBcW72syHu14bpsFaUfiZSma7DpK7fAdgOuAD5LuJ76F+Bqd/+gjPc2N8npZOALhWH/0WtLgEPd\n/Z0yvkMFtpMrJ/2opiac9lX6kYgKbCWUPYu4zV/QfIG9B/itu/+6yGvacF22EKcfxUU0LqhKPxJp\nHRXY9JU7i3g/4JtAv+R73P3otn6xmV1BuLa7RXGNDEluuG5mC0ttuA5aB9sRucOSJVsW08L0oxtu\ngL59Fdgg0hytg628ck8RzyNMOppD4+Qk3H1OGe/dYgRrZmcAZwNHu/u6Mj5jEvC+u/+oxOsawVa5\nOP0oWUwL04/ikanSj0S2nkaw6St3FvFGd/+vNn5H4TrY4wjb3H2qVHEtsuH6Z4Gr2vj9kjNx+lGy\nmCbTj2pqQvpRTQ3stlvWrRURaZtyR7CTCZus/xFoKIruvryF9zWsgwWWEdbBXk4IrIgnLz3u7l9P\nroM1s/7RdyU3XC+5TEcj2PyK04+Sp3gL049qa0Ngg9KPRCpHI9j0lTuC/Wr08+LEcw60FDZRah3s\niYQAiRcJS3+arIN19yVRPGK8H6yqZxWI04+SI9PC9KPRo8MyGaUfiUhHl+os4raug9V+sPkXpx8l\ni2lh+lFtLRxyiNKPRPJII9j0NTuCNbNvuft/Rve/6O53JF671t0vb+79JfaD/Wvi4eOE4IpC2g82\nR1auDBOOksU0mX505JEh/eigg5R+JCISa+kU8anAf0b3LwPuSLx2HOF66tY4E/htkee1H2xG3nmn\n6Ybgc+Y0TT/69KfDBCSlH4mINK+lAmsl7hd73CplrINtFa2Dbb04/ShZTJPpRyeeCJMnw377Kf1I\npNppHWzlNXsN1szq3L2m8H6xx818RqvXwWo/2PZVmH4UF9Nk+lEc3KD0I5HOQddg09dSgd0ErCaM\nVrsCa+KXgB3dvcWThGbWj1BgD44eHwdMIayDLZozbGbbAs8RJjktBf4OjC61ZZ0KbKPC9KP4ZtZY\nROOfSj8S6bxUYNOX9iziNq2Djd57HHAdjfvBah1sgXLSj+JiqvQjEUkqVWC7du36xgcffNA7izZV\nox133HHZ2rVrdy/2WtoFdhphbeuyxDKdUwgbuA8A/sXd60q895807ge7wd1LTnLqDAW2MP2ori6k\nH+2yS9NiOniw0o9EpGWlCmxn+Pu0PTV3JqDcoIm2uhX4KTA98dx84HPAzS28dzMwvJz9YDuaZPpR\nPDItTD8aNSoU0549s26tiIgUk2qBLbEO9jkAsxZPWBrh9HCHVk760amnKv1IRKTapD2C3RpO2Kau\nxf1gq0Uy/SjO5S1MPzrzTKUfiYh0BHkusK3aDzZvWko/+uQn4bzzlH4kItJR5bbARuH/uPtbZvZH\nQpJTLjdcf/vtxmIaj0yVfiQiedKRgyZmz57N2WefzcKFRVdyZibVWcSw5TrYxPOPAN8stml7kf1g\nZwJXufvMEt9RsVlvyfSjuJgm04/i2bxKPxKRPKvWWcT9+/dn2rRpHH300al8/rvvvsuZZ57Jgw8+\nyK677sq1117L6NGjSx6f2Szi5DpYM3uZsA72XcLM4l2Ae82s3t1HFKyD7Q380cyS+8EWLa5pKUw/\niotpMv1o9Gj4wQ+UfiQi0lF8/etfZ8cdd+Stt96irq6OkSNHMmjQIAYMGNDqz0q7LCT3g+3r7rcS\nCuZKQtjESHcfAeGUcBwy4e5LCPvEdgW6kPJ+sO6weDH84Q9w+eVw7LFhLemhh8LNN8OmTTBuHPzf\n/4XTwQ8+CN//PnzpS7DvviquIiJZevTRR+nTp0/D4/79+zNlyhQGDhxIz549GT16NOvXr294/d57\n72Xw4MH07NmToUOHMn/+fADWrFnDXXfdxTXXXEPXrl0ZMmQIJ510Erfffnub2pV2abgVOLbguXgd\n7KOl3hTtB/uz6L0HAqPN7ID2aNDmzfDcc/Cb38DFF8PRR0OvXjBsGNx+e5hwdN55YbbvG2/AjBlw\nzTXwuc/BXnu1PQ2pWq59qJ3tS+1sX2qnlFK48vOOO+5g5syZLFmyhHnz5nHbbbcBMHfuXMaNG8fU\nqVNZvnw548ePZ9SoUWzYsIHnn3+e7bffnn322afhcwYOHMiCBQva1KZUC2w06/fdgueec/cXaH43\nnob9YN19A2FLu5Na+/0bN8LTT8P06fD//h/8679Cjx4wYgTceWcIabjkklBwX3kF7r4bJk2CE06A\nj360faMFq+UPnNrZvtTO9qV25oNZ+9zSdMEFF9C7d2923nlnTjzxROrr6wGYOnUqEyZM4NBDD8XM\nGDt2LF26dOHxxx9n1apV7FQQOLDTTjvx/vvvt6kNeZ1F3Or9YJPpR/H10mLpR4MGhRGriIi0TY7n\nQDXo3bsxTrlbt24sXboUgJdeeonp06fz05/+FAB3Z8OGDbz++uvsv//+vPfee00+Z+XKlXz4wx9u\nUxvyWmBbbeedm6YfjR6t9CMREWmqT58+XHHFFVx22WVbvLZmzRo2btzIiy++2HCaeN68eRx44IFt\n+zJ3T/UG7AU8VeT5R4CaEu85Angg8fhS4JJmvsN100033XRr3a3U36d51q9fP7///vv9gw8+aLg9\n+OCD3qdPnybHPPTQQw2PJ0+e7GPHjnV39yeffNL79u3rTzzxhLu7r1q1yu+77z5ftWqVu7uPHj3a\nx4wZ46tXr/a//e1vvvPOO/szzzxTsj2l+tHdKzKCNUpfby31/D+AfaMc46XAqUDJhUiuPQ1FRDqN\nkSNHNnk8ZMiQJpOcmou6r62tZerUqUycOJFFixbRtWtXhg4dyrBhwwC44YYbOPPMM9ltt93YZZdd\nuOmmm9q0RAey2Q82uQ52BVBsHWyr9oMVEZH2kfegibxpLmgi9SQnERGpHiqwrdNcga2aiAQzO87M\nnjWz583skhLHXG9mL5hZvZkNqnQbozY0204zG2ZmK8ysLrp9O4M2TjOzZWb2VDPH5KEvm21nHvoy\naseeZvawmS0ws/lmdn6J4zLt03LamXWfmlkXM3vCzOZG7by2xHFZ92WL7cy6Lwvask3UhntKvN7Q\nn5VuW4dW6uJsnm6EfwgsIkyY2h6oBw4oOGYEcF90/3Dg8Zy2cxhwT8b9ORQYRJHJZ3npyzLbmXlf\nRu3YHRgU3e8OPJfT389y2pl5nwLdop/bAo8TdtbKVV+W2c7M+zLRlguBXxZrT5H+dCkfzUxyqpYR\nbDnBEycB0wHc/Qmgh5n1prLKDcjIdFKWFwkAKZCHviynnZBxXwK4+xvuXh/dXwUsJKzlTsq8T8ts\nJ2T/+7kmutuF8I/Wwt+BzPsy+u6W2gk5+P00sz2B44H/LnFIYX9KO6mWAlsseKLwL4bCY14rckza\nymknwJHRqa37zOwTlWlaq+ShL8uVq76Mdo8aBBT+RZWrPm2mnZBxn0anM+cCbwCz3P2ZgkNy0Zdl\ntBPy8fv5Y+BiwtKcYgr7U9pJtRTYjmQO0NfdBxHylv+UcXuqWa760sy6A38ALohGiLnUQjsz71N3\n3+zug4E9gU+Z2bBKt6EcZbQz8740s5HAsujMRXNLJiUF1VJgXwP6Jh7vGT1XeEyfFo5JW4vtdPdV\n8akld78f2N7M8hbemIe+bFGe+tLMtiMUrdvd/e4ih+SiT1tqZ5761N3fA+4DDi14KRd9GSvVzpz0\n5RBglJktBn4DHGVm0wuOKexPaSfVUmAbgifMbAdC8EThbLh7gNMBzOwIYIW7L6tsM1tuZ/JakZkd\nRlgqtbyyzQxfT+l/zeahL2Ml25mjvgS4BXjG3a8r8Xpe+rTZdmbdp2a2i5n1iO53BT5DmCyYlHlf\nltPOrPsSwN0v97BV6N6Ev48edvfTCw4r7E9pJ1WRRezum8xsIjCTxuCJhWY2PrzsP3f3GWZ2vJkt\nAlYDX8tjO4FTzOwcYANhv9wvV7qdlggAMbOXCQEgO5CjviynneSgL6N2DgG+AsyPrsk5cDlhNnlu\n+rScdpJ9n+4B/MLMjPBn6HZ3fyhvf9bLaSfZ92VJLfRn1Zk9ezZnn302CxcuzLopTShoQkREGljO\ngyb69+/PtGnTOProo1P5/BtuuIHbbruN+fPnM2bMGG655ZZmj7dmgiaqYgQrIiJSCR/72Me48sor\n+ctf/sLatWu36rOq5RqsiIhIUY8++ih9+jTO0+rfvz9Tpkxh4MCB9OzZk9GjR7N+/fqG1++9914G\nDx5Mz549GTp0KPPnz2947eSTT2bUqFH0aoeNw1VgRUSk6lnBDjp33HEHM2fOZMmSJcybN4/bbrsN\ngLlz5zJu3DimTp3K8uXLGT9+PKNGjWLDhg3t3iYVWBERaRWz9rml6YILLqB3797svPPOnHjiidTX\nh0neU6dOZcKECRx66KGYGWPHjqVLly48/vjj7d4GFVgREWkV9/a5pal378b0zG7durFqVchUeeml\nl5gyZQq9evWiV69e9OzZk1dffZXXX3+93dugSU4iItJp9OnThyuuuILLLrss9e/SCFakFcysV7RF\nWZ2ZLTWzV6P7c81sdtbtE+kM1q9fz7p16xpurbl+evbZZ3PTTTfx97//HYDVq1czY8YMVq8OS4A3\nbdrEBx98wKZNm9i4cSPr1q1j06ZNbWqnRrAirRAl8QwGMLPvAKvc/UfZtkqkcxk5cmSTx0OGDGky\nyalwwlNSbW0tU6dOZeLEiSxatIiuXbsydOhQhg0LUdLXXHMNV111VcNn/OpXv2LSpEl85zvfaXU7\nFTQh0kZmNgl4Py6wZva+u384Cn2/ClgBHETI/n0aOJ+wtdnJ7r7EzHYBbqIxB/ZCd//fSv93iCTl\nPWgib5oLmtApYpH2k/xb6RDg34BPAGOBfd39MGAacF50zHXAj9z9cOAUSu/XKSJVSKeIRdLxD3d/\nEyDKeP1L9Px8Qr4ywDHAAGs8n9XdzLolNvIWkSqmAiuSjnWJ+5sTjzfT+OfOgMPdvf1XuItI5nSK\nWKT9tHbp/EzggoY3mw1s3+aISJZUYEXaT6mZIaWevwA41MzmmdnTwPh0miUiWdAsYhERaaBZxK2j\nWcQiIiIVpgIrIiKSAhVYERGparNnz2bAgAFZN2MLKrAiIlI1+vfvz8MPP9zkuaFDh7Jw4cKt/uz1\n69dz1lln0a9fP3r06EFNTQ0PPPBAmz9PBVZERATYuHEjffv25W9/+xsrV67k6quv5ktf+hIvv/xy\nmz5PBVZERKrao48+Sp8+fRoe9+/fnylTpjBw4EB69uzJ6NGjWb9+fcPr9957L4MHD6Znz54MHTqU\n+fPnA2Hf2O985zsNnzVy5Ej69+/PnDlz2tQuFVgREal6hTvo3HHHHcycOZMlS5Ywb948brvtNgDm\nzp3LuHHjmDp1KsuXL2f8+PGMGjWq6JZ3y5Yt44UXXuDAAw9sU5tUYEVEpFXM2ueWpgsuuIDevXuz\n8847c+KJJ1JfXw/A1KlTmTBhAoceeihmxtixY+nSpQuPP/54k/dv3LiR0047jTPOOIP99tuvTW1Q\ngRURkVZxb59bmnr37t1wv1u3bqxatQqAl156iSlTptCrVy969epFz549efXVV3n99dcT/33Oaaed\nRpcuXfjpT3/a5jYo7F9ERDqNPn36cMUVV3DZZZeVPGbcuHG8/fbbzJgxg2233bbN36URrIiIVJX1\n69ezbt26hlux66elnH322dx00038/e9/B2D16tXMmDGD1atXAzBhwgSeffZZ7rnnHnbYYYetaqdG\nsCIiUlVGjhzZ5PGQIUOaTHIqnPCUVFtby9SpU5k4cSKLFi2ia9euDB06lGHDhvHyyy/z85//nB13\n3LHhFLOZcfPNNzN69OhWt1Nh/yIi0kBh/62jsH8REZEKU4EVERFJgQqsiIhIClRgRUREUqACKyIi\nkgIVWBERkRRoHayIiDTYcccdl5lZ75aPFAj9Veo1rYMVERFJgU4Ri4iIpEAFVkREJAUqsCIiIilQ\ngRUREUmBCqyIiEgK/j+1903hnbcGTgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "k=np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]).reshape(3,5)\n", + "for i in range(k.shape[1]):\n", + " plt.scatter([i]*k.shape[0], k[:,i])\n", + "k_mean = k.mean(axis=0)\n", + "k_std = k.std(axis=0)\n", + "\n", + "plt.errorbar(np.arange(k.shape[1]),k_mean,yerr=k_std)\n", + "line = []\n", + "label = []\n", + "_l = [311,312,313]\n", + "for i in range(k.shape[0]):\n", + " plt.subplot(_l[i])\n", + " tmp, = plt.plot(np.arange(k.shape[1]),k[i,:],label='Line{0}'.format(i))\n", + " line += [tmp]\n", + " #label += ['Line{0}'.format(i)]\n", + "\n", + "plt.title('Raw Signal')\n", + "plt.xlabel('Time')\n", + "plt.ylabel('Energy')\n", + "plt.legend(handles=line, bbox_to_anchor=(1, 0.3),loc=2)\n", + "plt.show()" + ] + }, + { + "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.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/start_ipython_osx.sh b/start_ipython_osx.sh new file mode 100755 index 0000000..b63c80c --- /dev/null +++ b/start_ipython_osx.sh @@ -0,0 +1,7 @@ +# Assume the virtualenv is called .env + +#cp frameworkpython .env/bin +#.env/bin/frameworkpython -m IPython notebook + +cp frameworkpython ~/.virtualenvs/assignment1/bin +~/.virtualenvs/assignment1/bin/frameworkpython -m IPython notebook diff --git a/test/SensorCodeSample.cpp b/test/SensorCodeSample.cpp new file mode 100644 index 0000000..7471c6f --- /dev/null +++ b/test/SensorCodeSample.cpp @@ -0,0 +1,614 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "opencv2/opencv.hpp" +#include "opencv2/highgui.hpp" +#include "opencv2/imgproc.hpp" +#include "opencv2/imgcodecs.hpp" +#include "opencv2/videoio.hpp" + +using namespace cv; +using namespace std; + +#define PI 3.14159265 +#define PAUSE printf("Press Enter key to continue..."); fgetc(stdin); + +void PrintSensorTargets(SensorTarget* targets, int numTargets) +{ + int targetIdx; + +// #ifdef __LINUX__ +// printf("\033[2J\033[1;1H"); +// #else +// system("cls"); +// #endif + if (numTargets > 0) + { + for (targetIdx = 0; targetIdx < numTargets; targetIdx++) + { + printf("Target #%d: \nX = %lf \nY = %lf \nZ = %lf \namplitude = %lf\n\n\n ", + targetIdx, + targets[targetIdx].xPosCm, + targets[targetIdx].yPosCm, + targets[targetIdx].zPosCm, + targets[targetIdx].amplitude); + } + } + else + { + printf("No target detected\n"); + } + //sleep(1); +} + +void showRTheta(int* rasterImage, int sizeX, int sizeY, int width, int height, Mat* new_frame) +{ + namedWindow("SHOW1",1); + int bound = sizeX * sizeY; + double ratioX = width/sizeX; + double ratioY = height/sizeY; + + Mat frame = Mat::zeros(sizeY,sizeX, CV_8UC1); + + //GetRawImageSlice phi-R output image + for (int i=0,j=0;i(j,idx) = rasterImage[i]; + } + resize(frame,*new_frame,(*new_frame).size(),ratioY,ratioX,INTER_NEAREST); + imshow("SHOW1", *new_frame); +} + +void showThetaPhi(int* rasterImage2, int sizeX2, int sizeY2, int sizeZ2, int width2, int height2, Mat* new_frame2) +{ + namedWindow("SHOW2",1); + int bound2 = sizeX2 * sizeY2 * sizeZ2; + double ratioX2 = width2/sizeX2; + double ratioY2 = height2/sizeY2; + + Mat frame2 = Mat::zeros(sizeY2,sizeX2, CV_8UC1); + + //GetRawImage output theta-phi mapping image + ///* + for (int i=0,j=0;i(j,idx) += rasterImage2[i]; + //cout << rasterImage2[i] <<" "; + //if((i+1)%sizeX2==0) cout< 0 ~ 2R + X += (rangeX / 2); + Y += (rangeY / 2); + + if (X>max_X) max_X = X; + if (Y>max_Y) max_Y = Y; + if (X(Y,X) += rasterImage2[i]; + } + frame3.mul(0.00390625); // value down to 0-255 + resize(frame3,*new_frame3,(*new_frame3).size(),ratioY3,ratioX3,INTER_NEAREST); + imshow("SHOW3", *new_frame3); + /* + cout << "rangeX: " << rangeX <= thres; + //mask out output + (*frame).copyTo(output,mask); + + + //locate object + int sumR=0,sumC=0,ctr=0,centerR=0,centerC=0; + for (int i=0;i<(output).rows;i++) + { + for (int j=0;j<(output).cols;j++) + { + if ((int)(output).at(i,j) != 0){ + //cout << (int)output.at(i,j) << " "; + sumR += i; + sumC += j; + ctr += 1; + } + } + cout << endl; + } + //cout << sumR << "," << sumC << "," << ctr <(centerR+i,centerC+i) = 100; + output.at(centerR-i,centerC-i) = 100; + output.at(centerR+i,centerC-i) = 100; + output.at(centerR-i,centerC+i) = 100; + } + */ + //show image + //imshow("SHOW4", output); +} + +void log(Mat *frame) +{ + WALABOT_RESULT res; + AntennaPair * antennaPairs; + int numPairs; + res = Walabot_GetAntennaPairs(&antennaPairs, &numPairs); + assert(res == WALABOT_SUCCESS); + + //Walabot_GetSignal + double* signal; + double* timeAxis; + double x; + double y; + int numSamples; + fstream fp; + fp.open ("data/walabot.log",ios::out|ios::app); + for (int i=0;i Distance scanning through air; + // -> high-resolution images + // -> slower capture rate + res = Walabot_SetProfile(PROF_SENSOR); + assert(res == WALABOT_SUCCESS); + //cout << "2" << endl; + + // Setup arena - specify it by Cartesian coordinates(ranges and resolution on the x, y, z axes); + // In Sensor mode there is need to specify Spherical coordinates(ranges and resolution along radial distance and Theta and Phi angles). + res = Walabot_SetArenaR(minInCm, maxInCm, resICm); + assert(res == WALABOT_SUCCESS); + //cout << "3" << endl; + + // Sets polar range and resolution of arena (parameters in degrees). + res = Walabot_SetArenaTheta(minIndegrees, maxIndegrees, resIndegrees); + assert(res == WALABOT_SUCCESS); + //cout << "4" << endl; + + // Sets azimuth range and resolution of arena.(parameters in degrees). + res = Walabot_SetArenaPhi(minPhiInDegrees, maxPhiInDegrees, resPhiInDegrees); + assert(res == WALABOT_SUCCESS); + //cout << "5" << endl; + + FILTER_TYPE filterType = mtiMode ? + FILTER_TYPE_MTI : //Moving Target Identification: standard dynamic-imaging filter + FILTER_TYPE_NONE; + + res = Walabot_SetDynamicImageFilter(filterType); + assert(res == WALABOT_SUCCESS); + //cout << "6" << endl; + + // 3) Start: Start the system in preparation for scanning. + // ======================================================= + res = Walabot_Start(); + assert(res == WALABOT_SUCCESS); + //cout << "7" << endl; + + // 4) Trigger: Scan(sense) according to profile and record signals to be available + // for processing and retrieval. + // ================================================================================ + if (!mtiMode) // if MTI mode is not set - start calibrartion + { + // calibrates scanning to ignore or reduce the signals + res = Walabot_StartCalibration(); + assert(res == WALABOT_SUCCESS); + //cout << "8" << endl; + } + + /* + ################################################################# + # # + # Define opencv parameter(s) # + # # + ################################################################# + */ + + bool recording = true; // walabot start running flag + bool mode = false; // record video flag + int width = 640; // frame-w + int height = 480; // frame-h + int width2 = 640; // frame2-w + int height2 = 480; // frame2-h + Size frameSize(width, height); + VideoWriter video("data/Thz.mov", CV_FOURCC('m','p','4','v'),10,frameSize,false); + Mat new_frame = Mat::zeros(height, width, CV_8UC1); + Mat new_frame2 = Mat::zeros(height2, width2, CV_8UC1); + Mat new_frame3 = Mat::zeros(height2, width2, CV_8UC1); + Mat new_frame4 = Mat::zeros(height2, width2, CV_8UC1); + + if (!video.isOpened()) + { + // cout << "ERROR: Fail to write the video" << endl; + //return -1; + } + + while (recording) + { + // calibrates scanning to ignore or reduce the signals + res = Walabot_GetStatus(&appStatus, &calibrationProcess); + assert(res == WALABOT_SUCCESS); + //cout << "9" << endl; + + // 5) Trigger: Scan(sense) according to profile and record signals to be + // available for processing and retrieval. + // ==================================================================== + res = Walabot_Trigger(); + assert(res == WALABOT_SUCCESS); + //cout << "10" << endl; + + // 6) Get action : retrieve the last completed triggered recording + // ================================================================ + res = Walabot_GetSensorTargets(&targets, &numTargets); + assert(res == WALABOT_SUCCESS); + //cout << "11" << endl; + + res = Walabot_GetRawImageSlice(&rasterImage, &sizeX, &sizeY, &sliceDepth, &power); + assert(res == WALABOT_SUCCESS); + res = Walabot_GetRawImage(&rasterImage2, &sizeX2, &sizeY2, &sizeZ2, &power2); + assert(res == WALABOT_SUCCESS); + //cout << "12" << endl; + + // ****************************** + // TODO: add processing code here + // ****************************** + + /*- + check value (print it all out) + */ + /* + cout << "sizeX2: " << sizeX2 <> tmp' + os.system(cmd1) + print prev.value + print ctr.value + prev.value=0 + ctr.value=0 + + if e2.is_set(): + break + +def ctrl(e,flag): + if flag: + e.set() + else: + e.clear() + + +if __name__ == '__main__': + q = mp.Queue() + e = mp.Event() + e2 = mp.Event() + prev = mp.Value('d',0.0) + ctr = mp.Value('d',0.0) + state = mp.Value('d',0.0) + + p1 = mp.Process(target=test1, args=(q,e,e2,prev,ctr,state)) + p1.start() + + for i in range(20): + if i%2==0: + print i + print 'p1',p1.is_alive() + print 'e',e.is_set() + time.sleep(1) + ctrl(e,True) + print 'p1',p1.is_alive() + print 'e',e.is_set() + else: + print i + print 'p1',p1.is_alive() + print 'e',e.is_set() + time.sleep(1) + ctrl(e,False) + print 'p1',p1.is_alive() + print 'e',e.is_set() + + e2.set() diff --git a/test/mask.py b/test/mask.py new file mode 100644 index 0000000..c5ae2bb --- /dev/null +++ b/test/mask.py @@ -0,0 +1,35 @@ +import tensorflow as tf +import numpy as np + +x = tf.placeholder(tf.float32,[None,5]) +y_hat = tf.placeholder(tf.float32,[None,5]) +w = tf.Variable(tf.ones([5,5])) + +f1 = tf.matmul(x,w) +f2 = tf.add(y_hat,1) + +c1 = tf.less(x,0.5) +c2 = tf.less(y_hat,0.5) +#c3 = tf.logical_xor(c1,c2) + +d1 = tf.cast(c1,tf.float32) +d2 = tf.cast(c2,tf.float32) + +pred = tf.equal(d1,d2) +acc = tf.reduce_mean(tf.cast(pred,tf.float32)) + +init = tf.initialize_all_variables() +sess = tf.Session() +sess.run(init) + +data = np.array([0,1,0,1,0]).reshape(1,5) +label = np.array([0,1,0,1,1]).reshape(1,5) + + +a,b,c,d,e,f = sess.run([c1,c2,d1,d2,pred,acc],feed_dict={x:data,y_hat:label}) +print 'x_mask';print a +print 'y_mask';print b +print 'x_mask_cast';print c +print 'y_mask_cast';print d +print 'pred';print e +print 'acc';print f diff --git a/test/mat.cpp b/test/mat.cpp new file mode 100644 index 0000000..8a10ba3 --- /dev/null +++ b/test/mat.cpp @@ -0,0 +1,139 @@ +#include +#include +#include +#include +#include +#include +#include +#include "opencv2/opencv.hpp" +#include "opencv2/highgui.hpp" +#include "opencv2/imgproc.hpp" +#include "opencv2/imgcodecs.hpp" +#include "opencv2/videoio.hpp" + +using namespace cv; +using namespace std; + +#define PI 3.14159265 +#define PAUSE printf("Press Enter key to continue..."); fgetc(stdin); + +void easyAdd() +{ + Mat a1 = Mat::zeros(5,5, CV_8UC1); + Mat a2 = Mat::eye(5,5, CV_8UC1); + Mat a3 = Mat::zeros(5,5, CV_8UC1); + Mat mask; + a3 = a1+a2*10; + mask = a3 == 0; + cout << a3 <(3,3) << 0, -1, 0, + -1, 5, -1, + 0, -1, 0); + Mat kern_mask = kern > 0; + Mat output; + kern.copyTo(output,kern_mask); + cout << kern << endl; + cout << kern_mask << endl; + cout << output << endl; + + //cout << "type of sum(a3) " << typeid(sum(a3)[0]).name() <(i,j) += ctr; + ctr++; + } + } + + minMaxLoc( m, &minVal, &maxVal, &minLoc, &maxLoc ); + + cout << "m: " << endl << m <(maxLoc.x,maxLoc.y) << endl; + + //double threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type) +} + +void simulation() +{ + Mat matx = (Mat_(5,5) << 0, 1, 2, 1, 0, + 1, 2, 3, 2, 1, + 2, 3, 4, 4, 3, + 1, 2, 3, 2, 1, + 0, 1, 2, 1, 0); + Mat mask = matx >= 2; + Mat output; + matx.copyTo(output,mask); + cout << output << endl; + + int sumR=0,sumC=0,ctr=0,centerR=0,centerC=0; + //cout << output.rows<(i,j) != 0){ + cout << (int)output.at(i,j) << " "; + sumR += i; + sumC += j; + ctr += 1; + } + } + cout << endl; + } + + centerR = sumR / ctr; + centerC = sumC / ctr; + //cout << centerR <(centerR,centerC) = 100; + cout << output << endl; +} + +void log() +{ + fstream fp; + fp.open ("walabot.log",ios::out|ios::app); + fp << "Writing this to a file.\n"; + fp.close(); +} + +double fp() +{ + int a=1,b=21; + double c = (double)a/21; + return c; +} + + +int main() +{ + //easyAdd(); + //minMaxid(); + //simulation(); + //log(); + cout << fp()<> tmp' + cmd2 = 'echo mem:'+str(prev_mem.value)+'>> tmp' + cmd3 = 'echo swap:'+str(prev_swap.value)+'>> tmp' + os.system(cmd1) + os.system(cmd2) + os.system(cmd3) + print prev_cpu.value + print prev_mem.value + print prev_swap.value + print ctr.value + prev_cpu.value=0 + prev_mem.value=0 + prev_swap.value=0 + ctr.value=0 + + if e2.is_set(): + break + +def ctrl(e,flag): + if flag: + e.set() + else: + e.clear() + + +if __name__ == '__main__': + pass + #''' + e = mp.Event() + e2 = mp.Event() + prev_cpu = mp.Value('d',0.0) + prev_mem = mp.Value('d',0.0) + prev_swap = mp.Value('d',0.0) + ctr = mp.Value('d',0.0) + state = mp.Value('d',0.0) + + p1 = mp.Process(target=log, args=(e,e2,prev_cpu,prev_mem,prev_swap,ctr,state)) + p1.start() + + for i in range(10): + if i%2==0: + print i + print 'p1',p1.is_alive() + print 'e',e.is_set() + time.sleep(1) + ctrl(e,True) + print 'p1',p1.is_alive() + print 'e',e.is_set() + else: + print i + print 'p1',p1.is_alive() + print 'e',e.is_set() + time.sleep(1) + ctrl(e,False) + print 'p1',p1.is_alive() + print 'e',e.is_set() + + e2.set() + #''' diff --git a/test/pd.py b/test/pd.py new file mode 100644 index 0000000..e1cac1b --- /dev/null +++ b/test/pd.py @@ -0,0 +1,7 @@ +import pandas as pd +import numpy as np + +data = pd.read_csv('data/123.txt') +#data = np.genfromtxt('data/123.txt') +print data +print type(data) diff --git a/test/plot.py b/test/plot.py new file mode 100644 index 0000000..76b207c --- /dev/null +++ b/test/plot.py @@ -0,0 +1,251 @@ +import numpy as np +from scipy import signal +import matplotlib.pyplot as plt + +def sameObject_diffR(a1,a2,a3,a4,a5,a6,a7,a8,size,idx): + a1 = a1.mean(axis=0) + a2 = a2.mean(axis=0) + a3 = a3.mean(axis=0) + a4 = a4.mean(axis=0) + a5 = a5.mean(axis=0) + a6 = a6.mean(axis=0) + a7 = a7.mean(axis=0) + a8 = a8.mean(axis=0) + + m = np.mean((a1,a2,a3,a4,a5,a6,a7,a8),axis=0) + a1 = abs(a1-m) + a2 = abs(a2-m) + a3 = abs(a3-m) + a4 = abs(a4-m) + a5 = abs(a5-m) + a6 = abs(a6-m) + a7 = abs(a7-m) + a8 = abs(a8-m) + + plt.clf() + plt.subplot(811) + plt.title('{0}30'.format(size)) + plt.plot(np.arange(a1.shape[0]),a1) + + plt.subplot(812) + plt.title('{0}40'.format(size)) + plt.plot(np.arange(a2.shape[0]),a2) + + plt.subplot(813) + plt.title('{0}50'.format(size)) + plt.plot(np.arange(a3.shape[0]),a3) + + plt.subplot(814) + plt.title('{0}60'.format(size)) + plt.plot(np.arange(a4.shape[0]),a4) + + plt.subplot(815) + plt.title('{0}70'.format(size)) + plt.plot(np.arange(a5.shape[0]),a5) + + plt.subplot(816) + plt.title('{0}80'.format(size)) + plt.plot(np.arange(a6.shape[0]),a6) + + plt.subplot(817) + plt.title('{0}90'.format(size)) + plt.plot(np.arange(a7.shape[0]),a7) + + plt.subplot(818) + plt.title('{0}100'.format(size)) + plt.plot(np.arange(a8.shape[0]),a8) + + plt.savefig('data/sml_1/size_{0}_pair_{1}.png'.format(size,idx)) + +def diffObject_sameR(a1,a2,a3,size,idx): + a1 = a1.mean(axis=0) + a2 = a2.mean(axis=0) + a3 = a3.mean(axis=0) + + m = np.mean((a1,a2,a3),axis=0) + a1 = abs(a1-m) + a2 = abs(a2-m) + a3 = abs(a3-m) + + plt.clf() + + plt.subplot(311) + plt.title('s{0}'.format(size)) + plt.plot(np.arange(a1.shape[0]),a1) + + plt.subplot(312) + plt.title('m{0}'.format(size)) + plt.plot(np.arange(a2.shape[0]),a2) + + plt.subplot(313) + plt.title('l{0}'.format(size)) + plt.plot(np.arange(a3.shape[0]),a3) + + plt.savefig('data/sml_2/dist_{0}_pair_{1}.png'.format(size,idx)) + +def toggle(k,a,b,c,d,e,idx): + plt.clf() + for i in range(k.shape[1]): + plt.scatter([i]*k.shape[0], k[:,i]) + k_mean = k.mean(axis=0) + k_std = k.std(axis=0) + plt.errorbar(np.arange(k.shape[1]),k_mean,yerr=k_std) + plt.savefig('data/small/plot{0}_{1}.png'.format(idx,0)) + + plt.clf() + for i in range(a.shape[1]): + plt.scatter([i]*a.shape[0], a[:,i]) + a_mean = a.mean(axis=0) + a_std = a.std(axis=0) + plt.errorbar(np.arange(a.shape[1]),a_mean,yerr=a_std) + plt.savefig('data/small/plot{0}_{1}.png'.format(idx,1)) + + plt.clf() + for i in range(b.shape[1]): + plt.scatter([i]*b.shape[0], b[:,i]) + b_mean = b.mean(axis=0) + b_std = b.std(axis=0) + plt.errorbar(np.arange(b.shape[1]),b_mean,yerr=b_std) + plt.savefig('data/small/plot{0}_{1}.png'.format(idx,2)) + + plt.clf() + for i in range(c.shape[1]): + plt.scatter([i]*c.shape[0], c[:,i]) + c_mean = c.mean(axis=0) + c_std = c.std(axis=0) + plt.errorbar(np.arange(c.shape[1]),c_mean,yerr=c_std) + plt.savefig('data/small/plot{0}_{1}.png'.format(idx,3)) + + plt.clf() + for i in range(d.shape[1]): + plt.scatter([i]*d.shape[0], d[:,i]) + d_mean = d.mean(axis=0) + d_std = d.std(axis=0) + plt.errorbar(np.arange(d.shape[1]),d_mean,yerr=d_std) + plt.savefig('data/small/plot{0}_{1}.png'.format(idx,4)) + + plt.clf() + for i in range(e.shape[1]): + plt.scatter([i]*e.shape[0], e[:,i]) + e_mean = e.mean(axis=0) + e_std = e.std(axis=0) + plt.errorbar(np.arange(e.shape[1]),e_mean,yerr=e_std) + plt.savefig('data/small/plot{0}_{1}.png'.format(idx,5)) +# line = [] +# label = [] +# for i in range(k.shape[0]): +# tmp, = plt.plot(np.arange(k.shape[1]),k[i,:],label='Line{0}'.format(i)) +# line += [tmp] + #label += ['Line{0}'.format(i)] +# plt.legend(handles=line, bbox_to_anchor=(1, 0.3),loc=2) + +# plt.title('Raw Signal') +# plt.xlabel('Time') +# plt.ylabel('Energy') +# plt.savefig('data/small/plot{0}.png'.format(idx)) +# plt.show() + +def dot(k): + plt.plot(np.arange(k.shape[0]),k) +# for i in range(k.shape[0]): +# tmp, = plt.plot(np.arange(k.shape[1]),k[i,:],label='Line{0}'.format(i)) + + plt.title('Raw Signal') + plt.xlabel('Time') + plt.ylabel('Energy') +# plt.legend(handles=line, bbox_to_anchor=(1, 0.3),loc=2) + plt.savefig('plot.png') + plt.show() + +def compare(a,b,c,i): # show mean + plt.clf() + a = a.mean(axis=0) + b = b.mean(axis=0) + c = c.mean(axis=0) + + plt.subplot(311) + plt.plot(np.arange(a.shape[0]),a,label='1') + + plt.subplot(312) + plt.plot(np.arange(b.shape[0]),b,label='2') + + plt.subplot(313) + plt.plot(np.arange(c.shape[0]),c,label='3') + + plt.savefig('data/wv/plot{0}.png'.format(i)) + plt.show() + +def diff(a,b,c,idx): # abs(sample 0 - mean) + plt.clf() + a_diff = abs(a - a.mean(axis=0)) + b_diff = abs(b - b.mean(axis=0)) + c_diff = abs(c - c.mean(axis=0)) + + plt.subplot(311) + plt.plot(np.arange(a.shape[1]),a_diff[0],label='1') + plt.subplot(312) + plt.plot(np.arange(b.shape[1]),b_diff[0],label='2') + plt.subplot(313) + plt.plot(np.arange(c.shape[1]),c_diff[0],label='3') + plt.savefig('data/abs_x_diff/plot{0}.png'.format(idx)) + plt.show() + +def std(a,b,c,idx): # all sample's std + plt.clf() + a_std = np.std(a,axis=0) + b_std = np.std(b,axis=0) + c_std = np.std(c,axis=0) + + plt.subplot(311) + plt.plot(np.arange(a.shape[1]),a_std,label='1') + plt.subplot(312) + plt.plot(np.arange(b.shape[1]),b_std,label='2') + plt.subplot(313) + plt.plot(np.arange(c.shape[1]),c_std,label='3') + plt.savefig('data/std/plot{0}.png'.format(idx)) + plt.show() + +def show_fft(a,b,c,idx): + plt.clf() + a_fft = np.fft.fft(np.mean(a,axis=0)) + a_freq = np.fft.fftfreq(a_fft.shape[-1],d=1e-11) + a_FQ = np.sqrt(a_fft.real**2+a_fft.imag**2) + b_fft = np.fft.fft(np.mean(b,axis=0)) + b_freq = np.fft.fftfreq(b_fft.shape[-1],d=1e-11) + b_FQ = np.sqrt(b_fft.real**2+b_fft.imag**2) + c_fft = np.fft.fft(np.mean(c,axis=0)) + c_freq = np.fft.fftfreq(c_fft.shape[-1],d=1e-11) + c_FQ = np.sqrt(c_fft.real**2+c_fft.imag**2) + + plt.subplot(311) + plt.plot(a_freq,a_FQ,label='1') + plt.subplot(312) + plt.plot(b_freq,b_FQ,label='2') + plt.subplot(313) + plt.plot(c_freq,c_FQ,label='3') + plt.savefig('data/fft/plot{0}.png'.format(idx)) + plt.show() + +def p(): + plt.clf() + t= np.linspace(0,1,500,endpoint=False) + #sin = np.cos(0.07*t)+2*np.sin(0.05*t) + sin = signal.square(2 * np.pi * 5 * t) + fq = np.fft.fft(sin) + fq2 = np.fft.fftfreq(sin.shape[-1],d=1) + FQ = np.sqrt(fq.real**2+fq.imag**2) + + plt.subplot(511) + plt.plot(np.arange(sin.shape[0]),sin,label='1') + plt.subplot(512) + plt.plot(np.arange(fq.shape[0]),fq,label='2') + plt.subplot(513) + plt.plot(fq2,fq.real,label='3') + plt.subplot(514) + plt.plot(fq2,fq.imag,label='4') + plt.subplot(515) + plt.plot(fq2,FQ,label='5') + plt.savefig('data/fft/___.png') + +if __name__=='__main__': + pass diff --git a/test/run.py b/test/run.py new file mode 100644 index 0000000..600d3aa --- /dev/null +++ b/test/run.py @@ -0,0 +1,17 @@ +import os + +pid=os.getpid() +f = open('pid/runpid','w') +f.write(str(pid)) +f.close() + +ctr=0 +while ctr < 100: + if ctr%3==0: + print 'run.' + elif ctr%3==1: + print 'run..' + elif ctr%3==2: + print 'run...' + ctr += 1 + os.system('sleep 0.01') diff --git a/test/test.cpp b/test/test.cpp new file mode 100644 index 0000000..15bde1e --- /dev/null +++ b/test/test.cpp @@ -0,0 +1,118 @@ +//#include "/usr/local/include/opencv2/opencv.hpp" +#include "opencv2/opencv.hpp" +#include "opencv2/highgui.hpp" +#include "opencv2/imgproc.hpp" +#include "opencv2/imgcodecs.hpp" +#include "opencv2/videoio.hpp" +#include "iostream" +#include "sstream" +#include "string" +#include "iomanip" +#include "typeinfo" + +using namespace std; +using namespace cv; + +int main() +{ + cout << "123123" << endl; + VideoCapture cap(0); // open the default camera + if(!cap.isOpened()) // check if we succeeded + return -1; + + double dWidth = cap.get(CV_CAP_PROP_FRAME_WIDTH); //get the width of frames of the video + double dHeight = cap.get(CV_CAP_PROP_FRAME_HEIGHT); //get the height of frames of the video + cout << "Frame Size = " << dWidth << "x" << dHeight << endl; + Size frameSize(static_cast(dWidth), static_cast(dHeight)); + //Size frameSize(800,600); + VideoWriter video("output.mov", CV_FOURCC('m', 'p', '4', 'v'), 10, frameSize, true); + //VideoWriter video("output.mov", cap.get(CV_CAP_PROP_FOURCC), cap.get(CV_CAP_PROP_FPS), frameSize); + + if (!video.isOpened()) + { + cout << "ERROR: Fail to write the video" << endl; + return -1; + } + + Mat edges; + Mat gray; + Mat background; + Rect myROI(10, 10, 300, 300); + + int num=0; + stringstream serialNum; + string path="data/"; + string name; + string fullPath; + + vector compression_params; //vector that stores the compression parameters of the image + compression_params.push_back(CV_IMWRITE_JPEG_QUALITY); //specify the compression technique + compression_params.push_back(98); //specify the compression quality + + bool mode = false; + bool crop = false; + namedWindow("edges",1); + for(;;) + { + Mat frame; + cap >> frame; // get a new frame from camera + + // resize frame + //resize(frame, frame, Size(800, 600)); + + cvtColor(frame, edges, COLOR_BGR2GRAY); + //GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5); + //Canny(edges, edges, 0, 30, 3); + + int key = cv::waitKey(30) & 255; + if(key == 27) break; //ESC + else if (key==114) //R + { + cout << "save background image!!"<> fullPath; + serialNum.clear(); + //fullPath = path + name + ".jpg"; + cout << fullPath; + //cout << typeid(fullPath).name()<