Created
April 27, 2018 16:40
-
-
Save Radi4/79a11f1820298eb949db879d1a8777b4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Importing" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"Using TensorFlow backend.\n" | |
] | |
} | |
], | |
"source": [ | |
"import numpy as np\n", | |
"import mne\n", | |
"import os\n", | |
"from sklearn.model_selection import train_test_split\n", | |
"import h5py\n", | |
"import matplotlib.pyplot as plt\n", | |
"import seaborn as sb\n", | |
"from sklearn.decomposition import PCA\n", | |
"from keras.models import load_model" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"from ipyparallel import Client\n", | |
"c = Client()\n", | |
"# lview = c.load_balanced_view()\n", | |
"lview = c[:]\n", | |
"lview.block = True" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"%%px\n", | |
"import numpy as np\n", | |
"from sklearn.metrics import mean_squared_error" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Metric" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Физический смысл - метрика соответствует соотношению энергий: \n", | |
" а) объясненной y_pred \n", | |
" б) общей энергии y_true (энергия пропорциональна L2-норме вектора)\n", | |
"С точки зрения оптимизиации, минимизация mse ведет к минимизации l2, поэтому сети можно учить на mse" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def metric(y_true, y_pred):\n", | |
" l2ratio = np.sum((y_true - y_pred)**2) / np.sum(y_true**2)\n", | |
" return np.sqrt(l2ratio) * 100" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Load train data" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def load_file(fname):\n", | |
" import h5py\n", | |
" h5_file = h5py.File(fname, 'r')\n", | |
" a_group_key = list(h5_file.keys())[0]\n", | |
" eeg_data = np.array(h5_file[a_group_key]).T\n", | |
" return [eeg_data, eeg_data.shape[0], fname.split('/')[-1]]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def load_new_data(eeg_dir):\n", | |
" eeg_names = [x for x in os.listdir(eeg_dir) \n", | |
" if x[-3:] == \".h5\"]\n", | |
" data = [load_file(eeg_dir + f) for f in eeg_names]\n", | |
" return np.concatenate([x[0] for x in data], axis = 0), np.cumsum(np.array([x[1] for x in data])), np.array([x[2] for x in data])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def find_bad_channels(X, X_size):\n", | |
" X_delete_channels = []\n", | |
" start = 0\n", | |
" for finish in X_size:\n", | |
" part_data = X[start : finish]\n", | |
" X_delete_channels.append([])\n", | |
" for i in range(X.shape[1]):\n", | |
" if (np.array_equal(part_data[:, i], np.zeros(finish - start))):\n", | |
" X_delete_channels[-1].append(i)\n", | |
" start = finish\n", | |
" return X_delete_channels " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"train_dir = \"./data/train/\"\n", | |
"X_train, X_train_size, X_train_names = load_new_data(train_dir)\n", | |
"X_train_delete_channels = find_bad_channels(X_train, X_train_size)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Load test data" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"test_dir = \"./data/test/\"\n", | |
"X_test, X_test_size, X_test_names = load_new_data(test_dir)\n", | |
"X_test_delete_channels = find_bad_channels(X_test, X_test_size)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# PCA" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Метод главныx компонент - бейзлайн, который в идеале надо побить с помощью NN" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"class L2RatioTester(object):\n", | |
" def metric(self, y_true, y_pred):\n", | |
" l2ratio = np.sum((y_true - y_pred)**2) / np.sum(y_true**2)\n", | |
" return np.sqrt(l2ratio) * 100" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"components_count = [1, 2, 4, 8, 12, 29, 40, 45, 50, 55, 58]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"@lview.parallel()\n", | |
"def calc_metric(n_components):\n", | |
" from sklearn.decomposition import PCA\n", | |
" pca = PCA(n_components=n_components)\n", | |
" pca.fit(X_train)\n", | |
" return (tester.metric(X_test, pca.inverse_transform(pca.transform(X_test)))\n", | |
" , tester.metric(X_train, pca.inverse_transform(pca.transform(X_train))))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"lview['X_train'] = X_train[:200000]\n", | |
"lview['X_test'] = X_test[:200000]\n", | |
"lview['L2RatioTester'] = L2RatioTester" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## L2Ratio On PCA" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"CPU times: user 44 ms, sys: 12 ms, total: 56 ms\n", | |
"Wall time: 11.5 s\n" | |
] | |
} | |
], | |
"source": [ | |
"%%time \n", | |
"lview['tester'] = L2RatioTester()\n", | |
"l2_ratio = calc_metric.map(components_count)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n", | |
" (prop.get_family(), self.defaultFamily[fontext]))\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\niKwaZ04jIiKyIgxuIiIiK8LgJiIisiIMbiIiIivC4CYiIrIiDG4iIiIrwuAmIiKyIgxuIiIiKyLQ\narVacxdBRERE+uERNxERkRVhcBMREVkRBjcREZEVYXATERFZEQY3ERGRFWFwExERWRGrD+6DBw9i\n0aJFWLhwIZKSkq55XKvV4tVXX8XChQuxdOlSZGdnm6FKyzdUH7du3YqlS5di6dKluOuuu5CTk2OG\nKq3DUL3slZWVhSlTpuDnn382YXXWRZ9epqen47bbbkNcXBzuu+8+E1doHYbqY0NDAx5++GHceuut\niIuLw/fff2+GKi3fc889h+joaCxZsqTfx02WN1or1tHRoV2wYIG2sLBQ29raql26dKn2woULfZ6z\nf/9+7YMPPqjt6urSnjhxQrt8+XIzVWu59OljZmamtra2VqvVdveUfeyfPr3sfd6KFSu0q1at0v70\n009mqNTy6dPLuro67eLFi7UlJSVarVarraqqMkepFk2fPr7//vva119/XavVarUajUYbERGhbW1t\nNUe5Fu3o0aPa06dPa+Pi4vp93FR5Y9VH3FlZWfD19cW4ceNgZ2eHuLg47Nmzp89z9uzZg/j4eAgE\nAsyYMQP19fVQq9Vmqtgy6dPHmTNnQiqVAgBmzJiB8vJyc5Rq8fTpJQB88cUXWLRoETw8PMxQpXXQ\np5fbtm3DwoULoVKpAID97Ic+fRQIBGhqaoJWq0VTUxOkUilEIpGZKrZcERERut+D/TFV3lh1cFdU\nVECpVOq+VygUqKioGPQ5SqXymueMdfr08WqbNm3CvHnzTFGa1dH3Z3L37t24++67TV2eVdGnl/n5\n+aivr8eKFStw++23Izk52dRlWjx9+njvvfciNzcXN9xwA2699VasW7cOQqFVx4NZmCpv+CcVDcuR\nI0ewadMmfPXVV+YuxWqtX78eTz31FH8xGkBnZyeys7Px2WefoaWlBXfddRdCQ0MxYcIEc5dmVX75\n5RcEBwfj888/R2FhIRISEhAeHg5nZ2dzl0b9sOrgVigUfU7ZVlRUQKFQDPqc8vLya54z1unTRwDI\nycnBn//8Z3z44Ydwc3MzZYlWQ59enj59Gk888QQAoKamBgcOHIBIJMLNN99s0lotnT69VCqVcHV1\nhVgshlgsRnh4OHJychjcV9Gnj5s3b0ZiYiIEAgF8fX3h4+ODvLw8TJ8+3dTlWjVT5Y1V/8k/bdo0\n5Ofno6ioCG1tbUhJSUFMTEyf58TExCA5ORlarRYnT56ERCKBXC43U8WWSZ8+lpaW4rHHHsPrr7/O\nX54SajkAAAOhSURBVIqD0KeXe/fu1X0tWrQIL730EkO7H/r0csGCBcjMzERHRwcuX76MrKwsBAQE\nmKliy6RPH728vJCWlgYAqKqqwqVLl+Dj42OOcq2aqfLGqo+4RSIRXnzxRaxatQqdnZ1YtmwZgoKC\n8PXXXwMA7r77bsyfPx8HDhzAwoUL4ejoiL/+9a9mrtry6NPH9957D7W1tXj55ZcBADY2Nti8ebM5\ny7ZI+vSS9KNPLwMCAnTjskKhEMuXL8fEiRPNXLll0aePjzzyCJ577jksXboUWq0WTz31FNzd3c1c\nueV54okncPToUdTU1GDevHl47LHH0NHRAcC0ecNlPYmIiKyIVZ8qJyIiGmsY3ERERFaEwU1ERGRF\nGNxERERWhMFNRERkRRjcRGNEXV0dpk+fjldffVW37d1338Xf/va3IV+7efNmrFmzxpjlEZGeGNxE\nY8T27dsRGhqKlJQUtLW1mbscIhohBjfRGPH999/jkUcewaRJk/pdsWzz5s1ISEjAww8/jN/85jdY\nuXJlnwUSGhsb8fjjjyMuLg533XUXKisrAQDnzp3DPffcg//+7//Gb37zG3z22Wem+khEYxKDm2gM\nyMnJQW1tLWbPno3bb78d33//fb/Py8zMxDPPPIMff/wRkZGRWL9+ve6xX3/9FX/605+QkpKCwMBA\nfPnllwAAb29vfPbZZ/jhhx/w3Xff4dtvv0Vubq5JPhfRWMTgJhoDNm3ahNtuuw0CgQCxsbHIysrq\nd7nBWbNmwd/fHwBwxx134MiRI7rHZs6cCS8vLwBAaGgoCgsLAQAtLS14/vnnsXTpUtx9991Qq9XI\nyckxwaciGpuseq5yIhpaW1sbtm/fDjs7O2zZsgUA0N7ePuy55u3t7XX/trGxQWdnJwDgrbfegkwm\nw//+7/9CJBLh/7d3xyYSAmEYhr/AEgxMJzdREGzCJsxswB7EzAKsQLECQQxFLMBIazAykQsW9m45\nuE2EY5b3CYdhmD/6+GcGJk1Tned5XwEAXtBxAx+u73sZYzSO4/NXsrqu1XXdr7nLsmjbNkmPO/E4\njt+ufxyHPM+T4zha11XzPN9dAoAf6LiBD9e2rZIkeRkLgkDXdWmaJvm+/xwPw1BFUWjfd7muq7Is\n366fZZnyPFfTNDLGKIqi22sA8I3fwQBIerwqH4ZBVVX991YA/IGjcgAALELHDQCARei4AQCwCMEN\nAIBFCG4AACxCcAMAYBGCGwAAixDcAABY5AvEPPdu3QXlzwAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f4615177128>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"x = np.array(components_count) / 58.\n", | |
"y = np.array([i[0] for i in l2_ratio])\n", | |
"plt.plot(x, y, label = \"PCA on Test\", marker='o')\n", | |
"plt.title(\"L2Ratio vs Alpha Test\")\n", | |
"plt.xlabel(\"Alpha\")\n", | |
"plt.ylabel(\"L2Ratio\")\n", | |
"plt.legend()\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n", | |
" (prop.get_family(), self.defaultFamily[fontext]))\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\na9YsfPHFF/Dz88P8+fOxZs0aREREDPgaBrd1sS1Ng+1oOmxL02A7Dk1TexknzlciK7cKucW16EnM\nQKUMKm9XHD/fd8b6b+4Yd83hbVNLnmZnZyM4OBhBQUEAgOTkZGRmZg4a3ERERNag8nJF0uTRSJo8\nGvXNbTiZq19+9dSlapT0c80c0G+sYs5bzCwe3BUVFfD39zc89vPzQ3Z29qCv8fZ2g0Qy/NVvBvuL\nhYaHbWkabEfTYVuaBtvReEoA4cEK3HVbNC63duDel7eivzHrMm2TWdvVLian1dQ0D/s1HAIyHbal\nabAdTYdtaRpsx2sT6Cvrd6Z6gEJ2ze06WPBb/D5uPz8/lJeXGx5XVFTAz8++Vq0hIiJKTggZ4Hiw\nWT/X4sF9/fXXIz8/H0VFRWhra8PWrVuRmJho6TKIiIiuSfxYP/zmjnEYpXSHWCRglNLdJBPThmLx\noXKJRIJXX30VixcvRmdnJ+6++25ERkZaugwiIqJrFj/WD/Fj/Sx62cEq17inTZuGadOmWeOjiYiI\n7BrXKiciIrIjDG4iIiI7wuAmIiKyIwxuIiIiO8LgJiIisiMMbiIiIjvC4CYiIrIjDG4iIiI7YvH9\nuImIiOjqscdNRERkRxjcREREdoTBTUREZEcY3ERERHaEwU1ERGRHGNxERER2xO6De9++fZg1axZm\nzpyJtLS0Ps/rdDq8+eabmDlzJubNm4fTp09boUrbN1Q7btq0CfPmzcO8efNw3333IScnxwpV2oeh\n2rJHdnY2xo4dix9++MGC1dkXY9ry0KFDuPPOO5GcnIyHHnrIwhXah6HasaGhAU888QTuuOMOJCcn\n49tvv7VClbbvxRdfREJCAubOndvv8xbLG50d6+jo0M2YMUNXWFioa21t1c2bN0+Xm5vb65w9e/bo\nFi1apOvq6tIdP35cN3/+fCtVa7uMacdjx47pamtrdTqdvk3Zjv0zpi17zlu4cKFu8eLFuu+//94K\nldo+Y9qyrq5ON2fOHF1JSYlOp9PpqqqqrFGqTTOmHT/55BPdu+++q9PpdDqtVqubNGmSrrW11Rrl\n2rTDhw/rTp06pUtOTu73eUvljV33uLOzsxEcHIygoCBIpVIkJycjMzOz1zmZmZlISUmBIAgYP348\n6uvrodForFSxbTKmHSdMmAC5XA4AGD9+PMrLy61Rqs0zpi0B4Ouvv8asWbOgUCisUKV9MKYtN2/e\njJkzZ0KtVgMA27MfxrSjIAhoamqCTqdDU1MT5HI5JBKJlSq2XZMmTTL8HuyPpfLGroO7oqIC/v7+\nhsd+fn6oqKgY9Bx/f/8+5zg6Y9rxSunp6Zg6daolSrM7xv5M7ty5E/fff7+ly7MrxrRlfn4+6uvr\nsXDhQtx1113IyMiwdJk2z5h2fPDBB3Hx4kXccsstuOOOO/Dyyy9DJLLreLAKS+UN/6SiYfn555+R\nnp6Ov//979YuxW6tXr0aK1eu5C9GE+js7MTp06fx5ZdfoqWlBffddx9iY2MRGhpq7dLsyo8//oiY\nmBh89dVXKCwsRGpqKiZOnAh3d3drl0b9sOvg9vPz6zVkW1FRAT8/v0HPKS8v73OOozOmHQEgJycH\nv//97/HXv/4V3t7elizRbhjTlqdOncKzzz4LAKipqcHevXshkUhw2223WbRWW2dMW/r7+8PLywtu\nbm5wc3PDxIkTkZOTw+C+gjHtuGHDBixZsgSCICA4OBijRo1CXl4ebrjhBkuXa9cslTd2/Sf/9ddf\nj/z8fBQVFaGtrQ1bt25FYmJir3MSExORkZEBnU6HEydOwMPDAyqVykoV2yZj2rG0tBTPPPMM3n33\nXf5SHIQxbblr1y7Dv1mzZuG1115jaPfDmLacMWMGjh07ho6ODly+fBnZ2dkIDw+3UsW2yZh2DAgI\nwMGDBwEAVVVVuHTpEkaNGmWNcu2apfLGrnvcEokEr776KhYvXozOzk7cfffdiIyMxD/+8Q8AwP33\n349p06Zh7969mDlzJlxdXfHWW29ZuWrbY0w7fvzxx6itrcXrr78OABCLxdiwYYM1y7ZJxrQlGceY\ntgwPDzdclxWJRJg/fz6ioqKsXLltMaYdly5dihdffBHz5s2DTqfDypUr4ePjY+XKbc+zzz6Lw4cP\no6amBlOnTsUzzzyDjo4OAJbNG27rSUREZEfseqiciIjI0TC4iYiI7AiDm4iIyI4wuImIiOwIg5uI\niMiOMLiJHERdXR1uuOEGvPnmm4ZjH330Ed55550hX7thwwYsW7bMnOURkZEY3EQOYsuWLYiNjcXW\nrVvR1tZm7XKI6CoxuIkcxLfffoulS5ciOjq63x3LNmzYgNTUVDzxxBO4/fbb8fDDD/faIKGxsRHL\nly9HcnIy7rvvPlRWVgIAzp07hwceeAD/9V//hdtvvx1ffvmlpb4lIofE4CZyADk5OaitrcWUKVNw\n11134dtvv+33vGPHjuGFF17Atm3bMHnyZKxevdrw3C+//ILf/e532Lp1KyIiIvC3v/0NABAYGIgv\nv+BQzYgAAAGVSURBVPwS3333Hf71r3/hm2++wcWLFy3yfRE5IgY3kQNIT0/HnXfeCUEQkJSUhOzs\n7H63G7zxxhsRFhYGAFiwYAF+/vlnw3MTJkxAQEAAACA2NhaFhYUAgJaWFrz00kuYN28e7r//fmg0\nGuTk5FjguyJyTHa9VjkRDa2trQ1btmyBVCrFxo0bAQDt7e3DXmve2dnZ8LVYLEZnZycAYM2aNVAq\nlfjjH/8IiUSCxx57DK2trab7BoioF/a4iUa4zMxMhIaGYt++fYZdyT7//HN89913fc7NyspCfn4+\nAP018SlTpgz5/g0NDfD394dEIsH58+dx9OhRU38LRHQF9riJRrhvv/0W8+bN63UsLi4OXV1dOHz4\nMK677jrD8QkTJuCdd95BQUEBfH198d577w35/k8++SReeOEFpKenIzQ0FJMmTTL590BEv+LuYEQE\nQD+rfM+ePfjwww+tXQoRDYJD5URERHaEPW4iIiI7wh43ERGRHWFwExER2REGNxERkR1hcBMREdkR\nBjcREZEdYXATERHZkf8fVJC+kc7TIroAAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f4616a2cda0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"x = np.array(components_count) / 58.\n", | |
"y = np.array([i[1] for i in l2_ratio])\n", | |
"plt.plot(x, y, label = \"PCA on Train\", marker='o')\n", | |
"plt.title(\"L2Ratio vs Alpha Train\")\n", | |
"plt.xlabel(\"Alpha\")\n", | |
"plt.ylabel(\"L2Ratio\")\n", | |
"plt.legend()\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## CNN Students" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Команда Девушек" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Модель" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## CNN AE\n", | |
"\n", | |
"The encoder will consist in a stack of Conv1D and MaxPooling1D layers (max pooling being used for spatial down-sampling), while the decoder will consist in a stack of Conv1D and UpSampling1D layers.\n", | |
"\n", | |
"In the proccess different hyperparameters were tuned, such as *number of filters*, *filter lengths*, *length of batch* and others.\n", | |
"### Model\n", | |
"* Input — (channels_num = 61, window_size = 500, 1)\n", | |
"\n", | |
"#### Encoder\n", | |
"\n", | |
" * Conv1D(nb_filters = 64, filter_length = 5) + ReLU ---- (channels_num = 61, window_size = 500, 64)\n", | |
" * MaxPooling1D ----------------------------------------- (channels_num = 61, window_size = 250, 64)\n", | |
" * Conv1D(nb_filters = 32, filter_length = 5) + ReLU ---- (channels_num = 61, window_size = 250, 32)\n", | |
" * MaxPooling1D ----------------------------------------- (channels_num = 61, window_size = 125, 32)\n", | |
" * Dense + ReLU ----------------------------------------- (channels_num = 61, window_size = 125, 1)\n", | |
"\n", | |
"#### Decoder\n", | |
"\n", | |
" * Conv1D(nb_filters = 32, filter_length = 5) + ReLU ---- (channels_num = 61, window_size = 125, 32)\n", | |
" * UpSampling1D ----------------------------------------- (channels_num = 61, window_size = 250, 32)\n", | |
" * Conv1D(nb_filters = 64, filter_length = 5) + ReLU ---- (channels_num = 61, window_size = 250, 64)\n", | |
" * UpSampling1D ----------------------------------------- (channels_num = 61, window_size = 500, 64)\n", | |
" * Conv1D(nb_filters = 64, filter_length = 5) + Sigmoid - (channels_num = 61, window_size = 500, 1)\n", | |
"\n", | |
"\n", | |
"* Output — (channels_num = 61, window_size = 500, 1)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 176, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"from keras.layers import Input, Conv1D, Dense, MaxPooling1D, Dropout, UpSampling1D\n", | |
"from keras.models import Model\n", | |
"from keras.models import Sequential\n", | |
"from keras import backend as K\n", | |
"\n", | |
"\n", | |
"def create_ae(dim = 1):\n", | |
"\n", | |
" channels_num = 58\n", | |
" nb_filter_1 = 64\n", | |
" nb_filter_2 = 32\n", | |
" filter_length = 5\n", | |
"\n", | |
" window_size = 500\n", | |
" encoding_dim = dim\n", | |
"\n", | |
" input_ = Input(shape=(window_size, 1))\n", | |
"\n", | |
" encoder = Sequential((\n", | |
" Conv1D(nb_filter=nb_filter_1, filter_length=filter_length, activation='relu', padding='same', input_shape=(window_size, 1)),\n", | |
" Dropout(0.4),\n", | |
" MaxPooling1D(),\n", | |
" Conv1D(nb_filter=nb_filter_2, filter_length=filter_length, activation='relu', padding='same'),\n", | |
" MaxPooling1D(),\n", | |
" Dense(encoding_dim, activation='relu')\n", | |
" ))\n", | |
" print(encoder.summary())\n", | |
" decoder = Sequential((\n", | |
" Conv1D(nb_filter=nb_filter_2, filter_length=filter_length, activation='relu', padding='same', input_shape=encoder.output_shape[-2:]),\n", | |
" UpSampling1D(),\n", | |
" Conv1D(nb_filter=nb_filter_1, filter_length=filter_length, padding='same', activation='relu'),\n", | |
" UpSampling1D(),\n", | |
" Conv1D(nb_filter=1, filter_length=filter_length, padding='same', activation='sigmoid')\n", | |
" ))\n", | |
" print(decoder.summary())\n", | |
" autoencoder = Model(input_, decoder(encoder(input_)), name=\"autoencoder\")\n", | |
" autoencoder.compile(loss='mse', optimizer='adam', metrics=['mae']) # .compile(optimizer='adadelta', loss='binary_crossentropy')\n", | |
"\n", | |
" print(autoencoder.summary())\n", | |
" return autoencoder" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 177, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"enc_dims = [1, 2, 3, 4]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Calc L2Ratio on Train" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def predict(autoencoder, X):\n", | |
" raw = X\n", | |
" size = raw.shape[1]\n", | |
" if (raw.shape[1] % 500 != 0):\n", | |
" add = 500 - (raw.shape[1] % 500)\n", | |
" raw = np.append(raw, np.zeros((58, add)), axis = 1)\n", | |
"\n", | |
" iters = []\n", | |
" for i in range(int(raw.shape[1] / 500)):\n", | |
" start, stop = i * 500, (i + 1) * 500\n", | |
" iters.append((start, stop))\n", | |
" X_ready = [raw[:, start:stop] for start, stop in iters]\n", | |
" predict = np.concatenate([autoencoder.predict(np.expand_dims(x, axis=2).astype('float32')/255.)\n", | |
" for x in X_ready], axis = 1)\n", | |
" return predict[:, :size, 0] * 255." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"l2_loss_by_files = []\n", | |
"for enc_dim in enc_dims:\n", | |
" name = \"./catherineglazkova_tasssshhhha/Girls_CNN_model_\"\n", | |
" autoencoder = load_model(name + str(enc_dim) + \".h5\")\n", | |
" print(\"Start {}\".format(enc_dim))\n", | |
" start = 0\n", | |
" loss = 0\n", | |
" adds = []\n", | |
" for i in range(X_train_size.shape[0]):\n", | |
" finish = X_train_size[i]\n", | |
" part_data = X_train[start : finish].T\n", | |
" part_data_pred = predict(autoencoder, part_data)\n", | |
" #part_data_pred = np.delete(part_data_pred, X_train_delete_channels[i], 0)\n", | |
" #part_data = np.delete(part_data, X_train_delete_channels[i], 0)\n", | |
" add = np.sum((part_data - part_data_pred)**2)\n", | |
" print(i, add, X_train_names[i])\n", | |
" adds.append(add)\n", | |
" start = finish\n", | |
" l2_loss_by_files.append(adds.copy()) \n", | |
" print(enc_dim)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 144, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"iters = []\n", | |
"start = 0\n", | |
"for finish in X_train_size:\n", | |
" iters.append((start, finish))\n", | |
" start = finish" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 145, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"all_files_data = [X_train[itter[0] : itter[1]] for itter in iters]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 67, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"bad_files = []" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 68, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"div = np.array([np.sum(all_files_data[i]**2) for i in np.delete(np.arange(len(all_files_data)), bad_files)])\n", | |
"l2_train = np.delete(l2_loss_by_files, bad_files, axis = 1) / div\n", | |
"l2_train = np.sqrt(l2_train) * 100" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 69, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n", | |
" (prop.get_family(), self.defaultFamily[fontext]))\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA20AAAGrCAYAAABT3H9KAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt0VOW9//HPZMIghFsCSSyUXyw0Qr0QQ0EaEJFQbhli\nUpRWVNSIUiNKIQjlYuOCCihVSaUuDyl6pGq1GjG0RgUJAlGQu0aPoEXNAQQmGAJCgrkM8/uDModL\nJrOZ2UN2kvdrLdfCmWd/9jM7efbMN/uZZ9s8Ho9HAAAAAABLCmvoDgAAAAAAfKNoAwAAAAALo2gD\nAAAAAAujaAMAAAAAC6NoAwAAAAALo2gDAAAAAAujaAOAJsbpdGrTpk0XbX/Z2dl65plnfD6/ePFi\nPfTQQ4bzevToof/93/81o2uaMWOGFi1a5PP5RYsWqV+/fhowYID279+vxMREud1uSdK4ceP0+uuv\nm9IPM/3Xf/2XZs+efdH25+/nu2nTJl1//fUXrT8A0ByFN3QHAADGJScn69FHH1X//v29jy1fvlyv\nv/66XnnlFUlSQUGB35x9+/ZpyJAh+p//+R+Fhwf3VjB37lzvvzdt2qRp06Zp/fr1QWVeDPv379d/\n//d/6/3331fHjh0lSTt27AjpPseNG6cbb7xRY8aMCTjjvvvuM7FHp35fXnjhBf373/9Wq1at9OMf\n/1jp6em69dZbZbPZzvr5AgAaBlfaAADN0v79+9WhQwdvwWYFtbW1F3V/zz//vObNm6fx48frgw8+\n0IYNGzRnzhxt375dNTU1fre/2P0FgOaKog0Ampjk5GRt2LBBklRcXKzRo0erd+/e6t+/vxYsWCBJ\nuv322yVJffv2VWJi4nlXmKqqqtSrVy8dPnxYkvTss8/qiiuu0PHjxyVJOTk5mjdvnqT/m4JYWVmp\ne++9V6WlpUpMTFRiYqJcLpckqaamRtOnT1diYqKcTqc+/fTTel/DunXrNGTIEPXr10+PP/64Tp48\nKUnas2eP7rjjDvXr10/9+vXT1KlT9f3333u3+/zzz/WrX/1KiYmJmjx5sqqqqurM37Bhg+6++25v\nX2fMmKF9+/apR48ePguRvLw8jRw5Un379tX48eP17bffSpI8Ho/mz5+vpKQk9e7dW6mpqfryyy/P\n237RokXaunWr5s6dq8TERO8VrB49eujll1/WsGHDNGzYMEnSo48+qkGDBql3794aPXq0tm7d6s05\nc7rp6T6/+eabuuGGG9SvXz89++yz9R7b044dO6ann35ajzzyiEaMGKE2bdrIZrPpiiuu0JNPPimH\nwyHp7Cmmp6dC5ubmasCAAZo5c+Z5ubm5uRo4cKASExM1fPhwbdy40VB/AAC+UbQBQBM2b9483XHH\nHdq+fbvee+89jRw5UpL00ksvSZK2bNmiHTt2KDEx8aztWrZsqauvvlpbtmzxtuvcubO2bdvm/f9r\nr732rG1at26tv/71r4qJidGOHTu0Y8cOxcbGSpLWrFkjp9OprVu3Kjk5WX/84x/r7fd7772nN954\nQ2+++abWrFmjN954Q9KpAum3v/2tioqK9M477+jgwYNavHixJKm6uloTJ05UWlqaNm/erBEjRmjV\nqlV15vfv3/+svj722GP19mf16tVasmSJ/vKXv2jjxo36+c9/rqlTp0qSPvjgA23dulUrV67Utm3b\nlJOTow4dOpyXMWXKFPXp00fZ2dnasWOHsrOzz8p/7bXX9Pbbb0uSrr76auXn52vz5s0aNWqUfve7\n3/ksQCVp27Ztevfdd7Vs2TI988wz+uqrr+p9PdKpqaDV1dUaMmSI37Zn+u6773T06FG9//775/0c\nv/76a7388svKy8vTjh079Nxzz6lLly4XlA8AOB9FGwA0MhMnTlSfPn28/82ZM8dn2/DwcO3Zs0eH\nDx9WRESErrnmGsP76du3r7Zs2aLa2lp98cUXGjdunLZs2aKqqip9+umn6tOnj+Gsn//85xo0aJDs\ndrvS0tK0a9euetvfe++96tChgzp37qw77rhDb731liQpLi5OAwYMkMPhUFRUlDIyMryF5SeffKKa\nmhrdeeedatGihUaMGKGrr77acB/r8+qrr2rChAnq3r27wsPDdd9992nnzp369ttvFR4eroqKCn39\n9dfyeDzq3r27YmJiLih/woQJ6tChgy655BJJUlpamiIjIxUeHq67775b1dXV+uabb3xu/8ADD+iS\nSy5Rz5491bNnT7/HV5LKy8u9+zjtlltuUZ8+fdSrVy/vcT1XWFiYJk2aJIfD4e3vaXa7XdXV1frq\nq69UU1OjH//4x/p//+//GTkEAIB6ULQBQCPzzDPPaOvWrd7/HnnkEZ9t582bp5KSEo0cOVI33XST\n3n//fcP7ufbaa7Vp0yZ9/vnnuvzyyzVgwABt2bJFH3/8seLi4hQZGWk4q1OnTt5/X3LJJaqqqqr3\n+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\ntnO5XIqNjQ1kFwAAAAAABVi0lZaWev+9evVqxcfHS5KSk5NVUFCg6upq7d27VyUlJerVq5c5PQUA\nAACAZsjv9MisrCxt3rxZ5eXluv766/Xggw9q8+bN2rVrlySpS5cumjt3riQpPj5eI0eOVEpKiux2\nu7Kzs1k5EgAAAACC4Ldoe+qpp857bMyYMT7bZ2ZmKjMzM7heAQAAAAAkBTg9EgAAAABwcVC0AQAA\nAICFUbQBAAAAgIVRtAEAAACAhVG0AQAAAICFUbQBAAAAgIVRtAEAAACAhVG0AQAAAICFUbQBAAAA\ngIVRtAEAAACAhVG0AQAAAICFUbQBAAAAgIVRtAEAAACAhVG0AQAAAICFUbQBAAAAgIVRtAEAAACA\nhVG0AQAAAICFUbQBAAAAgIVRtAEAAACAhVG0AQAAAICFUbQBAAAAgIVRtAEAAACAhVG0AQAAAICF\nUbQBAAAAgIVRtAEAAACAhVG0AQAAAICFUbQBAAAAgIVRtAEAAACAhVG0AQAAAICFUbQBAAAAgIVR\ntAEAAACAhVG0AQAAAICFUbQBAAAAgIWFN3QHAAAALpaFC+f7bRMR0VIVFVV+202fPsuMLgGAX36L\ntpkzZ2rt2rXq2LGj3nrrLUnSkSNHNGXKFH377bfq0qWLcnJy1L59e0nSkiVLlJeXp7CwMD388MMa\nOHBgaF8BAACAQR999LLfNnZ7mNzukwbSKNoAXBx+p0eOHj1aS5cuPeux3NxcJSUladWqVUpKSlJu\nbq4kaffu3SooKFBBQYGWLl2qOXPmyO12h6bnAAAAANAM+C3a+vbt672KdlphYaHS09MlSenp6Vq9\nerX3cafTKYfDoa5duyouLk7FxcUh6DYAAAAANA8BfaetrKxMMTExkqTo6GiVlZVJklwulxISErzt\nYmNj5XK5/OZFRrZWeLg9kK6ElN1ufJ0WI22jo9uGLP/cbPKbfv4NN1xmON+ftWtLznvMaP8D+d0n\nv2HzG9O5LdT5TfHcQL45+VYcu+TXn2/m+6J0/nsj57amnW91QS9EYrPZZLPZgsooL68MthshYWw+\nu/G574cOHQtZ/rnZ5JNvNJv85pffmM5toc636tglv2HzrTp2ya8/vzGde0Kdb9WxZeV8K6ivmAxo\nyf+OHTuqtLRUklRaWqqoqChJp66sHTx40NvO5XIpNjY2kF0AAAAAABRg0ZacnKz8/HxJUn5+voYM\n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\nlW/W+PWVb9b49fVZ0Kyx6yvfzPdeS/EgILW1tZ4hQ4Z49uzZ46mqqvKkpqZ6/v3vf5u6j82bN3s+\n++wzj9PpNDXX4/F4XC6X57PPPvN4PB7PsWPHPMOGDTO1/ydPnvQcP37c4/F4PNXV1Z6bb77Zs2PH\nDtPyT3v++ec9WVlZngkTJpiePXjwYE9ZWZnpuadNnz7d89prr3k8Ho+nqqrKc/To0ZDsp7a21tO/\nf3/Pvn37TMs8ePCgZ/DgwZ4TJ054PB6PZ9KkSZ433njDtPwvvvjC43Q6PZWVlZ6amhrPnXfe6Skp\nKQkqs67x9Pjjj3uWLFni8Xg8niVLlngWLlxoav7u3bs9X331lef222/3FBcXB955H/lFRUWempoa\nj8fj8SxcuND0/h87dsz772XLlnn+8Ic/mJrv8Xg8+/fv99x9992eG264IajxVlf+008/7Vm6dGnA\nmf7yN27c6Lnzzjs9VVVVHo/H4/nuu+9Myz7TggULPIsXLw4o21d+RkaGZ+3atR6Px+NZu3at5/bb\nbzc1f/To0Z5NmzZ5PB6P5/XXX/csWrQo4Hxf71dmjV9f+WaNX1/5Zo1fX/lmjd/6Pi+YMX595Zsx\nfn1lmzV2jXyWCmb8+so3a/z6yjdr/Pr6LGjW2PWVb+Z7r5VwpS1AxcXFiouLU9euXeVwOOR0OlVY\nWGjqPvr27av27dubmnlaTEyMrrzySklSmzZt1K1bt6D+in4um82miIgISVJtba1qa2tls9lMy5ek\ngwcPau3atbr55ptNzb0Yjh07pi1btnj77nA41K5du5Dsa+PGjeratau6dOliaq7b7dYPP/yg2tpa\n/fDDD4qJiTEt+6uvvlKvXr3UqlUrhYeHq2/fvlq1alVQmXWNp8LCQqWnp0uS0tPTtXr1alPzu3fv\nrm7dugWc6S//uuuuU3j4qUWAr7nmmrPuj2lGfps2bbz/PnHiRFBj2Nf5bMGCBZo2bVrQ54dQni99\n5b/yyiuaMGGCHA6HJKljx46mZZ/m8Xj0zjvvBDXjoq58m82miooKSafOR8GM37ryS0pK1LdvX0nS\ngAEDghq/vt6vzBq/vvLNGr++8s0av77yzRq/9X1eMGP8hvLziK9ss8auv74HO3595Zs1fn3lmzV+\nfX0WNGvs+so3873XSijaAuRyuXTppZd6/z82NtbUoudi2rdvn3bu3KmEhARTc91ut9LS0tS/f3/1\n79/f9Pz58+dr2rRpCgsL3a9xRkaGRo8erX/84x+m5u7bt09RUVGaOXOm0tPTNXv2bFVWVpq6j9MK\nCgpMn2IbGxuru+++W4MHD9Z1112nNm3a6LrrrjMt//LLL9e2bdtUXl6uEydOaP369UEVJL6UlZV5\n3+yio6NVVlZm+j4uljfeeEPXX3+96bmLFi3SoEGD9K9//Uu/+93vTM1evXq1YmJi1LNnT1Nzz/TS\nSy8pNTVVM2fODGr6a11KSkq0detWjRkzRrfffntQUwx92bp1qzp27KjLLrvM1NxZs2Zp4cKFGjRo\nkB5//HFlZWWZmh8fH+/9Q+a7776rAwcOmJJ75vtVKMZvqN4P/eWbNX7PzTd7/J6ZH4rxe27/zRy/\nZ2aHYuzW9bM1c/yemR+K8Xtmvpnjt67PgmaO3VB/1rQSirZmrqKiQpMmTdKsWbPO+qucGex2u1as\nWKF169apuLhYX375pWnZ77//vqKionTVVVeZlnmuV155RStWrNBf//pXvfzyy9qyZYtp2bW1tfr8\n8881duxY5efnq1WrViH5XmR1dbXWrFmjESNGmJp79OhRFRYWqrCwUEVFRTpx4oRWrFhhWn737t11\nzz33aPz48brnnnvUs2fPkBbn0qm/2Jl9NfhiefbZZ2W323XjjTeanj1lyhStW7dOqampeumll0zL\nPXHihJYsWWJ6IXimsWPHavXq1VqxYoViYmL02GOPmZrvdrt19OhRvfbaa5o+fbomT54sj8l30Xnr\nrbdC8r3mV155RTNnztS6des0c+ZMzZ4929T8efPm6e9//7tGjx6tiooK7xWNYNT3fmXG+A3l+2F9\n+WaN37ryzRy/Z+bb7XbTx++5/Tdz/J6bbfbY9fWzNWv8nptv9vg9N9/M8evvs2CwYzeUnzWthqIt\nQLGxsWf95d/lcik2NrYBe3ThampqNGnSJKWmpmrYsGEh20+7du3Ur18/FRUVmZa5fft2rVmzRsnJ\nycrKytJHH32khx56yLR8Sd6fZ8eOHTV06FBT/4p+6aWX6tJLL/X+RWjEiBH6/PPPTcs/bf369bry\nyivVqVMnU3M3bNigH//4x4qKilKLFi00bNgwUxdSkaQxY8Zo+fLlevnll9W+fXvTrzRIp362paWl\nkqTS0lJFRUWZvo9QW758udauXasnnngipEVnampq0FNUz7Rnzx7t27fP+0X9gwcPavTo0Tp06JBp\n++jUqZPsdrvCwsI0ZswY07+QHhsbq6FDh8pms6lXr14KCwtTeXm5afm1tbV67733lJKSYlrmaW++\n+ab3vD9y5EjTrxJ2795dzz//vJYvXy6n06muXbsGlVfX+5WZ4zfU74e+8s0av/76H+z4PTff7PFb\nV//NGr91ZZs5dn0de7PGb135Zo7fuvLNHr/S2Z8FQ/HeG4rPmlZD0Ragq6++WiUlJdq7d6+qq6tV\nUFCg5OTkhu6WYR6PR7Nnz1a3bt2UkZFhev7hw4e9K2H98MMP2rBhg6nzi6dOnar169drzZo1euqp\np/SLX/xCTzzxhGn5lZWV3tWSKisr9eGHHyo+Pt60/OjoaF166aX6+uuvJZ363ln37t1Nyz+toKBA\nTqfT9NzOnTvrk08+0YkTJ+TxeELS/9PTJfbv369Vq1YpNTXV1Hzp1Aqh+fn5kqT8/HwNGTLE9H2E\n0vr167V06VI9++yzatWqlen5JSUl3n8XFhaaOoZ79OihjRs3as2aNVqzZo0uvfRSLV++XNHR0abt\n4/SHAunUVEwzx7Ak/fKXv9SmTZskSd98841qamoUGRlpWv7p8+aZU/HNEhMTo82bN0uSPvroI9P/\nKHJ6/J48eVLPPvusbrnlloCzfL1fmTV+Q/1+6CvfrPHrK9+s8VtXvpnj11f/zRi/vrLNGrv1/e6Y\nMX595Zs1fn3lmzV+fX0WNGvshvqzptXYPGbP5WhG1q1bp/nz58vtduumm25SZmamqflZWVnavHmz\nysvL1bFjRz344IMaM2aMKdlbt27Vbbfdpssvv9w77SwrK0uDBg0yJX/Xrl2aMWOG3G63PB6PRowY\noQceeMCU7HNt2rRJzz//vJYsWWJa5t69ezVx4kRJp6ZAjRo1yvSf786dOzV79mzV1NSoa9euWrBg\ngakLKVRWVmrw4MFavXq12rZta1ruaU8//bTefvtthYeH62c/+5nmzZtnyhSo02699VYdOXJE4eHh\n3iXFg1HXePrlL3+pyZMn68CBA+rcubNycnLUoUMH0/I7dOigP/7xjzp8+LDatWunn/3sZ3ruuedM\ny8/NzVV1dbW3zwkJCZo7d65p+evXr9c333wjm82mLl26aM6cOQHPKPB3PktOTlZeXl7Af3GtK3/z\n5s3atWuXJKlLly6aO3duwF/Yrys/LS1Ns2bN0q5du9SiRQtNnz49oN9TX8dmxowZSkhI0NixYwPq\nc335P/nJTzR//nzV1taqZcuWeuSRRwKebl5XfmVlpf7+979LkoYOHaqpU6cGfCXJ1/tVr169TBm/\nvvKrq6tNGb++8h999FFTxq+v/Ly8PFPGr5HPC8GMX1/5b731VtDj11d2UlKSKWO3vmNjxvj1lR8R\nEWHK+PWVX1JSYsr49fVZsLy83JSx6yv/vffeM+2910oo2gAAAADAwpgeCQAAAAAWRtEGAAAAABZG\n0QYAAAAAFkbRBgAAAAAWRtEGAAAAABZG0QYAAAAAFkbRBgAAAAAW9v8BXelhcPG0qy4AAAAASUVO\nRK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f528b679860>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"Y = np.arange(len(l2_train[0]))\n", | |
"plt.figure(figsize=(15, 7))\n", | |
"plt.bar(Y, l2_train[0], align='center', alpha = 0.5, label = '1/ 4', color = 'red')\n", | |
"plt.bar(Y, l2_train[1], align='center', alpha = 0.5, label = '2 / 4', color = 'green')\n", | |
"#plt.bar(Y, l2_train[-2], align='center', alpha = 0.5, label = '3 / 4', color = 'blue')\n", | |
"plt.bar(Y, l2_train[-1], align='center', alpha = 0.5, label = '1', color = 'black')\n", | |
"plt.xticks(Y, np.delete(np.arange(len(all_files_data)), bad_files))\n", | |
"plt.legend(loc = 'best')\n", | |
"plt.title('Hist with bad files train. Girls')\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 146, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"bad_files = [1, 10, 12, 13, 16, 17, 25, 26, 29, 30]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 149, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"div = np.array([np.sum(all_files_data[i]**2) for i in np.delete(np.arange(len(all_files_data)), bad_files)])\n", | |
"l2_train = np.delete(l2_loss_by_files, bad_files, axis = 1) / div\n", | |
"l2_train = np.sqrt(l2_train) * 100" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 72, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n", | |
" (prop.get_family(), self.defaultFamily[fontext]))\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA20AAAGrCAYAAABT3H9KAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xtc1HWi//H3MIgpXgIEPPpjKV20NoMoyEjNFdcbI+mx\nrLVyjWwt0lgv6ZJ67KGblzy7Rbk9Stb1rF22dnMN90RtJqZwtLykhW1Zx3ZJTRkMsRQMZJzfH25z\nMgeQr3P5AK/n4+HjITPz+X7fc2Fm3ny+F5vb7XYLAAAAAGCkkGAHAAAAAAA0jNIGAAAAAAajtAEA\nAACAwShtAAAAAGAwShsAAAAAGIzSBgAAAAAGo7QBgOEcDoe2b98esPUtWLBATz/9dIPXr1ixQg89\n9FDA8nzXunXrNGHCBJ8tr2/fvvr888+9Xvfll1/qzjvvVHJyspYtW6Znn31W8+bNkyQdOnRIffv2\nVX19vc+y+EqgXy/Jyck6ePBgg9fn5ubqiSeeCFgeAGiNQoMdAADasvT0dD366KO68cYbPZetW7dO\nr7zyil566SVJUmFhYZPLOXTokIYOHaq///3vCg29uLf2RYsWef6/fft2zZ49W8XFxRe1zAvVt29f\nbdiwQfHx8QFZX2P+9Kc/KSIiQrt375bNZvP7+nz1HF7I6+VCnTx5UitWrNBbb72lY8eO6dJLL1Vi\nYqImT56spKQkSdKePXt8tj4AgHeUNgAAvDh8+LB69+4dkMJ2oerr6y+6lF+ouro6TZo0SV26dNGz\nzz6r3r17q7a2VsXFxSouLvaUtsa4XK4AJAWA1o/NIwHAcOnp6dq2bZskqbS0VOPGjdO1116rG2+8\nUUuXLpUk3XXXXZKk1NRUJScnnzf7UVtbq8TERB07dkyS9Mwzz+hHP/qRTp48KUnKy8vT4sWLJf3f\n5mw1NTX6+c9/roqKCiUnJys5OVlOp1OSdPr0ac2ZM0fJyclyOBzau3evZ12fffaZJk6cqJSUFDkc\nDhUVFXmumzhxol555RXPz9/d3PHOO++UJI0ZM0bJycl6/fXXvT4ebrdbixYt0nXXXaeRI0fqnXfe\n8Vz3l7/8RaNGjVJycrKGDh2ql19++Zyxq1at0sCBAzVw4ECtXbu2wcc8NzdXBQUF+v3vf6/k5GRt\n27at0c1CT5w4oblz52rgwIEaNGiQnnjiCU9h+fzzz3XXXXfpuuuuU//+/TV9+nSvy/D2HK5bt04/\n/elPtWTJEvXv318rVqzQgQMH9LOf/Uz9+/dX//79NWvWLH399dee5Xz39bJixQr94he/aPC5asz6\n9evldDr19NNPq0+fPrLb7erYsaNGjhypBx980HO7725impubq0ceeUQ///nPdc0115y3meaxY8d0\n3333KSUlRddff73uuOMOnTlz5oLyAEBbRmkDgBZk8eLF+tnPfqbdu3frrbfe0qhRoyRJL7zwgiRp\n586d2rNnj5KTk88Z1759e1199dXauXOn53Y9evTQe++95/n5+uuvP2dMx44d9bvf/U4xMTHas2eP\n9uzZo9jYWEnSpk2b5HA4tGvXLqWnp+tXv/qVpLNl7v7779eAAQO0bds2zZ8/Xw899JD+8Y9/NHnf\nXnzxRUlny8KePXuUkZHh9XalpaX6wQ9+oHfffVc5OTmaNm2ajh8/LkmKiorSypUrtXv3bi1dulRL\nly7V3//+d0lScXGxVq9erdWrV2vDhg3nlL3vW7ZsmTIzMzV58mTt2bPnnM1XvcnNzVVoaKg2bNig\ngoICbd261VNOn3zySQ0YMEA7d+5UcXGxp5x9X0PPYWlpqeLi4rR161ZlZ2fL7XbrvvvuU0lJid54\n4w2Vl5drxYoVDWZr6LlqyrZt2zRw4EB17Njxgm7/rddee03333+/du/ereuuu+6c6/7rv/5LsbGx\neuedd7R161bNnDnTqJlMADAVpQ0Agmzq1KlKSUnx/Fu4cGGDtw0NDdWBAwd07NgxhYeH65prrrng\n9aSmpmrnzp2qr6/XJ598ookTJ2rnzp2qra3V3r17lZKScsHLuu666zR48GDZ7XaNGTNG+/btkyR9\n8MEHqqmp0ZQpUxQWFqa0tDQNGTLEp/tZRUZGatKkSWrXrp0yMjJ0+eWXa/PmzZKkH//4x/rBD34g\nm82m66+/XgMGDNCuXbskSW+88YbGjRunPn36qGPHjpo2bZpP8nz55ZfasmWL5s6dq44dOyoqKkp3\n33235z6Hhobq8OHDqqioUPv27Zv1OEtSTEyMJk6cqNDQUF1yySWKj4/XgAEDFBYWpsjISGVlZXnK\nuDcNPVdNqaqqUrdu3Tw/f/zxx0pJSdG1116rESNGNDhu6NChuu666xQSEqL27dufc11oaKiOHj2q\nw4cPq127dkpJSaG0AcAFoLQBQJA9/fTT2rVrl+ffI4880uBtFy9erLKyMo0aNUq33HKL3n777Qte\nz/XXX6/t27fro48+Up8+fTyzP++//77i4+MVERFxwcv67pf5Sy65RLW1taqvr1dFRYW6d++ukJD/\n+3jp0aOHZ7NKX4iNjT3ni36PHj1UUVEhSdqyZYtuu+02XX/99UpJSVFxcbGqqqokSRUVFfq3f/s3\nz7iePXv6JM/hw4dVX1+vgQMHeor3ggULPJuizp49W263W7feeqscDkejm2V6071793N+/vLLLzVj\nxgwNGjRI1157rWbPnu25j9409Fw15dJLL9XRo0c9P1955ZXatWuXfvvb3+r06dMNjvvuY/x9kydP\nVnx8vO655x4NHTpU+fn5TeYAAHAgEgBoUS677DI9/vjjOnPmjDZs2KCcnBxt3779gmYrkpOT9c9/\n/lNvvfWWUlNT9cMf/lCHDx/Wli1blJqa6nVMc2dBYmJiVF5erjNnzniK25EjR3TZZZdJkjp06KBT\np055bv/ll182a/mS5HQ65Xa7PdmOHDmi9PR01dXVKScnR4899piGDh2qdu3a6YEHHpDb7fZkO3Lk\niGc5hw8fbva6venevbvCwsL07rvvej1ISHR0tB599FFJ0q5du5SVlaXU1NTzjpDZ0GP9/csff/xx\n2Ww2/fd//7cuvfRSbdy48ZwjfvpKWlqaVqxYoZqammZvItmQTp06KTc3V7m5ufr00081adIkXX31\n1UpLS/PJ8gGgtWKmDQBakPXr1+vYsWMKCQlRly5dJEkhISGKjIxUSEhIo+fL6tChg/r166cXX3zR\ns/9acnKyXn755QZLW1RUlI4fP64TJ05cUL7ExERdcsklWrVqlU6fPq3t27dr06ZNnv3TrrzySr31\n1ls6deqUPv/88/Nmnbp169bofZDOHsziueee0+nTp/XGG2/os88+0+DBg1VXV6e6ujpFRkYqNDRU\nW7Zs0datWz3jRo4cqVdffVX79+/XqVOn9Nvf/vaC7lNTYmJiNGDAAC1btkwnT57UmTNndODAAe3Y\nsUOSPPudSVLXrl1ls9nOmYn81oU8h5JUXV2tjh07qnPnznI6nVq1apVP7sf3jR07VtHR0Zo2bZo+\n/fRTuVwu1dbW6sMPP7S8zLfffluff/653G63OnfuLLvdzuaRAHABKG0A0IKUlJTI4XAoOTlZixcv\n1hNPPKFLLrlEHTp00P33368JEyYoJSVF77//vtfxqampqq+vV2JioqSzm0xWV1c3WNp69+4th8Oh\n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\nW5SdnR2UHLt27dKdd96pPn36eDajmjlzpgYPHhzwLPv27VNubq5cLpfcbrdGjhypadOmBTzHd23f\nvl2rV6/WypUrg5bh4MGDmjp1qqSz22iPHj06aK+Xjz/+WPPmzdPp06cVFxenpUuXBm0/nJqaGg0Z\nMkQbN25U586dg5LhW0899ZRef/11hYaG6sorr9TixYsDulnXd91xxx06fvy4QkNDPYdUD5SZM2dq\nx44dqqqqUlRUlB588EFdeuml+tWvfqVjx46pS5cuuvLKK/X73/8+KFnGjx/vuT49PV1r164NyOyJ\ntyw7duzQvn37JEk9e/bUokWLArKDvrcsl19+uZYsWaL6+nq1b99ejzzySEA2D/eWpaamRn/84x8l\nScOGDdOsWbP8PpPT0OdgYmKipk+friNHjqhHjx7Ky8vTpZdeGpQsdXV1Af89aijLo48+qrq6Os9j\nkZSUpEWLFgUly9q1a/XPf/5TNptNPXv21MKFC/2+5dKFfG8K1PtLY1lyc3OVlJSkCRMm+DVDU1nC\nw8MD/v7S0PfJt956KyifR4FGaQMAAAAAg7F5JAAAAAAYjNIGAAAAAAajtAEAAACAwShtAAAAAGAw\nShsAAAAAGIzSBgAAAAAGo7QBAAAAgMH+P98a6ujlVqhCAAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f528b499f98>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"Y = np.arange(len(l2_train[0]))\n", | |
"plt.figure(figsize=(15, 7))\n", | |
"plt.bar(Y, l2_train[0], align='center', alpha = 0.5, label = '1/ 4', color = 'red')\n", | |
"plt.bar(Y, l2_train[1], align='center', alpha = 0.5, label = '2 / 4', color = 'green')\n", | |
"#plt.bar(Y, l2_train[-2], align='center', alpha = 0.5, label = '3 / 4', color = 'blue')\n", | |
"plt.bar(Y, l2_train[-1], align='center', alpha = 0.5, label = '1', color = 'black')\n", | |
"plt.xticks(Y, np.delete(np.arange(len(all_files_data)), bad_files))\n", | |
"plt.legend(loc = 'best')\n", | |
"plt.title('Hist without bad files train. Girls ')\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 150, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([ 231.8091301 , 226.90559284, 2923.59030236, 243.20828156])" | |
] | |
}, | |
"execution_count": 150, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"l2_train = np.mean(l2_train, axis = 1)\n", | |
"l2_train" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 156, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n", | |
" (prop.get_family(), self.defaultFamily[fontext]))\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA3sAAAG5CAYAAAA3ci11AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8VPWh///3rNn3mQQIa8iCgEIi4oJKRcWvYC4Weqm3\nSinVurSaerV6UapWakttrdpae4sLt3Kv1p9SC3W5tYUqKkUrJIAokBDCkpCEmeyZTCaznN8ffjtf\nKVuADDNJXs/Hg8cjOefMOe/kk8C8+ZzFZBiGIQAAAADAgGKOdgAAAAAAQN+j7AEAAADAAETZAwAA\nAIABiLIHAAAAAAMQZQ8AAAAABiDKHgAAAAAMQJQ9AMBpmTFjhv72t7+dseM9+OCDevrpp8/Y8Y7l\npptu0h/+8Idoxzimjz76SJdeemmfbwsA6D8oewCAPvOHP/xBc+fOVUlJiS699FL99Kc/VSAQOOX9\nvfbaa/q3f/u3w5YtXbpU3/nOd04rZ1FRkfbt23da+3juuef05S9/+bT20Rdee+01FRUV6a233op2\nFABAjKHsAQD6jNfr1f33368PP/xQr776qj788EOtWLHiqNueTgmMtFjO9s/+8Ic/KD09XatXr452\nFABAjKHsAQD6zNe+9jVNmTJFdrtdOTk5Ki0tVXl5eXj9jBkz9Mwzz6i0tFSTJ09WIBDQM888oyuu\nuELFxcWaNWuW/vKXv0iSqqur9dBDD2nLli0qLi7WlClTJEmLFy/WE088Ed7nK6+8oiuvvFJTp07V\nrbfeqsbGxuNmvP766yVJc+bMUXFxsd56663waYzPPPOMpk2bpvvuu09tbW265ZZbdMEFF+i8887T\nLbfcooaGhvB+FixYoFdffVXS/5uBfPTRR3XeeedpxowZWr9+/VGP/8wzz6isrOywZY888ogeeeSR\n8L4uv/xyFRcXa8aMGfrjH/94zK+lrq5OH3/8sZYuXaoPPvhALpfrmNvOmDFDy5cv16xZs3Teeefp\nvvvuk8/nO2ybFStW6MILL9TFF1+s3//+9+Hl7777rq699lqVlJRo+vTpeuqpp455HABA7KDsAQAi\n5uOPP1Z+fv5hy958800988wz2rRpk6xWq0aMGKEXX3xRmzdv1u2336577rlHhw4d0tixY/Xwww9r\n8uTJqqio0KZNm47Y/8aNG/Xzn/9cTz75pD744APl5ubqrrvuOm6mF198UZK0Zs0aVVRUaNasWZIk\nt9uttrY2vfPOO/rhD3+oUCikuXPn6p133tE777yjuLg4LV269Jj73bZtm8aMGaMPP/xQN910k5Ys\nWSLDMI7Ybvbs2Vq/fr06OzslScFgUH/60590zTXXqKurS4888oieffZZVVRU6OWXX9ZZZ511zGOu\nXr1aEydO1FVXXaWxY8fq9ddfP+7X/vrrr+v555/XX/7yF9XU1OjXv/51eJ3b7VZHR4fee+89/ehH\nP9LSpUvV1tYmSUpISNCjjz6qTZs2afny5frd736ntWvXHvdYAIDoo+wBACJi1apV2r59u775zW8e\ntnzBggUaOnSo4uPjJUlXX321cnJyZDabNWvWLI0aNUrbtm3r1TFef/11zZs3TxMmTJDdbtddd92l\nLVu2qLa29qTzms1mlZWVyW63Kz4+XhkZGbrqqquUkJCg5ORk3Xbbbfr444+P+fphw4Zp/vz5slgs\n+vKXvyyXyyW3233Edrm5uRo/fny4LH344YeKj4/X5MmTwzmqqqrU3d2t7OxsFRQUHPOYa9as0TXX\nXCNJuuaaa054Kuf111+voUOHKj09XbfddpvefPPN8Dqr1arvfOc7stlsmj59uhITE1VTUyNJOv/8\n81VUVCSz2axx48Zp9uzZ+vvf/37cYwEAoo+yBwDoc2vXrtXjjz+uZ599VpmZmYetGzp06GGfr169\nWnPmzNGUKVM0ZcoUVVVVqaWlpVfHOXTokHJzc8OfJyUlKT09/YSnch5NRkaG4uLiwp97vV49+OCD\nuuyyy1RSUqLrr79e7e3tCgaDR329w+EIf5yQkCBJ6urqOuq211xzjd544w1J0htvvBEubImJiXri\niSf08ssv6+KLL9bNN9+s6urqo+5j8+bNqq2t1ezZs8P7rKys1I4dO475NX7xez9s2DAdOnQo/Hl6\nerqsVuthX8M/8m/dulULFizQBRdcoHPPPVcvv/xyr8cIABA9lD0AQJ9677339P3vf1+/+c1vVFRU\ndMR6k8kU/riurk7f//739cADD+ijjz7Spk2bDpvJ+uK2R5Odna26urrw511dXWptbVVOTs5J5/7n\nY61YsUI1NTV65ZVXVF5eHj7982inZp6sq6++Wn//+9/V0NCgv/zlLyotLQ2vu+SSS/Rf//Vf+uCD\nD5SXl6cHHnjgqPtYvXq1DMPQtddeq2nTpmn+/PmSdNzHQdTX14c/PnjwoLKzs3uV9+6779bll1+u\n9evXa/Pmzbruuuv65PsAAIgsyh4AoM9s3LhR99xzj5566imdc845J9ze6/XKZDKFZ/9+//vfq6qq\nKrw+KytLjY2N6unpOerrr7nmGr322mvasWOHenp69Pjjj+ucc87R8OHDj3tch8OhAwcOHHcbj8ej\nuLg4paamqrW1Vb/61a9O+PX0VmZmpqZOnar77rtPw4cP19ixYyV9ft3c2rVr1dXVJbvdrsTERJnN\nR/5T7fP59L//+79aunSpVq9eHf7zwAMP6I033jjm3URfeuklNTQ0qLW1Vb/5zW/C1yueiMfjUVpa\nmuLi4rRt27bwrCQAILZR9gAAfebXv/61Ojo6dPPNN6u4uFjFxcW66aabjrl9fn6+vvnNb+q6667T\nRRddpMrKSpWUlITXX3DBBcrPz9fFF1+s888//4jXX3TRRfrud7+rO+64QxdffLEOHDhw2J06j+X2\n22/X4sWLNWXKlGM+n27hwoXy+Xy64IIL9NWvflWXXHJJL74DvXfNNdfob3/7W/gUTkkKhUL67W9/\nq0suuURTp07Vxx9/rB/84AdHvHbt2rWKj4/XtddeK6fTGf4zb948BYNBvf/++8c85je/+U1dccUV\nGjlypG677bZeZX3ooYf0y1/+UsXFxXr66ad19dVXn9LXDAA4s0wG52EAADDgzZgxQ4888oguuuii\naEcBAJwhzOwBAAAAwABkPfEmAAD0L5s2bdK3vvWto66rqKg4w2kAAIiOiJ3GWV9fr3vvvVdNTU0y\nmUyaP3++Fi5cGF6/YsUKPfroo9q4ceNht+U+ePCgZs+erdtvv1033nhjJKIBAAAAwIAXsZk9i8Wi\nxYsXa8KECers7NS8efM0bdo05efnq76+Xhs2bNCwYcOOeN1PfvKTPr8IHgAAAAAGm4iVvezs7PDz\ne5KTk5WXl6fGxkbl5+dr2bJluueee/Ttb3/7sNesXbtWubm5SkxM7NUxXK6OPs+Nw2VkJKql5egP\nBUb0MC6xhzGJPYxJbGJcYg9jEpsYl9gTq2PidKYcc90ZuWavtrZWO3bs0KRJk7R27VplZ2dr3Lhx\nh23j8Xj07LPPasWKFVqxYkWv9puRkSir1RKJyPiC4/0AIXoYl9jDmMQexiQ2MS6xhzGJTYxL7Olv\nYxLxsufxeFRWVqb7779fFotFy5cvP2qZ+9WvfqWFCxcqKSmp1/uOxWY90DidKcygxiDGJfYwJrGH\nMYlNjEvsYUxiE+MSe2J1TKI2s+f3+1VWVqbS0lLNnDlTu3btUm1trebMmSNJamho0Ny5c/Xqq69q\n69atevvtt/XYY4+pvb1dZrNZcXFxuuGGGyIZEQAAAAAGpIiVPcMwtGTJEuXl5WnRokWSpKKiIm3c\nuDG8zYwZM7Rq1SplZmbqpZdeCi9/6qmnlJiYSNEDAAAAgFMUsYeqb968WWvWrNGHH36oOXPmaM6c\nOVq/fn2kDgcAAAAA+IKIzexNmTJFu3btOu42f/3rX4+6/I477ohEJAAAAAAYNCI2swcAAAAAiB7K\nHgAAAAAMQJQ9AAAAABiAKHsAAAAAMAAN+rJX6+rUO+W1+uMHNXqnvFa1rs7T3ueVV14iSaqq2qVb\nblmkG26Yr4ULr9O6dX8+6X299967qqnZE/78ued+o48//uik9/PKKy+pu7v7pF/3i1/84pSOBwAA\nACC6IvpQ9VhX6+rUpp2Hwp+3eXrCnw93Jp/2/uPi4vX97z+sESNGyu126cYbb9DUqRcqJeXwp9wH\ng0FZLJaj7uP999/VRRddrDFj8iRJN9106ylleeWV32nmzFmKj48/Yt3xjv/d735XLlfHKR0TAAAA\nQPQM6LK3vaZJB91dx1xfVduq7p7gEcvr3B4VDE8/6muGORI1cUxWr44/cuSo8McOh1Pp6ZlqbW1R\nSkqKvvKVUs2YcaU2bfpIX/va19XV1aU//vEP8vv9Gj58uB544IeqqtqlDz54T1u2lOuFF1boRz/6\nqX772+d00UUX67LLrtCmTX/X008/qWAwqHHjxut737tPdrv9iByvvvqy3G6XyspuUVpaup56armu\nvPIS/cu/zNWmTX/XXXf9h8rLP9aGDe/L5+vWxImTdO+998tkMmnx4sUqKTlfl112hb7ylVJdffU1\n2rDhPQUCAf3wh49q1KjRvfpeAAAAADizBvVpnL6jFL3jLT8dn322XYGAX7m5w8PL0tLStGLFi7ri\niqs0ffpleu65lXrhhd9p1KgxeuON1Tr77Em6+OJL9e1vl+m3v33psNf6fD79+McP6+GHl2nlyv9P\nwWBQq1evOuqx//Vfr5PD4dQvf7lcTz21XJLk9Xo1fvxEvfDC7zRp0mTNmzdfzz23Uv/936+op6db\nGza8f9R9/SPztdd+Rb/73X/34XcIAAAAQF8a0DN7E8dkHXcWzmYxqc3Tc8TytCS7LisZfpRXnBq3\n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\n6OnwccWuGO7fW8RJPalN6kvtUU9qk/pSezZbT9Y97BUKBQ4ePMgXvvCF1embn/nMZ/jMZz7D3Xff\nzb333svBgwff1GvPzi5cyFLlFdTqcPXv64246Qw4GJ3Ok5jM8eJwiheHU3hdTcSjXjrDbmzW+tm+\nYbP0pZGoJxtnaXmFY6dnGJvOYzGb2B5vZUubl2KhRLFQWn2eelKb1Jfao57UJvWl9tRqT14rgK7r\nt9+lpSUOHjzIwMAA11577cseHxgY4Gc/+xlwfiQvmUyuPjY1NbW6cIvIWtisFra0tXDVvnbefnGM\njpCbfHGJY6fTPPrMKEeH0sznS6//QiJSs6ZnF3js8DnGpvP4PXbesbedre0tdTuCLyIi8lasW9gz\nDIPbb7+d3t5ebrrpptXjiURi9edDhw7R29sLwFVXXcXDDz9MuVxmbGyMRCLBJZdcsl7lSR0zmUwE\nfQ4u2xbm2ss72RFvpclqJpHM8viRczz5/ASjUzlWKpVqlyoia7S8UuHocJr/73iSUnmF7d1+rtzd\npr03RUREXsO6TeN87rnneOihh+jv7+fAgQMAq6ttjoyMYDKZaG9v58tf/jIAfX19vPOd7+Rd73oX\nFouFL33pS6+5EqfIWjQ3Wenv9LG1o4Xp2SIjk1mmZ4tksoscH8nQFXETj3pxO7R9g0itmplf5PBg\nisLiEl5XE/v6Q/jc9mqXJSIiUvPWbeuFjVCLc2brTa3OTX4rCotLJJI5RqdylMorAIT9DuJRL9GA\nc1Ns31CPfdns1JMLb6VS4eTZWU6fywKwtaOFbV0+LOa1TUpRT2qT+lJ71JPapL7UnlrtSVW2XhCp\nVa5mGzvjrWzr8jGZXmAkeX60b3q2iMNupTvioTvqwWHX6SFSLbO5EocHU+QWyrgcNi7tD9Hqba52\nWSIiIpuKvs1Kw7KYzXSE3XSE3WQLZUYms4yn8pwanWVwbI5owEk85iXU0qzFH0Q2SKViMDg2x+DY\nHBXDoLfNy454K1ZL/aymKyIislEU9kQAr6uJ3VuD7OxpZWw6TyKZYyJdYCJdwO2wEY956Qq7abLp\nPlKR9ZJdKHN4MMVcroTDbmVvf4iwz1HtskRERDYthT2R32G1mOmJeYlHPczmSoxM5phI5zl+ZoaT\niQztITfxqAe/x67RPpELpGIYnDmX5eTZDCsVg66Ih4t7W7FZdXFFRETkrVDYE3kFJpOJVm8zrd5m\n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\ndBGHDh162eMPPPAAN910E5/4xCd417vexYc//GGmpqZWH8/n8/zt3/4t+/fv5y/+4i9IpVIA/PrX\nv+aDH/wgf/Znf8a73vUuvv/972/UryQiIg1OYU9ERBreqVOnmJub44orruD666/n/vvvf8XnPffc\nc9x6663813/9F3/wB3/AV7/61dXHXnjhBf7+7/+ehx9+mK1bt3LvvfcC0N7ezve//31+/OMf86Mf\n/Yj//M//5PTp0xvye4mISGNT2BMRkYZ33333ceDAAUwmE9deey3Hjh17yajdb1166aX09vYC8Od/\n/uf86le/Wn1s3759xGIxAHbv3s3o6CgAi4uLfOELX2BgYIAPfOADTE9Pc+rUqQ34rUREpNFZq12A\niIhINZXLZX7605/S1NTEQw89BMDS0hIPPPDAG3odu92++rPFYmFlZQWAb37zm4RCIb7+9a9jtVr5\nq7/6K0ql0oX7BURERF6FRvZERKShHTp0iJ6eHp588kkee+wxHnvsMb73ve/x4x//+GXPPXz4MIlE\nAjh/j98VV1zxuq+fy+WIRqNYrVYGBwd59tlnL/SvICIi8oo0siciIg3t/vvvZ2Bg4CXH9u7dS6VS\n4ZlnnmHXrl2rx/ft28edd97J2bNnCQaDfOMb33jd1//kJz/Jrbfeyn333UdPTw+XX375Bf8dRERE\nXonJMAyj2kWIiIjUugceeIAnnniCf/3Xf612KSIiImuiaZwiIiIiIiJ1SCN7IiIiIiIidUgjeyIi\nIiIiInVIYU9ERERERKQOKeyJiIiIiIjUIYU9ERERERGROqSwJyIiIiIiUof+f7Adii2yeB3RAAAA\nAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f528b556c18>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"x = np.array(np.delete(enc_dims, [2])) / 4.\n", | |
"plt.figure(figsize=(15, 7))\n", | |
"\n", | |
"y = np.delete(np.array(l2_train), [2])\n", | |
"plt.plot(x, y, marker='o', alpha = 0.5, label = \"l2ratio_train\")\n", | |
"\n", | |
"plt.title(\"l2ratio_train vs Alpha\")\n", | |
"plt.xlabel(\"Alpha\")\n", | |
"plt.ylabel(\"l2ratio\")\n", | |
"plt.legend(loc = 'best')\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Calc L2Ratio on Test" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"l2_loss_by_files = []\n", | |
"for enc_dim in enc_dims:\n", | |
" name = \"./catherineglazkova_tasssshhhha/Girls_CNN_model_\"\n", | |
" autoencoder = load_model(name + str(enc_dim) + \".h5\")\n", | |
" print(\"Start {}\".format(enc_dim))\n", | |
" start = 0\n", | |
" loss = 0\n", | |
" adds = []\n", | |
" for i in range(X_test_size.shape[0]):\n", | |
" finish = X_test_size[i]\n", | |
" part_data = X_test[start : finish].T\n", | |
" part_data_pred = predict(autoencoder, part_data)\n", | |
" add = np.sum((part_data - part_data_pred)**2)\n", | |
" print(i, add, X_test_names[i])\n", | |
" adds.append(add)\n", | |
" start = finish\n", | |
" l2_loss_by_files.append(adds.copy()) \n", | |
" print(enc_dim)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 158, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"iters = []\n", | |
"start = 0\n", | |
"for finish in X_test_size:\n", | |
" iters.append((start, finish))\n", | |
" start = finish" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 159, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"all_files_data = [X_test[itter[0] : itter[1]] for itter in iters]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 160, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"bad_files = []" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 163, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"div = np.array([np.sum(all_files_data[i]**2) for i in np.delete(np.arange(len(all_files_data)), bad_files)])\n", | |
"l2_test = np.delete(l2_loss_by_files, bad_files, axis = 1) / div\n", | |
"l2_test = np.sqrt(l2_test) * 100" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 164, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n", | |
" (prop.get_family(), self.defaultFamily[fontext]))\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA20AAAGrCAYAAABT3H9KAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt0VPW9///XZEKohFsISSwpxQMNWlFCKAEDAhLKLQFB\nkFZavESUilQOF6VcbDhgAaUqVNrljxQ9pdXqUcSgBAUJAhGQm9jYI2hRcwCBCYaAkGBuzPcPSn5c\nZs/MnsyET5LnYy3XwtmzX/OZnffMnvd89t7jcLvdbgEAAAAAjBR2tQcAAAAAALBG0wYAAAAABqNp\nAwAAAACD0bQBAAAAgMFo2gAAAADAYDRtAAAAAGAwmjYAqMfS09O1Y8eOWnu8zMxM/elPf7JcvnTp\nUj366KN+511//fX6v//7v2AMTTNmzNDixYstly9evFg9evRQr169dOTIESUlJamqqkqSdPfdd+v1\n118PyjjqCl9/yx07dqhPnz61OCIAaLho2gCgjkpNTdW2bdsuuW3VqlUaM2ZM9f/n5OSoR48eXnMO\nHz6s66+/XpWVlTUe07x58zRx4kRJdetD/ZEjR/Tf//3fWrt2rbZu3ao2bdpo7969cjqdIXvMYDWC\ngW7nnJwcjR49Wl26dFFKSopGjx6tl19+WRd+vvXivyUA4OqiaQMANHhHjhxRy5YtFR0dfbWHUite\nfPFFzZ8/X+PGjdMHH3ygbdu2ae7cufroo49UUVHhc/1gNPgAAP/RtAFAPXbxbFx+fr5Gjhyprl27\nqmfPnlq4cKEkaezYsZKk5ORkJSUlae/evZdklJWVqXPnzjpx4oQk6fnnn9eNN96oM2fOSJKWLFmi\n+fPnS/r/D0EsLS3Vgw8+qMLCQiUlJSkpKUkul0uSVFFRoenTpyspKUnp6en65JNPvD6HzZs3q3//\n/urRo4eeeuopnTt3TpJ08OBB3XPPPerRo4d69OihadOm6dtvv61e79NPP9Udd9yhpKQkTZ48WWVl\nZR7zt23bpvvvv796rDNmzPA5+7hy5UoNGTJEycnJGjdunL7++mtJktvt1oIFC5SSkqKuXbtq2LBh\n+vzzz69Yf/Hixdq9e7fmzZunpKQkzZs3T5L0xRdfKCMjQ927d9egQYO0du3aS7ZDWlqakpKS1Lt3\nb73wwgtet7OV06dP67nnntOcOXM0ePBgNW3aVA6HQzfeeKOeeeYZRURESLr0cNILs3lZWVnq1auX\nZs6ceUVuVlaWevfuraSkJA0aNEjbt2/3Og4AgP9o2gCggZg/f77uueceffTRR3rvvfc0ZMgQSdJL\nL70kSdq1a5f27t2rpKSkS9Zr3Lixbr75Zu3atav6fm3atNGePXuq/7979+6XrNOkSRP9+c9/Vmxs\nrPbu3au9e/cqLi5OkrRx40alp6dr9+7dSk1N1RNPPOF13O+9957eeOMNvfnmm9q4caPeeOMNSecb\npF/96lfKy8vTO++8o2PHjmnp0qWSpPLyck2cOFHDhw/Xzp07NXjwYK1fv95jfs+ePS8Z65NPPul1\nPBs2bNCyZcv0xz/+Udu3b9dPfvITTZs2TZL0wQcfaPfu3Vq3bp327NmjJUuWqGXLlldkTJkyRd26\ndVNmZqb27t2rzMxMlZaW6v7779fQoUO1bds2LV68WHPnztWBAwckSbNnz9a8efO0d+9erVmzRrfc\ncovX7Wxl7969Ki8vV//+/b3e73LffPONTp06pffff/+Kv9mXX36pl19+WStXrtTevXv1wgsvKD4+\n3lY+AMAaTRsA1GETJ05Ut27dqv+bO3eu5X3Dw8N18OBBnThxQpGRkerSpYvfj5OcnKxdu3apsrJS\nn332me6++27t2rVLZWVl+uSTT9StWze/s37yk5+ob9++cjqdGj58uPbv3+/1/g8++KBatmypNm3a\n6J577tGaNWskSe3atVOvXr0UERGhVq1aKSMjo7qx/Mc//qGKigrde++9atSokQYPHqybb77Z7zF6\n8+qrr2r8+PHq0KGDwsPD9dBDD2nfvn36+uuvFR4erpKSEn355Zdyu93q0KGDYmNj/crdtGmT4uPj\nNWrUKIWHh+vGG2/UoEGD9O6770o6//c7cOCAzpw5oxYtWqhTp04Bjb+4uFhRUVEKDw+vvu2uu+5S\nt27d1Llz5+pteLmwsDBNmjRJERER+t73vnfJMqfTqfLycn3xxReqqKjQD37wA/3whz8MaHwAgCvR\ntAFAHfanP/1Ju3fvrv5vzpw5lvedP3++CgoKNGTIEI0aNUrvv/++34/TvXt37dixQ59++qk6duyo\nXr16adeuXfr444/Vrl07RUVF+Z3VunXr6n9/73vfU1lZmddzpL7//e9X/zs+Pl6FhYWSzs/8TJky\nRb1791bXrl312GOPqbi4WJJUWFiouLg4ORyO6nXbtGnj9xi9OXLkiBYsWFDdKHfv3l1ut1sul0sp\nKSn65S9/qXnz5iklJUW//e1vqw8j9eXrr79Wfn7+JU3422+/rePHj0uSnnvuOW3evFn9+vXT2LFj\nrziM1V8tW7ZUcXHxJdv81Vdf1e7du9WyZcvqw08vFxUVpcaNG3tc1q5dO82aNUtLly5Vz549NWXK\nFJ+HaQIA/EfTBgANxHXXXadnn31W27dv14MPPqhJkyaptLT0ksbGSlJSkr766iu99957Sk5O1o9+\n9CMdOXJEmzdvVnJyssd1/Mn1x9GjR6v/feTIkeqZq2effVYOh0Nvv/22PvroI/3+97+vvvJhTEyM\nXC5X9f9fWDcYvv/972vu3LmXNMv5+fnq2rWrJOmee+7RqlWrtHbtWhUUFGj58uV+5yYnJ1+Su3fv\n3urZ086dO+v555/Xtm3b9NOf/lSTJ0+WZH87JyUlKSIiQrm5ubbW8/U4w4YN0yuvvKL3339fDodD\nTz/9tK18AIA1mjYAaCBWr16tEydOKCwsTM2bN5d0/pC3Vq1aKSwsTIcOHbJc95prrtFNN92kl19+\nufr8taSkJL366quWTVt0dLROnjyp06dP12jcL7zwgk6dOqWjR4/qr3/9q9LS0iRJJSUlatKkiZo1\nayaXy3VJc9SlSxeFh4frr3/9qyoqKrR+/XqfFzzx11133aWsrCz961//knT+wh7vvPOOpPMXe7lw\naOY111yjiIgIhYV53tW2bt36km1+2223qaCgQNnZ2aqoqFBFRYXy8/P1xRdfqLy8XG+99ZZOnz6t\nRo0aKTIysjrX7nZu3ry5Jk6cqLlz5+rdd9/VmTNndO7cOe3bt09nz54NaJt8+eWX2r59u8rLyxUR\nEaHGjRtbPm8AgH28owJAA5GXl6f09HQlJSVp/vz5Wrx4sb73ve/pmmuu0UMPPaQxY8aoW7du+vjj\njz2un5ycrMrKSnXu3FnS+UMmS0pKLJu2Dh06KD09XT/96U/VrVu3gA+X69+/v0aOHKkRI0botttu\n05133ilJ+vWvf61PP/1U3bp10/jx4zVw4MDqdSIiIrR06VK9+eab6t69u9auXasBAwYE9PiXGzBg\ngB544AFNnTpVXbt21dChQ7VlyxZJ5xvJxx9/XN27d1e/fv3UsmVLjRs3zmPOPffco3Xr1ik5OVm/\n+93v1LRpU73wwgtau3atevfurVtvvVVPP/20ysvLJZ1vulNTU9W1a1e9+uqr+v3vfy/J83Z+6623\n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\nadIk22O5cN5iXFycli1bZnt9SUpNTVVkZKTCwsLkdDq1atUq2xnffvutHn/8cX3++edyOBxasGCB\nkpKS/F7/yy+/1JQpU6r//9ChQ5o0aZLuu+8+vzP+8pe/6PXXX5fD4VDHjh21cOFCNW7c2M7T0IoV\nK/T666/L7XZr9OjRfj++p7o6efKkpkyZoq+//lrx8fFasmSJWrRoYSvjnXfe0R//+Ed98cUXev31\n13XzzTfbHsdTTz2l999/X40aNdIPf/hDLVy4UM2bN7eVsWTJEuXm5iosLEzR0dFauHCh16vSenud\nvfjii3rqqae0fft2tWrVylbG0qVL9dprr1WvN3XqVPXt29f2OP72t7/p5ZdfltPpVN++fTV9+nRb\nGZMnT9ZXX30lSTp9+rSaNWum1atX28rYt2+f5syZo7KyMjmdTv3Xf/2XOnfubCtj//79mjNnjkpL\nSxUfH6+nn35aTZs29bi+1fuWnTq1yrBTp1YZdurUKsNOnfp6H/enTq0y7NSpt3H4W6dWGXbq1CrD\nTp1aZdipU6t9o506tcqwU6dWGXbq1CrDTp36+qzgT51aZdipU2/j8LdOrTLs1KlVhp06tcqwU6cX\nXP4ZzO5+31OG3f2+pwy7+31PGXb3+54yLvB3v280N2yprKx09+/f333w4EF3WVmZe9iwYe5//etf\ntjJ27tzp/uc//+lOT08PeBwul8v9z3/+0+12u92nT592Dxw40PY4zp075z5z5ozb7Xa7y8vL3Xfe\nead77969tsfy4osvuqdOneoeP3687XUv6Nevn7uoqCjg9d1ut3v69Onu1157ze12u91lZWXuU6dO\nBZxVWVnp7tmzp/vw4cN+r3Ps2DF3v3793GfPnnW73W73pEmT3G+88Yatx/3ss8/c6enp7tLSUndF\nRYX73nvvdRcUFPi1rqe6euqpp9zLli1zu91u97Jly9yLFi2ynXHgwAH3F1984R47dqw7Pz8/oHHk\n5eW5Kyoq3G63271o0aKAxnH69Onqf69YscL929/+1naG2+12HzlyxH3//fe7b7vtNp815ynjueee\ncy9fvtzrer4ytm/f7r733nvdZWVlbrfb7f7mm28Cei4XLFy40L106VLbGRkZGe5Nmza53W63e9Om\nTe6xY8fazhg5cqR7x44dbrfb7X799dfdixcvtlzf6n3LTp1aZdipU6sMO3VqlWGnTr29j/tbp1YZ\ndurUKsNOnfqzT/JVp1YZdurUKsNOnVrtG+3UqVWGnTq1yrBTp1YZdurU22cFf+vUKsNOnVpl2KlT\nfz73+KpTqww7dWqVYadOL7j8M5jd/b6nDLv7fU8Zdvf7njLs7vc9Zbjd9vb7JuPwSJvy8/PVrl07\ntW3bVhEREUpPT1dubq6tjOTkZJ/fevgSGxurTp06SZKaNm2q9u3by+Vy2cpwOByKjIyUJFVWVqqy\nslIOh8NWxrFjx7Rp0ybdeeedttYLttOnT2vXrl3V44iIiPD5jY4327dvV9u2bRUfH29rvaqqKn33\n3XeqrKzUd999p9jYWFvrf/HFF+rcubOuueYahYeHKzk5WevXr/drXU91lZubqxEjRkiSRowYoQ0b\nNtjO6NChg9q3b+/3c/CUceuttyo8/PzEfpcuXS75HUd/My7+tvHs2bM+a9XqdbZw4UI99thjftV6\nMF6rnjJeeeUVjR8/XhEREZKk6OjogMfhdrv1zjvvaOjQobYzHA6HSkpKJJ1/DfmqV08ZBQUFSk5O\nliT16tXLa71avW/ZqVOrDDt1apVhp06tMuzUqbf3cX/rNBj7AqsMO3Xqaxz+1KlVhp06tcqwU6dW\n+0Y7dWqVYadOrTLs1KlVhp069fZZwd86DcbnDasMO3Xqaxz+1KlVhp06tcqwU6eS589gdvf7njLs\n7vc9Zdjd73vKsLvft/pMame/bzKaNptcLpeuvfba6v+Pi4uzvYMMtsOHD2vfvn1KTEy0vW5VVZWG\nDx+unj17qmfPnrYzFixYoMcee0xhYTUvpYyMDI0cOVL/8z//Y3vdw4cPq1WrVpo5c6ZGjBih2bNn\nq7S0NOCx5OTk+PwQfLm4uDjdf//96tevn2699VY1bdpUt956q62Mjh07as+ePSouLtbZs2e1ZcsW\nn2903hQVFVXvOGJiYlRUVBRwVrC88cYb6tOnT0DrLl68WH379tXbb7+t//zP/7S9/oYNGxQbG6sb\nbrghoMe/4KWXXtKwYcM0c+ZMnTp1yvb6BQUF2r17t0aPHq2xY8cqPz8/4LHs3r1b0dHRuu6662yv\nO2vWLC1atEh9+/bVU089palTp9rOSEhIqP7i6t1339XRo0f9Wu/i961A67Qm732+MuzU6eUZgdTp\nxRmB1unl4wikTi/OCLROPW1Tu3V6cUagdXpxht069bRvtFunNd2/+pPhT51aZdipU08ZduvUahx2\n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\nAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f528ae3a390>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"Y = np.arange(len(l2_test[0]))\n", | |
"plt.figure(figsize=(15, 7))\n", | |
"plt.bar(Y, l2_test[0], align='center', alpha = 0.5, label = '1/ 4', color = 'red')\n", | |
"plt.bar(Y, l2_test[1], align='center', alpha = 0.5, label = '2 / 4', color = 'green')\n", | |
"#plt.bar(Y, l2_test[-2], align='center', alpha = 0.5, label = '3 / 4', color = 'blue')\n", | |
"plt.bar(Y, l2_test[-1], align='center', alpha = 0.5, label = '1', color = 'black')\n", | |
"plt.xticks(Y, np.delete(np.arange(len(all_files_data)), bad_files))\n", | |
"plt.legend(loc = 'best')\n", | |
"plt.title('Hist with bad files test. Girls')\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 167, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"bad_files = [4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 18, 22, 24, 25, 27, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 168, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"div = np.array([np.sum(all_files_data[i]**2) for i in np.delete(np.arange(len(all_files_data)), bad_files)])\n", | |
"l2_test = np.delete(l2_loss_by_files, bad_files, axis = 1) / div\n", | |
"l2_test = np.sqrt(l2_test) * 100" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 169, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n", | |
" (prop.get_family(), self.defaultFamily[fontext]))\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA20AAAGrCAYAAABT3H9KAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt0FPXBxvFnsyEI4WIIyVo4aSw0oEUJAYIGUGpSbgmR\nFFBrBTGiSLzQGJVGsHhAucixgqKvklLf0tqqlWKoRsslKEm5ykWDFaSo4SKwgRAsJEhImPcPXrfG\nXM3ssr8k3885nAO7O795dpbZ5NmZ/Y3DsixLAAAAAAAjBfg7AAAAAACgdpQ2AAAAADAYpQ0AAAAA\nDEZpAwAAAACDUdoAAAAAwGCUNgAAAAAwGKUNAJqgpKQkbdmy5aKtb+bMmXrhhRdqvX/x4sV6+OGH\nL1qeb1uxYoVuvfVWr43Xs2dP7d+/v8b7jh8/rttuu00xMTGaP3++XnrpJc2YMUOSdOjQIfXs2VMV\nFRVey9IUxMTE6ODBg7Xen5mZqYULF17ERADQ/AT6OwAAoKr4+Hg9+eSTGjhwoOe2FStW6I033tCr\nr74qScrJyal3nEOHDikhIUH/+te/FBho7+1+9uzZnr9v2bJFjzzyiPLy8myN2VA9e/bU6tWrFRkZ\neVHWV5fXX39dISEh2rFjhxwOh8/X583XMDMzUy6XSw8++GCDlzl9+rQWL16sNWvW6MSJE7r00kvV\nu3dvTZo0SdHR0ZKknTt32soFAKgfpQ0AgAY6fPiwunfvflEKm7+Vl5dr4sSJ6tChg1566SV1795d\nZ8+eVV5envLy8jylrS6VlZUXISkANH+cHgkATVB8fLw2btwoSSooKNCYMWPUt29fDRw4UPPmzZMk\njR8/XpIUGxurmJiYakdEzp49q969e+vEiROSpBdffFE/+clPdPr0aUnSokWLNGfOHEn/PcWtrKxM\nd999t4qKihQTE6OYmBi53W5J0rlz5zRt2jTFxMQoKSlJu3bt8qzrs88+04QJE9S/f38lJSUpNzfX\nc9+ECRP0xhtveP797dMdb7vtNknS6NGjFRMTo3feeafG7WFZlmbPnq1+/fppxIgR2rRpk+e+v/3t\nbxo5cqRiYmKUkJCg1157rcqyS5cu1eDBgzV48GAtX7681m2emZmp7Oxs/f73v1dMTIw2btxY52mh\np06d0vTp0zV48GBdd911WrhwoafE7N+/X+PHj1e/fv10zTXXKD09vcYxansNly9frpEjRyo2NlaT\nJk3Sl19+6dkOc+fOVVxcnPr27avk5GTt3btXr7/+ut566y1P9ilTptT6PL+xcuVKud1uvfDCC+rR\no4ecTqfatm2rESNG6IEHHvA87tunk2ZmZurxxx/X3XffrT59+lQ7hffEiRO655571L9/fw0YMEC/\n/OUvdf78+XqzAEBLR2kDgCZuzpw5uv3227Vjxw6tWbNGI0eOlCS98sorkqQPPvhAO3fuVExMTJXl\nWrdurauvvloffPCB53FdunTR9u3bPf8eMGBAlWXatm2r3/3udwoPD9fOnTu1c+dOuVwuSdK6deuU\nlJSkbdu2KT4+Xk888YSkC2VuypQpGjRokDZu3KjHHntMDz/8sD7//PN6n9uf//xnSRcKxM6dO5WY\nmFjj4woKCvTDH/5Qmzdv1tSpU3X//ffr5MmTkqTQ0FAtWbJEO3bs0Lx58zRv3jz961//kiTl5eXp\n5Zdf1ssvv6zVq1dXKXvfNX/+fCUnJ2vSpEnauXNnldNXa5KZmanAwECtXr1a2dnZ2rBhg6ecPvvs\nsxo0aJA++OAD5eXlecrZd9X0Gq5du1ZLlizR888/r02bNqlfv3566KGHJEn//Oc/tW3bNq1atUrb\nt2/XokWLdOmll+qWW26pkv2ll16qM7skbdy4UYMHD1bbtm3rfey3vf3225oyZYp27Nihfv36Vbnv\nf//3f+VyubRp0yZt2LBBGRkZLeKoJQDYRWkDAAPdd9996t+/v+fPrFmzan1sYGCgDhw4oBMnTig4\nOFh9+vRp8HpiY2P1wQcfqKKiQp9++qkmTJigDz74QGfPntWuXbvUv3//Bo/Vr18/DRkyRE6nU6NH\nj9aePXskSR999JHKyso0efJkBQUFKS4uTjfccEODvpfXUJ06ddLEiRPVqlUrJSYm6kc/+pHef/99\nSdJPf/pT/fCHP5TD4dCAAQM0aNAgbdu2TZL07rvvasyYMerRo4fatm2r+++/3yt5jh8/rvXr12v6\n9Olq27atQkNDdccdd3iec2BgoA4fPqyioiK1bt36e23n1157TZMnT1b37t0VGBioKVOmaPfu3fry\nyy8VGBio0tJSff7557IsS927d1d4eHijnkNJSYk6d+7s+ffu3bvVv39/9e3bV8OHD691uYSEBPXr\n108BAQFq3bp1lfsCAwN17NgxHT58WK1atVL//v0pbQDQAJQ2ADDQCy+8oG3btnn+PP7447U+ds6c\nOSosLNTIkSM1duxYvffeew1ez4ABA7RlyxZ98skn6tGjh+foz4cffqjIyEiFhIQ0eKxv/4J/ySWX\n6OzZs6qoqFBRUZEuu+wyBQT890dOly5dPKdVeoPL5aryy3+XLl1UVFQkSVq/fr1uvvlmDRgwQP37\n91deXp5KSkokSUVFRfrBD37gWa5r165eyXP48GFVVFRo8ODBnuI9c+ZMz6mojzzyiCzL0rhx45SU\nlFTnaZk1jT137lzPuAMGDJBlWXK73YqLi9Ntt92m2bNnKy4uTr/5zW88p7t+X5deeqmOHTvm+feV\nV16pbdu26fnnn9e5c+dqXe7b2/O7Jk2apMjISN15551KSEhQVlZWo7IBQEvDRCQA0MRdfvnleuaZ\nZ3T+/HmtXr1aU6dO1ZYtWxp0BCMmJkZffPGF1qxZo9jYWP34xz/W4cOHtX79esXGxta4zPc9MhIe\nHq6jR4/q/PnznuJ25MgRXX755ZKkNm3a6MyZM57HHz9+/HuNL0lut1uWZXmyHTlyRPHx8SovL9fU\nqVP11FNPKSEhQa1atdK9994ry7I82Y4cOeIZ5/Dhw9973TW57LLLFBQUpM2bN9c462NYWJiefPJJ\nSdK2bduUmpqq2NjYajNk1rStf/CDH2jKlCm68cYba1z37bffrttvv13FxcVKT0/X0qVLlZ6e/r1f\nt7i4OC1evFhlZWXf+xTJ2rRr106ZmZnKzMzU3r17NXHiRF199dWKi4vzyvgA0FxxpA0AmriVK1fq\nxIkTCggIUIcOHSRJAQEB6tSpkwICAuq8hlabNm101VVX6c9//rPn+2sxMTF67bXXai1toaGhOnny\npE6dOtWgfL1799Yll1yipUuX6ty5c9qyZYvWrVvn+X7alVdeqTVr1ujMmTPav39/taNOnTt3rvM5\nSBcmuPjjH/+oc+fO6d1339Vnn32mIUOGqLy8XOXl5erUqZMCAwO1fv16bdiwwbPciBEj9Oabb2rf\nvn06c+aMnn/++QY9p/qEh4dr0KBBmj9/vk6fPq3z58/rwIED2rp1q6QLp2UePXpUktSxY0c5HI4q\nRyK/UdNr+Itf/EJZWVn697//LenChCfvvvuupAvf7fvoo4907tw5tWnTRkFBQZ5xQ0NDdejQoQY/\nh5SUFIWFhen+++/X3r17VVlZqbNnz+rjjz9u3EaR9N5772n//v2yLEvt27eX0+nk9EgAaACOtAFA\nE5efn6/58+fr66+/VpcuXbRw4UJdcsklkqQpU6bo1ltvVUVFhZYuXVrj991iY2P1ySefqHfv3pIu\nnDK5atWqWktb9+7dlZSUpJ/97GeqrKys97tpQUFBeumllzRr1iwtWbJELpdLCxYsUPfu3SVJEydO\n1K5duzRw4ED17NlTycnJnpkxJen+++9XZmamvv76a82ePbvGyUh69+6t/fv369prr1Xnzp313HPP\neU7tfOyxx5Senq7y8nLdcMMNio+P9yw3ZMgQTZw4URMnTpTD4VB6erreeuutOp9PQy1YsEBPP/20\nEhMTVVpaqoiICN19992SpF27dmnu3Lk6ffq0QkNDNWPGDEVERFQbo02bNtVew6FDh6q0tFQZGRn6\n8ssv1b59ew0cOFAjR45UaWmp5s6dq0OHDikoKEiDBw/WpEmTJEnjxo3Tr371K88plf/zP/+ju+66\nS/37969xNsnWrVvrj3/8o5577jndc889KikpUUhIiK666iotWrSoUdtk//79euKJJ3TixAl16NBB\nt956q6699tpGjQUALYnD+uYcEQAAAACAcTg9EgAAAAAMRmkDAAAAAINR2gAAAADAYJQ2AAAAADCY\nEbNHHjvWsGmjm6KQkLYqKSnzd4xamZ5PMj8j+ewzPaPp+STzM5qeTzI/o+n5JPMzmp5PMj+j6fkk\n8zOank8yP6Pp+RorLKx9rfdxpM3HAgOd/o5QJ9PzSeZnJJ99pmc0PZ9kfkbT80nmZzQ9n2R+RtPz\nSeZnND2fZH5G0/NJ5mc0PZ8vUNoAAAAAwGCUNgAAAAAwWL2l7ezZsxo3bpxuvPFGJSUl6bnnnpMk\nnTx5UqmpqRo2bJhSU1P11VdfeZZZsmSJhg4dquHDhys/P9936QEAAACgmau3tAUFBWnZsmX6+9//\nruzsbOXn5+vDDz9UVlaW4uLitHr1asXFxSkrK0uStG/fPuXk5CgnJ0dLly7VrFmzVFlZ6fMnAgAA\nAADNUb2lzeFwKDg4WJJUUVGhiooKORwO5ebmKiUlRZKUkpKitWvXSpJyc3OVlJSkoKAgRUREKDIy\nUgUFBT58CgAAAADQfDVoyv/KykqNGTNGBw4c0C9/+UtFR0eruLhY4eHhkqSwsDAVFxdLktxut6Kj\noz3Lulwuud3uOscPCWnbrGeBqWv6ThOYnk8yPyP57DM9o+n5JPMzmp5PMj+j6fkk8zOank8yP6Pp\n+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\nHSqHw6HevXsrICBAJSUl/o5VRUVFhdasWaPExER/R6lR9+7d9fLLL2vFihVKSkpSRESEX/PUtP+G\nhoaqqKhIklRUVKROnToZlc809WVMTk7266lzNeUzbV+uKeObb77p+fvIkSP9ejSwpnym7cvfMPHn\n3I4dO7Ru3TrFx8crIyNDmzdv1sMPP+zvWB515VuxYoXef/99Pf300379AKsh29Cf7zU15Zs2bZoO\nHTrkmRzs6NGjGjNmjI4dO+aXjBcLpc0Hrr76ahUWFurgwYMqLy9XTk6O4uPj/R2rSbEsSzNmzFC3\nbt2Umprq7zg1OnHihGfGp6+//lobN2405hz6b8vJyVFSUpK/Y9TpZz/7mbZs2SJJ+uKLL3Tu3DmF\nhIT4OVVV37y+3z712STfnGp4/vx5vfjii/rFL37htyy17b/x8fHKzs6WJGVnZyshIcGofCapLWNh\nYaHn77m5uX57z6ktn0n7cm0Zw8PDtXXrVknS5s2b/Xa6c235TNqXTf8599BDDykvL0/r1q3TM888\no2uvvVZPP/20v2N51JYvLy9PS5cu1Ysvvqg2bdoYmdGU95qa8i1evFibNm3SunXrtG7dOl122WVa\nsWKFwsLC/JLxYgn0d4DmKDAwUDNnztRdd92lyspKjR07VlFRUf6OVUVGRoa2bt2qkpISXX/99Xrg\ngQd00003+TuWx/bt27Vy5Ur16NHDM716RkaGhgwZ4udk/1VUVKTMzExVVlbKsiyNGDFCN9xwg79j\nVVFWVqaNGzdq9uzZ/o7iUdP/vbFjx2r69OkaNWqUWrVqpfnz5/vtk8fa9o133nnHmPJbU8aysjL9\n5S9/kSQNHTpUY8eO9Vu+2vbfyZMnKz09XcuXL1eXLl20aNEio/KVl5friSee0IkTJ3TPPffoyiuv\n1O9//3ujMi5fvlxffPGFHA6HunbtqlmzZhmVz6R9ubaMTzzxhObOnauKigq1bt3ab++PteUrLCw0\nZl+u7efcmjVrjNlXamJ6vieeeELl5eWesh4dHW3Uz2lJ+u1vf2vEew3+y2H5+2RzAAAAAECtOD0S\nAAAAAAxGaQMAAAAAg1HaAAAAAMBglDYAAAAAMBilDQAAAAAMRmkDAAAAAINR2gAAAADAYP8HXz8Y\nNMYImCMAAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f528b76e438>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"Y = np.arange(len(l2_test[0]))\n", | |
"plt.figure(figsize=(15, 7))\n", | |
"plt.bar(Y, l2_test[0], align='center', alpha = 0.5, label = '1/ 4', color = 'red')\n", | |
"plt.bar(Y, l2_test[1], align='center', alpha = 0.5, label = '2 / 4', color = 'green')\n", | |
"#plt.bar(Y, l2_test[-2], align='center', alpha = 0.5, label = '3 / 4', color = 'blue')\n", | |
"plt.bar(Y, l2_test[-1], align='center', alpha = 0.5, label = '1', color = 'black')\n", | |
"plt.xticks(Y, np.delete(np.arange(len(all_files_data)), bad_files))\n", | |
"plt.legend(loc = 'best')\n", | |
"plt.title('Hist without bad files test. Girls')\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 171, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([ 213.43604958, 209.03533932, 2688.99274924, 223.68396544])" | |
] | |
}, | |
"execution_count": 171, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"l2_test = np.mean(l2_test, axis = 1)\n", | |
"l2_test" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 173, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n", | |
" (prop.get_family(), self.defaultFamily[fontext]))\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA3sAAAG5CAYAAAA3ci11AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl4lPW9///XrEkmezKTsIQtkGEnixQXQKtWWkDAFms9\nWmvpYutppVexWsRaepDT1mrtgh6LC9Xvz2M3pXqqWL9qpS5Vq4RVAwlhS0ISJnsyk8x6//7w2xxR\nCBEzzJ3k+bgurou5577veSVvo3n5mblvi2EYhgAAAAAAQ4o10QEAAAAAAAOPsgcAAAAAQxBlDwAA\nAACGIMoeAAAAAAxBlD0AAAAAGIIoewAAAAAwBFH2AAAD5qKLLtI//vGPM/Z6P/zhD3Xvvfeesdcb\nDN58802df/75A74vAGDwoewBAOLiz3/+sz73uc+prKxM559/vn72s58pEomc9vk2b96sf/u3fztu\n27p16/Stb33rY+WcPHmyDh8+/LHOIUkbNmzQ9773vY99nv7avHmzJk+erC1btpyx1wQADC6UPQBA\nXHR3d2vNmjV644039Kc//UlvvPGGNm3adMJ9P04JHK7+/Oc/KysrS08++WSiowAATIqyBwCIi6uu\nukqzZ8+W0+lUfn6+lixZovLy8t7nL7roIt1///1asmSJSkpKFIlEdP/99+tTn/qUSktLtWjRIj3/\n/POSpOrqaq1du1Y7duxQaWmpZs+eLUlavXq1fvGLX/Se849//KMuueQSzZkzR9/85jfV2NjYZ8ar\nr75akrRs2TKVlpb2rpK99NJLWrZsmWbPnq0rr7xSe/fu7T3m/vvv1/z581VaWqpPf/rTev311/Xy\nyy9r48aNevbZZ1VaWqqlS5d+6LXuv/9+rVy58rht69ev1/r16yW9t1J38cUXq7S0VBdddJH+53/+\n56S56+rq9NZbb2ndunV69dVX5fP5TrrvRRddpI0bN2rRokX6xCc+oVtuuUXBYPC4fTZt2qRzzz1X\n8+bN0xNPPNG7fevWrbrssstUVlamCy64QBs2bDjp6wAATMgAAGCAXHjhhcZrr712wueuv/564847\n7zxu36VLlxpHjx41uru7DcMwjC1bthgNDQ1GNBo1nnnmGaO4uNhobGw0DMMwnnjiCePKK6887pzf\n//73jbvvvtswDMP4xz/+YcyZM8fYs2ePEQwGjXXr1hlXXXXVKTN7vV7j0KFDvY/feecd45xzzjF2\n7NhhRCIRY/PmzcaFF15oBINBo7q62jj//PONhoYGwzAMo6amxjh8+LBhGIbx61//2rjxxhtP+jq1\ntbXGrFmzjM7OTsMwDCMSiRhz5841tm/fbvj9fqO0tNSorq42DMMwGhsbjcrKypOe65577jGWL19u\nGIZhXHrppcZDDz3U+9wbb7xhzJ8/v/fxhRdeaCxevNg4evSo0draanzhC1/o/Z698cYbxtSpU41f\n/vKXRigUMrZu3WrMmjXLaGtr631+7969RjQaNSoqKoxzzz3XeP7550/5PQUAmAMrewCAuHv88ce1\nZ88efeUrXzlu+zXXXKORI0cqOTlZkrRw4ULl5+fLarVq0aJFGjdunHbt2tWv1/jLX/6i5cuXa/r0\n6XI6nVq1apV27Nih2traj5T1D3/4g77whS+ouLhYNptNn/3sZ+VwOLRjxw7ZbDaFQiFVV1crHA6r\noKBAY8eO7dd5R48erWnTpumFF16QJL3xxhtKTk5WSUmJJMlqtaqqqko9PT3Ky8tTUVHRSc/11FNP\n6dJLL5UkXXrppad8K+fVV1+tkSNHKisrS9dff72eeeaZ3ufsdru+9a1vyeFw6IILLpDL5dLBgwcl\nSWeffbYmT54sq9WqKVOmaPHixfrnP//Zr68XAJB4lD0AQFy98MILuvvuu/XAAw8oJyfnuOdGjhx5\n3OMnn3yy9+2Ts2fPVlVVlVpbW/v1OseOHdPo0aN7H6empiorK+uUb+X8oKNHj+q3v/1tb4bZs2er\noaFBx44d07hx47RmzRpt2LBB5513nr773e9+pPNfeumlevrppyVJTz/9dG9hc7lc+sUvfqHf//73\nmjdvnq677jpVV1ef8Bzbtm1TbW2tFi9e3HvOyspKVVRUnPR13/99HjVqlI4dO9b7OCsrS3a7vfdx\nSkqKAoGAJGnnzp265pprdM455+iss87S73//+37PAwCQeJQ9AEDcvPzyy/rBD36g3/zmN5o8efKH\nnrdYLL1/r6ur0w9+8APddtttevPNN/X2228ft7r1/n1PJC8vT3V1db2PA4GA2tralJ+f/5Eyjxw5\nUt/85jf19ttv9/7ZuXNnbzFbsmSJfve73+mll16SxWLRXXfd1a980nsrl//85z/V0NCg559/XkuW\nLOl9bv78+frtb3+rV199VYWFhbrttttOeI4nn3xShmHosssu09y5c3XFFVdIeu+CLSdTX1/f+/ej\n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\ntm0b//M//wMsh8OJiQkSicS61imv9qt9i0Qir/v8Vgt0BsuKXXfddXzve9/j3//93/nXf/3X8DEr\nqAAABfZJREFUapfT8B588EE+8YlP6IW4xuzcuZMf/vCHfOc73+G2227j4x//eLVLanjlcpnTp0/z\n5S9/ma9+9at88YtfZGRkpNplyct++MMfsn//fvx+f7VLaXg//elP2b59O8888wyPP/44f/u3f0s+\nn692WQ3tzjvvJJfLcejQIb7xjW+wfft2LBZLtcuSDURr80I4HH7Vp0TJZJJwOPy6x1955ZWMjY0x\nPT1NS0vLepTYcFbSk1OnTnH33XcDMDMzw49//GOsViu//du/va61NpKV9MXj8Vz683ve8x7+5m/+\nRufKGlpJTyKRCH6/H5fLhcvl4oorruDs2bP09vaud7kN4628rhw+fJgDBw6sV2kNayU9eeyxx7jz\nzjsxmUx0d3fT0dHB+fPn2b1793qX2xBW+pry93//98DyjUGuvfZaOjs717VOebVf7VsikXjD983V\npiUB4bLLLiMWizE2NkapVOLw4cNcc801rzpmdHQUwzAAOH36NKVSiUAgUI1yG8JKevL0009f+rrh\nhht44IEHFPTW2Er6kkqlLp0rJ06coFKp6FxZQyvpybXXXsvzzz/P0tIS8/PznDhxgs2bN1ep4saw\nkr7A8t0ff/GLX3DttddWocrGspKeRKNR/u///g+AdDrNyMgIHR0d1Si3IaykJ9lsllKpBMAjjzzC\nFVdc8aoPFWX9XXPNNTz++OMYhsHx48fxer20tbVVu6zXpZU9wWq18qlPfYo77riDcrnMzTffTH9/\nP9/85jcBuPXWW3nqqad44oknsFqtOBwO/uVf/kU3aVlDK+mJrL+Vnivf/OY3sVgsOBwOPv/5z+tc\nWUMr6cnmzZsvXYNkNpu55ZZbGBgYqHLl9W2lz2Hf//73ufrqq3G5XNUstyGspCcf+9jH+OQnP8nB\ngwcxDINPfOIT2pWwhlbSk+HhYe69914A+vv7efDBB6tZckO4++67efbZZ5mZmeG3fuu3+PM//3OW\nlpaA5Z685z3v4cc//jHXXXcdTqez5u9jYTJe+QhaRERERERE6oa2cYqIiIiIiNQhhT0REREREZE6\npLAnIiIiIiJShxT2RERERERE6pDCnoiIiIiISB1S2BMREQFmZ2fZvXs3n/nMZy5976GHHuJzn/vc\nm/67jz32GHfddddaliciIvKWKeyJiIgA3/3ud9mzZw+HDx++NMRYRERkI1PYExERAR599FE+9rGP\nsXXrVo4cOfJrjz/22GPcfvvtfPSjH+XGG2/kQx/6EMlk8tLj+Xyev/iLv+DAgQP8wR/8AalUCoCX\nXnqJP/zDP+R3f/d3ufHGG/n617++Xr+SiIg0OIU9ERFpeGfPniWTyXDVVVdx00038eijj77mcc8/\n/zz33HMP//3f/8273vUuHnzwwUuPnTx5kr/+67/m8OHDbNmyhf/8z/8EYNOmTXz961/n29/+No88\n8gj/9V//xfDw8Lr8XiIi0tgU9kREpOF961vf4tChQ5hMJq6//npOnDjxqlW7V1x++eX09fUB8Hu/\n93v87Gc/u/TY/v37iUajAOzZs4cLFy4AsLCwwH333cfBgwe59dZbmZyc5OzZs+vwW4mISKOzVrsA\nERGRaiqVSnz3u9+lqamJJ554AoDFxUUee+yxt/Rz7Hb7pT9bLBbK5TIAn//85wmFQnz2s5/FarXy\nJ3/yJxSLxdX7BURERF6HVvZERKShHTlyhN7eXn7yk5/w9NNP8/TTT/Pwww/z7W9/+9eOPXr0KLFY\nDFi+xu+qq65605+fy+WIRCJYrVYGBwd57rnnVvtXEBEReU1a2RMRkYb26KOPcvDgwVd9b9++fVQq\nFZ599ll27dp16fv79+/nc5/7HKOjowSDQf7xH//xTX/+n/7pn3LPPffwrW99i97eXq688spV/x1E\nRERei8kwDKPaRYiIiNS6xx57jB/96Ef827/9W7VLERERWRFt4xQREREREalDWtkTERERERGpQ1rZ\nExERERERqUMKeyIiIiIiInVIYU9ERERERKQOKeyJiIiIiIjUIYU9ERERERGROvT/AdgZCKhZhXj2\nAAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f528b4eb1d0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"x = np.array(np.delete(enc_dims, [2])) / 4.\n", | |
"plt.figure(figsize=(15, 7))\n", | |
"\n", | |
"y = np.delete(np.array(l2_test), [2])\n", | |
"plt.plot(x, y, marker='o', alpha = 0.5, label = \"l2ratio_train\")\n", | |
"\n", | |
"plt.title(\"l2ratio_test vs Alpha\")\n", | |
"plt.xlabel(\"Alpha\")\n", | |
"plt.ylabel(\"l2ratio\")\n", | |
"plt.legend(loc = 'best')\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Команда Петр, Валерия, Константин" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import keras\n", | |
"from keras.models import Model\n", | |
"from keras.layers import Input, Dense, Flatten, Reshape, LSTM, RepeatVector, Reshape, Conv1D\n", | |
"from os import walk" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Модель" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 63, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"class AutoEncoder(object):\n", | |
" def __init__(self, \n", | |
" input_dim = (5, 58), \n", | |
" encoded_dim = (1, 58), \n", | |
" loss=\"mse\", \n", | |
" optimizer=\"adadelta\", \n", | |
" activation=(\"relu\", \"sigmoid\"),\n", | |
" kernel = 3):\n", | |
" \n", | |
" self.input_dim = input_dim #(50, 61) or (1, 61)\n", | |
" self.encoded_dim = encoded_dim #(1, 1000) or (1, 60)\n", | |
" \n", | |
" #Encoder\n", | |
" self._inputs = Input(shape=input_dim)\n", | |
" # self._flat_inputs = Flatten()(self._inputs)\n", | |
" self._conv = Conv1D(filters=encoded_dim[1], kernel_size=input_dim[0])(self._inputs) \n", | |
" self._encoded = Dense(units=encoded_dim[1], activation=activation[0])(self._conv)\n", | |
" \n", | |
" #Decoder\n", | |
" self._encoded_inputs = Input(shape=encoded_dim)\n", | |
" self._flat_decoded = Dense(units=np.prod(input_dim), activation=activation[1])(self._encoded_inputs)\n", | |
" self._decoded = Reshape(input_dim)(self._flat_decoded)\n", | |
" \n", | |
" #Models\n", | |
" self.encoder = Model(self._inputs, self._encoded)\n", | |
" self.decoder = Model(self._encoded_inputs, self._decoded)\n", | |
" self.autoencoder = Model(self._inputs, self.decoder(self.encoder(self._inputs)))\n", | |
" \n", | |
" self.autoencoder.compile(optimizer=optimizer, loss=loss)\n", | |
" \n", | |
" class MinMaxScaler():\n", | |
" \n", | |
" def __init__(self, minimum=None, maximum=None):\n", | |
" self.minimum = minimum\n", | |
" self.maximum = maximum\n", | |
" \n", | |
" def fit_transform(self, X):\n", | |
" self.minimum = np.min(X)\n", | |
" self.maximum = np.max(X)\n", | |
" return (X - self.minimum) / (self.maximum - self.minimum)\n", | |
" \n", | |
" def transform(self, X):\n", | |
" return (X - self.minimum) / (self.maximum - self.minimum)\n", | |
" \n", | |
" def reverse_transform(self, X_scl):\n", | |
" return X_scl * (self.maximum - self.minimum) + self.minimum\n", | |
" \n", | |
" self.scaler = MinMaxScaler()\n", | |
" \n", | |
" def prepare_read_file(self, X):\n", | |
" batches = np.array(self._getBatches(X, batch_size=self.input_dim[0]))\n", | |
" return batches\n", | |
" \n", | |
" def prepare_file(self, file_path):\n", | |
" h5_file = h5py.File(file_path, 'r')\n", | |
" a_group_key = list(h5_file.keys())[0]\n", | |
" raw = np.array(h5_file[a_group_key]).T\n", | |
" batches = np.array(self._getBatches(raw, batch_size=self.input_dim[0]))\n", | |
" del raw\n", | |
" return batches\n", | |
" \n", | |
" def prepare_data(self, data_path, limit=2):\n", | |
" files = []\n", | |
" data = []\n", | |
" for elem in walk(data_path):\n", | |
" for file in elem[-1]:\n", | |
" if file[-3:] == \".h5\":\n", | |
" files.append(file)\n", | |
" data = np.ndarray(shape=(0, self.input_dim[0], self.input_dim[1]))\n", | |
" flag = 0\n", | |
" for file in files:\n", | |
" file_name = data_path + file\n", | |
" if flag == limit:\n", | |
" break\n", | |
" batches = self.prepare_file(file_name)\n", | |
" data = np.concatenate((data, batches), axis=0)\n", | |
" flag += 1\n", | |
" return data\n", | |
" \n", | |
" def fit(self, X_train, epochs=5):\n", | |
" X_scaled = self.scaler.fit_transform(X_train)\n", | |
" self.autoencoder.fit(X_scaled, X_scaled, epochs = epochs)\n", | |
" \n", | |
" \n", | |
" def encode(self, df):\n", | |
" return self._predict(df, self.encoder, self.input_dim[0])\n", | |
" \n", | |
" def decode(self, df):\n", | |
" return self._predict(df, self.decoder, self.encoded_dim[1])\n", | |
" \n", | |
" def run(self, df):\n", | |
" return self._predict(df, self.autoencoder, self.input_dim[0])\n", | |
" \n", | |
" def save(self, path, part=\"autoencoder\"):\n", | |
" if part == \"encoder\":\n", | |
" self.encoder.save(path)\n", | |
" elif part == \"decoder\":\n", | |
" self.decoder.save(path)\n", | |
" elif part == \"autoencoder\":\n", | |
" self.autoencoder.save(path)\n", | |
" \n", | |
" def load(self, path, part=\"autoencoder\"):\n", | |
" if part == \"encoder\":\n", | |
" self.encoder = keras.models.load_model(path)\n", | |
" elif part == \"decoder\":\n", | |
" self.decoder = keras.models.load_model(path)\n", | |
" elif part == \"autoencoder\":\n", | |
" self.autoencoder = keras.models.load_model(path)\n", | |
" pass\n", | |
" \n", | |
"\n", | |
" def _predict(self, df, model, batch_size):\n", | |
" \n", | |
" batches = self._getBatches(arr=np.array(df), batch_size=batch_size)\n", | |
" batches = self.scaler.transform(batches)\n", | |
" batches = tuple(self._predictBatch(batch, model) for batch in batches)\n", | |
" batches = self._concatBatches(batches) \n", | |
" return self.scaler.reverse_transform(batches)\n", | |
" \n", | |
" def _predictBatch(self, batch, model):\n", | |
" return model.predict(batch)\n", | |
" \n", | |
" def _getBatches(self, arr, batch_size, axis=0):\n", | |
" n_batches = arr.shape[axis] // batch_size\n", | |
" return np.array_split(arr, n_batches, axis=axis)\n", | |
" \n", | |
" def _concatBatches(self, batches, axis=0):\n", | |
" return np.concatenate(batches, axis=axis)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"au = AutoEncoder(encoded_dim = (1, 1))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 174, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"enc_dims = [1, 2, 6, 29, 58]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Calc L2Ratio on Train" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"l2_loss_by_files = []\n", | |
"for enc_dim in enc_dims:\n", | |
" adds = []\n", | |
" name = \"model/CNN/Valentin_Model\"\n", | |
" au.load(name + str(enc_dim) + \".h5\")\n", | |
" start = 0\n", | |
" for i in range(X_train_size.shape[0]):\n", | |
" finish = X_train_size[i]\n", | |
" part_data = X_train[start : finish]\n", | |
" prepare_data = au.prepare_read_file(part_data)\n", | |
" au.scaler.fit_transform(prepare_data)\n", | |
" part_data_pred = au.run(prepare_data).reshape(part_data.shape)\n", | |
" add = np.sum((np.delete(part_data_pred, X_train_delete_channels[i])-\n", | |
" np.delete(part_data, X_train_delete_channels[i]))**2)\n", | |
" print(i, add, X_train_names[i])\n", | |
" adds.append(add)\n", | |
" start = finish\n", | |
" \n", | |
" l2_loss_by_files.append(adds.copy()) \n", | |
" print(enc_dim)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 79, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"iters = []\n", | |
"start = 0\n", | |
"for finish in X_train_size:\n", | |
" iters.append((start, finish))\n", | |
" start = finish" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 80, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"all_files_data = [X_train[itter[0] : itter[1]] for itter in iters]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 81, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"bad_files = []" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 82, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"div = np.array([np.sum(all_files_data[i]**2) for i in np.delete(np.arange(len(all_files_data)), bad_files)])\n", | |
"l2_train = np.delete(l2_loss_by_files, bad_files, axis = 1) / div\n", | |
"l2_train = np.sqrt(l2_train) * 100" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 83, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n", | |
" (prop.get_family(), self.defaultFamily[fontext]))\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\ntGzZMm3cuFHp6elau3ZtpZ7fyho2bJjWr19fKmR//PHHcjgckir3Wlyybt06LV++XK+//ro++eQT\n3XXXXZcdDrtlyxatXr36snApSV5eXvrd736nPXv26LXXXtObb76prVu3mrm6kqTs7GyNGDFCwcHB\nmjNnjmw2m+uxWbNm6cKFC0pLS9Nbb72ld999Vx988IEkadGiRRowYID27NmjLVu26KGHHpJU9ms5\ndOjQUofhpqWlqVWrVmrTpo0kqX///tq4caM++eQTtW7dWs8//7zp6wnAegh6AG5ozzzzjLp16+b6\nN3v27HLH2u12HT58WKdPn5anp6c6d+5c6eUEBQVp9+7dKioq0tdff63HHntMu3fvVkFBgT7//POr\nOrywa9eu6tu3r9zd3TV06FB99dVXVxz/5JNPqlGjRmrWrJlGjhzp+vLesmVL9e7dWx4eHvLx8VFs\nbKwrjP773//WhQsXNGrUKN10000aOHBgpQ7Pq4z33ntPY8eOVZs2bWS32/X000/ryy+/1LFjx2S3\n25WXl6fvvvtOhmGoTZs28vPzq9byioqKtGrVKs2YMUMNGzaUt7e3nnzySaWkpEiSmjZtqgEDBqh+\n/fry9vbWU0895XoeLnnggQfUvHlzNWrUSL1791abNm3UvXt32e12RURE6Msvvyxz2TabTUOGDHEF\njZycHH300UelDtuMjIyUn5+f3Nzc5HA45O/vry+++OKyWhs3blTbtm01ZMgQubu7q2PHjurXr58+\n/PBD15hBgwapffv2uummmzR48OBy+yrP448/rqZNm8rHx0d9+/a96vkr0qNHD918882uvZYpKSm6\n6667XIGkMq/FJe+++67GjRun22+/XTfddJPGjx+vzz77TKdOnXKNefrpp9WwYUPVr1//svmDg4PV\ntm1bubm5qX379ho4cGC5y6qOo0eP6tixY64we0lhYaFSU1M1ZcoUeXp6qmXLlho1apTrYjN2u13H\njh3TyZMnVb9+fXXt2rXcZTgcDm3atEnnz5+XdPGPCUOHDnXVcTgc8vT0VL169TR+/Hilp6eXu4ce\nAC7hAHMAN7TXXntNvXr1cv28evXqcq8OGR8fr1dffVWDBg1S8+bNNX78ePXr169Sy+nevbsWLFig\ngwcP6o477lDv3r01Y8YM7d+/Xy1btlTjxo0r3XPTpk1d/69fv74KCgpUVFRU7jk/t956q+v/t912\nm+tQuFOnTik+Pl579uxRXl6eDMNQw4YNJUlZWVny9/cvtfehWbNmle7xSo4fP6758+dr4cKFrmmG\nYcjpdCo4OFiPPvqo5syZo2PHjik8PFy//e1v5eXlVeXlZWVl6cKFC4qKiiq1vEvPV25uruLj47Vj\nxw7Xoau//BL883MP69evf9nP+fn55S7f4XAoOjpap0+f1vr169WuXTtXsJGk999/XytWrNCJEyck\nSfn5+crJybmszrFjx7R79+5SfxQoLi5WTEyM6+df/m5cqa+y/HL+svqQpB07dujZZ591/VxYWFiq\nr7feeqvMPwy4ublp6NChSk5OVnh4uNasWVMq9Fbmtbjk+PHjmjVrlubMmeOa5u7urszMTHl7e0sq\n/bv/S3v37tXixYt16NAhXbhwQYWFha5w9EsZGRmlnufc3FwNHDjQtX3Mnz9f4eHhZc7bqVMn9e7d\nW6NHj9bbb7+tO+64Q9LFwzlLSkrK3T6nT5+uhIQEDRs2TD4+PhozZky5/TVv3lx33323Nm3apF69\neunTTz/V/PnzJV38Q8crr7yijRs3KicnR25ubjIMQ2fOnLmmF6YBcOMh6AGoM1q1aqVFixappKRE\nqampmjBhgnbu3FkqDJUnMDBQ33//vTZu3KigoCD96le/0vHjx/XRRx8pKCiozHkqU7cyTpw4obZt\n20q6+OX40h6yRYsWyWaz6YMPPlCjRo20adMm15dmX19fOZ1OGYbh6uP48eNq0aJFtfu59dZb9fTT\nT5d7af+RI0dq5MiRys7OVlxcnJKSkhQXF1fl5fn6+sput2vjxo1lBuo33nhDTqdTK1euVNOmTbV/\n/379+te/rvLyfun222/XPffco7Vr1yolJaVUsPn+++81b948LV++XB07dpSbm5sGDhzoOk/r5269\n9Vb16dOnSueSmfW7dElwcLDraqYFBQXq1q1bpa9uein47t27V1999VWpAH41r8Wtt96qqVOnlnkl\nz0vh8ErrHRcXp6effloxMTGqV6+eZs6c6bodyC+1atWq1Pr17t1bycnJ8vX1rdQ6P/nkkyooKFBs\nbKzefvtttW7dWr6+vnJzc9OJEydc29XPt09/f38tWLBAhmFo165deuKJJxQUFFQqjP+cw+HQP//5\nT+Xk5Khnz56uP0asXr1an3zyiVasWKFmzZrp1KlT6tOnT5m/YwDwcxy6CaDOWLNmjU6fPi03NzfX\nni83Nzf5+PjIzc1NR44cKXfem2++Wffcc4/+8pe/uM7HCwwM1HvvvVdu0GvSpInOnDmjc+fOVavv\nP//5zzp79qxOnDihFStWKDIyUtLFy/83aNBA3t7ecjqdSkpKcs3TuXNn2e12rVixQhcuXFBqamqF\nF32prIcffliJiYn6z3/+I0k6d+6c1q9fL+niBW8uHTZ68803y8PDw3UuW1XddNNNuv/++xUfH6/T\np0/LMAydOHHCdfGKvLw81a9fXw0bNtTp06fLPd+uOhwOh5YtW6YvvviiVLDJz893/Q6VlJTo3Xff\n1eHDh8usMWDAAB08eFDr1q1z7YHav3+/vv/++wqX7+HhIW9v7yv+jl4rt99+u9q3b68pU6aoX79+\npc7BvJrX4uGHH9af/vQn14VFzp49W+ow1isxDEP5+flq3Lix6tWrp88++6zS81bV+PHjFRMTo8cf\nf1yHDx+Wh4eHwsLCtGjRIuXn5+vw4cNasWKF6w8g69atk9PplM1mc73fuLu7l/taRkREaO/evXr3\n3XdL7fnLy8tTvXr11KhRI+Xn5yshIaFG1xOAdRD0ANQZ27ZtU1RUlAIDAxUfH6/Fixerfv36uvnm\nm/X000/rkUceUbdu3S67fPwlQUFBKioqUseOHSVdPJwzLy+v3KDXpk0bRUVFacCAAerWrVuVb/Tc\nv39/DR8+XA6HQ/fdd5/rELTx48fr4MGD6tatm8aOHVvq0DMPDw8tWbJE//jHP9S9e3etW7eu1BUa\nqyMsLExjxozR5MmT1aVLFw0ePNh1EYy8vDy98MIL6t69uysEPPHEE5Kk119/XWPGjKnSMqdPny4/\nPz/FxMSoa9euGjNmjOsiJqNHj1ZOTo569OihX//61zVy78LIyEidOnVKffv2LbVXsX379nr44Yd1\n//33q0+fPjp69KjuueeeMmvccsst+vOf/6xVq1apT58+uvfee5WQkFDpWwdMmDBBEydOVLdu3VwX\nOrleHA6Hjh07dtmhiFfzWgwePFiPPvqonn32WXXp0kUOh6PUlSevxGazafbs2Vq4cKECAwOVlJRU\n5p5Bs02aNElRUVEaNWqUjh075jonuF+/fho1apQeeOABV9Dbt2+f7r//fgUGBmrixImaM2eO61DL\nsl5LLy8v9evXT1lZWerfv79rmTExMfLx8VGfPn0UHR19xXP9AODnbAb7/gEAAK67RYsWKTs723W7\nFgCoDvboAQAAXGenT5/W6tWrXbdhAIDqIugBAABcR++8845CQ0M1cOBA16HhAFBdHLoJAAAAABbD\nHj0AAAAAsJgb9j56J09W73Ll11vjxg2Uk3N1N8KtK/Vv5N6pT33qU/961b+Re6c+9alP/etVv6Z7\nr2m+vt7lPsYevevEbnen/nWoTX3qU5/6Vq1/I/dOfepTn/rXq35N9349EfQAAAAAwGIIegAAAABg\nMQQ9AAAAALAYgh4AAAAAWAxBDwAAAAAshqAHAAAAABZD0AMAAAAAiyHoAQAAAIDF2CsaMG3aNG3Z\nskVNmjTR2rVrJUlnzpzRpEmTdOzYMd12221KSEjQLbfcIklaunSpVq5cKTc3N73wwgu69957JUkH\nDhzQtGnTdP78efXt21czZsyQzWZTYWGhpk6dqi+++EKNGjXS4sWL1bx58xpcZQAAAAA3sgYvzzen\nkGc9NcgrUP7U6RUOnT9/trZv/1iNGzfW22//vdRjBw58rpSUNfrtb18oNT0kpLtat/6VJMnf318L\nFy6WJO3Zs0t//OPvVVJi6Oabb9aMGS+pefMW5qzT/6lwj97w4cOVlJRUalpiYqKCg4OVmpqq4OBg\nJSYmSpIOHTqklJQUpaSkKCkpSbNnz1ZxcbEk6aWXXtLcuXOVmpqqjIwMbd26VZL0/vvvq2HDhtq4\ncaMef/xxvfLKK6auIAAAAABUV2RktH73uyVlPrZz53b16BF82fR69epp2bK/atmyv7pCniS98sr/\naObMeVq27K8KCxuo5cv/bHq/FQa9oKAg1966S9LS0uRwOCRJDodDmzZtck2PioqSh4eHWrRooZYt\nWyo9PV1ZWVnKzc1V586dZbPZ5HA4lJaWJknavHmzhg0bJkmKiIjQjh07ZBiGqSsJAAAAANXRuXMX\nNWzYsMzH9uzZpW7delS6ls0m5eXlSZLy8nLVtKmvKT3+XIWHbpYlOztbfn5+kiRfX19lZ2dLkpxO\npzp16uQa5+/vL6fTKbvdroCAANf0gIAAOZ1O1zy33nrrxWbsdnl7eysnJ0c+Pj5VWyMAAAAAuEbO\nnDkju90uLy+vyx4rLCzU6NGPym6/SSNGPK6QkPskSc8//6KmTJmoevXqydPTU0uXvmV6X1UKej9n\ns9lks9nM6OWqNG7cQHa7+zVfrpl8fb2pfx1qU5/61Ke+VevfyL1Tn/rUp/5V1fesZ1ptT8968qxk\n/wUFnrLb3Uv18+mnW9SvX98yn4N//etf8vf315EjRzRq1CgFBXXSf/3Xfyk5+e9KSnpDnTp1UlJS\nkt544w+Kj483bZ2kKga9Jk2aKCsrS35+fsrKynLtffP391dmZqZrnNPplL+//2XTMzMz5e/v75rn\nxIkTCggIUFFRkc6dO6fGjRtX2ENOTn5VWq81fH29dfLkOepf49rUpz71qW/V+jdy79SnPvWpf7X1\nG+QVmFLb07Oe8vIKlF/J/k+fzlNRUXGpfjZuTNNDDz1a5nPg5tZAJ0+eU/36jdSxY6A+/XSvzp+X\nvvjioJo1a62TJ8+pR4++ev/9lVV6Dq8UsKt0e4XQ0FAlJydLkpKTk9W/f3/X9JSUFBUWFurIkSPK\nyMhQx44d5efnJy8vL+3fv1+GYVw2zz/+8Q9J0ocffqiePXtelz2EAAAAAHA1DMPQoUOH1LZtu8se\n+/HHH1VYWCjp4uGdn3/+b7Vq1Vre3t7Ky8vV4cM/SJL27PlULVu2Mr23CvfoTZ48Wbt27VJOTo5C\nQkL07LPPauzYsYqLi9PKlSvVrFkzJSQkSJLatm2rQYMGKTIyUu7u7po5c6bc3S8eXjlr1izX7RVC\nQkIUEhIiSYqJidGUKVMUFhamW265RYsXLy63FwAAAACozO0QKsPT17vSe/NmzZqu/fv36syZMxo2\nLFJPPDFWv/rVHbrjjnZl7qj64Yfv9b//O182m5sMo0QjRozS7be3liRNnfqCXnhhqmw2N3l7e2va\ntJmmrM/PVRj0Fi1aVOb05cuXlzl93LhxGjdu3GXTO3To4LoP38/Vq1dPr776akVtwCIqdc+T/7uf\nSUXM2sABAACAisyeffn32GXLksq8rYIkdejQSStW/K3Mx/r27ae+ffuZ2t8vVftiLMDViPfYVuEY\nD9lV6FFU4bhJZjQEAAAAVNHjj4+53i2Ui6CHa2rb1tEVjnF3d1NxcUmF4ybFmdERAAAAYD1VuhgL\nAAAAAKD2IugBAAAAgMUQ9AAAAADAYjhHD9fUDz+sqXCMm5tNJSVGJao9UP2GAAAAAAsi6AEAAAC4\noby8qxK37KoET896yssr0NTuV75tl9OZqXnzZikn57Qkm4YMGaYHH3ykzLGnTp1SfPwsLV78Wqnp\nMTHRatCggdzc3OXu7q4///ltSdJ//vO1/vd/F6iwsFDu7u567rnf6u6776n2uhH0AAAAAOAK3N3t\nGj9+ktq1u1P5+XkaPfoxBQX1cN0A/ed27tyu7t3Lvrfeq68uVaNGjUpN++MfX1Vs7JMKDu6tHTs+\n1h//+Kr+8IfEavfMOXoAAAAAcAVNmzZVu3Z3SpIaNPBUq1atdOpUVpljd+7coZ49e1W6ts1mU35+\nniQpNzdXTZv6Vr9hsUcPAAAAACrtxInj+uabr8s8vLK4uFiHD/9Q5p4+m82muLj/lpubm4YOHa6h\nQ4dLkiZMeE6TJ4/Xa6/9XiUlJXr99TdN6ZOgBwAAAACVkJ+frxkzpmrixOfk6el12eMHDx7Q3Xe3\nL3PeP/4xSb6+fsrJOa24uGfUsmUrde7cRcnJKzVhwmTdd19/paVt1IIFc/X73/+x2r1y6CYAAAAA\nVKCoqEgvvDBV4eED1bdvaJljPv10u3r0KPuwTV9fP0lS48Y+Cgm5TwcPfiFJWr9+rateaOgAffnl\nF6b0S9ADAAAAgCswDEMLFsxRy5a36+GHR5Q7bu/e3QoK6n7Z9J9++sl1Ht5PP/2k3bt3qnXrNpKk\npk19tW/fXtf8zZu3MKVnDt0EAAAAcEOp6HYIleXr662TJ89VOC49/d/68MN1atPmV3r88V9Lkp56\n6r8VHNzHNSYnJ0ceHh5q0MDzsvlPn87W9OlTJF08jy8sLMJ1wZapU1/Q73//ioqLi+Xh4aGpU2eY\nsWoEPQAAAAC4kk6dOuvjj/dcccyuXTsUFNSzzMduu625li9/t9zab775TrV7/CWCHgAAAABUU0RE\n5PVuoRTO0QMAAAAAiyHoAQAAAIDFEPQAAAAAwGIIegAAAABgMQQ9AAAAALAYrroJAABwBYsTBlU4\nxuMmuwovFFU4blLcejNaAuq8l1/2MKWOp6eUl+ehqVMLKxw7f/5sbd/+sRo3bqy33/57ueNOnTql\n+PhZWrz4Ndc0pzNT8+bNUk7OaUk2DRkyTA8++IgZq1Augh4AAMAVbNs6usIx7u5uKi4uqXDcpDgz\nOgJwPURGRuv++x/SvHkzrzhu587t6t49uNQ0d3e7xo+fpHbt7lR+fp5Gj35MQUE9dPvtrWusXw7d\nBAAAAIAKdO7cRQ0bNqxw3M6dO9SzZ69S05o2bap27e6UJDVo4KlWrVrp1KmsGunzEoIeAAAAAJig\nuLhYhw//cMU9dSdOHNc333ytu+++p0Z74dBNAACAK/jhhzUVjnFzs6mkxKhEtQeq3xCAWuvgwQO6\n++725T6en5+vGTOmauLE5+Tp6VWjvbBHDwAAAABM8Omn29WjR68yHysqKtILL0xVePhA9e0bWuO9\nEPQAAAAAwAR79+5WUFD3y6YbhqEFC+aoZcvb9fDDI65JLxy6CQAAAOCGUpnbIVSGr289nTxZuVqz\nZk3X/v17debMGQ0bFqknnhirwYMdrsdzcnLk4eGhBg08L5s3Pf3f+vDDdWrT5ld6/PFfS5Keeuq/\nFRzcx5T1KAtBDwAAAAAqMHv2/Cs+vmvXDgUF9SzzsU6dOuvjj/fURFvlIugBAAAAQDVFRERe7xZK\n4Rw9AAAAALAYgh4AAAAAWAxBDwAAAAAshqAHAAAAABZD0AMAAAAAi+GqmwAAAABuKC+/fOVbHVSW\np2c95eUVaOrU6RWOnT9/trZv/1iNGzfW22//3ZTl1yT26AEAAABABSIjo/W73y253m1UGkEPAAAA\nACrQuXMXNWzY8Hq3UWkEPQAAAACwGIIeAAAAAFgMQQ8AAAAALIagBwAAAAAWw+0VAAAAANxQKnM7\nhMrw9fXWyZPnKjV21qzp2r9/r86cOaNhwyL1xBNjNXiww5Q+agJBDwAAAAAqMHu2Offuu1Y4dBMA\nAAAALIagBwAAAAAWQ9ADAAAAAIsh6AEAAACAxRD0AAAAAMBiCHoAAAAAYDEEPQAAAACwGIIeAAAA\nAFgMQQ8AAAAALIagBwAAAAAWQ9ADAAAAAIsh6AEAAACAxRD0AAAAAMBiCHoAAAAAYDEEPQAAAACw\nGIIeAAAAAFgMQQ8AAAAALIagBwAAAAAWQ9ADAAAAAIsh6AEAAACAxVQr6C1btkxRUVEaPHiwJk+e\nrIKCAp05c0axsbEKDw9XbGyszp496xq/dOlShYWFKSIiQtu2bXNNP3DggKKjoxUWFqZ58+bJMIzq\ntAUAAAAAdVqVg57T6dSKFSu0atUqrV27VsXFxUpJSVFiYqKCg4OVmpqq4OBgJSYmSpIOHTqklJQU\npaSkKCkpSbNnz1ZxcbEk6aWXXtLcuXOVmpqqjIwMbd261Zy1AwAAAIA6qFp79IqLi3X+/HkVFRXp\n/Pnz8vPzU1pamhwOhyTJ4XBo06ZNkqS0tDRFRUXJw8NDLVq0UMuWLZWenq6srCzl5uaqc+fOstls\ncjgcSktLq/6aAQAAAEAdZa/qjP7+/ho9erT69eunevXqqXfv3urTp4+ys7Pl5+cnSfL19VV2drak\ni3sAO3XqVGp+p9Mpu92ugIAA1/SAgAA5nc4Kl9+4cQPZ7e5Vbb9W8PX1rnP13dxspo2rzvrVxueG\n+tSnPvXSe3xqAAAgAElEQVRrc+26XJ/PLupT39r1a7r366XKQe/s2bNKS0tTWlqavL29NXHiRK1Z\ns6bUGJvNJputcm+OVysnJ79G6l4rvr7eOnnyXJ2rX1JS8fmXbm62So2r6vrV1ueG+tSnPvVra+26\nXp/PLupT37r1a7r3mnalkFrlQze3b9+u5s2by8fHRzfddJPCw8O1b98+NWnSRFlZWZKkrKws+fj4\nSLq4By8zM9M1v9PplL+//2XTMzMz5e/vX9W2AAAAAKDOq3LQa9asmf7973/rp59+kmEY2rFjh9q0\naaPQ0FAlJydLkpKTk9W/f39JUmhoqFJSUlRYWKgjR44oIyNDHTt2lJ+fn7y8vLR//34ZhlFqHgAA\nAADA1avyoZudOnVSRESEhg0bJrvdrrvuuksPPfSQ8vLyFBcXp5UrV6pZs2ZKSEiQJLVt21aDBg1S\nZGSk3N3dNXPmTLm7XzzHbtasWZo2bZrOnz+vkJAQhYSEmLN2AAAAAFAHVTnoSdKECRM0YcKEUtM8\nPDy0fPnyMsePGzdO48aNu2x6hw4dtHbt2uq0AgAAAAD4P9W6vQIAAAAAoPYh6AEAAACAxRD0AAAA\nAMBiCHoAAAAAYDEEPQAAAACwGIIeAAAAAFgMQQ8AAAAALIagBwAAAAAWQ9ADAAAAAIsh6AEAAACA\nxRD0AAAAAMBiCHoAAAAAYDEEPQAAAACwGIIeAAAAAFgMQQ8AAAAALIagBwAAAAAWQ9ADAAAAAIsh\n6AEAAACAxRD0AAAAAMBiCHoAAAAAYDEEPQAAAACwGIIeAAAAAFgMQQ8AAAAALIagBwAAAAAWQ9AD\nAAAAAIsh6AEAAACAxRD0AAAAAMBiCHoAAAAAYDEEPQAAAACwGIIeAAAAAFgMQQ8AAAAALIagBwAA\nAAAWQ9ADAAAAAIsh6AEAAACAxRD0AAAAAMBiCHoAAAAAYDEEPQAAAACwGIIeAAAAAFgMQQ8AAAAA\nLIagBwAAAAAWQ9ADAAAAAIsh6AEAAACAxRD0AAAAAMBiCHoAAAAAYDEEPQAAAACwGIIeAAAAAFgM\nQQ8AAAAALIagBwAAAAAWQ9ADAAAAAIsh6AEAAACAxRD0AAAAAMBiCHoAAAAAYDEEPQAAAACwGIIe\nAAAAAFgMQQ8AAAAALIagBwAAAAAWQ9ADAAAAAIsh6AEAAACAxRD0AAAAAMBiCHoAAAAAYDEEPQAA\nAACwGIIeAAAAAFgMQQ8AAAAALIagBwAAAAAWU62g9+OPP2rChAkaOHCgBg0apH379unMmTOKjY1V\neHi4YmNjdfbsWdf4pUuXKiwsTBEREdq2bZtr+oEDBxQdHa2wsDDNmzdPhmFUpy0AAAAAqNOqFfTi\n4+N17733asOGDVqzZo3atGmjxMREBQcHKzU1VcHBwUpMTJQkHTp0SCkpKUpJSVFSUpJmz56t4uJi\nSdJLL72kuXPnKjU1VRkZGdq6dWv11wwAAAAA6qgqB71z585p9+7diomJkSR5eHioYcOGSktLk8Ph\nkCQ5HA5t2rRJkpSWlqaoqCh5eHioRYsWatmypdLT05WVlaXc3Fx17txZNptNDodDaWlpJqwaAAAA\nANRN9qrOePToUfn4+GjatGn66quv1L59e82YMUPZ2dny8/OTJPn6+io7O1uS5HQ61alTJ9f8/v7+\ncjqdstvtCggIcE0PCAiQ0+mscPmNGzeQ3e5e1fZrBV9f7zpX383NZtq46qxfbXxuqE996lO/Nteu\ny/X57KI+9a1dv6Z7v16qHPSKiop08OBBvfjii+rUqZPmzZvnOkzzEpvNJputcm+OVysnJ79G6l4r\nvr7eOnnyXJ2rX1JS8fmXbm62So2r6vrV1ueG+tSnPvVra+26Xp/PLupT37r1a7r3mnalkFrlQzcD\nAgIUEBDg2ks3cOBAHTx4UE2aNFFWVpYkKSsrSz4+PpIu7sHLzMx0ze90OuXv73/Z9MzMTPn7+1e1\nLQAAAACo86oc9Hx9fRUQEKDvvvtOkrRjxw61adNGoaGhSk5OliQlJyerf//+kqTQ0FClpKSosLBQ\nR44cUUZGhjp27Cg/Pz95eXlp//79Mgyj1DwAAAAAgKtX5UM3JenFF1/Ub37zG124cEEtWrTQggUL\nVFJSori4OK1cuVLNmjVTQkKCJKlt27YaNGiQIiMj5e7urpkzZ8rd/eI5drNmzdK0adN0/vx5hYSE\nKCQkpPprBgAAAAB1VLWC3l133aXVq1dfNn358uVljh83bpzGjRt32fQOHTpo7dq11WkFAAAAAPB/\nqnUfPQAAAABA7UPQAwAAAACLIegBAAAAgMUQ9AAAAADAYgh6AAAAAGAxBD0AAAAAsBiCHgAAAABY\nDEEPAAAAACyGoAcAAAAAFkPQAwAAAACLIegBAAAAgMUQ9AAAAADAYgh6AAAAAGAxBD0AAAAAsBiC\nHgAAAABYDEEPAAAAACyGoAcAAAAAFkPQAwAAAACLIegBAAAAgMUQ9AAAAADAYgh6AAAAAGAxBD0A\nAAAAsBiCHgAAAABYDEEPAAAAACyGoAcAAAAAFkPQAwAAAACLIegBAAAAgMUQ9AAAAADAYgh6AAAA\nAGAxBD0AAAAAsBiCHgAAAABYDEEPAAAAACyGoAcAAAAAFkPQAwAAAACLIegBAAAAgMUQ9AAAAADA\nYgh6AAAAAGAxBD0AAAAAsBiCHgAAAABYDEEPAAAAACyGoAcAAAAAFkPQAwAAAACLIegBAAAAgMUQ\n9AAAAADAYgh6AAAAAGAxBD0AAAAAsBiCHgAAAABYDEEPAAAAACyGoAcAAAAAFkPQAwAAAACLIegB\nAAAAgMUQ9AAAAADAYgh6AAAAAGAxBD0AAAAAsBiCHgAAAABYDEEPAAAAACyGoAcAAAAAFkPQAwAA\nAACLIegBAAAAgMUQ9AAAAADAYgh6AAAAAGAxBD0AAAAAsBiCHgAAAABYDEEPAAAAACyGoAcAAAAA\nFlPtoFdcXCyHw6GnnnpKknTmzBnFxsYqPDxcsbGxOnv2rGvs0qVLFRYWpoiICG3bts01/cCBA4qO\njlZYWJjmzZsnwzCq2xYAAAAA1FnVDnorVqxQmzZtXD8nJiYqODhYqampCg4OVmJioiTp0KFDSklJ\nUUpKipKSkjR79mwVFxdLkl566SXNnTtXqampysjI0NatW6vbFgAAAADUWdUKepmZmdqyZYtiYmJc\n09LS0uRwOCRJDodDmzZtck2PioqSh4eHWrRooZYtWyo9PV1ZWVnKzc1V586dZbPZ5HA4lJaWVp22\nAAAAAKBOs1dn5vnz52vKlCnKy8tzTcvOzpafn58kydfXV9nZ2ZIkp9OpTp06ucb5+/vL6XTKbrcr\nICDANT0gIEBOp7PCZTdu3EB2u3t12r/ufH2961x9NzebaeOqs3618bmhPvWpT/3aXLsu1+ezi/rU\nt3b9mu79eqly0PvXv/4lHx8f3XPPPdq5c2eZY2w2m2y2yr05Xq2cnPwaqXut+Pp66+TJc3WufklJ\nxedfurnZKjWuqutXW58b6lOf+tSvrbXren0+u6hPfevWr+nea9qVQmqVg95nn32mzZs3a+vWrSoo\n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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f528b831550>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"Y = np.arange(len(l2_train[0]))\n", | |
"plt.figure(figsize=(15, 7))\n", | |
"plt.bar(Y, l2_train[0], align='center', alpha = 0.5, label = '1/ 58', color = 'red')\n", | |
"plt.bar(Y, l2_train[1], align='center', alpha = 0.5, label = '2 / 58', color = 'green')\n", | |
"plt.bar(Y, l2_train[-2], align='center', alpha = 0.5, label = '1 / 2', color = 'blue')\n", | |
"plt.bar(Y, l2_train[-1], align='center', alpha = 0.5, label = '1', color = 'black')\n", | |
"plt.xticks(Y, np.delete(np.arange(len(all_files_data)), bad_files))\n", | |
"plt.legend(loc = 'best')\n", | |
"plt.title('Hist with bad files. Team Valentin + Valeria + Kostya')\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 92, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"bad_files = [1, 10, 12, 13, 16, 17, 25, 26, 29, 30]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 93, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"div = np.array([np.sum(all_files_data[i]**2) for i in np.delete(np.arange(len(all_files_data)), bad_files)])\n", | |
"l2_train = np.delete(l2_loss_by_files, bad_files, axis = 1) / div\n", | |
"l2_train = np.sqrt(l2_train) * 100" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 94, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n", | |
" (prop.get_family(), self.defaultFamily[fontext]))\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA3oAAAGrCAYAAACWruXbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XtcVHXi//H3AOINNVAua5Gma66aKCoiXlAxREBy9Ktu\nu+kmtpluLtnN9ZZmeSm30u5KVFpt7aa5uCu5oZRhqXiPzC5rG2opg6KYoILA+f3hr3lEzKAOl8Hj\n6/l49HjEmfOZ8z4zAzNvP+fMsRiGYQgAAAAAYBoe7g4AAAAAAKhZFD0AAAAAMBmKHgAAAACYDEUP\nAAAAAEyGogcAAAAAJkPRAwAAAACToegBuGrFx8crKyurzrY3d+5cvfjii05vf/755/XQQw/VWZ6f\nW7t2rX73u9/V2P117NhRhw4dcnjbiRMndMcddyg0NFRPPPGEli9frtmzZ0uSvv/+e3Xs2FGlpaU1\nluVaMXbsWK1bt65W7nvGjBl65ZVXauW+a8O3336rzp07uzx+9erVmjx5cg0mAoCrD0UPQL0UFRWl\nrVu3Vlj2yzKTlpam8PDwKu+nJovHY489pnvvvVeSlJWVpcjIyGrf5+WqqnjVtX/84x/y9fXVnj17\nNGPGDE2ePFkLFy6sk20vX75coaGhCg0NVdeuXdWpUyf7z/Hx8XWSwZG1a9cqJiam0vKSkhKFhYVV\nei3XpnfeeUcTJkyosOyJJ57Q3XffXWcZxo8fr+XLl1da/v7772vQoEEqLy+v1e2PGTPG4fZr0y+L\n+ieffKJevXpp48aNLt+no+cSAC4XRQ8AcEWOHj2q9u3by2Kx1Pm2J0+erL1792rv3r2aP3++unfv\nbv85LS2tzvP8JCYmRnl5edq3b1+F5R9++KGaNGmiPn36uClZzXrnnXc0d+7cS65ntVodzk6uW7dO\nI0aMkIdH7X38qMnZ5MzMTN11111XPO6jjz7StGnT9NRTTyk6OrrG8gDAlaDoAbhq/XzWLzs7W6NG\njVKPHj3Ut29fLV68WJI0btw4SVJYWJhCQ0O1d+/eCvdRXFyskJAQnTx5UpL08ssvq3PnziosLJQk\nLVu2zD5bNWPGDC1dulRnz57V3Xffrby8PPtsks1mkyRduHBB06dPt88wff755/Ztffvttxo/frx6\n9eql+Ph4ZWRk2G8bP368Vq9ebf/557OXd9xxhyRpxIgRCg0N1fvvv+/w8TAMQ4899ph69uypYcOG\nadu2bfbb3nvvPcXGxio0NFRDhgzR3//+9wpjU1JS1L9/f/Xv319r1qxx+pjPmDFDqampevXVVxUa\nGqqtW7dWecjqmTNnNGvWLPXv318DBgzQ0qVLVVZWJkk6dOiQxo0bp549eyo8PFzTpk1zut0r8c03\n3+gPf/iDwsLCFBsbq02bNtlv27hxo2677Tb16NFDgwYNqjDr89PhgqtXr9aAAQMUHh6uNWvWaM+e\nPRo+fLh69eplf139UtOmTRUdHa3U1NQKy1NTU3XbbbfJw8NDJ0+e1B//+Ef16dNHvXv31pQpU5SX\nl+d0P/7+978rJiZGvXv31qRJk+yvseLiYnXs2FH/+Mc/dOuttyosLEyLFi2SJB04cECLFi3Sjh07\nFBoaqn79+kmS7r//fr300kuSLpaX6OhoLV++XH369NGAAQP0r3/9y4VH2rmYmBgdO3ZM2dnZ9mX5\n+fn65JNPNGLECElVPxe/VFBQoOnTp6tfv34aOHCgXnjhBfus4DvvvKM//OEPmj9/vsLCwpScnFxp\nJmzevHmKjIxUjx49NHr06EqFvCalp6dr+vTpeu655zRo0CD78h07dmjkyJHq2bOnxo4dW+Gxeffd\ndxUVFWX//dywYYPD53LXrl0aOHCgDMOwj/33v/+tMWPGSJJ2796tMWPGqFevXurfv78WLVrEYdTA\nNYyiB8AUFi5cqD/84Q/as2ePNm7cqNjYWEnSW2+9JUnauXOn9u7dq9DQ0ArjGjZsqK5du2rnzp32\n9Vq3bq3du3fbf+7du3eFMU2aNNErr7yigIAA+2xSYGCgpIszOPHx8dq1a5eioqL0+OOPS7pYACdP\nnqx+/fpp69atmjNnjh566CH973//u+S+/e1vf5N0cTZk7969iouLc7hedna2brzxRm3fvl1JSUma\nOnWqCgoKJEktW7bUihUrtGfPHi1evFiLFy/WF198IeniB//XXntNr732mtLT0ysUxF964oknlJCQ\noLvuukt79+5V3759q8w+Y8YMeXl5KT09Xampqfr000/thfbZZ59Vv379tHPnTmVmZtpLeXUUFhZq\n4sSJGj16tLZv364nn3xSs2bNsh/26uPjo6efflq7du3Siy++qNdee02ZmZn28WVlZfr666+VkZGh\nRYsWacGCBXr99df1xhtv6F//+pfWrl2rzz77zOG2R44cqQ0bNqikpESSdPLkSX3yySeyWq2SpPLy\nct1+++3avHmzveQ7K47vv/++Vq1apeXLl+vTTz9Vp06dKpXpLVu2KDU1VWvXrtXatWuVlZWlzp07\na9asWerdu7f27t2rTz/91OH9Hz16VIZhaMuWLZo7d67mzZunoqKiK3ikq+bj41Op+K5fv15dunRR\nu3bt7OtU9Vz83EMPPaRmzZpp06ZNWr16tTZt2lRhxnDXrl3q1KmTtm/frokTJ1YaHxoaqn//+9/K\nysrSkCFDdN999+nChQs1tr8/+eCDDzRnzhy99NJLFX438vPzNXnyZN19993KysrS7bffrkmTJunM\nmTM6ffq0lixZopUrV2rv3r16++23dfPNNzt8Lnv27KkGDRpUODd53bp19tdYgwYN9MgjjygrK0tv\nv/22Pvroowr/gATg2kLRA1Bv3XvvverVq5f9v/nz5ztd18vLS4cPH9bJkyfVtGlTde/e/bK3ExYW\npp07d6q0tFRff/21xo8fr507d6q4uFiff/65evXqddn31bNnTw0cOFCenp4aMWKEvvrqK0nSZ599\nprNnz2rSpEny9vZWRESEBg8eXKOHG/r5+enOO+9UgwYNFBcXp5tuukmbN2+WJA0aNEg33nijLBaL\nevfubZ8dkKQNGzZo1KhRuvnmm9WkSRNNnTq1RvKcOHFCH3/8sWbNmqUmTZqoZcuWmjBhgn2fvby8\ndPToUeXl5alhw4ZX9Dg7s3HjRnXo0EG33XabPD09FRISosGDB+uDDz6QJEVERKhDhw7y8PBQly5d\nNGzYMHvJ/8m9994rb29vDRkyRNLFmVQ/Pz+1bt1aoaGhOnDggMNth4eHq3HjxvbHPC0tTZ06dVL7\n9u0lSa1atdKtt96qRo0aqVmzZrrnnnsqbfsn77zzjqZMmaKbbrpJDRo00NSpU7Vnzx6dOHHCvs49\n99wjHx8fBQcHq1evXvryyy8v+3Fq1KiR7rnnHjVo0EDR0dGyWCw6fPjwZY+/HCNHjlRaWpq9UP28\nkEiX91xI0g8//KBdu3ZpxowZaty4sQICAjR+/PgKvzvBwcEaO3asPD091ahRo0r3YbVa1aJFCzVo\n0ECTJ09WQUGBjhw5UqP7K0nbt29X+/bt1a1btwrLMzIy1KlTJ8XFxcnLy0ujRo1SUFBQhWL7zTff\nqLi4WIGBgfbXzC9ZLBZZrVb7DOyJEye0c+dO+z9shYSEKCQkRJ6enrrxxhs1ZswYp68xAObn5e4A\n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\nN+3EAAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f528b638278>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"Y = np.arange(len(l2_train[0]))\n", | |
"plt.figure(figsize=(15, 7))\n", | |
"plt.bar(Y, l2_train[0], align='center', alpha = 0.5, label = '1/ 58', color = 'red')\n", | |
"plt.bar(Y, l2_train[1], align='center', alpha = 0.5, label = '2 / 58', color = 'green')\n", | |
"plt.bar(Y, l2_train[-2], align='center', alpha = 0.5, label = '1 / 2', color = 'blue')\n", | |
"plt.bar(Y, l2_train[-1], align='center', alpha = 0.5, label = '1', color = 'black')\n", | |
"plt.xticks(Y, np.delete(np.arange(len(all_files_data)), bad_files))\n", | |
"plt.legend(loc = 'best')\n", | |
"plt.title('Hist without bad files. Team Valentin + Valeria + Kostya')\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 98, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([ 1386.28398182, 1385.88776492, 1385.14824839, 1382.16095396,\n", | |
" 1367.07276496])" | |
] | |
}, | |
"execution_count": 98, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"l2_train = np.mean(l2_train, axis = 1)\n", | |
"l2_train" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 99, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n", | |
" (prop.get_family(), self.defaultFamily[fontext]))\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA4sAAAG5CAYAAAAnPqHsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8lOW9///3PftMMtkmkxDCLrtsQVBEwIJVvxKoFHu6\nSK3VL8e14tJF06ot1Naj9VRPW/srVm3Lt9tpraKAta0pi9oqOwFFNoOSQPY9M5nJJPP7IzAkZDEI\nmUyS1/Px4OHMPfdyTXpVeedaPkY4HA4LAAAAAIBWTL3dAAAAAABA7CEsAgAAAADaISwCAAAAANoh\nLAIAAAAA2iEsAgAAAADaISwCAAAAANohLAIAetWCBQv0r3/9K2rPe/jhh/X0009H7XmdWb58uV56\n6aXebkan3nnnHc2bN++8nwsA6DsIiwCAmPHSSy9p6dKlmj59uubNm6fHH39coVDoE9/vxRdf1Je+\n9KU2x1atWqU777zznNo5btw4ffjhh+d0j2effVaf/exnz+ke58OLL76ocePG6dVXX+3tpgAAYgxh\nEQAQM/x+v7797W/r7bff1p///Ge9/fbbev755zs891xCZE+L5bad6aWXXlJSUpLWrl3b200BAMQY\nwiIAIGZcf/31mjFjhmw2m9LT07V48WLt3Lkz8vmCBQv0zDPPaPHixZo2bZpCoZCeeeYZffrTn1ZW\nVpYWLlyof/zjH5KkI0eO6Lvf/a52796trKwszZgxQ5L0wAMP6Mknn4zc809/+pOuvPJKXXzxxbrt\ntttUXFzcZRuXLVsmSbr22muVlZWlV199NTIN85lnntFll12mnJwcVVdX69Zbb9WsWbM0c+ZM3Xrr\nrSoqKorc54YbbtCf//xnSadHQB977DHNnDlTCxYs0ObNmzt8/jPPPKMVK1a0OfbII4/okUceidzr\niiuuUFZWlhYsWKBXXnml0+9SWFiobdu2adWqVXrzzTdVWlra6bkLFizQ6tWrtXDhQs2cOVM5OTkK\nBAJtznn++ed16aWXas6cOfrLX/4SOb5p0yYtWbJE06dP1+WXX66f/vSnnT4HABA7CIsAgJi1bds2\njR49us2xDRs26JlnntH27dtlsVg0dOhQ/e53v9OOHTv0ta99Td/85jdVUlKiCy64QCtXrtS0adO0\na9cubd++vd39//3vf+u///u/9dRTT+nNN99UZmam7rvvvi7b9Lvf/U6S9PLLL2vXrl1auHChJKms\nrEzV1dXauHGjvv/976u5uVlLly7Vxo0btXHjRtntdq1atarT++bl5WnkyJF6++23tXz5cn3nO99R\nOBxud152drY2b96suro6SVJTU5Nee+01LVq0SD6fT4888oh++ctfateuXfrjH/+oCRMmdPrMtWvX\natKkSbr66qt1wQUXaN26dV1+93Xr1um5557TP/7xD+Xn5+vnP/955LOysjLV1tZqy5Yt+sEPfqBV\nq1apurpakuR0OvXYY49p+/btWr16tf7whz/o9ddf7/JZAIDeR1gEAMSkF154Qfv27dPNN9/c5vgN\nN9ygjIwMORwOSdI111yj9PR0mUwmLVy4UMOHD1deXl63nrFu3Tpdd911uvDCC2Wz2XTfffdp9+7d\nKigoOOv2mkwmrVixQjabTQ6HQ8nJybr66qvldDoVHx+v22+/Xdu2bev0+sGDB+vzn/+8zGazPvvZ\nz6q0tFRlZWXtzsvMzNTEiRMjYevtt9+Ww+HQtGnTIu04dOiQGhoalJaWpjFjxnT6zJdfflmLFi2S\nJC1atOhjp6IuW7ZMGRkZSkpK0u23364NGzZEPrNYLLrzzjtltVp1+eWXy+VyKT8/X5J0ySWXaNy4\ncTKZTBo/fryys7O1devWLp8FAOh9hEUAQMx5/fXX9eMf/1i//OUvlZKS0uazjIyMNu/Xrl2ra6+9\nVjNmzNCMGTN06NAhVVZWdus5JSUlyszMjLyPi4tTUlLSx05F7UhycrLsdnvkvd/v18MPP6z58+dr\n+vTpWrZsmWpqatTU1NTh9ampqZHXTqdTkuTz+To8d9GiRVq/fr0kaf369ZHA53K59OSTT+qPf/yj\n5syZo1tuuUVHjhzp8B47duxQQUGBsrOzI/c8ePCg9u/f3+l3bP2zHzx4sEpKSiLvk5KSZLFY2nyH\nU+3fs2ePbrjhBs2aNUsXXXSR/vjHP3b7fyMAQO8hLAIAYsqWLVv04IMP6he/+IXGjRvX7nPDMCKv\nCwsL9eCDD+qhhx7SO++8o+3bt7cZSWt9bkfS0tJUWFgYee/z+VRVVaX09PSzbveZz3r++eeVn5+v\nP/3pT9q5c2dk+mpHU0vP1jXXXKOtW7eqqKhI//jHP7R48eLIZ3PnztWvfvUrvfnmmxo1apQeeuih\nDu+xdu1ahcNhLVmyRJdddpk+//nPS1KX5TxOnDgReX38+HGlpaV1q71f//rXdcUVV2jz5s3asWOH\nvvjFL56XnwMAoGcRFgEAMePf//63vvnNb+qnP/2ppkyZ8rHn+/1+GYYRGX38y1/+okOHDkU+93g8\nKi4uVjAY7PD6RYsW6cUXX9T+/fsVDAb14x//WFOmTNGQIUO6fG5qaqqOHTvW5Tn19fWy2+1KSEhQ\nVVWVfvazn33s9+mulJQUXXzxxcrJydGQIUN0wQUXSGpZN/j666/L5/PJZrPJ5XLJZGr/n/pAIKC/\n/vWvWrVqldauXRv589BDD2n9+vWd7ub6+9//XkVFRaqqqtIvfvGLyHrNj1NfX6/ExETZ7Xbl5eVF\nRkUBALGNsAgAiBk///nPVVtbq1tuuUVZWVnKysrS8uXLOz1/9OjRuvnmm/XFL35Rs2fP1sGDBzV9\n+vTI57NmzdLo0aM1Z84cXXLJJe2unz17tu6++27dddddmjNnjo4dO9Zmp9TOfO1rX9MDDzygGTNm\ndFqf8MYbb1QgENCsWbP0hS98QXPnzu3GT6D7Fi1apH/961+RKaiS1NzcrF//+teaO3euLr74Ym3b\ntk3f+9732l37+uuvy+FwaMmSJfJ6vZE/1113nZqamvTGG290+sybb75Zn/70pzVs2DDdfvvt3Wrr\nd7/7Xf3kJz9RVlaWnn76aV1zzTWf6DsDAKLLCDMPBAAAfIwFCxbokUce0ezZs3u7KQCAKGFkEQAA\nAADQjuXjTwEAYGDZvn27/vM//7PDz3bt2hXl1gAA0DuYhgoAAAAAaIdpqAAAAACAdgb0NNTS0toe\nf0ZyskuVlR0XVQbOJ/oaooW+hmihryEa6GeIlljta16vu9PPGFnsYRaLubebgAGCvoZooa8hWuhr\niAb6GaKlL/Y1wiIAAAAAoB3CIgAAAACgHcIiAAAAAKAdwiIAAAAAoB3CIgAAAACgHcIiAAAAAKAd\nwiIAAAAAoB3CIgAAAACgHcIiAAAAAKAdwiIAAACAmFRQWqeNOwv0ypv52rizQAWlded8zyuvnCtJ\nOnTogG699SZ9+cuf1403flG5uX8/63tt2bJJ+fkfRN4/++wvtG3bO2d9nz/96fdqaGg46+s+6fO6\ny9JjdwYAAACAT6igtE7b3y+JvK+uD0beD/HGn/P97XaHHnxwpYYOHaayslL93//7ZV188aVyu91t\nzmtqapLZbO7wHm+8sUmzZ8/RyJGjJEnLl9/2idrypz/9QVddtVAOh6PdZ109/5M+r7sIiwAAAACi\nbl9+uY6X+Tr9/FBBlRqCTe2OF5bVa8yQpA6vGZzq0qSRnm49f9iw4ZHXqaleJSWlqKqqUm63W5/7\n3GItWHCltm9/R9df/xX5fD698spLamxs1JAhQ/TQQ9/XoUMH9OabW7R790795jfP6wc/eFy//vWz\nmj17jubP/7S2b9+qp59+Sk1NTRo/fqIee+yHHbbjz3/+o8rKSrVixa1KTEzST3+6WldeOVef+cxS\nbd++Vffdd7927tymt956Q4FAgyZNmqpvfevbMgxDP/jB9yLP+9znFuuaaxbprbe2KBQK6fvff0zD\nh4/o1s+iM0xDBQAAABBzAh0Exa6On4v33tunUKhRmZlDIscSExP1/PO/06c/fbUuv3y+nn12jX7z\nmz9o+PCRWr9+rSZPnqo5c+bpjjtW6Ne//n2bawOBgH74w5VaufJRrVnzv2pqatLvf//7Dp/9H//x\nRaWmevWTn6zWT3+6WpLk9/s1ceIk/eY3f9DUqdN03XWf17PPrtH/+39/UjDYoLfeeqPDe51q85Il\nn9Mf/vD/zvnnwshiDCkordOhY1Wq9TXK7bJqzNCk8zLEDgAAAMSaSSM9XY4CWs2GquuD7Y4nxtk0\nf/qQDq74ZMrKyvT97z+s73xnpUym02NpV1xxVeT1Bx8c0S9/+f+prq5Wfr9fF188q8t7fvTRh8rI\nGBwZvbzmmkXasOElZWdf1602mc1mfepTCyLvd+7crt/9bo0CgQbV1NRoxIgLNGfOvHbXXX55yzXj\nxk3Q5s0bu/WsrhAWY8SpOdnhsBRobFJzOHxe52QDAAAAfcmYoUlt1iy2Pn6+1NfX6Vvfulu33HKH\nJk2a3OYzh8MZef3DH67UD3/4hMaMGatXX12nXbt2nLc2dMRms0XWKQYCAf33fz+mZ59do/T0QXru\nudUKBgMdXme12iRJZrNJTU2hc24H01BjxKFjVZKk6vqAjhbV6GhRreobGnXw5HEAAABgIBnijdeM\n8WlKjLPJZBhKjLNpxvi08zaQ0tjYqG9/+5v6P/8nW/Pnf7rLc32+eqWmpioUCunvf/9r5LjL5ZLP\n137d5bBhw3XixHEVFByTJP3tb69q5syZnd6/5T71HX4WDLaMriYlJcnn82nTptyP/W7nCyOLMaLW\n1yhJcrts8gdCqqlv1LGSOlXUBDRtdKpSEtrvjAQAAAD0Z0O88T02y+6f//yHdu/eqerqar366npJ\n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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f528aec2a58>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"x = np.array(enc_dims) / 58.\n", | |
"plt.figure(figsize=(15, 7))\n", | |
"\n", | |
"y = np.array(l2_train)\n", | |
"plt.plot(x, y, marker='o', alpha = 0.5, label = \"l2ratio_train\")\n", | |
"\n", | |
"plt.title(\"l2ratio_train vs Alpha\")\n", | |
"plt.xlabel(\"Alpha\")\n", | |
"plt.ylabel(\"l2ratio\")\n", | |
"plt.legend(loc = 'best')\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Calc L2Ratio on Test" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"l2_loss_by_files = []\n", | |
"for enc_dim in enc_dims:\n", | |
" adds = []\n", | |
" name = \"model/CNN/Valentin_Model\"\n", | |
" au.load(name + str(enc_dim) + \".h5\")\n", | |
" start = 0\n", | |
" for i in range(X_test_size.shape[0]):\n", | |
" finish = X_test_size[i]\n", | |
" part_data = X_test[start : finish]\n", | |
" prepare_data = au.prepare_read_file(part_data)\n", | |
" au.scaler.fit_transform(prepare_data)\n", | |
" part_data_pred = au.run(prepare_data).reshape(part_data.shape)\n", | |
" add = np.sum((np.delete(part_data_pred, X_test_delete_channels[i])-\n", | |
" np.delete(part_data, X_test_delete_channels[i]))**2)\n", | |
" print(i, add, X_test_names[i])\n", | |
" adds.append(add)\n", | |
" start = finish\n", | |
" \n", | |
" l2_loss_by_files.append(adds.copy()) \n", | |
" print(enc_dim)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 103, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"iters = []\n", | |
"start = 0\n", | |
"for finish in X_test_size:\n", | |
" iters.append((start, finish))\n", | |
" start = finish" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 104, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"all_files_data = [X_test[itter[0] : itter[1]] for itter in iters]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 105, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"bad_files = []" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 109, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"div = np.array([np.sum(all_files_data[i]**2) for i in np.delete(np.arange(len(all_files_data)), bad_files)])\n", | |
"l2_test = np.delete(l2_loss_by_files, bad_files, axis = 1) / div\n", | |
"l2_test = np.sqrt(l2_test) * 100" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 110, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n", | |
" (prop.get_family(), self.defaultFamily[fontext]))\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA3oAAAGrCAYAAACWruXbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3X1c1fX9//Hn4ZzAVFBQOIh603TmyhQwL0ALJ3ZAwYtD\nYdeZdGHxzSnWdJnN64u1uWC2tmRupW2rfTXF5rEEYU1L8iqZM9uaK+YVnKOIJpAieH5/+PXziwAB\nRdOPj/vt5u0W78/n/fq8PgftxpP358Li9Xq9AgAAAACYhs933QAAAAAAoHkR9AAAAADAZAh6AAAA\nAGAyBD0AAAAAMBmCHgAAAACYDEEPAAAAAEyGoAfA1BITE7V169YrdryZM2fq1VdfrXf7K6+8oh/9\n6EeNrtezZ0/997//bY7W9Pzzzys9Pb3e7enp6Ro4cKAGDx6sw4cPKzIyUtXV1ZKkRx55RCtXrmyW\nPq4nb731lsaPH39Zam/ZskWjR4++LLUvl3vvvVdr1669qLmVlZWKjIyU2+1u5q4AwJwIegCuWbGx\nsdqyZUuNsdWrV+uBBx4wvna5XBo4cOAF6xw8eFA9e/ZUVVXVJfc0d+5cPfPMM5KkrVu3KiYm5pJr\nXgmHDx/W66+/rvXr1+ujjz5SWFiYdu3aJavVekWOHRkZafzp2bOnIiIijK937Nhx2XuoS3l5uSIj\nI/XJJ5/U2jZr1qwmBfZLdfr0afXs2VPFxcXG2KBBg/Tuu+9esR5Wr16t+Pj4WuOVlZXq379/rX+L\nzc3X11e7du2S3W6/rMf5pm8H9RMnTig5OVnPPvvsRf//oq7vJQBcDgQ9AIAOHz6stm3bql27dlf8\n2OdD5fk/krR27Vrj6379+l3xniSpVatWiouLU1ZWVo3xyspKvf/++0pKSvpO+mpup0+fVu/evRvc\nLz4+Xh6PRwUFBTXG8/Ly1LJlS0VFRV2uFpvllzDfNHjwYB05cqRJc44dO6ZHH31UPXr00OLFi2Wz\n2Zq1JwBobgQ9AKb2zVW/3bt36+6771bfvn01aNAgLVq0SJL08MMPS5L69++vyMhII2ycd/r0afXp\n00fHjh2TJP3mN7/RrbfeqrKyMklSRkaGFixYIOn/Xx5ZUVGhJ598Uh6Px1iZOn/J2ZkzZzRt2jRF\nRkYqMTFR//jHPy54Dn/72980bNgwDRw4UC+99JLOnj0rSdq/f7/GjRungQMHauDAgXruuef01Vdf\nGfP27t2rpKQkRUZGKi0tTadPn66z/pYtW/TYY48ZvT7//PMNrnKuWrVKI0aMUP/+/fX444/r0KFD\nkiSv16uFCxcqOjpaffv21ahRo/T5559f8Pwa49SpU1qwYIGGDBmiwYMHa968eaqsrJR07gfwJ554\nQlFRURowYIBSU1Pl8XiMuffee69eeeUVJScnKzIyUhMnTlRpaakmT56svn376t577613dcXpdOr9\n9983jiVJH3zwgfz8/BQdHS1J+tWvfqXY2FhFRkZq5MiR+uCDD+o9j88//1zjxo1T//79NWLECG3c\nuNHYNmXKFC1YsECPP/64IiMjdf/99xuf60MPPSRJGj58uCIjI7Vx40Zt2rRJDofDmD948GC98cYb\nGjlypG6//XY999xzNfq+VK1atZLD4agVfLOysjR69Gj5+Pg0+L34trffflvx8fEaMGCAJkyYYPwb\nOb/q9ac//Ul33XWXRo4cWWslLCcnR6NHj1bfvn31gx/8QK+99lqzneu3HTlyROPGjVOfPn20cOFC\n+fic+/Hp+PHjeu655xQVFaXY2Fj99re/ldfrlST95z//0QMPPKDbb79dUVFRmjZtmqS6v5cOh0Mf\nffSRcbzTp0/r9ttv13/+8x9VVVXphz/8oQYNGqR+/frpkUce0RdffHHZzhWAeRD0AFw3FixYoHHj\nxumTTz5RTk6ORowYIUn6wx/+IEnavn27du3apcjIyBrz/Pz81Lt3b23fvt3YLywsTDt37jS+HjBg\nQI05LVu21G9/+1uFhIQYK1PnLznLy8tTYmKiduzYodjYWM2bN++Cfefk5Oidd97RmjVrlJeXp3fe\neUfSuVD11FNPafPmzXrvvfdUXFysV155RdK5VadnnnlGY8aM0bZt2zR8+HBlZ2fXWX/QoEE1ev3p\nT396wX42btyopUuX6le/+pXy8/ONUCFJH374oXbs2KENGzZo586dysjIUNu2bS9YrzEWLVokt9ut\nv/zlL3r//fdVWFiozMxMSdLZs2d1//3364MPPlBubq6x/zetX79eGRkZ+utf/6rPP/9cDzzwgB56\n6CFt27ZNYWFh+s1vflPncaOiotSqVSvl5eUZY2vXrjWCjSR169ZNb7/9tnbu3KknnnhCU6ZMMX4p\n8E1lZWV67LHHlJycrI8//lgvvfSSXnjhhRr3YK5bt07PPvustm3bppCQEOP7+cc//lGS9P7772vX\nrl2666676uz3/fff1xtvvKGcnBzt3r1b69ata9Tn21hJSUl67733aoTsDz/8UE6nU1LjvhfnrV+/\nXsuXL9drr72mjz76SLfcckuty2E/+OADrV69ula4lKTWrVvrF7/4hXbs2KFXX31Vv//977Vp06bm\nPF1JUklJiR5++GFFR0dr7ty5slgsxrZZs2bpzJkzys3N1euvv6633npLf/nLXyRJL7/8su666y7t\n2LFDH3zwge677z5JdX8vx4wZU+My3NzcXHXt2lXdu3eXJA0bNkw5OTn66KOP1K1bNz3//PPNfp4A\nzIegB+Ca9swzz6hfv37Gnzlz5tS7r81m0/79+3Xs2DG1atVKERERjT5O//79tX37dlVVVelf//qX\nHnnkEW3fvl2nT5/WP/7xjyZdXnj77bdryJAhslqtGjNmjP75z39ecP8nn3xSbdu2VVhYmMaNG2f8\n8N6lSxcNHjxYvr6+CgoKUkpKihFG//73v+vMmTN69NFHdcMNN2j48OGNujyvMd5++21NmDBB3bt3\nl81m09NPP63PPvtMhw4dks1mU3l5ub744gt5vV51795dISEhl3S8qqoqvfPOO5oxY4YCAgLk7++v\nJ598Ui6XS5LUvn173XXXXWrRooX8/f311FNPGZ/DeWPHjlWnTp3Utm1bDR48WN27d9eAAQNks9kU\nHx+vzz77rM5jWywWjR492ggapaWl+tvf/lbjss2EhASFhITIx8dHTqdTdrtdn376aa1aOTk56tGj\nh0aPHi2r1ao+ffpo6NCh2rBhg7HPiBEj1KtXL91www0aOXJkvX3VZ/z48Wrfvr2CgoI0ZMiQJs9v\nyMCBA3XjjTcaq5Yul0u33HKLEUga870476233lJqaqpuuukm3XDDDZo4caI++eQTHT161Njn6aef\nVkBAgFq0aFFrfnR0tHr06CEfHx/16tVLw4cPr/dYl+LgwYM6dOiQEWbPq6ysVHZ2tqZOnapWrVqp\nS5cuevTRR42HzdhsNh06dEhHjhxRixYtdPvtt9d7DKfTqY0bN+rUqVOSzv0yYcyYMUYdp9OpVq1a\nyc/PTxMnTtTu3bvrXaEHgPO4wBzANe3VV1/VoEGDjK9Xr15d79MhFyxYoCVLlmjEiBHq1KmTJk6c\nqKFDhzbqOAMGDNCiRYu0d+9e3XzzzRo8eLBmzJihgoICdenSRYGBgY3uuX379sZ/t2jRQqdPn1ZV\nVVW99/x06NDB+O+OHTsal8IdPXpUCxYs0I4dO1ReXi6v16uAgABJksfjkd1ur7H6EBYW1ugeL+Tw\n4cNauHChXnrpJWPM6/XK7XYrOjpaDz30kObOnatDhw4pLi5OP/7xj9W6deuLPp7H49GZM2eUmJhY\n43jnP6+ysjItWLBA+fn5xqWr3/4h+Jv3HrZo0aLW1xUVFfUe3+l0atSoUTp27Jjee+899ezZ0wg2\nkrRy5UqtWLFCRUVFkqSKigqVlpbWqnPo0CFt3769xi8FqqurlZycbHz97b8bF+qrLt+eX1cfkpSf\nn68f/vCHxteVlZU1+nr99dfr/MWAj4+PxowZo6ysLMXFxWnt2rU1Qm9jvhfnHT58WLNmzdLcuXON\nMavVquLiYvn7+0uq+Xf/23bu3Kn09HTt27dPZ86cUWVlpRGOvq2wsLDG51xWVqbhw4cb/z4WLlyo\nuLi4OueGh4dr8ODBeuyxx/Tmm2/q5ptvlnTucs6zZ8/W++/zhRdeUEZGhpKSkhQUFKQnnnii3v46\ndeqkW2+9VRs3btSgQYP08ccfa+HChZLO/aJj8eLFysnJUWlpqXx8fOT1enX8+PEr+mAaANcegh6A\n60bXrl318ssv6+zZs8rOztakSZO0devWGmGoPpGRkfryyy+Vk5Oj/v3763vf+54OHz6sv/3tb+rf\nv3+dcxpTtzGKiorUo0cPSed+OD6/Qvbyyy/LYrHoL3/5i9q2bauNGzcaPzQHBwfL7XbL6/UafRw+\nfFidO3e+5H46dOigp59+ut5H+48bN07jxo1TSUmJ0tLStGzZMqWlpV308YKDg2Wz2ZSTk1NnoP7t\nb38rt9utVatWqX379iooKNCDDz540cf7tptuukm33Xab1q1bJ5fLVSPYfPnll5o/f76WL1+uPn36\nyMfHR8OHDzfu0/qmDh066I477rioe8ma6+/SedHR0cbTTE+fPq1+/fo1+umm54Pvzp079c9//rNG\nAG/K96JDhw6aNm1anU/yPB8OL3TeaWlpevrpp5WcnCw/Pz/NnDnTeB3It3Xt2rXG+Q0ePFhZWVkK\nDg5u1Dk/+eSTOn36tFJSUvTmm2+qW7duCg4Olo+Pj4qKiox/V9/892m327Vo0SJ5vV5t27ZNjz/+\nuPr3718jjH+T0+nUu+++q9LSUkVFRRm/jFi9erU++ugjrVixQmFhYTp69KjuuOOOOv+OAcA3cekm\ngOvG2rVrdezYMfn4+BgrXz4+PgoKCpKPj48OHDhQ79wbb7xRt912m/74xz8a9+NFRkbq7bffrjfo\ntWvXTsePH9fJkycvqe/f/e53OnHihIqKirRixQolJCRIOvf4/5YtW8rf319ut1vLli0z5kRERMhm\ns2nFihU6c+aMsrOzG3zoS2Pdf//9yszM1L///W9J0smTJ/Xee+9JOvfAm/OXjd54443y9fU17mW7\nWDfccIPuueceLViwQMeOHZPX61VRUZHx8Iry8nK1aNFCAQEBOnbsWL33210Kp9OpN954Q59++mmN\nYFNRUWH8HTp79qzeeust7d+/v84ad911l/bu3av169cbK1AFBQX68ssvGzy+r6+v/P39L/h39Eq5\n6aab1KtXL02dOlVDhw6tcQ9mU74X999/v37zm98YDxY5ceJEjctYL8Tr9aqiokKBgYHy8/PTJ598\n0ui5F2vixIlKTk7W+PHjtX//fvn6+srhcOjll19WRUWF9u/frxUrVhi/AFm/fr3cbrcsFovx/xur\n1Vrv9zI+Pl47d+7UW2+9VWPlr7y8XH5+fmrbtq0qKiqUkZFxWc8TgHkQ9ABcNzZv3qzExERFRkZq\nwYIFSk9PV4sWLXTjjTfq6aef1gMPPKB+/frVenz8ef3791dVVZX69Okj6dzlnOXl5fUGve7duysx\nMVF33XWX+vXrd9Eveh42bJjuvvtuOZ1O/eAHPzAuQZs4caL27t2rfv36acKECTUuPfP19dUrr7yi\nNWvWaMCAAVq/fn2NJzReCofDoSeeeELPPvus+vbtq5EjRxoPwSgvL9eLL76oAQMGGCHg8ccflyS9\n9tpreuKJJy7qmC+88IJCQkKUnJys22+/XU888YTxEJPHHntMpaWlGjhwoB588MHL8u7ChIQEHT16\nVEOGDKmxqtirVy/df//9uueee3THHXfo4MGDuu222+qs0aZNG/3ud7/TO++8ozvuuEN33nmnMjIy\nGv3qgEmTJmny5Mnq16+f8aCT74rT6dShQ4dqXYrYlO/FyJEj9dBDD+mHP/yh+vbtK6fTWePJkxdi\nsVg0Z84cvfTSS4qMjNSyZcvqXBlsblOmTFFiYqIeffRRHTp0yLgneOjQoXr00Uc1duxYI+jt2rVL\n99xzjyIjIzV58mTNnTvXuNSyru9l69atNXToUHk8Hg0bNsw4ZnJysoKCgnTHHXdo1KhRF7zXDwC+\nyeJl7R8AAOA79/LLL6ukpMR4XQsAXApW9AAAAL5jx44d0+rVq43XMADApSLoAQAAfIf+8Ic/KDY2\nVsOHDzcuDQeAS8WlmwAAAABgMqzoAQAAAIDJXLPv0Tty5NIeV/5dCAxsqdLSpr38lhrUoAY1qEGN\n66XG1dADNahBDWpcS4KD/evdxoreFWSzWalBDWpQgxrUoMZV3AM1qEENapgFQQ8AAAAATIagBwAA\nAAAmQ9ADAAAAAJMh6AEAAACAyRD0AAAAAMBkCHoAAAAAYDIEPQAAAAAwGYIeAAAAAJiM7btuAAAA\nAACaouXPFtYcaOWnluWnL7pexbQXGtxn4cI52rLlQwUGBurNN/+3xrY9e/4hl2utfvzjF2uMx8QM\nULdu35Mk2e12vfRSuiRpx45t+vWvf6mzZ7268cYbNWPGbHXq1Pmi+68LQQ8AAAAAGpCQMEr33HOf\n5s+fWWvb1q1bNHBgdK1xPz8/vfHGn2qNL178U/30p79Q1643afXqlVq+/HeaMWN2s/bLpZsAAAAA\n0ICIiL4KCAioc9uOHdvUr9/ARteyWKTy8nJJUnl5mdq3D26WHr+JFT0AAAAAuEjHjx+XzWZT69at\na22rrKzUY489JJvtBj388HjFxPxAkvT88z/R1KmT5efnp1atWmnp0tebvS+CHgAAAABcpG3bPtaA\nAVF1blu16i8KDg7RoUMHNXlyqrp3/546duykP//5T/r5z3+pXr1u05/+tEKvvJKu55//SbP2xaWb\nAAAAAHCRtm79qM778yQpODhEktSxYydFRt6uzz//p0pLS7Vv3+fq1es2SVJsbJz27Nnd7H0R9AAA\nAADgIni9Xu3bt089evSste2rr75SZWWlpHOXd/7jH39X167d5O/vr/LyMu3f/19J0o4dH6tLl67N\n3huXbgIAAAC4pnz7dQitgv1VceTkZT3mrFkvqKBgp44fP66kpAQ9/vgEfe97N+vmm3vKYrHU2v+/\n//1SP//5QlksPvJ6z+rhhx/VTTd1kyRNm/aiXnxxmiwWH/n7+2v69NpP8rxUjQp6b7zxhlauXCmL\nxaKbb75ZixYt0tdff60pU6bo0KFD6tixozIyMtSmTRtJ0tKlS7Vq1Sr5+PjoxRdf1J133ilJ2rNn\nj6ZPn65Tp05pyJAhmjFjhiwWiyorKzVt2jR9+umnatu2rdLT09WpU6dmP1lcm2q9J+WbLvDOlMa8\nDwUAAABojDlzav9M+sYby+q9bLN373CtWPHnOrcNGTJUQ4YMbdb+vq3BoOd2u7VixQqtX79eLVq0\n0OTJk+VyubRv3z5FR0drwoQJyszMVGZmpqZOnap9+/bJ5XLJ5XLJ7XYrJSVFGzZskNVq1ezZszVv\n3jyFh4frySef1KZNmzRkyBCtXLlSAQEBysnJkcvl0uLFi5WRkXFZTxzXjgW+m+vd5iubKn2r6tw2\n5XI1BAAAAEgaP/6J77qFejVqRa+6ulqnTp2SzWbTqVOnFBISoqVLl+rNN9+UJDmdTj3yyCOaOnWq\ncnNzlZiYKF9fX3Xu3FldunTR7t271bFjR5WVlSkiIsKYk5ubqyFDhigvL08TJ06UJMXHx2vu3Lny\ner11LoHi+rN502P1brNafVRdfbbObVPSLldHAAAAwNWtwaBnt9v12GOPaejQofLz89PgwYN1xx13\nqKSkRCEh554iExwcrJKSEknnVgDDw8NrzHe73bLZbAoNDTXGQ0ND5Xa7jTkdOnQ415DNJn9/f5WW\nliooKKjevgIDW8pms17EKX+3goP9qdHEGlbrhZ8ZVN/2pvR3LX0e1KAGNahh5hpXQw/UoAY1qGEG\nDQa9EydOKDc3V7m5ufL399fkyZO1du3aGvtYLJYrvvpWWlpxRY/XHIKD/XXkEm8SvR5r1LdiJ114\nRa+x/V1rnwc1qEENapi1xtXQAzWoQQ1qXEsuFEwbDHpbtmxRp06djNW1uLg47dq1S+3atZPH41FI\nSIg8Ho+x3W63q7i42Jjvdrtlt9trjRcXF8tutxtzioqKFBoaqqqqKp08eVKBgYEXd7Ywnf/+d229\n23x8LDp71lvP1rGXpyEAAADgKtfge/TCwsL097//XV9//bW8Xq/y8/PVvXt3xcbGKisrS5KUlZWl\nYcOGSZJiY2PlcrlUWVmpAwcOqLCwUH369FFISIhat26tgoICeb3eWnPWrFkjSdqwYYOioqK4Pw8A\nAAAALlKDK3rh4eGKj49XUlKSbDabbrnlFt13330qLy9XWlqaVq1apbCwMOMpmT169NCIESOUkJAg\nq9WqmTNnymo9dy/drFmzjNcrxMTEKCYmRpKUnJysqVOnyuFwqE2bNkpPT7+MpwwAAADgWvazbTVf\nddCqlZ/K63nlVmNMG3Dh13K53cWaP3+WSkuPSbJo9Ogk3XvvA3Xue/ToUS1YMEvp6a/WGE9OHqWW\nLVvKx8cqq9Wq3/3u3IMt//3vf+nnP1+kyspKWa1WPffcj3Xrrbdd9Lmc16inbk6aNEmTJk2qMebr\n66vly5fXuX9qaqpSU1Nrjffu3Vvr1q2rNe7n56clS5Y0phUAAAAAuKKsVpsmTpyinj2/r4qKcj32\n2CPq33+g8QL0b9q6dYsGDKj73XpLlixV27Zta4z9+tdLlJLypKKjBys//0P9+tdL9KtfZV5yzw1e\nugkAAAAA17P27durZ8/vS5Jatmylrl276uhRT537bt2ar6ioQY2ubbFYVFFRLkkqKytT+/bBl96w\nGrmiBwAAAACQiooO6/PP/1Xn5ZXV1dXav/+/da70WSwWpaX9j3x8fDRmzN0aM+ZuSdKkSc/p2Wcn\n6tVXf6mzZ8/qtdd+3yx9EvQAAAAAoBEqKio0Y8Y0TZ78nFq1al1r+969e3Trrb3qnPvrXy9TcHCI\nSkuPKS3tGXXp0lUREX2VlbVKkyY9qx/8YJhyc3O0aNE8/fKXv77kXrl0EwAAAAAaUFVVpRdfnKa4\nuOEaMiS2zn0+/niLBg6s+7LN4OAQSVJgYJBiYn6gvXs/lSS99946o15s7F367LNPm6Vfgh4AAAAA\nXIDX69WiRXPVpctNuv/+h+vdb+fO7erff0Ct8a+//tq4D+/rr7/W9u1b1a1bd0lS+/bB2rVrpzG/\nU6fOzdIzl24CAAAAuKZ8+3UIwcH+OnLk5GU73u7df9eGDevVvfv3NH78g5Kkp576H0VH32HsU1pa\nKl9fX7Vs2arW/GPHSvTCC1MlnbuPz+GINx7YMm3ai/rlLxerurpavr6+mjZtRrP0TNADAAAAgAsI\nD4/Qhx/uuOA+27blq3//qDq3dezYScuXv1Vv7d///g+X3OO3EfQAAAAA4BLFxyd81y3UwD16AAAA\nAGAyBD0AAAAAMBmCHgAAAACYDEEPAAAAAEyGoAcAAAAAJsNTNwEAAABcU372M98aX7dqJZWX+9az\nd8OmTatscJ+FC+doy5YPFRgYqDff/N969zt69KgWLJil9PRXjTG3u1jz589SaekxSRaNHp2ke+99\n4KL7bQxW9AAAAACgAQkJo/SLX7zS4H5bt27RgAHRNcasVpsmTpyiP/xhpTIzX9fq1Sv15ZdfXK5W\nJRH0AAAAAKBBERF9FRAQ0OB+W7fmKypqUI2x9u3bq2fP70uSWrZspa5du+roUc9l6fM8gh4AAAAA\nNIPq6mrt3/9f3XRTt3r3KSo6rM8//5duvfW2y9oLQQ8AAAAAmsHevXt066296t1eUVGhGTOmafLk\n59SqVevL2gtBDwAAAACawccfb9HAgYPq3FZVVaUXX5ymuLjhGjIk9rL3QtADAAAAgGawc+d29e8/\noNa41+vVokVz1aXLTbr//oevSC+8XgEAAADANeXbr0MIDvbTkSMNvyLhUsya9YIKCnbq+PHjSkpK\n0OOPT9DIkU5je2lpqXx9fdWyZatac3fv/rs2bFiv7t2/p/HjH5QkPfXU/yg6+o7L1i9BDwAAAAAa\nMGfOwgtu37YtX/37R9W5LTw8Qh9+uONytFUvgh4AAAAAXKL4+ITvuoUauEcPAAAAAEyGoAcAAAAA\nJkPQAwAAAACTIegBAAAAgMkQ9AAAAADAZHjqJgAAAIBrys9+VvNVB61a+am8/PRF15s27YUG91m4\ncI62bPlQgYGBevPN/73oY10prOgBAAAAQAMSEkbpF7945btuo9EIegAAAADQgIiIvgoICPiu22g0\ngh4AAAAAmAxBDwAAAABMhqAHAAAAACZD0AMAAAAAk+H1CgAAAACuKd9+HUJwsL+OHDl5WY85a9YL\nKijYqePHjyspKUGPPz5BI0c6L+sxL0WDQe+LL77QlClTjK8PHDigSZMmyel0asqUKTp06JA6duyo\njIwMtWnTRpK0dOlSrVq1Sj4+PnrxxRd15513SpL27Nmj6dOn69SpUxoyZIhmzJghi8WiyspKTZs2\nTZ9++qnatm2r9PR0derU6TKdMgAAAAA0zZw5Cxve6SrS4KWb3bp109q1a7V27VqtXr1aN954oxwO\nhzIzMxUdHa3s7GxFR0crMzNTkrRv3z65XC65XC4tW7ZMc+bMUXV1tSRp9uzZmjdvnrKzs1VYWKhN\nmzZJklauXKmAgADl5ORo/PjxWrx48WU8ZQAAAAAwtybdo5efn6/OnTurY8eOys3NldN5bqnS6XRq\n48aNkqTc3FwlJibK19dXnTt3VpcuXbR79255PB6VlZUpIiJCFotFTqdTubm5kqS8vDwlJSVJkuLj\n45Wfny+v19uc5wkAAAAA140m3aPncrk0cuRISVJJSYlCQkIkScHBwSopKZEkud1uhYeHG3Psdrvc\nbrdsNptCQ0ON8dDQULndbmNOhw4dzjVks8nf31+lpaUKCgqqt5fAwJay2axNaf+qEBzsT40m1vDx\nsVzU9qb0dy19HtSgBjWoYeYaV0MP1KAGNahhBo0OepWVlcrLy9Nzzz1Xa5vFYpHFcuEfxptbaWnF\nFT1ec2jQkdROAAAgAElEQVSOm0Svxxpnz9a/uuvjY6l3e2P7u9Y+D2pQgxrUMGuNq6EHalCDGtS4\nllwomDb60s1NmzapV69eat++vSSpXbt28ng8kiSPx2OsvtntdhUXFxvz3G637HZ7rfHi4mLZ7XZj\nTlFRkSSpqqpKJ0+eVGBgYGNbAwAAAAB8Q6ODnsvlUmJiovF1bGyssrKyJElZWVkaNmyYMe5yuVRZ\nWakDBw6osLBQffr0UUhIiFq3bq2CggJ5vd5ac9asWSNJ2rBhg6Kioq74CiEAAAAAmEWjLt2sqKjQ\nli1bNHfuXGNswoQJSktL06pVqxQWFqaMjAxJUo8ePTRixAglJCTIarVq5syZslrP3Us3a9Ys4/UK\nMTExiomJkSQlJydr6tSpcjgcatOmjdLT05v7PAEAAADgutGooNeyZUtt3bq1xlhgYKCWL19e5/6p\nqalKTU2tNd67d2+tW7eu1rifn5+WLFnSmFYAAAAAAA1o0usVAAAAAABXP4IeAAAAAJgMQQ8AAAAA\nTIagBwAAAAAmQ9ADAAAAAJMh6AEAAACAyRD0AAAAAMBkCHoAAAAAYDIEPQAAAAAwGYIeAAAAAJgM\nQQ8AAAAATIagBwAAAAAmQ9ADAAAAAJMh6AEAAACAyRD0AAAAAMBkCHoAAAAAYDIEPQAAAAAwGYIe\nAAAAAJgMQQ8AAAAATIagBwAAAAAmQ9ADAAAAAJMh6AEAAACAyRD0AAAAAMBkCHoAAAAAYDIEPQAA\nAAAwGYIeAAAAAJgMQQ8AAAAATIagBwAAAAAmQ9ADAAAAAJMh6AEAAACAyRD0AAAAAMBkCHoAAAAA\nYDIEPQAAAAAwGYIeAAAAAJgMQQ8AAAAATIagBwAAAAAm06ig99VXX2nSpEkaPny4RowYoV27dun4\n8eNKSUlRXFycUlJSdOLECWP/pUuXyuFwKD4+Xps3bzbG9+zZo1GjRsnhcGj+/Pnyer2SpMrKSqWl\npcnhcGjs2LE6ePBgM58mAAAAAFw/GhX0FixYoDvvvFPvv/++1q5dq+7duyszM1PR0dHKzs5WdHS0\nMjMzJUn79u2Ty+WSy+XSsmXLNGfOHFVXV0uSZs+erXnz5ik7O1uFhYXatGmTJGnlypUKCAhQTk6O\nxo8fr8WLF1+m0wUAAAAA82sw6J08eVLbt29XcnKyJMnX11cBAQHKzc2V0+mUJDmdTm3cuFGSlJub\nq8TERPn6+qpz587q0qWLdu/eLY/Ho7KyMkVERMhiscjpdCo3N1eSlJeXp6SkJElSfHy88vPzjdU+\nAAAAAEDT2Bra4eDBgwoKCtL06dP1z3/+U7169dKMGTNUUlKikJAQSVJwcLBKSkokSW63W+Hh4cZ8\nu90ut9stm82m0NBQYzw0NFRut9uY06FDh3MN2Wzy9/dXaWmpgoKC6u0rMLClbDbrRZzydys42J8a\nTazh42O5qO1N6e9a+jyoQQ1qUMPMNa6GHqhBDWpQwwwaDHpVVVXau3evfvKTnyg8PFzz5883LtM8\nz2KxyGK58A/jza20tOKKHq85BAf768iRk9RoYo2zZ+tf3fXxsdS7vbH9XWufBzWoQQ1qmLXG1dAD\nNahBDWpcSy4UTBu8dDM0NFShoaHGKt3w4cO1d+9etWvXTh6PR5Lk8XiM1Te73a7i4mJjvtvtlt1u\nrzVeXFwsu91uzCkqKpJ0LliePHlSgYGBTT1PAAAAAIAaEfSCg4MVGhqqL774QpKUn5+v7t27KzY2\nVllZWZKkrKwsDRs2TJIUGxsrl8ulyspKHThwQIWFherTp49CQkLUunVrFRQUyOv11pqzZs0aSdKG\nDRsUFRV1xVcIAQAAAMAsGrx0U5J+8pOf6Ec/+pHOnDmjzp07a9GiRTp79qzS0tK0atUqhYWFKSMj\nQ5LUo0cPjRgxQgkJCbJarZo5c6as1nP30s2aNUvTp0/XqVOnFBMTo5iYGElScnKypk6dKofDoTZt\n2ig9Pf0ynS4AAAAAmF+jgt4tt9yi1atX1xpfvnx5nfunpqYqNTW11njv3r21bt26WuN+fn5asmRJ\nY1oBAAAAADSgUe/RAwAAAABcOwh6AAAAAGAyBD0AAAAAMBmCHgAAAACYDEEPAAAAAEyGoAcAAAAA\nJkPQAwAAAACTIegBAAAAgMkQ9AAAAADAZAh6AAAAAGAyBD0AAAAAMBmCHgAAAACYDEEPAAAAAEyG\noAcAAAAAJkPQAwAAAACTIegBAAAAgMkQ9AAAAADAZAh6AAAAAGAyBD0AAAAAMBmCHgAAAACYDEEP\nAAAAAEyGoAcAAAAAJkPQAwAAAACTIegBAAAAgMkQ9AAAAADAZAh6AAAAAGAyBD0AAAAAMBmCHgAA\nAACYDEEPAAAAAEyGoAcAAAAAJkPQAwAAAACTIegBAAAAgMkQ9AAAAADAZAh6AAAAAGAyBD0AAAAA\nMBmCHgAAAACYTKOCXmxsrEaNGqUxY8bo7rvvliQdP35cKSkpiouLU0pKik6cOGHsv3TpUjkcDsXH\nx2vz5s3G+J49ezRq1Cg5HA7Nnz9fXq9XklRZWam0tDQ5HA6NHTtWBw8ebM5zBAAAAIDrSqNX9JYv\nX661a9dq9erVkqTMzExFR0crOztb0dHRyszMlCTt27dPLpdLLpdLy5Yt05w5c1RdXS1Jmj17tubN\nm6fs7GwVFhZq06ZNkqSVK1cqICBAOTk5Gj9+vBYvXtzc5wkAAAAA142LvnQzNzdXTqdTkuR0OrVx\n40ZjPDExUb6+vurcubO6dOmi3bt3y+PxqKysTBEREbJYLHI6ncrNzZUk5eXlKSkpSZIUHx+v/Px8\nY7UPAAAAANA0tsbumJKSIqvVqvvuu0/33XefSkpKFBISIkkKDg5WSUmJJMntdis8PNyYZ7fb5Xa7\nZbPZFBoaaoyHhobK7XYbczp06HCuIZtN/v7+Ki0tVVBQUL39BAa2lM1mbcKpXh2Cg/2p0cQaPj6W\ni9relP6upc+DGtSgBjXMXONq6IEa1KAGNcygUUHvrbfekt1uV0lJiVJSUtStW7ca2y0WiyyWC/8w\n3txKSyuu6PGaQ3Cwv44cOUmNJtY4e7b+1V0fH0u92xvb37X2eVCDGtSghllrXA09UIMa1KDGteRC\nwbRRl27a7XZJUrt27eRwOLR79261a9dOHo9HkuTxeIzVN7vdruLiYmOu2+2W3W6vNV5cXGzUtdvt\nKioqkiRVVVXp5MmTCgwMbMo5AgAAAAD+T4NBr6KiQmVlZcZ/f/TRR+rRo4diY2OVlZUlScrKytKw\nYcMknXtCp8vlUmVlpQ4cOKDCwkL16dNHISEhat26tQoKCuT1emvNWbNmjSRpw4YNioqKuuIrhAAA\nAABgFg1eullSUqJnnnlGklRdXa2RI0cqJiZGvXv3VlpamlatWqWwsDBlZGRIknr06KERI0YoISFB\nVqtVM2fOlNV67l66WbNmafr06Tp16pRiYmIUExMjSUpOTtbUqVPlcDjUpk0bpaenX67zBQAAAADT\nazDode7cWe+++26t8cDAQC1fvrzOOampqUpNTa013rt3b61bt67WuJ+fn5YsWdKYfgEAAAAADbjo\n1ysAAAAAAK5OBD0AAAAAMBmCHgAAAACYDEEPAAAAAEyGoAcAAAAAJkPQAwAAAACTIegBAAAAgMkQ\n9AAAAADAZAh6AAAAAGAyBD0AAAAAMBmCHgAAAACYDEEPAAAAAEyGoAcAAAAAJkPQAwAAAACTIegB\nAAAAgMkQ9AAAAADAZAh6AAAAAGAyBD0AAAAAMBmCHgAAAACYDEEPAAAAAEyGoAcAAAAAJkPQAwAA\nAACTIegBAAAAgMkQ9AAAAADAZAh6AAAAAGAyBD0AAAAAMBmCHgAAAACYDEEPAAAAAEyGoAcAAAAA\nJkPQAwAAAACTIegBAAAAgMkQ9AAAAADAZAh6AAAAAGAyBD0AAAAAMBmCHgAAAACYDEEPAAAAAEym\n0UGvurpaTqdTTz31lCTp+PHjSklJUVxcnFJSUnTixAlj36VLl8rhcCg+Pl6bN282xvfs2aNRo0bJ\n4XBo/vz58nq9kqTKykqlpaXJ4XBo7NixOnjwYHOdHwAAAABcdxod9FasWKHu3bsbX2dmZio6OlrZ\n2dmKjo5WZmamJGnfvn1yuVxyuVxatmyZ5syZo+rqaknS7NmzNW/ePGVnZ6uwsFCbNm2SJK1cuVIB\nAQHKycnR+PHjtXjx4uY8RwAAAAC4rjQq6BUXF+uDDz5QcnKyMZabmyun0ylJcjqd2rhxozGemJgo\nX19fde7cWV26dNHu3bvl8XhUVlamiIgIWSwWOZ1O5ebmSpLy8vKUlJQkSYqPj1d+fr6x2gcAAAAA\naBpbY3ZauHChpk6dqvLycmOspKREISEhkqTg4GCVlJRIktxut8LDw4397Ha73G63bDabQkNDjfHQ\n0FC53W5jTocOHc41ZLPJ399fpaWlCgoKqrenwMCWstmsjT3Pq0ZwsD81mljDx8dyUdub0t+19HlQ\ngxrUoIaZa1wNPVCDGtSghhk0GPT++te/KigoSLfddpu2bt1a5z4Wi0UWy4V/GG9upaUVV/R4zSE4\n2F9HjpykRhNrnD1b/+quj4+l3u2N7e9a+zyoQQ1qUMOsNa6GHqhBDWpQ41pyoWDaYND75JNPlJeX\np02bNun06dMqKyvTj370I7Vr104ej0chISHyeDzG6pvdbldxcbEx3+12y2631xovLi6W3W435hQV\nFSk0NFRVVVU6efKkAgMDL/qEAQAAAOB61uA9es8995w2bdqkvLw8vfzyy4qKitLixYsVGxurrKws\nSVJWVpaGDRsmSYqNjZXL5VJlZaUOHDigwsJC9enTRyEhIWrdurUKCgrk9XprzVmzZo0kacOGDYqK\nirriK4QAAAAAYBaNukevLhMmTFBaWppWrVqlsLAwZWRkSJJ69OihESNGKCEhQVarVTNnzpTVeu5e\nulmzZmn69Ok6deqUYmJiFBMTI0lKTk7W1KlT5XA41KZNG6WnpzfDqQEAAADA9alJQW/gwIEaOHCg\nJCkwMFDLly+vc7/U1FSlpqbWGu/du7fWrVtXa9zPz09LlixpSisAAAAAgHo0+j16AAAAAIBrA0EP\nAAAAAEyGoAcAAAAAJkPQAwAAAACTIegBAAAAgMkQ9AAAAADAZAh6AAAAAGAyBD0AAAAAMBmCHgAA\nAACYDEEPAAAAAEyGoAcAAAAAJkPQAwAAAACTIegBAAAAgMkQ9AAAAADAZAh6AAAAAGAyBD0AAAAA\nMBmCHgAAAACYDEEPAAAAAEyGoAcAAAAAJkPQAwAAAACTIegBAAAAgMkQ9AAAAADAZAh6AAAAAGAy\nBD0AAAAAMBmCHgAAAACYDEEPAAAAAEyGoAcAAAAAJkPQAwAAAACTIegBAAAAgMkQ9AAAAADAZAh6\nAAAAAGAyBD0AAAAAMBmCHgAAAACYDEEPAAAAAEyGoAcAAAAAJkPQAwAAAACTaTDonT59WsnJyRo9\nerQSExO1ZMkSSdLx48eVkpKiuLg4paSk6MSJE8acpUuXyuFwKD4+Xps3bzbG9+zZo1GjRsnhcGj+\n/Pnyer2SpMrKSqWlpcnhcGjs2LE6ePBgc58nAAAAAFw3Ggx6vr6+Wr58ud59911lZWVp8+bNKigo\nUGZmpqKjo5Wdna3o6GhlZmZKkvbt2yeXyyWXy6Vly5Zpzpw5qq6uliTNnj1b8+bNU3Z2tgoLC7Vp\n0yZJ0sqVKxUQEKCcnByNHz9eixcvvoynDAAAAADm1mDQs1gsatWqlSSpqqpKVVVVslgsys3NldPp\nlCQ5nU5t3LhRkpSbm6vExET5+vqqc+fO6tKli3bv3i2Px6OysjJFRETIYrHI6XQqNzdXkpSXl6ek\npCRJUnx8vPLz843VPgAAAABA09gas1N1dbXuvvtu7d+/Xw8++KDCw8NVUlKikJAQSVJwcLBKSkok\nSW63W+Hh4cZcu90ut9stm82m0NBQYzw0NFRut9uY06FDh3MN2Wzy9/dXaWmpgoKC6u0pMLClbDZr\n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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f528b3e75c0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"Y = np.arange(len(l2_test[0]))\n", | |
"plt.figure(figsize=(15, 7))\n", | |
"plt.bar(Y, l2_test[0], align='center', alpha = 0.5, label = '1/ 58', color = 'red')\n", | |
"plt.bar(Y, l2_test[1], align='center', alpha = 0.5, label = '2 / 58', color = 'green')\n", | |
"plt.bar(Y, l2_test[-2], align='center', alpha = 0.5, label = '1 / 2', color = 'blue')\n", | |
"plt.bar(Y, l2_test[-1], align='center', alpha = 0.5, label = '1', color = 'black')\n", | |
"plt.xticks(Y, np.delete(np.arange(len(all_files_data)), bad_files))\n", | |
"plt.legend(loc = 'best')\n", | |
"plt.title('Hist with bad files. Team Valentin + Valeria + Kostya')\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 117, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"bad_files = [4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 18, 22, 24, 25, 27, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 118, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"div = np.array([np.sum(all_files_data[i]**2) for i in np.delete(np.arange(len(all_files_data)), bad_files)])\n", | |
"l2_test = np.delete(l2_loss_by_files, bad_files, axis = 1) / div\n", | |
"l2_test = np.sqrt(l2_test) * 100" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 119, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n", | |
" (prop.get_family(), self.defaultFamily[fontext]))\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\nzi63V1xxheLj49WhQwfP8oa+FmFhYfL399emTZvqPLdznfPHH3+sV155RS+99JK6d+8ut9ut/v37\nV3vu7GxTp0713J3Oz8/XqlWr9Pzzz9d7vtKZZydXrlyp22+/Xffee6+WLl0qq9WqkJCQGtOX9+/f\n75mePXz4cA0fPlwnTpzQH//4R82fP18vvvhirecVHh6uXr166f3339dbb72lyZMne5bNnTtXMTEx\neuKJJxQQEKDMzMwL+kmqAIyFaZYATGP16tU6dOiQfHx81L59e0ln/jL5wx2Ic02patu2ra666ir9\n+c9/9jwfFxUVpb/85S91lrmOHTuqtLRUR48ebVC+iIgItWnTRitXrtTp06dVUFCg999/3/P8W+/e\nvfXee+/pxIkT2r17d427HZ06dap3WtihQ4f08ssv6/Tp03rnnXf09ddfa9iwYSovL1d5ebmCg4Pl\n6+urDz/8sNrdhTFjxujvf/+7du3apRMnTujpp59u0DnVJyQkRIMHD9ZDDz2ksrIyVVVV6dtvv9XG\njRslnZneWVxcLEnq0KGDLBaL159yeO2112rnzp16++23PXd7CgsL9c0338jtduv48eMKCgpS69at\ntXXrVs/0y6ZyxRVXqE+fPrr//vs1YsQI/eQnP/EsO3bsmNq0aaP27dvr0KFDeu655+rcz4033qjn\nnnvO80zlkSNHGpy1U6dO2r9/f7M8E9ZYdrtdH3zwgf7+979Xm2LZmNciPDxckZGReuSRRzy/R0VF\nRZ5pwvU5duyYWrVqpeDgYJ0+fVpPPPFEvYXYG+3bt9fzzz+vb775RjNmzFBVVZXi4+O1c+dO/fOf\n/1RFRYVycnK0b98+xcXFyel06oMPPtCJEyfk5+cnf39/z/ugrtdy3LhxevbZZ7Vnzx7Fx8dXO9fA\nwEAFBAToP//5j/76178223kCMD7KHADTWLdunZKTkxUVFaVFixZp6dKlatOmjdq2baspU6boV7/6\nlQYMGFDnp9hFR0eroqJCERERks5MvTx27FidZa579+5KTk7WtddeqwEDBtQ7XdLPz0/Lly9Xfn6+\nBg0apIyMDD3yyCOeZ2N+eNbtmmuu0R/+8AeNHTu22vZTp071TMGq69MsIyIitHv3bg0aNEjLli3T\nk08+qaCgIAUGBmru3LlKS0tTdHS01qxZU+0vgMOGDdNtt92m2267TQkJCU36MfqPPPKITp8+raSk\nJEVHR2vatGk6cOCAJOmzzz7TpEmTFBUVpdTUVM2ZM0fh4eGSznwh/Pl8wmKHDh30/PPP629/+5vn\nEzSXLVumiooKWSwWZWRk6OGHH1ZUVJRWrlxZ650vb9ntdu3du7fGlME77rhDhw8fVkxMjG666aZz\nfk/hddddp5tvvlm//e1v1b9/f9nt9nNO7zvb0KFDdfnll+uaa665oN+FWJtu3brpyiuvVGVlZbUs\njX0tHnvsMR09elSJiYkaOHCgpk+frpKSkgZlGDFihAYMGKBrr71WI0eOVFBQkGdaYnMJCgrSSy+9\npM8//1xz5sxRx44d9dxzz2n58uWKiYnRq6++qhUrVqhdu3aqrKxUZmamBg8erJiYGH322Wd64IEH\nJNX9WiYmJurbb79VYmKi/Pz8POOzZ89WVlaWoqKi9OCDD9b5YUkALg0Wd11zEAAAANAiqqqqNHz4\ncD3++ONN8sFBAC5O3JkDAAAwmDVr1igwMJAiB+Cc+AAUAAAAA7nhhhu0d+9ePfrooy0dBYDBMc0S\nAAAAAEyIaZYAAAAAYEKGn2Z54EDDPhLcbIKC/HX4cMO//PVCM3o+yfgZjZ5PMn5Go+eTjJ/R6Pkk\n42c0ej7J+BmNnk8yfkaj55OMn9Ho+STjZyRfy7HZ2tU6zp25FuLra23pCOdk9HyS8TMaPZ9k/IxG\nzycZP6PR80nGz2j0fJLxMxo9n2T8jEbPJxk/o9HzScbPSD7jocwBAAAAgAlR5gAAAADAhChzAAAA\nAGBClDkAAAAAMCHKHAAAAACYEGUOAAAAAEyIMgcAAAAAJkSZAwAAAAAT8m3pAAAAAABQG/9HFjd8\n5YDW8j926pyrHJ8xu97dLF6cofXrP1JQUJBeeeWv1Zbt2PGZHI7V+sMf5lYbj4sbqG7dfi5JCg0N\n1cMPL5Ukbd68Uc8++4Sqqtxq27at5syZr8svD2/4OdWDMgcAAAAA/5OUNFb/7//9UgsXzquxrKBg\nvWJiYmuMt27dWi+99FqN8UcffUgPPfSYuna9QtnZb2rVquc1Z878JsvKNEsAAAAA+J/IyP5q3759\nrcs2b96oAQNiGrwvi0U6duyYJOnYsTJ16mRrkow/4M4cAAAAANSjtLRUvr6+CgwMrLGsvLxcd9xx\ns3x9W+mWW25XXNxwSdLMmQ/o/vt/p9atWysgIEArVrzYpJkocwAAAABQj40bN2jgwEG1LsvK+ods\nthDt3fudfve7VHXv/nNddtnleuON1/THPz6hPn2u0muvvaynnlqqmTMfaLJMTLMEAAAAgHoUFHxc\n6/NykmSzhUiSLrvsckVFXa2vvvpChw8f1q5dX6lPn6skSfHxo7Rjx/YmzUSZAwAAAIBzcLvd2rVr\nl3r06FVj2ffff6/y8nJJZ6ZifvbZp+ratZvatWunY8fK9O23uyVJmzdvUJcuXZs0F9MsAQAAABhS\nQ75K4AcBtnY6fuCo18dMT5+twsItKi0t1fjxSbrzzsn6+c97qmfPXrJYLDXW3737G/3xj4tlsfjI\n7a7SLbfcpiuu6CZJmjFjrubOnSGLxUft2rXTrFk1PyHTG5Q5AACAZtao78qqTQO+P+tcGvMXYqPi\nGuJCycio+bv20ksr65xi2bdvP7388hu1Lhs2bISGDRvRpPnORpkDAABoZov81nm1vZ98Ve5Xcd7b\nT/fq6MbANURLuv32/2vpCLWizAEAADSzdfl3eLW91eqjysqq895+eppXhzcEriFQEx+AAgAAAAAm\nRJkDAAAAABOizAEAAACACfHMHAAAQDPbvXu1V9v7+FhUVeX2Yg+TvDq+EXANgZoocwAAAAAM6ZGN\nDf9KioCA1jpWz9dPzBh47q+YcDqLtXBhug4fPiTJouuvH68bbvhVresePHhQixala+nSZ6qNT5w4\nVv7+/vLxscpqter551+RJP3nP1/qj39covLyclmtVt177x905ZVXNfj8akOZAwAAAABJVquvpk6d\nrl69fqHjx4/pjjtuVXR0jOdLwM9WULBeAwfW/t1zTz65Qj/5yU+qjT377JNKSblLsbGD9cknH+nZ\nZ5/U009nepWXZ+YAAAAAQFKnTp3Uq9cvJEn+/gHq2rWrDh501bpuQcEnGjTomgbv22Kx6PjxY5Kk\nsrIydepk8zovd+YAAAAA4Ef279+nr776stapkJWVlfr229213rGzWCxKS/uNfHx8NG7cBI0bN0GS\nNG3avfr976fqmWeeUFVVlZYvf8HrjJQ5AAAAADjL8ePHNWfODP3ud/cqICCwxvKdO3foyiv71Lrt\ns8+ulM0WosOHDykt7R516dJVkZH9lZOTpWnTfq/hw0cqL+89LVmyQE888axXOZlmCQAAAAD/U1FR\noblzZ2jUqDEaNiy+1nU2bFivmJjap1jabCGSpKCgYMXFDdfOnf+WJL3zzhrP/uLjr9Xnn//b66yU\n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\n+bS9pBYY2oicO3cOq1atQklJibLLnv6Nc+fOIS0tDTNnzlSdMkJWVlb8pNGJEydw9epVxUVD7p7f\nnkK9a+sAAATPSURBVJ6e+C/OU6dORU9Pj+K6ITqvMUBi365du5CTk4MvvvgCb731luK6IXc36jjP\nd/dVVlaitrYWOTk5qKmpgdfrVZ03ok+3Wdb9OLd161Zs2LAB48bp+6vuvRo/++wzLFy40OaqO6z6\ndFprzBpPnTqF9PR0zJkzR2GZffR9hhONor+/H+vWrUNlZeWIs0S6GD9+PI4ePYrW1lYEg0H8+OOP\nqpMSRCIR+P1+5Ofnq06xFIvFcP36dXzyySfYuHEjysvLIZq+m8qxY8e03Bhv2bIFhw4dQmFhIfr7\n++Oviqg02vw6HA4tzqTqvsaY9a1fvx6tra1wu934+OOPFRcmNuo2z//sO3z4MCoqKtDa2oqKigps\n2rRJWZtZn26zrPNx7uuvv8aUKVPwxBNPqE6xdK/Guro6jB8/HitXrrS5bMhofbqsNWaNt27dQn19\nvfJNpp24mbOR0+kc8XJ5OByG0+lUWJScBgcHsW7dOrjdbuTl5anOGdXDDz+MZ555Bm1tbapTEgQC\nAcydOxePPPKI6hRLTqcTubm5cDgcePLJJzFu3Dhcu3ZNdVaCaDSKkydPYvny5apTEsyaNQsNDQ1o\nbGyEYRjIyMhQ2mM2v2lpaeju7gYAdHd3Y8qUKSoTtV9j7tXndruVXoIHmDfqNM9mfZ9//nn842XL\nlil95dCsT7dZHqbjce7bb7+F3++Hy+WC1+vFmTNn8M4776jOGmG0xsbGRrS0tGD79u3KTm79m8dQ\n9Vpj1rhx40Z0dnbGb0rW1dWFwsJC/Pbbb8o67zdu5mw0b948hEIhXL58GZFIBD6fDy6XS3VWUhER\nbNq0CZmZmSgtLVWdY6q3tzd+96m//voLp0+f1uoa/WE+nw+GYajOGNWSJUtw9uxZAMClS5cwODiI\nyZMnK65KNPwzvvsyal0MX7J4+/Zt1NXV4ZVXXlHWYjW/LpcLTU1NAICmpiYsXrxYVaL2a4xVXygU\nin/c3NysdM2xatRlnq360tPT0dHRAQA4c+aMskumrfp0mmXdj3Nvv/02AoEA/H4/du7ciWeffRbb\nt29XnTWCVWMgEMD+/ftRV1eHBx98ULs+ndYas8a9e/eivb0dfr8ffr8f06ZNQ2NjI6ZOnaqs835L\nUR3w/yQlJQVVVVVYs2YNYrEYioqKkJWVpTprBK/Xi46ODly7dg0LFy7Em2++iVWrVqnOivvmm29w\n9OhRzJ49O34LeK/Xi5ycHMVld3R3d+Pdd99FLBaDiCA/Px8vvvii6qwRbt68idOnT2Pz5s2qU+LM\nnntFRUWorKzEihUrMGHCBHzwwQdKL8Gzmo8vv/xSi42xWd/Nmzdx6NAhAEBubi6KioqU9VnNb1lZ\nGcrLy3HkyBE8+uij2L17t3aNkUgE1dXV6O3txdq1a/H444/jww8/1KbvyJEjuHTpEhwOB6ZPn473\n33/f9rZ7Neoyz1Z91dXV2Lp1K6LRKB544AFl66NVXygU0maWrY5zJ0+e1GJOrOjeBwDV1dWIRCLx\njfz8+fO1Olbv2LFDm7WGhjhE1z9AISIiIiIiIku8zJKIiIiIiCgJcTNHRERERESUhLiZIyIiIiIi\nSkLczBERERERESUhbuaIiIiIiIiSEDdzRERERERESYibOSIiIiIioiT0N+6NdOYLQmD4AAAAAElF\nTkSuQmCC\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f528b3768d0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"Y = np.arange(len(l2_test[0]))\n", | |
"plt.figure(figsize=(15, 7))\n", | |
"plt.bar(Y, l2_test[0], align='center', alpha = 0.5, label = '1/ 58', color = 'red')\n", | |
"plt.bar(Y, l2_test[1], align='center', alpha = 0.5, label = '2 / 58', color = 'green')\n", | |
"plt.bar(Y, l2_test[-2], align='center', alpha = 0.5, label = '1 / 2', color = 'blue')\n", | |
"plt.bar(Y, l2_test[-1], align='center', alpha = 0.5, label = '1', color = 'black')\n", | |
"plt.xticks(Y, np.delete(np.arange(len(all_files_data)), bad_files))\n", | |
"plt.legend(loc = 'best')\n", | |
"plt.title('Hist without bad files. Team Valentin + Valeria + Kostya')\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 120, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([ 1380.85590896, 1380.44944957, 1379.7320457 , 1376.73255312,\n", | |
" 1361.73651562])" | |
] | |
}, | |
"execution_count": 120, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"l2_test = np.mean(l2_test, axis = 1)\n", | |
"l2_test" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 121, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans\n", | |
" (prop.get_family(), self.defaultFamily[fontext]))\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\nz3CBa2BQRz5q0cf1Z2Q2GZqTHKOUhEgZhjEmzz9ed83hiPjU+zx2GWpOTo6ioqIuuu1CUJSknp6e\n4f/h9+7dq7S0NKWnp0uSbDabzGazrFarFi5cKEkKDg7WnDlz1NDQ4KmRAQAAAExQFrNJWbMcQxUb\nZpOOnGjRu0cndsWG1z/g5rnnntOOHTsUERGhbdu2SZKqqqpkGIYeeughtba2Ki8vT4888shF39fZ\n2aldu3bpm9/85iWft7a2VnfeeaciIiK0bt06LViw4LKz2GxhsljM135Ql/FZaR0YS+wavIVdg7ew\na/AG9gyf5HBEaFZyrN4vO61Tzd3aV9msG+Y4NTU+ckye25947DJU6bMvD33ppZfU19enNWvW6Le/\n/a3+8Ic/qKCgQFarVStXrtS6deu0aNEiSZLL5dKqVau0ePFirVy5csRz9ff3q7u7WzabTWVlZXrs\nscdUWFh40ZnMS+EyVAQSdg3ewq7BW9g1eAN7hk/jdrtVXX9GZVWtGhgY1JS4CM2bYVeQ5eouzhyv\nu+aTy1AvJz8/X2+++aYkKT4+Xjk5OYqJiZHValVubq6OHj06/Nj/+7//0/Tp0y8ZFKWhS1RtNpsk\nKSMjQ1OnTlVVVZXHjwEAAABAYLpQsbFkfqKiI0JU03hGuw7Wqbmjx9ejeY1Xw2J1dfXw10VFRUpJ\nSZEkLV68WJWVlerp6ZHL5dL+/fs1c+ZMSUOXrXZ1dekHP/jBpz5va2urBgaGijRrampUXV2tKVOm\neO5AAAAAAEwIEWHByp2XqLQp0erpcw1VbFS3anDQYxdojhsee8/ihg0btG/fPrW1tSk3N1erV6/W\nnj17ht+fmJSUpC1btkiSoqKitHLlSq1YsUKGYSg3N1dLlixRfX29fv3rXyslJUV33323JOn+++/X\nV77yFRUVFamsrExr167V/v379cILL8hischkMmnLli2Kjo721KEBAAAAmEBMJkOzp8fIGROmkoom\nHatpV1Nbj7LTHIoMC9yKDY++Z3G84z2LCCTsGryFXYO3sGvwBvYMV+qca1BlH7Xo44ahio3rku1K\nToi4bMXGeN21cfmeRQAAAADwN0EWk7JSHbph9lDFRumJZr13tCEgKzYIiwAAAABwhRJjJ2lJVpKc\ntjA1tJ1V8cE6nWru9vVYY4qwCAAAAABXwRpi0cLrnJo3I1augUHt+7BBByqbdM416OvRxoTHPuAG\n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\nQmCC\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f528b78bd30>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"x = np.array(enc_dims) / 58.\n", | |
"plt.figure(figsize=(15, 7))\n", | |
"\n", | |
"y = np.array(l2_test)\n", | |
"plt.plot(x, y, marker='o', alpha = 0.5, label = \"l2ratio_test\")\n", | |
"\n", | |
"plt.title(\"l2ratio_test vs Alpha\")\n", | |
"plt.xlabel(\"Alpha\")\n", | |
"plt.ylabel(\"l2ratio\")\n", | |
"plt.legend(loc = 'best')\n", | |
"plt.show()" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment