Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Documents/OSS/PYNQ 祭り_20170304/PYNQ ではじめる機械学習.ipynb
{
"cells": [
{
"metadata": {
"slideshow": {
"slide_type": "slide"
},
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "<p style=\"font-size:50px;text-align:center;font-weight:bold;padding:10px;\">PYNQ ではじめる機械学習</p>\n\n![](http://gauc.no-ip.org/~hi_saito/img/pynq.png)"
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "# Self Introduction\n\n斉藤 (@hi_saito) といいます。\n\n* [「日本 GNU AWK ユーザー会」](http://gauc.no-ip.org/awk-users-jp/) 会長\n* 翔泳社から[『「シェル芸」に効く!AWK処方箋』](http://www.shoeisha.co.jp/book/detail/9784798150918) を執筆\n* [「MPS (Morning Priject Samurai)」](https://mpsamurai.org/) で Deep Learning を学習中\n* [「がじぇっとるねさす」](http://gadget.renesas.com/) をお手伝い中\n\n今日は、私自身 FPGA は素人なので「PYNQ で何ができるのか?」、「FPGA ってどうやって使うのか?」、「どうやれば高速化できるのか?」などを聞きにきました。"
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "# Position of PYNQ\n\n## Before PYNQ\n\nPYNQ 以前は PC, Arduino, Raspberry Pi などのガジェットがありましたが、機械学習を行うにはそれぞれ利点と欠点があり、自分に最適なものがない状態でした。\n\n* **PC**\n * 高速動作に動作させることができ、機械学習では GPU も利用可能\n * 電源容量、I/O、大きさに難あり\n* **Arduino**\n * 種々の I/O と豊富な対応センサー群\n * C 言語で機械学習を行うのは大変\n* **Raspberry Pi**\n * 種々の I/O と豊富な対応センサー群\n * I/O を含めた速度が遅い\n\n![](http://gauc.no-ip.org/~hi_saito/img/blank_zone.png)\n\n<p style=\"text-align:center;font-weight:bold\">Figure: Before PYNQ</p>\n\n## After PYNQ\n\nPYNQ は手軽さと FPGA による高速化の可能性などパーソナルユースでの機械学習端末として最適と思われる。\n\n![](http://gauc.no-ip.org/~hi_saito/img/after_pynq.png)\n\n<p style=\"text-align:center;font-weight:bold\">Figure: After PYNQ</p>\n\nとはいえ「やっぱり FPGA 分からん」状態なので、色々と教えてもらいにきました。"
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "# What's Machine Learning?\n\n機械学習はネコの絵を見せてネコと答える技術ではなく、ネコの絵のベクトルを与えるとネコである確率を返す技術です。\n\n1. ネコの絵をセンサーで読み取る\n1. センサー情報を電気信号に変換する\n1. 電気信号をベクトルに変換する\n1. 機械学習の結果としてネコである確率を得る\n1. 確率を電気信号に変換する\n1. 電気信号を人に分かる絵にする\n\n![](http://gauc.no-ip.org/~hi_saito/img/cat.png)\n\n<p style=\"text-align:center;font-weight:bold\">Figure: Machine Learning</p>"
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "# Models in This Demos\n\nここでは MPS Yokohama で学んだプリミティブな Deep Learning として Multi Layer Perceptron モデルを使います。\n\n![](http://gauc.no-ip.org/~hi_saito/img/neuron.png)\n\n<p style=\"text-align:center;font-weight:bold\">Figure: After PYNQ</p>\n\n## Neuron Model\n\nニューロンのモデルは入力ベクトル $\\mathbf{x}$ に対して、重み行列 $W$ とバイアスベクトル $\\mathbf{b}$ を用いて以下のように書き表されるモデルを用いています。\n\n$$\ns = W \\cdot \\mathbf{x} + \\mathbf{b}\n$$\n\n## Activation Function\n\n活性化関数はシグモイド関数を用いて、ニューロンの状態 $\\mathbf{z}$ を以下のように書き表します。\n\n$$\nf_{A}(s) = \\frac{1}{1 + \\exp(-s)}\n$$\n\n## Evaluation Function\n\n評価関数は二乗誤差を用いて以下のように書き表します。\n\n$$\nf_{E}(y, t) = \\frac{1}{2}(y - t)^{2}\n$$"
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "# Demos\n\n今回のデモでは加速度センサーを用いて、傾きを学習させ、識別します。\n\n1. 傾きを加速度センサーで読み取る\n1. 加速度センサー情報を電気信号に変換する\n1. 電気信号をベクトルに変換する\n1. 機械学習の結果として傾斜している確率を得る\n1. 確率を電気信号に変換する\n1. 電気信号を人に分かるように LED で知らせる\n\n学習は TensorFlow や Chainer でやらせても良いのですが、せっかくなので PYNQ で学習から識別までを行います。"
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "# Code"
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "## Download Overlay\n\nOveray をダウンロードします。"
},
{
"metadata": {
"collapsed": true,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T00:01:17.424348",
"start_time": "1970-01-01T00:01:12.470925"
}
},
"cell_type": "code",
"source": "%matplotlib inline\n\nimport numpy as np\nfrom time import sleep\nfrom matplotlib import pyplot as plt\n\nfrom pynq import Overlay\nOverlay(\"base.bit\").download()\n\nfrom pynq.board import LED\nfrom pynq.board import RGBLED\nfrom pynq.board import Button",
"execution_count": 1,
"outputs": []
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "## Enable Arduino I/F\n\nArduino I/F の ADC を用いて加速度センサーの値を読み込む準備をします。\nここでは `A0` 端子から読み込みます。"
},
{
"metadata": {
"collapsed": true,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T02:48:13.360187",
"start_time": "1970-01-01T02:48:13.280798"
}
},
"cell_type": "code",
"source": "from pynq.iop import Arduino_Analog\nfrom pynq.iop import ARDUINO\nfrom pynq.iop import ARDUINO_GROVE_A1\n\nanalog1 = Arduino_Analog(ARDUINO, ARDUINO_GROVE_A1)",
"execution_count": 24,
"outputs": []
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "## Read ADC and Check Max. and Min.\n\nADC から読み込み、最大値と最小値を確認します。\n\n* 10 秒くらいセンサーを揺らします。"
},
{
"metadata": {
"collapsed": false,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T02:48:59.058650",
"start_time": "1970-01-01T02:48:46.721995"
}
},
"cell_type": "code",
"source": "interval = 0.01\nnum_samples = 1000\ntest_samples = []\n\nfor i in range(num_samples):\n val = analog1.read_raw()[0]\n sleep(interval)\n test_samples.append(val)\n\nmin_samples = min(test_samples)\nmax_samples = max(test_samples)\navg_samples = int((min_samples + max_samples) / 2)\n\nrgbleds = [RGBLED(index) for index in [4,5]]\nfor rgbled in rgbleds:\n rgbled.write(1)\n sleep(1)\n rgbled.off()",
"execution_count": 25,
"outputs": []
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "## Confirm Samples\n\n取得したサンプルを確認します。"
},
{
"metadata": {
"collapsed": false,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T02:49:09.233055",
"start_time": "1970-01-01T02:49:07.327222"
}
},
"cell_type": "code",
"source": "sample_x = np.arange(0, 1000)\nsample_y = test_samples\n\nplt.plot(sample_x, sample_y)\nplt.show()",
"execution_count": 26,
"outputs": [
{
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x2ec3b670>",
"image/png": "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\n"
},
"metadata": {},
"output_type": "display_data"
}
]
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "## Generate Train Data and Truth Data\n\n学習用のデータと正解値データを作成します。\n\nコードを見れば分かりますが、ここではサンプルの平均より小さいか大きいかで分けるだけです。"
},
{
"metadata": {
"collapsed": false,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T02:49:45.614053",
"start_time": "1970-01-01T02:49:45.542386"
}
},
"cell_type": "code",
"source": "num_train_data = 100\ntrain_datas = []\ntruth_datas = []\n\nfor i in range(num_train_data):\n train_data = np.random.randint(min_samples, max_samples, (1, 3))\n if train_data[0][0] < avg_samples:\n truth_data = [0]\n else:\n truth_data = [1]\n train_datas.append(train_data[0])\n truth_datas.append(truth_data)\n\ntrain_datas = train_datas / np.max(train_datas)",
"execution_count": 27,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "## Set Number of Neuron\n\nニューロンの数を決定します。"
},
{
"metadata": {
"collapsed": false,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T02:49:50.534415",
"start_time": "1970-01-01T02:49:50.502217"
}
},
"cell_type": "code",
"source": "base_num_neuron = int(np.max(truth_datas) + 1)\n\nI = train_datas.shape[1]\nJ = base_num_neuron * 2\nK = base_num_neuron",
"execution_count": 28,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "## Set Learning Rate\n\n学習率を設定します。"
},
{
"metadata": {
"collapsed": false,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T02:49:58.734508",
"start_time": "1970-01-01T02:49:58.717959"
}
},
"cell_type": "code",
"source": "epsilon = 0.10",
"execution_count": 29,
"outputs": []
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "## Set Number of Learning\n\n学習回数を設定します。"
},
{
"metadata": {
"collapsed": true,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T02:50:07.745475",
"start_time": "1970-01-01T02:50:07.725666"
}
},
"cell_type": "code",
"source": "num_repeat = 100",
"execution_count": 30,
"outputs": []
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "## Set Number of Prediction Samples\n\n認識率を調べるサンプル数を設定します。"
},
{
"metadata": {
"collapsed": true,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T02:50:16.005318",
"start_time": "1970-01-01T02:50:15.984586"
}
},
"cell_type": "code",
"source": "num_data = train_datas.shape[0]\nnum_test = int(num_data / 5)",
"execution_count": 31,
"outputs": []
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "## Define Neuron Class\n\nニューロンのクラスを決定します。"
},
{
"metadata": {
"collapsed": false,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T02:50:37.504856",
"start_time": "1970-01-01T02:50:37.389048"
}
},
"cell_type": "code",
"source": "# Neuron Layer Class\nclass Layer:\n # Instance\n def __init__(self, W, b, f):\n self._W = W\n self._b = b\n self._f = f\n\n # Method\n def propagate_forward(self, x):\n return self._f(self._W @ x + self._b)\n\n# Sigmoid Function\ndef Sigmoid(s):\n return 1.0 / (1.0 + np.exp(-s))\n\n# Sigmoid Function Derivative\ndef d_Sigmoid(y):\n return np.asarray(y) * (1 - np.asarray(y))\n\n# Squared Error\ndef SE(t, y):\n return ((t - y).T @ (t - y)).flatten()[0] / 2.0\n\n# Squared Error Derivative\ndef d_SE(t, y):\n return -(t - y)",
"execution_count": 32,
"outputs": []
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "## Set Initial Weight and Bias\n\n重み行列 $W$ とバイアスベクトル $\\mathbf{b}$ の初期値を設定します。\nここでは正規分布の乱数にしています。"
},
{
"metadata": {
"collapsed": true,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T02:50:45.196008",
"start_time": "1970-01-01T02:50:45.149112"
}
},
"cell_type": "code",
"source": "# Initialize Layer 1\nW1 = np.random.randn(J, I)\nb1 = np.random.randn(J, 1)\nlayer1 = Layer(W1, b1, Sigmoid)\n\n# Initialize Layer 2\nW2 = np.random.randn(K, J)\nb2 = np.random.randn(K, 1)\nlayer2 = Layer(W2, b2, Sigmoid)",
"execution_count": 33,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "## Set Logging Data\n\nログを取っておきたいデータを初期化します。"
},
{
"metadata": {
"collapsed": true,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T02:50:50.930903",
"start_time": "1970-01-01T02:50:50.880450"
}
},
"cell_type": "code",
"source": "# Initialize History\ny1_history = []\ny2_history = []\nW1_history = []\nW2_history = []\nb1_history = []\nb2_history = []\nSE_history = []\nCPR_history = []",
"execution_count": 34,
"outputs": []
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "## Learning\n\n実際に学習させます。"
},
{
"metadata": {
"collapsed": false,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T02:51:29.307241",
"start_time": "1970-01-01T02:50:58.541984"
}
},
"cell_type": "code",
"source": "for nr in range(num_repeat):\n for nd in range(num_data):\n # Truth Data\n t = np.zeros(shape=(K, 1))\n t[int(truth_datas[nd][0]), 0] = 1.0\n\n #print(t)\n #---------------------------------------------------------\n # Forward Propagation\n\n # Forward Propagation\n x = np.matrix(train_datas[nd]).T\n y1 = layer1.propagate_forward(x)\n y2 = layer2.propagate_forward(y1)\n #print(x)\n\n #---------------------------------------------------------\n # Back Propagation\n\n # Delta\n #print(y1, y2)\n delta2 = np.asarray(d_SE(t, y2)) * np.asarray(d_Sigmoid(y2))\n delta1 = np.asarray(layer2._W.T @ delta2) * np.asarray(d_Sigmoid(y1))\n\n #---------------------------------------------------------\n # Learning by Back Propagation\n\n # Layer 2 Learning\n Delta_W2 = delta2 @ y1.T\n layer2._W -= epsilon * Delta_W2\n layer2._b -= epsilon * delta2\n\n # Layer 1 Learning\n Delta_W1 = delta1 @ x.T\n layer1._W -= epsilon * Delta_W1\n layer1._b -= epsilon * delta1\n\n #---------------------------------------------------------\n # Store\n\n # Store W1 and W2 History\n W1_history.append(np.linalg.norm(layer1._W))\n W2_history.append(np.linalg.norm(layer2._W))\n\n # Store b1 and b2 History\n b1_history.append(np.linalg.norm(layer1._b))\n b2_history.append(np.linalg.norm(layer2._b))\n\n # Calculate and Store Squared Error\n SE_history.append(np.linalg.norm(SE(t, y2)))\n\n #-------------------------------------------------------------\n # Prediction\n\n # Forward Propagation to Evaluate Prediction Rate\n num_prediction = 0\n num_correct_prediction = 0\n\n x_history = []\n t_history = []\n py2_history = []\n\n for _i in np.random.choice(np.arange(0, train_datas.shape[0]), num_test):\n # Forward Propagation for Prediction\n _x = np.matrix(train_datas[_i]).T\n _y1 = layer1.propagate_forward(_x)\n _y2 = layer2.propagate_forward(_y1)\n\n x_history.append(np.linalg.norm(_x))\n t_history.append(truth_datas[_i])\n py2_history.append(np.argmax(_y2))\n\n num_prediction += 1\n if int(truth_datas[_i][0]) == np.argmax(_y2):\n num_correct_prediction += 1\n #print(num_correct_prediction, num_prediction, num_correct_prediction / num_prediction)\n\n CPR_history.append(num_correct_prediction / num_prediction)\n\nrgbleds = [RGBLED(index) for index in [4,5]]\nfor rgbled in rgbleds:\n rgbled.write(1)\n sleep(1)\n rgbled.off()",
"execution_count": 35,
"outputs": []
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "## Show History\n\n### Show History of $W_{1}$\n\n$W_{1}$ の遷移をグラフ化します。"
},
{
"metadata": {
"collapsed": false,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T02:51:43.725167",
"start_time": "1970-01-01T02:51:42.126394"
}
},
"cell_type": "code",
"source": "# Draw Norm of W1 History\nplt.figure()\nplt.title('W1 history')\nplt.plot(range(len(W1_history)), W1_history)\nplt.show()",
"execution_count": 36,
"outputs": [
{
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x2ebb8cd0>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAEICAYAAAB/Dx7IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XeYlNX5xvHvw8LSO4i0ZZciCEhderErIpagUewaDZpf\nokbTQI0ae2yxRSNqjEZj7LEglljoARYVQQSlSmfpddky5/fHDLq7M7M7y87MO+X+XBcXM895Z/Y5\nK9777pm3mHMOERFJHjW8bkBERKpGwS0ikmQU3CIiSUbBLSKSZBTcIiJJRsEtIpJkFNySUszsVjN7\noYLxr83smDi2JBJ1Cm6JKzObaGZTytW+C1MbF3h8u5ktNLNiM7u1Ol/fOdfDOfdZJT1mm5kzs5rV\n+VoisaLglnibBgw1swwAM2sN1AL6lqt1DmwLsAz4PTA5/u1WnQJfYk3BLfE2D39Q9wk8HwF8Ciwt\nV1vunFsP4Jx7zjk3Bdgd4dfINLPnzWx3YGkk9+CAma0ysxMCjweaWZ6Z7TKzTWb2YGCzgz8wdpjZ\nHjMbYmY1zOwmM1ttZpsD79848D4H99AvN7PvgU/MbLKZXV26KTP7ysx+UoXvlUhICm6JK+dcITAH\nGBkojQSmAzPK1aYFvzpipwP/BpoAbwOPhdnuYeBh51wjoBPwSqmvD9DEOdfAOTcbuDTw51igI9Ag\nxPseDRwJnAw8B1x4cMDMegNtSZLfGiSxKbjFC1P5MRxH4A/u6eVqU6vx/jOcc+8550qAfwK9w2xX\nBHQ2sxbOuT3Ouf9V8J4XAA8651Y45/YAE4Fx5ZZFbnXO7XXO7cf/A+MIM+sSGLsIeDnwg0ukWhTc\n4oVpwHAzawa0dM59B8zCv/bdDOhJ9fa4N5Z6vA+oE2bd+XLgCGCJmc0zszEVvGcbYHWp56uBmkCr\nUrU1Bx845wrw78FfaGY1gPPw/xARqTZ9iCJemA00Bn4OzARwzu0ys/WB2nrn3MpYNxH4gXFeIFjH\nAq+ZWXMg1CUz1wMdSj3PAoqBTUC7g29Z7jXPAc/jXwbaF1hyEak27XFL3AWWEvKA6/EvkRw0I1Ar\ns7dtZrXMrA7+f681zazOwSNQqsPMLjSzls45H7AjUPYB+YG/O5ba/CXgOjPLMbMGwF34lz6Kw72/\nc24W/jB/AO1tSxQpuMUrU4HD8If1QdMDtfLLJE8B+/EvN9wYeHxRFHoYBXxtZnvwf1A5zjm33zm3\nD7gTmGlmO8xsMPB3/OE7DVgJFABXh3nf0p4HjgLCnhQkUlWmGymIxI6ZXQRc6Zwb7nUvkjq0xy0S\nI2ZWD/glMMnrXiS1KLhFYsDMTsa/Vr4J+JfH7UiK0VKJiEiS0R63iEiSieg4bjO7Fv/xtQY85Zx7\nqKLtW7Ro4bKzs6vfnYhImpg/f/4W51zLSLatNLjNrCf+0B4IFALvm9m7zrll4V6TnZ1NXl5epP2K\niKQ9M1td+VZ+kSyVHAnMcc7tC5xsMBX/WWYiIuKBSIJ7ETDCzJoHDm8aDbQvv5GZjQ9cIjMvPz8/\n2n2KiEhApcHtnPsG+DPwIfA+8CVQEmK7Sc65XOdcbsuWES3TiIjIIYjoqBLn3DPOuf7OuZHAduDb\n2LYlIiLhRHpUyWHOuc1mloV/fXtwbNsSEZFwIr2s6+uBy10WAb90zu2o7AUiIhIbEQW3c25ErBsR\nEZHI6MxJEZEoyFu1jcXrd8Xla+kOOCIi1bB2+z6ufukLvvjev4K86p5TY/41FdwiIofor58u474P\nlpap7Ssspl5mbKNVwS0iUkWzlm/h/KfmBNX/9fNBMQ9tUHCLiERsf2EJZ/51Jks37Q453rtdk7j0\noeAWEYnAS3O/Z+IbCyvcpn7t+ESqgltEJAyfz7FpdwFD7v4k7Da1MozxIzsyskv8LvWh4BYRCeP+\nD5fy+GfLK9zmuztHx6mbHym4RURKKSz2sXb7Po57YGrYbU7s3orrTjiClg1rx7GzHym4RUQCfD7H\nhDe+4o3P11W43VMX58apo9AU3CKS9gqKSli5ZS+nPDw97DY3jO7GhYM7kJnh/QnnCm4RSWtFJT6u\nemE+ny0NfwOY1o3rMH5kpzh2VTEFt4ikpX2FxazI38uYR2eE3ebvl+ZybNfDMLM4dlY5BbeIpB3n\nHJf8fS7zVm0Pu81pvdtwXLdWcewqcgpuEUkbBUUlLNu8p8K97Hd+NZyj2jWOY1dVp+AWkbRx/lP/\n4/Pvw98H5sqjOyZ8aIOCW0RSXHGJj9Xb9nF8Bcdlf/DrkXQ9vGEcu6oeBbeIpLSLnpnL7BVbw47/\nYVS3pAptUHCLSIpat2M/w+4Jf42RydcMp0ebxF8WCUXBLSIpZ+IbX/HS3DVhx285rXvShjYouEUk\nhWzfW0jf2z8KO/7iFYMY1rlFHDuKDQW3iKSEp6at4M73vgk7ftOpR6ZEaIOCW0SS3N4Dxdz81te8\n/vnakOP3jD2KcQOz4txVbCm4RSRpvb9oI1e9MD/s+G9OPCLlQhsU3CKShIpLfMxduS1kaNfPzGBs\nv3b8cUx3amUk1jVGokXBLSJJZUX+Hk59ZAb7i0pCjl88NJs/jOoW567iS8EtIkmjsNgX8s40ZpDT\noj7PXDKA9k3retBZfEUU3GY2EbgI8AELgcuccwWxbExEpLT7P1jKY58uCzl22dAcbj6te5w78k6l\nwW1m2cB4oLtzbr+ZvQKMA/4R085ERAKyJ0wOO/a7k7vys2E5cezGe5Hsce8CioC6ZlYE1APWx7Qr\nERFg/uptnPXE7JBjvzimU8qvZYdT6c3TnHPbgPuB74ENwE7n3IfltzOz8WaWZ2Z5+fnhbwEkIhKJ\nf8xcGTa0Aa4Ynl572aVFslTSCbgOyAF2AK+a2YXOuRdKb+ecmwRMAsjNzXUx6FVE0sCOfYXMXr6V\nW99ZHDR23QlHcP6gLFo2rO1BZ4kjkqWSXGCWcy4fwMzeAIYCL1T4KhGRKlqzbR8j7v007PiY3q3T\nPrQhsuBeCtxsZvWA/cDxQF5MuxKRtOPzuZChfepRrTn6iJacM6C9B10lpkqD2zn3pZk9jz+sfcAX\nBJZERESi4bJn5/Lp0tCfjV0wOIuhnVLj4lDREtFx3M65PwN/jnEvIpKGxjw6nUXrdgXVm9fP5PnL\nByb1dbNjRWdOiognlmzcxaMfLwsZ2s//bCAjj2jpQVfJQcEtInH31dodnP7YzJBjLRvWZnDH5nHu\nKLkouEUkbnw+x879RSFD+6/n92NgTjMdNRIBBbeIxM3Ff5/LjGVbQo4ptCOn4BaRmCsq8TH28Vks\nXLezTP2whrU5f1AW1x7fBbPUvHZ2LCi4RSSmFq7dyZ3vLQ4KbYBXrxpCh+b1PegquSm4RSRm1m7f\nx2mPzQg59rNhOWQ1qxfnjlKDgltEYmLZ5t2c8OC0oPpbvxxGl1YNqJep+DlU+s6JSNT94oX5TFm0\nMeRY18MbUqdWRpw7Si0KbhGJmhKf474PlgaFdv3MDH53clcuTbMbHsSKgltEomLjzgKenLacZ2eu\nChr73w3H07BOrfg3laIU3CISFYPv/jhkfdyA9grtKFNwi0i1bNxZEDK0Xx4/mK6HN6RJvUwPukpt\nCm4ROWSvzV/Lb19dEHJsYE4znVQTI5Xec1JEJJTNuwtChvaZfdrwxR9PVGjHkPa4RaTK3l+0gate\n+Dyovvyu0WTUUGDHmoJbRKrkvEn/Y/aKrSHHFNrxoeAWkYj4fI5X568JCu2B2c24acyR9GrXxKPO\n0o+CW0QqVVzi45a3v+bFOd8Hjb1y1RAPOkpvCm4RqVTnG6eErN9xZs84dyKg4BaRCuw9UMyV/5wf\nVH/uZwMZkN1UF4ryiL7rIhLS+h37ufTZuXy7aU/Q2NG6ka+nFNwiEsQ5x9B7PgmqD+3UnPt+2tuD\njqQ0BbeIlLFpVwGD7go+hf2rW0+iYe2aOrEmASi4ReQHc1du45wnZ4cca6QLRSUMBbeIAFBY7AsZ\n2n85tzdn9G7rQUcSjoJbRFi2eQ8nPDg1qL7qnlM96EYqU+lFpsysq5l9WerPLjP7dTyaE5HYe+vL\ndSFDu22Tuh50I5GodI/bObcU6ANgZhnAOuDNGPclInGwfW8h1/77yzK1AdlNeeCnfchqrjuwJ6qq\nLpUcDyx3zq2ORTMiEj+L1u1kzKMzguqvXjXUg26kKqp6Pe5xwEuhBsxsvJnlmVlefn5+9TsTkZh5\nfvaqkKE9bkD7+DcjVWbOucg2NMsE1gM9nHObKto2NzfX5eXlRaE9EYm277fuY+R9n5apjT7qcG4/\noyfNG9T2qCsxs/nOudxItq3KUskpwOeVhbaIJK4v1+zgzL/ODKo/fkF/D7qRQ1WVpZLzCLNMIiKJ\n79mZK0OG9sRTunnQjVRHRHvcZlYfOBG4MrbtiEgsLNm4iz+9s7hM7Sd923LbGT1oqDMik05Ewe2c\n2ws0j3EvIhIDX63dwemPBe9p/+XcPh50I9Ggu7yLpLDX568NGdr3jD3Kg24kWnTKu0iKWrh2J795\ndUGZ2pl92nD32F7UzczwqCuJBgW3SApaunE3pz0WfJz2Q+P6etCNRJuWSkRSzNyV2zj5oWlB9QfP\n0Q0QUoX2uEVSyFdrdwRdmnVUj8N5aFwf6tTS8kiqUHCLpIh1O/aH/CDybxfp5JpUo6USkRSwq6CI\nYSHuEXnXT3T0SCrSHrdIklu8fhejH5lepnZU28a8etUQLY+kKAW3SBLbc6A4KLQB3rl6uAfdSLxo\nqUQkifW85YOg2m9OPMKDTiSetMctkoRWbdnLMfd/FlRfescoatfU8kiqU3CLJKFQoa0b+6YPLZWI\nJJnTQty55qLBHTzoRLyiPW6RJLF+x36Ghjjk75vbRlGnlvbB0omCWyRJhArtBTefpAtGpSH9mBZJ\nAs/NWhVUG9u3LY3r6SYI6Uh73CIJbOe+IsY+MZPl+XvL1P/zy2H0bNPIo67EawpukQR24l+msnn3\ngTK1ydcMp0ebxh51JIlASyUiCWr28q1BoT2mV2uFtmiPWyTRFBb7eCVvDTf9Z1GZ+ondW3Hf2bqm\ntii4RRLO9a98ybtfbShTe+z8vozp1cajjiTRaKlEJIHk7z4QFNpn9Wun0JYyFNwiCaKgqIQBd/43\nqH7D6G4edCOJTEslIgng0Y+/44GPvi1Tu+a4zlx/UlePOpJEpj1ukQRQPrSvGJ6j0JawFNwiHjv6\nvk+DaucNyvKgE0kWWioR8ch7Czfwfy9+XqbW7fCGvP/rkR51JMkioj1uM2tiZq+Z2RIz+8bMhsS6\nMZFUVz60rz6us0JbIhLpHvfDwPvOubPNLBOoF8OeRFLeU9NWBNVGHtHSg04kGVUa3GbWGBgJXArg\nnCsECmPblkhqWrJxF2c9Pou9hSVl6vNvOoHmDWp71JUkm0iWSnKAfOBZM/vCzJ42s/rlNzKz8WaW\nZ2Z5+fn5UW9UJBWMemh6mdAe06s1eQptqaJIgrsm0A94wjnXF9gLTCi/kXNuknMu1zmX27KlfuUT\nKW/+6m1BtfMHZdFCoS1VFElwrwXWOufmBJ6/hj/IRSQCO/cX8fT0FZz1xOwy9auP68yQjs096kqS\nWaVr3M65jWa2xsy6OueWAscDi2Pfmkhq6P2nD8s8b9+sLo+M60vfrKYedSTJLtKjSq4GXgwcUbIC\nuCx2LYmkjr0HioNqD52r0JbqiSi4nXNfArkx7kUkZTjn2LirgCF3B9/gt0/7Jh50JKlEZ06KxMCw\nez5h/c6CMrWHx/XhjD5tPepIUomCWyTKikp8QaH93jUj6K6b+0qU6CJTIlF0oLiEQXd9HFTv2DLo\n1AeRQ6Y9bpEoOffJ2cxZWfZY7fEjO3LD6CM96khSlYJbJAp8PhcU2lOuHcGRrbU8ItGnpRKRairx\nOS5/bl5QPaeFlkckNrTHLVINj3+2jHvfX1qmNvKIlky6qD91amV41JWkOgW3SDWUD+1//XwQuR2a\nkVlTv8xK7Ci4RQ6Bc45b3v46qD4wuxk1MxTaElsKbpEqenvBeq5/+UuKfa5M/fVfDFFoS1wouEWq\n6JqXvijz/N6ze3FS91Y0qZfpUUeSbhTcIlXwt6nLg2o/7d8OM/OgG0lXCm6RCMxatoUnp61g6rdl\n7+404ZRuCm2JOwW3SATOf3pOmecTT+nG6X3a0LpxXY86knSm4BapxJtfrA2qXXl0Jw86EfFTcIuE\n8fX6nbw2fy3PzlxVpj6mV2tvGhIJUHCLhHHqIzPKPP/VsZ05J7c9Wc3redSRiJ+CWySEKQs3BNV+\ne3JXDzoRCabgFinlmw27eG/hBh79ZFmZer8s3W5MEoeCW6SUUx6eXub5z0fkcNHgbC2PSEJRcIsE\n/Hvu90G1G0/t7kEnIhVTcEvam796O+8t3MAzM1aWqQ/MbuZRRyIVU3BLWnPOcdYTs8rUfj4ih0uH\n5dC2iU6ukcSk4Ja0dv+HS4NqWh6RRKfglrT0zoL1vLNgPR8u3lSmPqrH4R51JBI5BbekneISH1eX\nuzTrNcd15tJhOTSrr0uzSuJTcEta8fkcox+ZHlS//iSdXCPJI6LgNrNVwG6gBCh2zuXGsimRWLj5\nrUW89eV6du4vKlO/5rjOHnUkcmiqssd9rHNuS8w6EYmhrXsO8Pzs1WVqfzq9B+cOaK+7sUvS0VKJ\npLyCohL63/HfoPolQ7Pj34xIFEQa3A74r5mVAE865yaV38DMxgPjAbKysqLXocghcs6RM/G9kGNP\nX6zVPklekQb3cOfcOjM7DPjIzJY456aV3iAQ5pMAcnNzXag3EYmnmcu2BtX+eflAhnduoduNSVKr\nEclGzrl1gb83A28CA2PZlEh17C8sYXn+Hi58Zk7Q2IguLRXakvQq3eM2s/pADefc7sDjk4DbYt6Z\nyCE4UFzCkTe/H1Q/4chW3Hq6zoiU1BDJUkkr4M3AXkpN4F/OueD/M0QSwI1vLgqqLbjlJBrXreVB\nNyKxUWlwO+dWAL3j0IvIIXt6+gr2HijhtfnBN/ZVaEuq0eGAkvS+Xr+TOyZ/U6bWv0NTnrign05h\nl5Sk4JakVlBUEnRTX4DXfzHUg25E4kPBLUmpqMRHlxunhBy77Ywece5GJL4U3JKUrn9lQVDt3rN6\n8dPcdjrcT1KegluSyrxV28jffYB3FqwPGjtnQHsPOhKJPwW3JI0Pv97I+H/OD6qf3rsNN5+mY7Ql\nfSi4JSkcKC4JGdor7x6tpRFJOwpuSWjb9hbS7/aPQo797uSuCm1JSwpuSWihQvuOM3ty4eAOHnQj\nkhgU3JJwfD7HOU/OZmjnFkFjjevWUmhL2lNwS8L5yROzWLBmB3mrt5epXzE8h2tP6OJRVyKJQ8Et\nCWPZ5t0UFPlYsGZH0Niqe071oCORxKTgloRwy1uLeK7cPSEPmnzN8Dh3I5LYFNziud0FRSFD+6Pr\nRtKlVUMPOhJJbApu8czL877nD68vDDl299ijFNoiYSi4xTOhQvuhc/sw+qjWZNaM6K56ImlJwS1x\n9cHXG7kyxBmQABNO6caZfdvGuSOR5KPglrgKFdq/OrYz/Ts05ZiuLT3oSCT5KLgl5g7uZbdoEHw3\nmomndOPKozt50JVI8lJwS8wd3Mvesqfwh1r31o3o36EpV4zo6FVbIklLwS0x8cyMldz+7mIa1g7+\nJ3bnT3pywSCdti5yqBTcEhO3v7sYgN0Hin+o1cvMYFjnFowbkOVVWyIpQcEtUXPB0/9j5rKtIcee\nvjiXE7q3inNHIqlJwS3V4pxj+74iMmpYyNDu2bYRPds05vgjD/OgO5HUpOCWasmZ+F7YsQ9+PZKu\nh+vsR5FoU3BLle3YV8hHizfRokHtoLHcDk05ucfhNK2fqdAWiREFt1RZn9tC30oMYNLFuTSrH3y8\ntohET8TBbWYZQB6wzjk3JnYtSSJ68KNveeTj7xh5RPDZjX8c053hnVvQuG4thbZIHFRlj/ta4Bug\nUYx6kQTj8zkKikuoXTODRz7+DoBp3+YHbXfJkA7UzNBFoUTiJaLgNrN2wKnAncD1Me1IEkbHG8J/\n8Dj1d8fQqlEd6tTKiGNHIgKR73E/BPweCPtpk5mNB8YDZGXpBItk9cq8NXz0zSYOaxj8wWOtDKOo\nxHFyj1Z0aF7fg+5EBCIIbjMbA2x2zs03s2PCbeecmwRMAsjNzXVR61BirsTnKCrxkVHD+P3rX4Xd\n7ts7TsHM4tiZiIQSyR73MOB0MxsN1AEamdkLzrkLY9uaxEunCpZEXrh8EF1aNaBmDVNoiySISoPb\nOTcRmAgQ2OP+rUI7+R33wGds3nWAepnh16j7ZjVheJcWcexKRCKh47jTyII1OzhQ7GP7vkJW5O8F\nYE+pi0AdtOqeU+PdmohUQZWC2zn3GfBZTDqRmCgu8eGAohIfZ/x1Ztjt3rtmBFnN66HFEJHEpz3u\nFFbic3S+cUrY8bH92rJqy14uGNSB7m10eL5IslBwp6DsCZMr3aZn20Y8eE6fOHQjItGm4E4R2RMm\n0+3whizZuLvC7bR+LZL8FNxJLHvCZC4e0oFX8tYAhA3tvJtOoEndWtTQ4XwiKUHBnWSyJ0zm96O6\n8sSnywF4fvbqkNu9PH4whzeuQ6M6tWiqCz+JpBQFd4JzzpEz8T0mntKNu6csAeDe95eG3Pbhcf41\n6/4dmtKuab249Sgi8aXgTkBFJT663DiFq47uxN+m+vesD4Z2ebee1p11O/Zz4eAOun6ISJpQcCeI\nDTv3M+TuT2jbpC7rduwH+CG0y7v9jB4s2bibXxzTSXvWImlIwe2BrXsO0Kx+Ji/PW8OENxaWGTsY\n2qW1blyHW07rwfL8PYwb0J7mIW4ZJiLpQ8EdB8UlPi77xzzuOLMnx97/Gb4Irp14waAsLhjUge37\nCumX1ZS6FVxTRETSi4I7yopKfNTKqMGnSzdz2bPzGNu3LW98sQ6Ao+/7rMLXPn1xLgM7NqO4xPkP\n36uhw/dEJJiCu5o27NzPFc/l8cA5vRn10PSg8YOhHc7MCcfRtkndWLUnIilIwR2hzbsKeOOLdYzp\n1Zrhf/40aDxUaJf28Lg+NKpTi1nLt/CHUd10j0YROWQKbvw3xd1XVEKD2jWZsnAD7361gctH5DD2\n8VlB294T5rC8gwZkN2Xequ0AfP2nk6lfu+YPyycAx3Y7LPoTEJG0kpLB7fM5fM5RM6MGK/L3AJDd\nvD63vbuYA8UlnN2/HWc9MRuAZvUz2ba3MOg9Ji/cEPHXm3vD8WTWrMHKLXvpm9U0aLyW9q5FJIoS\nNrh9PocDtu49wMA7Pwbg2uO78PDH3wGQ3bweq7buO6T3fmnumh8ehwrt0gblNGPOym3UyjDm3HAC\nPudYs21fyIDum6VTy0Uk9hIyuD9Zsomf/SMvqH4wtIFDDu1QGtapyRMX9Gf6d/m0bFibK0Z0pMTn\nKCz2hTwMr4WOoxYRDyVUcBcUldDv9o/YV1hSpj68cwtmLNsCwM1juvPinNUsz9/LfWf3Ytbyrbz5\nxToePKc3G3YW8OTU5dw19ijaNa3HjO/yGdSxOT3bNGZXQREGHNaoTtivX/r+ihk1TMdOi0hCMuci\nOBukinJzc11eXvAec0V2FRTR69YPf3h+71m9OGdA+2i3JiKSkMxsvnMuN5JtE+ZTswaZNfnlsZ0A\nWHDzSQptEZEwEmaPW0QknSXlHreIiERGwS0ikmQU3CIiSUbBLSKSZBTcIiJJRsEtIpJkFNwiIklG\nwS0ikmRicgKOmeUDqw/x5S2ALVFsJxlozqkv3eYLmnNVdXDOtYxkw5gEd3WYWV6kZw+lCs059aXb\nfEFzjiUtlYiIJBkFt4hIkknE4J7kdQMe0JxTX7rNFzTnmEm4NW4REalYIu5xi4hIBRTcIiJJJmGC\n28xGmdlSM1tmZhO87qc6zKy9mX1qZovN7GszuzZQb2ZmH5nZd4G/m5Z6zcTA3Jea2cml6v3NbGFg\n7BEzMy/mFAkzyzCzL8zs3cDzVJ9vEzN7zcyWmNk3ZjYkDeY8MfDvepGZvWRmdVJtzmb2dzPbbGaL\nStWiNkczq21mLwfqc8wsu8pNOuc8/wNkAMuBjkAmsADo7nVf1ZhPa6Bf4HFD4FugO3AvMCFQnwD8\nOfC4e2DOtYGcwPciIzA2FxgMGDAFOMXr+VUw7+uBfwHvBp6n+nyfA64IPM4EmqTynIFsYCVQN/D8\nFeDSVJszMBLoBywqVYvaHIH/A/4WeDwOeLnKPXr9TQo0PwT4oNTzicBEr/uK4vzeAk4ElgKtA7XW\nwNJQ8wU+CHxPWgNLStXPA570ej5h5tgO+Bg4jh+DO5Xn2zgQYlaunspzboZ/J6QZUBN4FzgpFeeM\n/4dU6eCO2hwPbhN4XBP/mZZWlf4SZamkLbCm1PO1gVrSC/wa1BeYA7Ryzm0IDG0EWgUeh5t/28Dj\n8vVE9BDwe8BXqpbK880B8oFnA8tDT5tZfVJ4zs65bcD9wPfABmCnc+5DUnjOpURzjj+8xjlXDOwE\nmlelmUQJ7pRkZg2A14FfO+d2lR5z/h+3KXEsppmNATY75+aH2yaV5htQE/+v00845/oCe/H/Cv2D\nVJuzmXUCrsP/Q6sNUN/MLiy9TarNOZREmGOiBPc6oH2p5+0CtaRlZrXwh/aLzrk3AuVNZtY6MN4a\n2Byoh5v/usDj8vVEMww43cxWAf8GjjOzF0jd+YJ/D2qtc25O4Plr+IM8leecC8xyzuU754qAN4Ch\npPacD4rmHH94jZnVxL/strUqzSRKcM8DuphZjpll4l+wf9vjng5Z4NPjZ4BvnHMPlhp6G7gk8PgS\n/GvfB+vjAp825wBdgLmBX812mdngwHteXOo1CcM5N9E51845l43/v90nzrkLSdH5AjjnNgJrzKxr\noHQ8sJgUnjP+dd7BZlYv0OvxwDek9pwPiuYcS7/X2fj/f6naHrzXHwKUWrwfjf+Dj+XAjV73U825\nDMf/q9RXwJeBP6Pxr2N9DHwH/BdoVuo1NwbmvpRSn7Dj38tZFBh7jCp+iOHB3I/hxw8nU3q+QB8g\nL/Df+T9A0zSY8x/w/4BaBPwT/9EUKTVn4CX8a/hF+H+zujyacwTqAK8Cy/AfedKxqj3qlHcRkSST\nKEslIiJdRHT4AAAAKUlEQVQSIQW3iEiSUXCLiCQZBbeISJJRcIuIJBkFt4hIklFwi4gkmf8H/Pw8\nwVPxBL4AAAAASUVORK5CYII=\n"
},
"metadata": {},
"output_type": "display_data"
}
]
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "### Show History of $W_{2}$\n\n$W_{2}$ の遷移をグラフ化します。"
},
{
"metadata": {
"collapsed": false,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T02:51:59.582066",
"start_time": "1970-01-01T02:51:57.956263"
}
},
"cell_type": "code",
"source": "# Draw Norm of W2 History\nplt.figure()\nplt.title('W2 history')\nplt.plot(range(len(W2_history)), W2_history)\nplt.show()",
"execution_count": 37,
"outputs": [
{
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x2ebf8a50>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAEICAYAAAB/Dx7IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4lOW5x/HvTQJBQDYJVqGR3Yq2LEY2wYVFRaxttYu2\nHNSqaO2p1tbTgiLVKta21lM9XRRat1qXam1ti4obCAoFgiBFAUEIuywiW1iyzH3+mGHIZCETmJl3\nZvL7XBcX8zzvO5P7geSXZ555F3N3REQkczQKugAREakfBbeISIZRcIuIZBgFt4hIhlFwi4hkGAW3\niEiGUXBLVjGzO8zsycNsf9/MzklhSSIJp+CWlDKz8Wb2cpW+FbX0XWZm7c3saTPbaGY7zewdM+t/\npF/f3U919xl11NjJzNzMco/064gkk4JbUm0mMMjMcgDM7ASgMdCnSl+3yL4tgPnA6UBb4HFgqpm1\nCKD2uCjwJdkU3JJq8wkHde9IewgwHVhepe8jd9/o7qvc/X533+TuFe4+GWgCnHyYr9HEzJ4ws92R\npZHCgxvMrNjMhkce9zOzIjPbZWabzez+yG4zI3/vMLM9ZjbQzBqZ2QQzW2NmWyKv3yryOgdn6Feb\n2VrgTTObambfq1yUmS02s68c6T+cyEEKbkkpdy8F5gJnRbrOAmYBb1fpm1n92WBmvQkH98rDfJmL\ngWeA1sA/gN/Ust8DwAPu3hLoCvyl0tcHaO3uLdx9DnBl5M+5QBfC7wSqvu7ZwCnA+YTfGYyuVHcv\noAMw9TB1i8RFwS1BeItD4TiEcHDPqtL3VtUnmVlL4E/Ane6+8zCv/7a7v+TuFZH9e9WyXxnQzcza\nufsed//3YV7zW8D9kXcAe4DxwGVVlkXucPcSd99H+BdGDzPrHtn2X8CzkV9cIkdFwS1BmAkMNrO2\nQL67rwBmE177bgucRpUZt5kdA/wT+Le7/6yO1/+40uO9QNNa1p2vBnoAy8xsvplddJjXPBFYU6m9\nBsgFjq/Ut+7gA3ffT3gGP9rMGgGXE/4lInLU9CGKBGEO0Aq4FngHwN13mdnGSN9Gd199cGczywP+\nDqwHrktUEZFfGJdHgvUS4HkzOw6o6ZKZG4GTKrULgHJgM9Dx4EtWec7jwBOEl4H2RpZcRI6aZtyS\ncpGlhCLgB4SXSA56O9IXnW2bWWPgeWAfcIW7hxJVh5mNNrP8yGvuiHSHgK2Rv7tU2v1p4GYz6xw5\nouUewksf5bW9vrvPJhzmv0KzbUkgBbcE5S2gPeGwPmhWpK/yMskg4CLgPA4d5bHHzIYkoIYLgPfN\nbA/hDyovc/d97r4XmAS8Y2Y7zGwA8Ajh8J0JrAb2A9+r5XUrewL4PFDrSUEi9WW6kYJI8pjZfwHX\nufvgoGuR7KEZt0iSmFkz4LvA5KBrkeyi4BZJAjM7n/Ba+WbgqYDLkSyjpRIRkQyjGbeISIZJynHc\n7dq1806dOiXjpUVEstKCBQu2uXt+PPsmJbg7depEUVFRMl5aRCQrmdmauvcK01KJiEiGUXCLiGQY\nBbeISIZRcIuIZBgFt4hIhlFwi4hkGAW3iEiG0Y0URESO0tTFm5i3+hO6tm/BmIGdkv714gpuM7uJ\n8J1JDJji7r9OalUiIhnA3el/zxts2X0g2peK4K5zqcTMTiMc2v0I33T1IjPrluzCRETS2Uv/2UT3\n216OCe37v17bfakTK54Z9ynA3MhdQTCztwjfn+8XySxMRCQduTuD7n2TTTv3x/Qvv/sC8nJzUlJD\nPMG9BJgUuYnqPuBCwvcLFBFpUN5esY2rHptHWcWhy2E/cFlvvtS7Q0rrqDO43X2pmf0ceBUoARYB\nFVX3M7OxwFiAgoKCBJcpIhIcd+fLv5vNe+t2xPSvmDSSxjmpPzgvrq/o7n9099Pd/SzgU+DDGvaZ\n7O6F7l6Ynx/XlQlFRNLeyi17+MKdr8aE9k3DulN876hAQhviP6qkvbtvMbMCwuvbA5JblohIsNyd\nO//5AY/NLo7pD2qWXVm8x3H/NbLGXQZ819131PUEEZFMtWXXfr7yu9ls2LEv2jd+5Oe47uyuAVZ1\nSFzB7e5Dkl2IiEg6mL58C1c9Oj+mLx1m2ZXpzEkREaC0PMQ3p/ybojWfRvuuHdKZ20b1DLCqmim4\nRaTBW7d9L0N+MT2mL91m2ZUpuEWkQbvpmYW8uGhjtD30c+155MozAqyobgpuEWmQPi0ppc9dr8X0\nLbx9BG2aNwmoovgpuEWkwXliTjETX3w/2v5My6bMGT8UMwuuqHpQcItIg3GgvIJed77K/rJQtO9/\nv9GLi3t1yJjQBgW3iDQQC9Zs59Lfz4npe/0HZ9Gt/bEBVXTkFNwiktXcneeK1vOjvy6O9rU/No/p\nt5xD87zMjMDMrFpEJA7bS0rpW+UDyB9f8Dm+c056nAF5pBTcIpKVtu4+wBmTXo/pe/OHZ9Mlv0VA\nFSWOgltEss7fFq7n5mffi7bbtcijaMLwACtKLAW3iGSVTuOmxrQfvLwPF/c6MaBqkkPBLSJZYeWW\n3Qy/f2ZM37K7LqBp49TcTiyVFNwikvEeeusj7n15WbR9ad+O/CpFN+4NgoJbRDJWKORMmbUqJrSv\nHtyZCaNOCbCq5FNwi0hGqumKfi/cMIi+BW0Cqih1FNwiknEOlFdUC+3Fd5xHy6aNA6ootRTcIpJR\n/jBrFXdPXRptj+h5PFPGFAZYUeopuEUkY1Q91O/P1/TnzG7tAqomOApuEUl7m3bu49LfzY7pm3fr\nMNq3bBpQRcFScItIWvtw827O+99Dx2cXntSGJ67uR7MmDTe+Gu7IRSTtbd19ICa0j83L5S/XDaRR\no8y5dnYyKLhFJC1d/6cFvPL+x9H2/V/vxSV9OwZYUfpQcItI2jlj0uts3X0g2p49bigntj4mwIrS\nS1z3njez8Wb2gZktMbOnzaxhfiIgIkm1elsJp/1kWkxoL7vrAoV2FXUGt5l1AsYCp7v7aUAOcFly\nyxKRhmbppl2ce98M9hwoB+B7Q7uxctLIrLxI1NGKZ6lkF1AGHGNmZUAzYGNSqxKRBmV/WQUjH5gV\nbRe0bcYPRvTIqBv4plKdwe3u283sPmAtsA941d1fTXplItIgXPtEEa99sDna/sOYQob3PD7AitJf\nPEslXYGbgc7AiUBzMxtdw35jzazIzIq2bt2a+EpFJOt89fezY0J70cQRCu04xPPhZCEw2923unsZ\n8AIwqOpO7j7Z3QvdvTA/Pz/RdYpIFvm0pJR7XlpK0ZpPo31zbx1G62ZNAqwqc8Szxr0cmGhmzQgv\nlQwDipJalYhkrap3Xu90XDOm3jiE5nk6Ojle8axxLzKzJwiHdQhYCExOdmEikn1CIY8JbYAZ/3Nu\nQNVkrrh+xbn7z4GfJ7kWEcliT8wpZuKL70fbv/paLy49XWdCHgm9NxGRpPvTv9fEhPbC20fQprnW\ns4+UgltEkqYi5KzeVsLtf18S7bvrS6cqtI+SgltEkqbrrS/FtN8ZN5QOOn39qCm4RSQpqt6tZtU9\nFzb4y7EmioJbRBLq4537+f2MldH2KSe05K/f0TW0E0nBLSIJU1YRYsDP3oi2B3drxyNXnkGT3Lgu\nRCpxUnCLSELsOVDOaT+ZFtP35DX9A6omuym4ReSovbhoAzc9syjanjKmkBG65kjSKLhF5Ki8vWJb\nTGi/N/E8WjVrHGBF2U8LTyJyxFZu2cPoP86Ntq8YeJJCOwU04xaRI3LN4/N5femWaHvGLefQqV3z\nACtqOBTcIlJvU2auigltHaOdWloqEZF6WbRuB5NeWhpt//GKQoV2imnGLSJxG3DPG3y8a3+0vWji\nCN38IAAKbhGpUyjkjHxgVkxoF987KsCKGjYtlYjIYbk7/1y8keWbd0f7ZurmB4HSjFtEDqvz+Ngr\n/C2/+wLycnMCqkZAwS0itSgtD9FjwssxfVoeSQ9aKhGRag6UVzBl1qpou29Ba977yXkBViSVacYt\nIjHcnZMnvBLT9/z1g3TIXxrRjFtEovaWlldb0y6+d5RCO80ouEUEgJID5dw99dCJNV8v7Miyuy4I\nsCKpjZZKRISKkHNqpWtpn3piS35+6Rcw00w7HWnGLdLA7dpfVu2mvlNvHKLQTmN1BreZnWxmiyr9\n2WVm309FcSKSXHtLy/nBs+9F21cP7szyu7U8ku7qXCpx9+VAbwAzywE2AH9Lcl0ikmTlFSF6Tjy0\nPDKgS1tuv6hngBVJvOq7VDIM+Mjd1ySjGBFJjZ17y+h2W+zJNc+MHRhQNVJf9Q3uy4Cnk1GIiKRG\naXmIMY8cumvN6AEFOnokw8R9VImZNQEuBsbXsn0sMBagoKAgIcWJSGKVVcSext63oDV3f/nzAVYk\nR6I+M+6RwLvuvrmmje4+2d0L3b0wPz8/MdWJSMLs3FdG9yrLIy/ccGZA1cjRqE9wX46WSUQy1pd/\n+0708eBu7Vj6Uy2PZKq4lkrMrDkwArguueWISKKVV4RiPojs0PoYnrymf4AVydGKK7jdvQQ4Lsm1\niEiClRwojzkjEuCdcUMDqkYSRWdOimSxUQ/Oimn/5w5dmjUb6FolIlmoIuR0v+0lQn6oTzdByB6a\ncYtkmf1lFfSc+IpCO4spuEWyzNcfnsOB8lC0vWDC8ACrkWTQUolIlgiFnOufXMDi9TujfZppZyfN\nuEWyQEXIufGZhbz6waHz4xTa2UszbpEscOMzC5m6eFO0/db/nBNcMZJ0Cm6RDBYKOZNnrYoJbc20\ns5+CWySD/Xb6Sn712ofRtkK7YdAat0iGqhraz12v62k3FJpxi2Sg6cu28Mtpy6PthbePoE3zJgFW\nJKmkGbdIhnlm3lquemx+tF00YbhCu4FRcItkkFeWfMy4F/4Tbd//9V60a5EXYEUSBC2ViGSIjTv2\ncf2TC6LtZ8cOoH8XXbSzIdKMWyQDTF28iUH3vhltP6PQbtAU3CJpbsmGnXz3qXej7e8P784AhXaD\npuAWSXMX/d/b0ceX9OnATcO6B1iNpAOtcYukqUXrdsTcJ/I753Tlxxd8LsCKJF1oxi2Shjbv2h8T\n2qMHFCi0JUrBLZKG+t/zRkz7J188NaBKJB0puEXSyJZd++kyfmq0feqJLSm+dxSNc/SjKodojVsk\nTZSWh+hXaaZ97sn5PHpVvwArknSlX+MiaaLHhJdj2r/+Rp+AKpF0pxm3SMD2lpbz0FurYvqW330B\nebk5AVUk6S6u4Daz1sAfgNMAB77t7nOSWZhIQ9Fz4rSY9rK7FNpyePHOuB8AXnH3r5pZE6BZEmsS\naTC+8XDs/GfWj86laWOFthxencFtZq2As4ArAdy9FChNblki2a28IsS/V21n7urt0b7pt5zDZ9tq\nTiR1i2fG3RnYCjxqZr2ABcBN7l5SeSczGwuMBSgoKEh0nSJZZcgvprNp5/5oe9aPzlVoS9ziOaok\nF+gL/N7d+wAlwLiqO7n7ZHcvdPfC/Pz8BJcpkj1+8+aKmND+538PVmhLvcQT3OuB9e4+N9J+nnCQ\ni0g9uDtbdx/gvlcP3SdywqhT+HzHVgFWJZmozqUSd//YzNaZ2cnuvhwYBnyQ/NJEsst//XEeb6/c\nFm0/d/1AzujUNsCKJFPFe1TJ94A/R44oWQVclbySRLLPjOVbYkL7qWv6K7TliMUV3O6+CChMci0i\nWevKRw/d3LdrfnMGdWsXYDWS6XTmpEgS/erV5fzfmyuj7Qcu682XencIsCLJBgpukSRZsXl3TGhP\nGVPIiJ7HB1iRZAtdZEokSUb878zYtkJbEkQzbpEE+/vCDXz/2UXR9sSLevLtwZ0DrEiyjYJbJIE+\nLSmNCe2HRvflgtNOCLAiyUZaKhFJoD53vRbTPq/nZwKqRLKZglskAV7/YDP9Jr0ebX+p94msmDSS\nRo0swKokW2mpROQolVeEuOaJomh77Fld+NH5J5Or+0RKkug7S+QouDvdbou95ZhCW5JNM26RIzTz\nw638dvqh47Q/95lj+cv1AxXaknQKbpEjNOaRedHH/Tq35Ylv99PdayQlFNwi9RQKOV1ufSmm78/X\n9KexZtqSIgpukXqYsXwLj75THG23btaYqTcOUWhLSim4Reqh8lX+8o/N0819JRAKbpE4lFWE6F7l\n6JE544bqg0gJhIJbpA7/fG8jj80ujrabNcnhpRuHKLQlMApukcMIhZzvPb0w2m7XognvjBtKXq6W\nRyQ4mjKI1GL3/rJqR4/Mv224QlsCpxm3SA0eeusjpsxcFW0f3zKP568fhJmuPSLBU3CLVLF19wHu\nfXlZtH1GpzY8fe0ArWlL2lBwi1Sybvtehvxiekzfc9cPCqgakZopuEUiRv9hLm+v3BZt9+/clt99\nq2+AFYnUTMEtAjw7f21MaN80rDvfH95da9qSlhTc0qBVhJz5xdv58V//E9N/84geAVUkUre4gtvM\nioHdQAVQ7u6FySxKJFW6Vjnc7+bhPbju7C4BVSMSn/rMuM9192117yaS/tydHhNiT2F/4YZB9C1o\nE1BFIvHTUok0OMXbSnhm/jrKKjymX6EtmSLe4HbgdTOrAB5298lVdzCzscBYgIKCgsRVKJJA7s45\n982I6Zt642BOPbFVMAWJHIF4g3uwu28ws/bAa2a2zN1nVt4hEuaTAQoLC72mFxEJ0pZd++l3zxsx\nfR/dcyE5uhO7ZJi4TgVz9w2Rv7cAfwP6JbMokUR7Yk5xtZn2pX07KrQlI9U54zaz5kAjd98deXwe\n8NOkVyaSIFt3H2Dii+/H9H1490ia5OoUdslM8SyVHA/8LXIiQi7wlLu/ktSqRBLk7ws38P1nF8X0\nFd87KqBqRBKjzuB291VArxTUIpJQncZNrdb3wg267ohkPh0OKFnnQHkFJ0+IfVN43dldGD/ylIAq\nEkksLfJJVpm9chtn3ju9Wr9CW7KJZtySNbbs3s83/zA3pu/xb/djcLd2AVUkkhwKbskKUxdv4rtP\nvRvTt+TO82mRp29xyT76rpaM5u50Hv9Stf67vnyaQluylr6zJWPtOVDO5++YFtPXt6A1L9xwZkAV\niaSGPpyUjDR18SZO+8k0vMrFFRTa0hBoxi0Zp6h4e7X17AmjTmHMwE7BFCSSYgpuyRj7yyq49+Vl\nPDa7OKb/3dtH0LZ5k2CKEgmAglsywuZd++lf5cp+AA+NPl2hLQ2OglvS3pyPPuHyKf+O6bt5eA9u\nGt49oIpEgqXglrS1v6yCkQ/MYvW2kpj+fp3bKrSlQVNwS1r6tKSUPne9Vq3/tZvPovvxxwZQkUj6\nUHBLWgmFnMdmF/PTf31QbZsuxyoSpuCWtHLLc+/xwsINMX3d2rfg+esHBlSRSPpRcEvg3J05qz7h\nm1PmVts299ZhHN+yaQBViaQvBbcE7p6XljJl1upq/f/63mCFtkgNFNwSmDWflHDFI/Mo/mRvTP9z\n1w/kjE5tA6pKJP0puCUQv379Q379+opq/Y9/u59CW6QOCm5JqU/2HOA7T77LvOLtMf0PXNabL/Xu\nEFBVIplFwS0p88tpy/jt9I+q9f/f5X34Yq8TA6hIJDMpuCWp3J1te0q59okiFq3bEbPt7i+fxmVn\nfJbcHF1dWKQ+FNySVLc8t5i/vru+Wv9vv9mXUV84IYCKRDKfglsSriLkrNu+l4t/8za79pfHbLvr\ny6dx8RdOpFWzxgFVJ5L54g5uM8sBioAN7n5R8kqSTDfsVzOqHeIH8OTV/RncXXdcFzla9Zlx3wQs\nBVomqRbJYHtLy1m0bkeNZz/+7lt9ObtHPs11816RhIjrJ8nMOgKjgEnAD5JakWSknhOn1dj/6s1n\n0UNX8xNJqHinQL8GfgTU+hNoZmOBsQAFBQVHX5mkvTWflPDmsi3c+c/qV/L7x3+fyec7tMLMAqhM\nJLvVGdxmdhGwxd0XmNk5te3n7pOByQCFhYVe236SHd7fuJNRD75d47ZFE0fQupluJyaSLPHMuM8E\nLjazC4GmQEsze9LdRye3NElHf5m/jr8t3MCcVZ9U26Yr+YmkRp3B7e7jgfEAkRn3LQrthqWsIsTe\n0gpuemYhM5ZvrXGfFZNG0lgn0oikhD7mlzqdOnEapRWhav0TRp3CmIGdaJKrwBZJpXoFt7vPAGYk\npRJJK+9v3Enxtr1896l3q207u0c+vTq24pohXQKoTEQ045Zqpi7eVGNgAyy583xa6HhskUDpJ1Ci\nRj04i9XbSthbWlFt29xbh9GmWRMti4ikAQV3A7d4/Q527C1jzCPzatye08hYOWmkjscWSSMK7gYo\nFHLM4Mm5a7n970tq3OeNH55N1/wWKa5MROKh4G6Autz6Uq3bnrq2P+1a5Cm0RdKYgruB+M2bKzAz\nfjlteY3bO7Q+hnfGDU1xVSJyJBTcWWzZx7vIbWQMv39mrfvMu20Y7Y/V2Y4imUTBnWX2lVaQm2M8\nPruYu6curXGfPgWtefTKM8jNaaRD+0QykH5qs8iB8gpOmfhKrds/36EVl/cr4Jv9dfVGkUym4M5w\n7k7n8bV/2AjQIi+XJXeen6KKRCTZFNwZqvDu1zijU1teXvJxrfsUTRhOuxZ5KaxKRFJBwZ0h3J1L\nfz+b009qw5RZqwFqDO3HrjqDc05un+ryRCSFFNxpLBRyvjF5Dn1PasPDb60C4N21O6rtd/PwHpzZ\n7Th6fOZYWjbV3dNFsp2CO80cKK9g6H1vcfbJ+Tw1dy0A84s/rbbfJX07cGxeLmPP7kqH1sekukwR\nCZCCOw18sucAp9/9OoO6Hsfsj8J3ljkY2pV9sdeJrN2+lwcv681JxzVPdZkikiYU3Cn2aUkpzfJy\nWLDmU745ZW7MtoOhXdmVgzoxv3g7k8cUamYtIkCaBXco5ITcyc2iW2BVhJw3lm6mQ5tjuPWF//De\n+p11PmfSV07j6Xlrefyqfhyno0JEpIq0Ce6KkNM1cvGjD356Ps2apE1p9bZyyx6+/dh8BnY5jmeL\n1sX1nH/895ksXr+TrxV2JC83h2/1PynJVYpIpkqbdMxpdOh6z2f9Yjrzbh1Oo0bpfQ3onfvKmLF8\nCwVtm/HAGyuq3Uh37fa9tT73urO7cN1ZXTm2aS65jQwz4wsdWye7ZBHJAmkT3BCeafecOI1te0q5\n4tF5/Onq/kGXBMCOvaUs/3g3x7dsyr8Wb+TBN1dSWl795rm16da+BSu37GHO+KGc0Err1CJydNIq\nuJs1yeWSvh144d0NzFqxjVVb99AlydeFLi0PUVoRokVeLvNWb6d4Wwktj8nlvlc/ZOWWPUf0mpf0\n7cAN53TjbwvX88MRJ6f9OwcRySzm7gl/0cLCQi8qKjri53/94TnMW7092r6kbwduvfAU1nxSQpd2\nLWjTvAklB8ppnNOIJrmN2FdaQU4jo0luIz4tKSUnx2jZtDHLPt5Fk5xGtG/ZlGfmraVl08bsL6/g\n4bdW0aHNMTFf40h97fSOPLdgPSsnjcyqD1VFJLXMbIG7F8a1bzoG9679ZXzhjlcTWNHRycttRK/P\ntmbe6u0su+sC8nIb6R6MIpJQ9QnutFoqOahl08asuudC3l37Kd996l027zqQkq87ZUwh5RUhPti0\nix+ed3JKvqaISH3VOeM2s6bATCAPaAK86O7jDveco51xV7V5134a5zRi574yvvbQHHp1bEW/zm35\n2cvLgPBJKo/NLqZ1s8ZcO6QLj7y9miHd2/HV0z/LOx9to9NxzRh+yvHsLa2grCKU9HVzEZH6SuhS\niYXXBJq7+x4zawy8Ddzi7rNqe06ig1tEJNsldKnEw8l+8PCKxkAOUP2qRyIikhJxHQZhZjlmtgjY\nAsxw9yU17DPWzIrMrGjr1q3VX0RERBIiruB29wp37w10BIaY2bk17DPZ3QvdvTA/Pz/RdYqISES9\nDjx29x3AVCCudRgREUm8OoPbzPLNrHXk8THACGBRsgsTEZGaxXMc9wnA42bWiHDQP+nuryW3LBER\nqU08R5UsBvqkoBYREYmDLq4hIpJhknKtEjPbCqw5wqe3A7YlsJxMoDFnv4Y2XtCY6+skd4/rkLyk\nBPfRMLOieM8eyhYac/ZraOMFjTmZtFQiIpJhFNwiIhkmHYN7ctAFBEBjzn4NbbygMSdN2q1xi4jI\n4aXjjFtERA5DwS0ikmHSJrjN7AIzW25mK83ssHfYSXdm9lkzm25mH5jZ+2Z2U6S/rZm9ZmYrIn+3\nqfSc8ZGxLzez8yv1n25m/4lse9DS+GaXkcv/LjSzf0Xa2T7e1mb2vJktM7OlZjawAYx5fOT7eomZ\nPW1mTbNtzGb2iJltMbMllfoSNkYzyzOzZyP9c82sU72LdPfA/xC+OcNHQBfCt0d7D+gZdF1HMZ4T\ngL6Rx8cCHwI9gV8A4yL944CfRx73jIw5D+gc+bfIiWybBwwADHgZGBn0+A4z7h8ATwH/irSzfbyP\nA9dEHjcBWmfzmIFOwGrgmEj7L8CV2TZm4CygL7CkUl/CxgjcADwUeXwZ8Gy9awz6HylS/EBgWqX2\neGB80HUlcHwvEr6q4nLghEjfCcDymsYLTIv8m5wALKvUfznwcNDjqWWMHYE3gKEcCu5sHm+rSIhZ\nlf5sHnNbwpOQtoSvc/Qv4LxsHDPhX1KVgzthYzy4T+RxLuEzLa0+9aXLUkkHYF2l9vpIX8aLvA3q\nA8wFjnf3TZFNHwPHRx7XNv4OkcdV+9PRr4EfAaFKfdk83s7AVuDRyPLQH8ysOVk8ZnffDtwHrAU2\nATvd/VWyeMyVJHKM0ee4ezmwEziuPsWkS3BnJTNrAfwV+L6776q8zcO/brPiWEwzuwjY4u4Latsn\nm8YbkUv47fTv3b0PUEL4LXRUto3ZzLoCNxP+pXUi0NzMRlfeJ9vGXJN0GGO6BPcG4LOV2h0jfRnL\nzBoTDu0/u/sLke7NZnZCZPsJhO/hCbWPf0PkcdX+dHMmcLGZFQPPAEPN7Emyd7wQnkGtd/e5kfbz\nhIM8m8dcCMx2963uXga8AAwiu8d8UCLHGH2OmeUSXnb7pD7FpEtwzwe6m1lnM2tCeMH+HwHXdMQi\nnx7/EVjq7vdX2vQP4IrI4ysIr30f7L8s8mlzZ6A7MC/y1myXmQ2IvOaYSs9JG+4+3t07unsnwv93\nb7r7aLLYJiS0AAAA5ElEQVR0vADu/jGwzsxOjnQNAz4gi8dMeJ13gJk1i9Q6DFhKdo/5oESOsfJr\nfZXwz0v9ZvBBfwhQafH+QsIffHwE3BZ0PUc5lsGE30otJnybt0WR8R1H+AO8FcDrQNtKz7ktMvbl\nVPqEnfAsZ0lk22+o54cYAYz9HA59OJnV4wV6A0WR/+e/A20awJh/TPgX1BLgT4SPpsiqMQNPE17D\nLyP8zurqRI4RaAo8B6wkfORJl/rWqFPeRUQyTLoslYiISJwU3CIiGUbBLSKSYRTcIiIZRsEtIpJh\nFNwiIhlGwS0ikmH+H/fL5pc9f4JFAAAAAElFTkSuQmCC\n"
},
"metadata": {},
"output_type": "display_data"
}
]
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "### Show History of $\\mathbf{b}_{1}$\n\n$\\mathbf{b}_{1}$ の遷移をグラフ化します。"
},
{
"metadata": {
"collapsed": false,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T02:52:07.836915",
"start_time": "1970-01-01T02:52:06.241313"
}
},
"cell_type": "code",
"source": "# Draw Norm of b1 History\nplt.figure()\nplt.title('b1 history')\nplt.plot(range(len(b1_history)), b1_history)\nplt.show()",
"execution_count": 38,
"outputs": [
{
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x2ed38650>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEICAYAAACktLTqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8VOXZ//HPlZAFSCBAwhYIICCKKOATRQUV973U1tat\nWvlpqZbaxWqr1dqnWp/6dLEutFIerRXBXasWtS6oKC4gICCyyL5Dwp4QErJcvz9msDECmTOZSTKT\n7/v1youZM/d95roDfHNyn3vOMXdHRESSS0pTFyAiIrGncBcRSUIKdxGRJKRwFxFJQgp3EZEkpHAX\nEUlCCndp1sxslZmdHqN9vWNm1xzgtQIzKzWz1Fi8l0hTU7hLwjKzdDN7NvwDwM1sZLT7cvc17p7l\n7tX1vOdVZjY92vcRaSwKd0l004HvAJuaupBImFmrpq5BWgaFuySCY8xsoZltN7NHzCwTwN33uvu9\n7j4dOOgRdy29zOx9Mysxs9fNLBfAzHqHj/5bhZ9fZWYrwu1WmtnlZnY4MB44PjyFsyPctr2ZTTSz\nYjNbbWa3mVlKrf28b2Z/NrOtwB1mts3MjtxXkJl1NrMyM8uL2XdMWjyFuySCy4GzgL7AocBtDdjX\nZcBooDOQDtxYt4GZtQXuB85x92zgBGCuuy8CrgU+DE/h5IS7PAC0Bw4BTgauDL/HPsOAFUAX4E7g\nSUK/bexzKTDV3YsbMC6RL1G4SyIY5+5r3X0bcBehMIzWI+7+ubvvAZ4GhhygXQ0wyMxau/tGd/9s\nf43CJ2AvAW5x9xJ3XwX8CbiiVrMN7v6Au1eF33cicKmZWfj1K4DHGjAmka9QuEsiWFvr8WqgewP2\nVXtuvgzIqtvA3XcDFxM6St9oZi+b2WEH2F8ukBauq3aN+bWe164fd/8I2AOMDO+3H/BSwHGIHJTC\nXRJBz1qPC4AN8X5Dd3/N3c8AugGLgf/b91KdpluASqBXnRrX197dft7iUUJTM1cAz7p7eSzqFtlH\n4S6JYKyZ9TCzjsCtwFP7XjCzjH0nWIF0M8usNd0RFTPrYmajwnPvFUApoWkagM1ADzNLBwgvnXwa\nuMvMss2sF3ADMKmet5kEXEgo4Cc2pF6R/VG4SyJ4HHid0EnJ5cBva722hNAURz7wWvhxr7o7CCiF\nUEBvALYROkl6Xfi1t4DPgE1mtiW87Xpgd7i+6eF6/36wN3D3NcAnhI7q32tgvSJfYbpZh0jTMLOH\ngY3u3pDVPyL7pQ9UiDSB8PTNN4GhTV2LJCdNy4g0MjO7k9DUzh/cfWVT1yPJSdMyIiJJSEfuIiJJ\nqMnm3HNzc713795N9fYiIglp9uzZW9y93usQNVm49+7dm1mzZjXV24uIJCQzW11/K03LiIgkJYW7\niEgSUriLiCQhhbuISBJSuIuIJCGFu4hIElK4i4gkIYW7iEgj+feCjWwprWiU91K4i4g0gk07y7l2\n0hzGTGycD28q3EVEGsE3H/wAgDlrdjTK++l67iIicVJRVc3l/zeDMwZ2Yf2OPY363gp3EZE4ee2z\nzcxavZ1Zq7c3+ntrWkZEJMa2llZQVV3Dj574pMlq0JG7iEgMrd1Wxom/f7upy9CRu4hILP30qblN\nXQKgcBcRaTB355lZa1lWVBLR/PqEd5fHvSZNy4iINNC/F2zipmfnR9z+0Q9WM+akvnGsSEfuIiIN\ndt3kOYHa9+2cFadK/kNH7iIiUdhZVskNT8/l+L6dAvfNy8qIQ0VfpnAXEYnCH19fwtTFRUxdXBS4\nr+NxqOjLNC0jIhJQdY3z2EcR3ad6vwo6tolhNfunI3cRkQjNWrWNi8Z/2KB9PHRlISMH5MWoogNT\nuIuIROinTzd8DfvpA7vEoJL6KdxFRA7C3flk7Q5y22awdlv0F/96/JphDDsk+MnXaEUc7maWCswC\n1rv7+XVeM+A+4FygDLjK3YOtDRIRaYYeeX8Vd0xZ2KB9rLr7vBhVE7kgR+4/BhYB7fbz2jlA//DX\nMODB8J8iIgmtIcF+ZH57vlXYI4bVRC6icDezHsB5wF3ADftpMgqY6O4OfGRmOWbWzd03xq5UEZHG\nUVJeyVMfr6VnA1a1nH9UN/7nG0fSLjMthpVFLtIj93uBnwPZB3g9H1hb6/m68LYvhbuZjQHGABQU\nFAQqVESksfzqhQW8MHdDg/Yx7rKjY1RNdOpd525m5wNF7j67oW/m7hPcvdDdC/Py4r8USEQkGg0J\n9tvOO5ypPzs5htVEJ5Ij9+HA18zsXCATaGdmk9z9O7XarAd61nreI7xNRCQhLN1cwr1vLm3QPu69\neAijhnQntMakadUb7u5+C3ALgJmNBG6sE+wALwE/NLMnCZ1I3an5dhFJJFc8PJNNu8qj7j8ovx1f\nH5ofw4oaJup17mZ2LYC7jwdeIbQMchmhpZCjY1KdiEgjqKiqblCwv33jSPrkto1hRQ0XKNzd/R3g\nnfDj8bW2OzA2loWJiMTbs7PXceMz8xq0j49vPZ287Phf5TEofUJVRFqshgT7t/6rBycPyGuWwQ4K\ndxFpYaprnNKKKopLKqLeR9v0VP77a0fQNqP5RmjzrUxEJA5+/dICJn20pkH7+OyOs2NUTfwo3EWk\nRWlIsD94+dEM7L6/K7A0Pwp3EUl6JeWVrN+xhzVby6Lex9hT+nL2oK7NYg17JBTuIpL0rnh4JnPX\n7oi6/wl9O3HTWYfFsKL4U7iLSNJrSLDPvf0M2qQnXlQmXsUiIhFYt72MFcW7mdeAYH9k9DHktEmP\nYVWNR+EuIknp9HumUV5ZE1Xfw7u14/JhBZwyoHOMq2o8CncRSUrRBjvAqz8+MYaVNA2Fu4gkjfnr\ndrCieDePfbQ6qv5pqca0m06JcVVNQ+EuIknja+Pej7rvLeccxskD8uie0zqGFTUdhbuIJIXQ9Quj\n9/2T+8aokuZB4S4iCW3qos2s3LKb3768KKr+w/t1YvI1x8W4qqancBeRhHb1o7Oi7jvp6mEcmd8+\nhtU0Hwp3EUlYpRVVUfcdOSCPEf1zY1hN86JwF5GE89iHq1i9tYyHpq+Mqv8vzz2MMScl1xx7XQp3\nEUk4v3rxs6j7fnTLaeRmJeanToNQuItIQlm6uSTqvrefP5Cu7TNjWE3zpXAXkYTw2ykLWbW1jDcX\nbY6q/2NXH8uJ/fNiXFXzpXAXkYQQ7fw6wKq7z4thJYkhpakLEBGpzztLiqLql5edwUNXFsa4msSg\nI3cRabaumzSbVVvLWLRxV+C+R/Vozz3fHkK/zllxqKz5U7iLSLP16oJNUfd96YcjYlhJ4lG4i0iz\n4+489fHaqPoO79eJm88+PMYVJR6Fu4g0Kxf+9X1WbtnNjrLKwH3/3/A+/OSM/rTLTItDZYlF4S4i\nzcona6K/Ld7tFwyMYSWJrd7VMmaWaWYzzWyemS0ys7v302akme00s7nhr9vjU66IJKuaGufeNz+P\nqu/o4b157+fJcZONWInkyL0CONXdS80sDZhuZie6+3t12r3n7ufHvkQRSXYj//A2q7aWRdX3zq8P\n4tJjetIqVSu7a6s33D10BfzS8NM0IBXYHs+iRKRliTbYM1qlcMVxvWJcTXKI6EedmaWa2VygCHjH\n3Rfsp9kJZjbfzF41syMOsJ8xZjbLzGYVFxc3oGwRSQZV1TXc/uL+4qR+d104iA9vOS3GFSWPiE6o\nuns1MMTMcoDXzOwUd3+7VpM5QEF46uZc4AWg/372MwGYAFBYWNiwe2KJSEI75q43KS6piKrvxP93\nLCcd2nKuExONQJNU7r4DeBkorLN9l7uXhh+/AqSZWfJeBV9EGizaYO/fOUvBHoF6j9zNLA+odPcd\nZtYaOAO4o06brsBmd3czO5bQD42t8ShYRBJbeWU1v3huflR9J18zjKEFOTGuKDlFMi3TDXjUzFII\nhfYkd3/DzK4FcPfxwEXAdWZWBewBLvGG3opcRJLO0DteZ3sUH04CmPqzk+mb1zKvExONSFbLzAeG\n7mf7+FqPxwHjYluaiCST6hqPOthP7J+rYA9In1AVkbgr21vFj5+cG1XfN284iYKObWNcUfJTuItI\n3Lg7w/5nKkVRnjyd9+szad9a14mJhj7SJSJxU7a3Oupg/8bR+Qr2BtCRu4jERWlFFTc8Fd1UzKzb\nTqdDm/QYV9SyKNxFJKYqq2u44IHpLN5UErhvZloKi+88Jw5VtTyalhGRmCouqYgq2AEuH6brxMSK\njtxFJGZKK6r4w2tLouq76I6zyWil481YUbiLSIPtrarh+4/N4u0lwS8I2KNDa6b/4tQ4VNWy6cek\niDTY55tLogp2gIsLe8a4GgEduYtIA5XtreLh6SsD9+vSLoN3f34K6brJRlwo3EUkKpXVNdz+4mc8\nN2cde6tqAvUd3DOHF8cOj1NlAgp3EYnS+8u28MTMNVH1HTW4e4yrkboU7iISWHllNf+atzFwv2N6\nd+Cxq4dpVUwjULiLSMSqqmu4b+pSnpm1jk27ygP1Pe2wzjx81TFxqkzqUriLSMReWbCJB95aFlXf\nMwZ2iXE1cjAKdxGJSE2N8+Hy4DdYO+/Ibtz9zSPJylDcNCZ9t0XkoKprnCc/XsPTH69l3rqdgfp+\nu7AHv79ocJwqk4NRuIvIQT0zay23/nNBVH1P6Jsb42okUgp3ETmoeet2BO5z2bACbjjjUHKzMuJQ\nkURC4S4iX+HuvLt0C8/NXsdL8zYE6jv2lL7cdNZhcapMIqVwF5GvmDRjDb96IbqpmCPz28e4GomG\nwl1EvmJBwBOnANeM6MOVx/emoFObOFQkQSncRQQITcWs3lrGC3PX89SstYH6/vqCgYwe3idOlUk0\nFO4iAsDjM9dEvSqmd6e2Ma5GGkrhLiIAfLAs+AeUxp7Sl3MGdWOQ5tmbHYW7SAtXXeO8NG89L38a\n7EJg910yhFFD8uNUlTRUveFuZpnAu0AGkA686O4312ljwH3AuUAZcJW7z4l9uSISS8/PWccNT8+L\nqm9ettawN2eRHLlXAKe6e6mZpQHTzexEd3+vVptzgP7hr2HAg+E/RaQZ++cn6wP3GXtKX44/JFef\nPm3m6g13d3egNPw0DUgFttdpNgqYGG77kZnlmFk3dw9+wWcRaRTvLS3mvaVbAvX5x+hjGDmgc5wq\nkliKaM7dzFKB2UA/YLy71z2lng/UXju1LrztS+FuZmOAMQAFBQVRliwiDfH24iKumzyb8spgt8YD\nyGmTHoeKJB4iCnd3rwaGmFkO8JqZneLubwd9M3efAEwAKCws9KD9RaThfv/aksDB/r0T+3BUjxyG\n9MyJU1USa4FWy7j7DjN7GSgEaof7eqBnrec9wttEpBlZvGkXizbuCtTnpR8O56geCvVEU++NDM0s\nL3zEjpm1Bs4A5tZp9hJwpYUcB+zUfLtI87Fwwy5ufm4+Z9/7Xv2N69BNNhJTJH9r3YBHzSyF0A+D\nSe7+hpldC+Du44FXCC2DXEZoKeToONUrIlEY/Y+ZbN5VEajPpcf25PBu7TgkLytOVUk8RbJaZj4w\ndD/bx9d67MDY2JYmIrGwbffewMH++k9P4tAu2XGqSBqDft8SSVKrt+7m3aVborp0b6e2WhWT6BTu\nIknqW+M/pKgk2BH7OYO6cmiXbDoq3BOewl0kSQUN9pd/NIIjuusCYMlC4S6SRIpLKlhRXMrFEz4K\n3Ld/Z82xJxOFu0gS+caD77N2255AfYYW5NC/cxbprepdGS0JROEukkSCBvuLY4czWJ86TUoKd5EE\nt7uiip17KvnFc/MD9z2qh+bYk5XCXSTBfWv8hywMeEmB7IxW9OzYhtCtGCQZKdxFElzQYP/nD05g\naEGHOFUjzYXCXSQBVdc4Ne6Mf2d54L4K9pZB4S6SgK56ZGbgG20AtErRNExLoXAXSUBBg/2J7x3H\nsD4dSVG4txgKd5EE89K8DYH7HN+3UxwqkeZM4S6SIG56Zh7Tl21h487ypi5FEoDCXSRBPDN7XaD2\nk68ZRmHvDrhuaNkiKdxFEsDs1dsD9zmhbyetY2/BFO4izdg9ry9hwYZdvLW4KHBfBXvLpnAXacbu\nf2tZoPbPXHs8/TtnUVmtuZiWTuEu0kxt2BHsImAAQ3vm0CpVV3cUhbtIszPxw1WsKN7NPz5YFbiv\ngl32UbiLNDO3v/hZoPb/+uEIctqkUaNlMVKLwl2kGSmvrA7c54ju7fTJU/kKhbtIM/D4jDVs3LmH\nBwKeQAUU7LJfCneRZuCX//w0UPsp148gxYxUBbscgMJdpIl5FHPlg/J1ByU5OIW7SBN55P2V7Cir\n5L6pS5u6FElC9Ya7mfUEJgJdAAcmuPt9ddqMBF4EVoY3Pe/ud8S2VJHk8pt/LQzUfsr1I9hTWU2b\n9NQ4VSTJJJIj9yrgZ+4+x8yygdlm9oa71/2X+Z67nx/7EkWST02NpmIkvuoNd3ffCGwMPy4xs0VA\nPhDssENEuOeNz9lbVcP4acFvjycSRKA5dzPrDQwFZuzn5RPMbD6wHrjR3YN9EkOkBbg/4Pz6mzec\nzIYde8jNyohTRZKsIg53M8sCngN+4u51b7c+Byhw91IzOxd4Aei/n32MAcYAFBQURF20SCLaW1UT\nuE+/zln065wVh2ok2UUU7maWRijYJ7v783Vfrx327v6Kmf3VzHLdfUuddhOACQCFhYX6rLS0CFc9\nMpPMVqn8+7NNTV2KtCCRrJYx4GFgkbvfc4A2XYHN7u5mdiyQAmyNaaUiCeqdJcWB2s+89TQ+27CL\nnh3axKkiaQkiOXIfDlwBfGpmc8PbfgkUALj7eOAi4DozqwL2AJd4NJ/MEEki7s6abWWB+3XOzqTz\ngMw4VCQtSSSrZaYDB/2Ms7uPA8bFqiiRRNf75pfJzcpgS2lFU5ciLZQ+oSoSY5XVoROnQYJ91d3n\n8cHyLfTu1DZeZUkLo3AXiZFNO8tp3zqNZ2avjar/CX1zY1yRtGQKd5EYqKyu4bjfTQ3Up3v7TDbs\nLCc7U/8NJfb0r0okBkrLqwL3+eCW01i0cRc9OrSOQ0XS0incRRrgX/M2MLB7O0Y/8nFU/Q/v1i7G\nFYmEKNxFolS0q5zrn/gkUJ8fndqP+99axtlHdI1TVSIhCneRKBWVBF/meMOZA7jmpENom67/ehJf\n+hcmEkBFVTWjH/mY84/qHvjWePu0y0yLcVUiX5XS1AWIJJKFG3bxwfKtgYL9qTHH0altOuMuGxrH\nykS+TEfuIhHYtLOcLu0yeG/plvob1zHskE7M/tUZcahK5MAU7iL1WFZUwun3vEtaqlFZrUsmSWJQ\nuIvUY9HGEoBAwb7yd+cy7q1lXHxsz3iVJXJQmnMX2Y+9VTX87tVFfL65JPByRwAz4/rT+tM5W1d3\nlKahcBfZjynzN/C3aSs488/vRtznByP7AmgNuzQLmpYRqaWkvJLszDSmR3Hi9OdnH8YlxxTQs6Mu\nJyBNT+EuEjZz5Ta+/bcPGTkgL/Ddk/Yp6KS7J0nzoGkZkbA3F20Ggt0W7+NbT2dwj/a8ecPJ8SpL\nJCoKd2nRdu6p5NZ/fsqK4lImvLsicP+87Axe/OEI+nXOikN1ItFTuEuL9pe3lzF5xhpO/dO0iPt8\n57gCAC4Y3D1eZYk0mObcpcWpqXEWbtzFoPz2UR2t//brR/Ld43vTv0t2HKoTiQ2Fu7Q4D09fyV2v\nLOKwrtGHs4JdmjtNy0iL88THawBYvKkk4j7zbj+TE/vnMvu20+NVlkhMKdylRZj2eTG9b36Zfy/Y\nyIri3YH7t2+TxmNXD6NTVkYcqhOJPYW7tAh3v7oYgGsnzYm4z58vHgzAw98tjEtNIvGkOXdJWmu2\nljFpxmquPbkvizbuCtz/wqE9uHBojzhUJhJ/CndJWmMfn8On63cGWhEzoEs2SzaXMHp47/gVJtII\nFO6SVLbv3sus1ds5Y2AXPl2/M1DfTm3TmfKjESwvLuWwru3iVKFI46g33M2sJzAR6AI4MMHd76vT\nxoD7gHOBMuAqd498clMkRr7/2GxmrtpGfk7wi3cd26cjaakpCnZJCpGcUK0CfubuA4HjgLFmNrBO\nm3OA/uGvMcCDMa1S5CDK9laxrKgUgJmrtgGwfseeiPoW9urA7NtOZ/Tw3oy77Oi41SjS2Oo9cnf3\njcDG8OMSM1sE5AMLazUbBUx0dwc+MrMcM+sW7isSV9dNmsO0z6O7imN+h9Z0ysrg1xccEeOqRJpW\noKWQZtYbGArMqPNSPrC21vN14W11+48xs1lmNqu4OLr/jCIQulPS9t17AQIH+6gh3XnjpyeRm5XB\n/37zqHiUJ9LkIj6hamZZwHPAT9w9+LoywN0nABMACgsLdadhidoPJs/hzUWbGdgt+Px4x7bp9O+S\nzSx92lSSWERH7maWRijYJ7v78/tpsh6ofSfgHuFtIjFTWV3D7ooq4D/XXl8Y4fr1a0/uy6SrhwFw\n45kD4lOgSDMSyWoZAx4GFrn7PQdo9hLwQzN7EhgG7NR8u8Ta1Y/O4t3Pizm2T8fAfTu0SWNE/1xW\n3X1eHCoTaX4imZYZDlwBfGpmc8PbfgkUALj7eOAVQssglxFaCjk69qVKS1ReWU1ldQ3ZmWm8G55b\nn7lyW0R9//uCgXRom86Pn5zLFcf3imeZIs1OJKtlpgNWTxsHxsaqKJF9Lhr/AQvW74rq8rwdszL4\n2uDujBrylXP7IklPFw6TZmdnWSVFu8oBWLA+NKce6eV5H7nqGH4fXgFz5sAu8SlQJAHo8gPS7Jxw\n91R2762Oqm9mWirfPqYn3z6mZ/2NRZKYjtylWVhWVPrFlRuDBvu/f3Ii910yhOzMVlGdbBVJRjpy\nl2bh9Hsiv0F1XRmtUhk1JF9z6yK1KNylybzy6UZSzDh7UNfAfWf+8jSWFpXy7Ox19MltG4fqRBKb\nwl2azA8mB7tw6JkDu/D6wtCHl1qnpzK8Xy7D++XGozSRhKdwl0Z12f99RPec1nRrnxm4732XDGXr\n7gqWFpWSnZkWh+pEkofCXeJuRXEpWZmtyMvK4IPlWwP1/fPFg/npU/MAyExLoUeHNvTo0CYeZYok\nFYW7xN2pf4r+ZKnuYyoSHYW7xMXvXl3E4B45tIti+mTpXefw3y99xty1O+JQmUjLoHCXmPl8cwmd\nszPIymjF36ZFflNqgCuP78XED1cDkJaawl0XHhmPEkVaDIW7xMyZf34XM/AortR/x6hBXD2iDyXl\nVbEvTKQF0idUJWruzrF3vclD763gOw/NCG+LvP8HN5/6pee9OrVlUH77WJYo0mLpyF0CcXf++s5y\nzhzYhWp3ikoq+O3LiyLuf93Ivjz4znIAuue01vXVReJE4S4ReXtxEf/VuwM7dlfyh9eW8IfXlkS1\nn1+cfRiXDyuIaupGRCKncJcDWrxpF/3yslizrYzR//g46v2suvs8Lvzr+xzbO3RRL61TF4k/hbt8\nyeqtuyno2IYlm0s4+973yM9pzfodewLvZ8r1Izj/gelfPP/nD4bHskwRqYfCXVhWVELfvCzmrNnO\nNx/8kKEFOXyyJrTGPEiw3/n1QfzqhQUADMpvr/l0kSakcG+B3J0Plm/lhL6d+PeCTVw3eQ6Hd2v3\nxfXU9wV7JM4/qhtT5ofuhX7Fcb24cGg+qXbQuzKKSCNQuLcQ5ZXVTJ6xhu8e34s/vfE5D76znBSD\nmvCJzX3BHonaUzXjLjuasafsonN2BgBZGfonJdIc6H9iEqqoqiajVSprt5Vx2wsL+NX5A7+4Gcad\nUxZ+0a4mwIqV7IxWlFSEPmD0/s2nMu3zYg4P37T68G7tYle8iMSEwj0J7Cyr5J3Pixg1JJ//eWUR\nE95dwaXH9uSJmWsBmBblXY5qT9V8+puz+GD5Fg7vGgrykw/Ni03xIhIX5k204LiwsNBnzZrVJO+d\nqLaWVrB4UwnD++Uyftpy7n518ZdOYsbCj07tx/1vLWPkgDz+MfpY1m0vIzcrg8y01Ji9h4hEz8xm\nu3thve0U7s3Dnr3VVFRVk9MmnU/WbGdF8W5OOjSPKx6eweJNJXzj6Hyen7M+Lu/9wtjhfP0v7zP5\nmmEM75eLu2M6KSrSLEUa7pqWaQSbd5WTYkZedgZT5m+gdVoq/TpnMeov79M6LZXO7TKZV8/lbWMR\n7OmtUthbVcOvLxjI5cN6cf0Tc/jjtwaTnZn2pWWLCnaRxKdwj1BNjZOSEgq9JZtK6NWpDcUlFTw4\nbTlnHdGV2au3c//Updx01gAeeGsp5ZU1dG2XyaZd5Qfd7w4q2bjz4G2CKOzVgVmrtwPw+PeG0aVd\nJqf9aRoLfnMWWRmtqK5xUsPj+NsV9f7wF5EEVe+0jJn9HTgfKHL3Qft5fSTwIrAyvOl5d7+jvjdu\nzGmZiqpq0lNDF8AsLq0gp3U6Ne4s3lRCqxRjd0UV5VU1bC2tYGvpXgD+/v5KNu4sZ1ifjsxYua1R\n6qzPBYO78695GwCYfM0w7p+6lBkrt/HZb85i555K7pyykL9cdjQpKaapFZEkFbM5dzM7CSgFJh4k\n3G909/ODFBjrcF+/Yw+n/2kaVTU1VFY3r6tSHdY1m8WbSgAYe0pf/vJ26KqID11ZyDUTQ9+Dd24c\nyQUPTKekooqVvzuXh6ev5PWFm3n6+8dTVFLOJ2t2cNYRXQGorK4hLVVXaxZpiWJ6QtXMegNTmlu4\n7yyrpPCuNyIO8y7tMti8q4KvDe5O37wscrPT6dQ2nezMNDJapdChbTrZma0oq6ima/tM0lNT2LK7\ngo5t0mmVmsKu8kqy0luRkmKUV1aTlppCaopRE14wvm/aRkQkXhr7hOoJZjYfWE8o6D87QFFjgDEA\nBQUFDXrDlVt2c8of39nvawO7teOp7x9Hq5QU9lbX0L51wPt4Zv/nYefszC8e174faO2lgQp1EWlu\nYhHuc4ACdy81s3OBF4D++2vo7hOACRA6co/mzd5eUsRNz8xn6+6KL7Z978Q+XD3iELq2z/xK+9Zo\nfbaItDwNDnd331Xr8Stm9lczy3X3LQ3d9/50bJPOqYflUVntjBrSnZMPzdOJQxGROhoc7mbWFdjs\n7m5mxxK6L+vWBld2AIN75jC4Z068di8ikhTqDXczewIYCeSa2Trg10AagLuPBy4CrjOzKmAPcIk3\n1cdeRUSOV0KVAAAEYElEQVQEiCDc3f3Sel4fB4yLWUUiItJgWiwtIpKEFO4iIklI4S4ikoQU7iIi\nSUjhLiKShBTuIiJJqMnuxGRmxcDqKLvnAnH5BGwzpjG3DBpzy9CQMfdy93pvYtxk4d4QZjYrkqui\nJRONuWXQmFuGxhizpmVERJKQwl1EJAklarhPaOoCmoDG3DJozC1D3MeckHPuIiJycIl65C4iIgeh\ncBcRSUIJF+5mdraZLTGzZWZ2c1PXEy0z62lmb5vZQjP7zMx+HN7e0czeMLOl4T871OpzS3jcS8zs\nrFrb/8vMPg2/dr8181tTmVmqmX1iZlPCz5N6zGaWY2bPmtliM1tkZse3gDHfEv63vcDMnjCzzGQb\ns5n93cyKzGxBrW0xG6OZZZjZU+HtM8ysd6AC3T1hvoBUYDlwCJAOzAMGNnVdUY6lG3B0+HE28Dkw\nEPg9cHN4+83A/4YfDwyPNwPoE/4+pIZfmwkcBxjwKnBOU4+vnrHfADwOTAk/T+oxA48C14QfpwM5\nyTxmoDewEmgdfv40cFWyjRk4CTgaWFBrW8zGCPwAGB9+fAnwVKD6mvobFPCbeTzwWq3ntwC3NHVd\nMRrbi8AZwBKgW3hbN2DJ/sYKvBb+fnQDFtfafinwt6Yez0HG2QOYCpzKf8I9accMtA8HndXZnsxj\n7kjoYKUjoRsCTQHOTMYxE/pBVjvcYzbGfW3Cj1sR+kSrRVpbok3L5ANraz1fF96W0MK/bg0FZgBd\n3H1j+KVNQJfw4wONPT/8uO725upe4OdATa1tyTzmPkAx8Eh4KuohM2tLEo/Z3bcBfwTWABuBne7+\nOkk85lpiOcYv+rh7FbAT6BRpIYkW7knHzLKA54CfuPuu2q956Ed20qxVNbPzgSJ3n32gNsk2ZkJH\nXEcDD7r7UGA3oV/Xv5BsYzazvsBPCf1g6w60NbPv1G6TbGPen6YeY6KF+3qgZ63nPcLbEpKZpREK\n9snu/nx482Yz6xZ+vRtQFN5+oLGvDz+uu705Gg58zcxWAU8Cp5rZJJJ7zOuAde4+I/z8WUJhn8xj\nLgQ+cPdid68EngdOILnHvE8sx/hFHzNrRWiKb2ukhSRauH8M9DezPmaWTugkw0tNXFNUwmfEHwYW\nufs9tV56Cfhu+PF3Cc3F79t+SfgMeh+gPzAz/CvgLjM7LrzPK2v1aVbc/RZ37+HuvQn93b3l7t8h\nuce8CVhrZgPCm04DFpLEYyY073ycmbUJ13oasIjkHvM+sRxj7X1dROj/S+S/CTT1CYkoTmCcS+hk\nzXLg1qaupwHjGEHoV7b5wNzw17mE5tSmAkuBN4GOtfrcGh73EmqtGiB0pLQg/No4Apx0acLxj+Q/\nJ1STeszAEGBW+O/6BaBDCxjzLwj9EFsAPEZolUhSjRl4gtA5hUpCv6FdHcsxApnAM8AyQitqDglS\nny4/ICKShBJtWkZERCKgcBcRSUIKdxGRJKRwFxFJQgp3EZEkpHAXEUlCCncRkST0/wH8aqah4iJI\nlwAAAABJRU5ErkJggg==\n"
},
"metadata": {},
"output_type": "display_data"
}
]
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "### Show History of $\\mathbf{b}_{2}$\n\n$\\mathbf{b}_{2}$ の遷移をグラフ化します。"
},
{
"metadata": {
"collapsed": false,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T00:03:21.976465",
"start_time": "1970-01-01T00:03:20.284410"
}
},
"cell_type": "code",
"source": "# Draw Norm of b2 History\nplt.figure()\nplt.title('b2 history')\nplt.plot(range(len(b2_history)), b2_history)\nplt.show()",
"execution_count": 17,
"outputs": [
{
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x2ed79d30>",
"image/png": "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\ngg==\n"
},
"metadata": {},
"output_type": "display_data"
}
]
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "### Show History of Squared Error\n\n二乗誤差の遷移をグラフ化します。"
},
{
"metadata": {
"collapsed": false,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T02:52:20.700685",
"start_time": "1970-01-01T02:52:18.392303"
}
},
"cell_type": "code",
"source": "# Draw Squared Error History\nplt.figure()\nplt.title('Squared Error History')\nplt.plot(range(len(SE_history)), SE_history)\nplt.show()",
"execution_count": 39,
"outputs": [
{
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x2f00ab30>",
"image/png": "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\n"
},
"metadata": {},
"output_type": "display_data"
}
]
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "### Show History of Predict Results\n\n認識誤差の遷移をグラフ化します。"
},
{
"metadata": {
"collapsed": false,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T02:52:32.484951",
"start_time": "1970-01-01T02:52:30.808438"
}
},
"cell_type": "code",
"source": "# Draw Truth and Predict Data\nplt.figure()\nplt.title('Truth and Predict Data History')\nplt.scatter(x_history, t_history, c='red', s=100, label='Truth')\nplt.scatter(x_history, py2_history, c='black', s=10, label='Predict')\nplt.legend(loc='upper right')\nplt.show()",
"execution_count": 40,
"outputs": [
{
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x2efb0e10>",
"image/png": "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\nAABJRU5ErkJggg==\n"
},
"metadata": {},
"output_type": "display_data"
}
]
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "### Show History of Predict Rates\n\n認識率の遷移をグラフ化します。"
},
{
"metadata": {
"collapsed": false,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"end_time": "1970-01-01T02:52:57.756888",
"start_time": "1970-01-01T02:52:56.214850"
}
},
"cell_type": "code",
"source": "# Draw Correct Prediction Rate History\nplt.figure()\nplt.title('Correct Prediction Rate History')\nplt.plot(range(len(CPR_history)), CPR_history)\nplt.show()",
"execution_count": 41,
"outputs": [
{
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x2ee36610>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEICAYAAACktLTqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztvXucJGdZ9/27uqvPh9nDzO7OHrK7STbZnUAMZMkBVIKA\nEkADiho8IDz6xiAor/qo4fXw+qr44uOjgnKIUU6KkgcBIfKEBFEDhICQkIPZmd3sIckeZma3Z/bQ\n50N1388fVXf1XdVV3dU93duHvb6fz3x2uruq666a7V9d/buv+7pICAGGYRhmsggMewAMwzBM/2Fx\nZxiGmUBY3BmGYSYQFneGYZgJhMWdYRhmAmFxZxiGmUBY3Jmxh4gEEV1p/n43Ef1uj++TJ6LL+zu6\n0YeILjPPPTjssTD9g8V9TCCinyKiR80P4RIRfYmIvncExvVWInq4wzYPEVHZHPsKEX2OiGYHMR4h\nxJ1CiD/stJ05pl9w7JsUQhzr95iI6DkiKpnnf5qIPklEUz733WXevLQej+26PxF9nIj+CACEEMfN\nc693eK+Of2tmdGBxHwOI6NcAvA/AHwPYDOAyAB8E8CM9vFeLSPQqHF3yTiFEEsBVANYB+Au3jSY4\nevxh8/y/B8ALAfzOkMdz0blI/88YExb3EceM8P4AwDuEEJ8TQhSEEDUhxBeFEL9pbhMhovcR0aL5\n8z4iipiv3UJEJ4not4hoGcDH3J4zt309ET1BROeJ6BEiulYZxw4z4s4Q0SoRfYCI9gG4G8DNZlR6\nvtP5CCHOAvgsgBeY7/txIvowEd1PRAUArzDP538S0XEz0r2biGLKWH7D/PaySET/zXG9rIjUfHyb\neU5ZIjpKRK8hovcA+D4AHzDH/QFzW9XemSKivzPP93ki+h0iCpivvZWIHjbHeI6IniWiW/38PYUQ\nywAeBHCNMsbXEdHj5hhPENHvK7t8zfz3vDnWm819/hsRLZjHf5CIdvo5vhvO6N48v2NElDPP7ae9\n/tY+rtM3iOgviGgVwB8Q0VkieqFy7E1EVCSimV7Hz3gghOCfEf4B8BoAOgCtzTZ/AOBbADYBmAHw\nCIA/NF+7xdz/TwBEAMQ8nnsRgDMAbgQQBPBzAJ4zXw8CeBJGtJ0AEAXwveb7vxXAwx3O4SEAv2D+\nPg3g3wH8vfn44wAuAHgZjGAjah7nPgAbAKQA/AuA/1+5Hqdh3BwSAP4RgABwpfJ+f2T+foP53q82\n33sbgL3OMSnjVN/n7wB8wTz+LgDPAPh55ZxrAP4v89q8HcAiAPI4/+cAvMr8fTuA/wLw+8rrt8CI\n5gMArjXP7w3ma7vMcWnK9rcBOAJgHwANxreARzyO3bK/y3WytjGvaRbA1eZrswCu8fpb+7hOOoBf\nNt87BuBDAP5E2f9dAP5l2J+zSfwZ+gD4p8MfCPhpAMsdtjkK4LXK4x8C8Jz5+y0AqgCiyutuz30Y\n5g1Bee4QgJcDuBlAxikQ5jYtH3iXbR4CUARwHsApAP8AYMZ87eMA/k7ZlgAUAFyhPHczgGfN3z8K\n4L3Ka1fBW9z/GsBftBmTq7jDEOwqgDnltV8E8JByzkeU1+Lmvls8jvUcgDyAnLndF9yupbL9++S4\n4S7uX5ICaj4OmNd3p8t7yf3PO36q8Bb38wB+DECs3d/a53U67niPmwAch3kjBPAogJ8Y9udsEn/Y\nlhl9VgFMd/ArtwJ4Xnn8vPmcJCOEKDv2cT63E8Cvm5bMefNr9w7zfXYAeF4Iofd8FsCvCCHWCSG2\nCSF+WgiRUV47ofw+A0MsH1PG8YD5PMzxqNur5+1kB4wbX7dMAwih9ZpuUx4vy1+EEEXz12Sb93yD\nECIF48b6CgDXyxeI6EYi+g/T2rgA4E5zDF7sBPB+5fqchXFT3NZmn2nz+q8TQqyD8Y2nBSFEAcBP\nmmNYIqL/TUR7vd4Tna+T+reCEOJbAEoAbjHf90oY39KYPsPiPvp8E0AFwBvabLMI4wMvucx8TuJW\n+tP53AkA71EFQAgRF0J8ynztMo8bTD/KiqrvsQLjw3+NMo4pYUxGAsASDNGWXNbmfU8AuMLHMZ2s\nwLBdnNf0VJt9fCGE+CqAv4JhiUn+EYbA7RBCTMHwtqnNOE8A+EXH3yomhHhkreMzx/igEOLVMCyZ\ngwD+xmMsfq6T2/g/AeBnAPwsgM+4BB5MH2BxH3GEEBcA/B6ADxLRG4goTkQhIrqViP6HudmnAPwO\nEc0Q0bS5/Se7PNTfALjTjCKJiBLmRF8KwLdhiOp7zeejRPQyc7/TALYTUXjNJwtACNEwx/IXRLQJ\nAIhoGxH9kLnJpwG8lYjmiCgO4P9t83YfAfA2InolEQXM95FR6GkArjntwkgJ/DSA9xBRypys/DV0\nf029eB+AG4joJvNxCsBZIUSZiG4A8FPKthkADcdY7wbwbiK6BrAmNX+8HwMjos3mJHQCRlCRN48P\nOP7Wa7hOnwTwRhgC/3f9GDfTCov7GCCE+DMYH5rfgfFhPwHgnQA+b27yRzC8y6dgTNZ913yum2M8\nCmOC8AMAzsGYsHur+VodwA/D+Ap9HMBJGF/dAWNy9ACAZSJa6eX8XPgt8/jfIqIsgK8AuNocy5dg\niOO/m9v8e5tz+jaAt8GYoL0A4KtoRpnvB/AmM9vkL112/2UY3v8xAA/DiK4/uuYzM8aVgRG93mU+\n9UswMklyMG7Mn1a2LQJ4D4BvmDbMTUKIf4YR+d9rXp+nAfjK1vFBAMb/tUUYds/LYUwYA+5/666v\nkxDiOIDHYUT1X+/TuBkHclKDYRjmokFEHwGwJIS45PL9Lxa8qIBhmIuKad/8GIz0W2ZAsC3DMMxF\ng4j+EIa186dCiGeHPZ5Jhm0ZhmGYCYQjd4ZhmAlkaJ779PS02LVr17AOzzAMM5Y89thjK0KIjrV4\nhibuu3btwqOPPjqswzMMw4wlRNRuVbYF2zIMwzATCIs7wzDMBMLizjAMM4GwuDMMw0wgLO4MwzAT\nSEdxJ6KPEtEZInra43Uior8koiNE9BQRvbj/w2QYhmG6wU/k/nEYrc28uBXAHvPnDhgdfRiGYZgh\n0lHchRBfg1H604vbYLRJE2aXlXVENNuvATJMO4QQ+OxjJ5GvrKVJ1GjxyJEVHDmTb7vNM6dzeORI\na4Xl5QtlPPD0Utt9q3oD9377OOoNe+kRIQQ+993hX8uKXsenv3MCztIoQgj806MnUKrWW/Z54Oll\nnMn67/nx9KkLeOz5c223OZPtfC3LtTo+/NBR/PmXD7X8/NW/Hca5QtX3mPpNPzz3bbC30joJj3Zf\nRHQHET1KRI9mMhm3TRimKw4sZvHr//QkHnh6ufPGY8KvffpJfPA/jrTd5n1feQa/cu/jLQJ4z9eO\n4e3/8F2Ua60CKPny/DLu+tx/4fHjdnE7fraIX/v0k/iXJxc99rw4/NvCGfzmZ5/C06eytucPn8nj\nNz7zFL7kENxStY63/8Nj+Ptv+VrbAwB475cO4nc/7+o0W8hrWdG9r+U3j67iTx44iL/89yP4q/+w\n//zZvz6Dz373pO8x9ZuLukJVCHEPgHsAYP/+/VyxjFkz84uGAOTLtSGPpD/UGwKZfAXni+0jvtPZ\nClbyVWRyFWxKR63n55cuQAhgJV/B9vVx133lNTtftF8z+fhMtrKWU1gzp80I/HzJfg2s8eXs48vk\nKhCiu3GfzpZxrtj+/8z8UhZCALmyjkgy6LrNmZwx1m/c9QPYti5me+3GP/4K5peybrtdFPoRuZ+C\nvafldvSh1yTD+EF+eAouX9XHkXPFKuoNgWy5vTWSMQXugCIeQghLuDM5b6GT1yzruCHKx5n8cFua\nyrFnS/ZrkC3VbK9b25vjzeT9i3smX8HZQqXFmpIIIZrXqeR9E5Bj2Zho7TK5bzZt/T2GQT/E/T4A\nbzGzZm4CcEEI0d6oYpg+IT88xepkeO5NYfMWFCGEtZ0qHqfOl6ybQltxX3QXLSmm7fa9GFjXwOvm\n4xK5uz3vRUWv43yxhoYAVgvu+yxdKFvfFNrdaDO5CtJRDdFQa2Q/N5vGkTP5trbOIOloyxDRpwDc\nAmCaiE7CaEgcAgAhxN0A7gfwWhj9LIswelYyzMARQmBBRu6VyYjcvYRNpVCto2R66urX/oWlXPN9\nPKLYlXzFsjWcouUlnhcbOfbWm09/xH0137R7MrkKNqWiLduoN822kXu+gplUxPW1ua1p6A2Bw6fz\neMG2KV9j6ycdxV0I8eYOrwsA7+jbiBjGJyfPlZAzMzsmL3JvHy0CQDBAWFBEaH4xCyJACG+hW1jy\nFi1LPLuwNwaBd+RufrPIu4v7Sr6CRkMgECBf7+/8XcV2ndrcaDM5b3HfN5u23msY4s4rVJmx5YAp\nbEST47lL4SrV6qjqDfdtTEF60Y51eHa1YN3Y5pcuYPd0AhsSYU/RkhFpIhxsa3sMs0Nb9567EYnr\nDYHzbaJs5/u7vZdkfimLZERzHYfzvWZcIn8A2LUxgVgoOLRJVRZ3ZmyZX8oiQMAVM0kUJyTPfUUR\nm5xHxLhi3gC+/6oZCAEcXDbsmPmlLPbNpjGdDFvbOJlfymLrVBTb1sdcxNN4XK41hpbr3mgIrJq5\n4V43nwulms3HVgXa67xV1Mh/Je+elTS/lMX+Xetdx6Gykq9iJukeuQcDhL2zqaFNqrK4M2PL/GIW\nl88ksTERnrjIHfCeyJNi9vKrjGY884tZZMs1nDhbwtxsGjOpSNvIfW5rGuloyFM8AW/RGzQyWwjw\nnvAFHL55voKYOaHpx3eX20RDAdftc+Uanl8t4vrL1kMLkKfnXqzqyFd0T1sGMCZVjZTKi/9NiMWd\nGVsWzEg1EdEmznMHvCfyMrkKggHCC7ZNIR3VML+UxUFzMnVuaxozyYirb16u1XFspYC52TTSMRdx\nV443rEnVdjc3dby2aD1Xwd7ZVMvznsfIVbAuHsLsVMz1Oh0yvwlds839OjWPa9xg2on7vtk0cmUd\nJ8+VOo6r37C4M2PJhWINp84bkWo8HERxUiL3XAXTSSNn2ktUMrkKNibCCAYIc1uNXOr5xQsAgGuU\nyN0ZLT5zOod6Q2DfbBrpqNZqy5R169hDE3fzuNPJcGvkXq61jE+mhc6Zk5d+xr2Sr2AmGTFugrnW\nnH7pkXtdJ2usZn5928h9a3NS9WLD4s6MJfIDOLfVFPdJSYXMV3D5TBKA90Semn63bzaNg8tZPL2Y\nxcZEGDOpCGZSEVffXHq/c1vdI9JcuWYd2030LgZSnC+fSSLnjNxLenN8+eaka7XewO7pBCJawFem\nj8xw8bKv5hezWB8PYUs62jZyl/t6ee4AsHdLCkQYyqQqizszlljiPptGPKyhMAG2jFxcc4UU9zai\nIsV9bjaNcq2BryycxtzWNIjIes0pXDIDZMf6uOG5l2q26D5b0rFzQxzBAA0tHVKO+YqZpOucwOXT\nCdt2avTcbq7Bdox8BdPJCKaT7llF80tZ61rK69RurNOp1tWpknhYw+7pxFAmVVncmbFkfjGL6aTx\ngU5EDFtmmOl7/UBOEl4xYwiYV7ZMJlexokX5tf98sWZZEzPJqLWdyvxiFnu3pBAIENIxDQ1hTyHN\nlmuYioU8Re9ikMkZk6OzU1EUq3XU6kY6qBAC2VIN08kI1sVDysIl0/dOdiHuSuSeLeu2Imt6vYGD\nyzns22Jcy3RMa/kGob5PgICNCe/IHTDLEHDkzjD+WDCjK8CIjuoNgYpHXvi4IIVp58YEggFytWUa\nDWF4xmZ0vmdTCqGgsWhHXg8rclei70ZD4OByztomHQ0BaE6i1uoNFKt1pGMh3yI5CKTllI4aOeZS\nWAvVOhoCSEU10yuvWNsDZuSe7DzuQkVHsVq3xB2wp08+u1JAVW/YrpPnN6h8BRsSEQQ7LJqam03j\n5LkSLvjIwe8nLO7M2FHVGzh8JmdFqomwkQbXy6SqEALlWr3jj1eBKee43Pb1WozkRIrMplQEqajm\nKirnSzXoDYFpM3IPawFcucnIFLEidylaitCdOFdEvqJb26Rjpribx5Aimpbi2caWaTS8r9lavz3J\nqNoanymI8l/r5pO3lxyQYt0pz131yZvi3kyrVOdy5PE85z7arE5Vke/11Mnz1nWS30gGyUUt+csw\n/eDImTxqdYF9Zvpb3FxJWKjo2OBSnQ8AfuzDj+DVc5tx58uvsD3/rnufwH0+6pdftTmJL//qyz1f\nf+LEebzpw49Ad7kJaAHC//rFm3D9zg3Wc/WGwKv/4qv4lR/Ygze8yGh/oAqVl9e7okSqkmu2pvHs\nSh67TT96XSwEzeGbS89XLolPOSJjp3i2sxHe+KFv4MmTF1xf+9EXbcOf/+R1nvt+6tvH8YlHnsOX\n3vV9IGqNeDO5Cq6YSTa/WbTcfIzxPX78vLV9KEiYMsd9tlhFrd5AKGjErW/56Ldx3fYp/NoPXm1s\nr1y/9fHWzKD5xSzCwYA175GKaNZq4bBmj4Uz+aovcb/GvOY/+5FvW8/d+fIrcNetezvuuxZY3Jmx\nQwrPNVtl5G78N/aK3M8Vqnjs+XPQAmQTdyEEvnY4g+t3rser9m32PN43jqzgG0dX2tYtWVjKQm8I\nvPMVVyIRaX6scuUaPvTQURw9U7CJe65cw7FMAQ8dOtMi7huTYaRjmusiJvUGIPnVV1+FH33xNmim\noAUChGmHRSFX8169xbghOm0ZKaJSPFfyVdfzPV+s4smTF/CqfZtx/c71ttf+dX4ZXzvc2h1K5Ynj\n53FwOYeT50rYsaG13nwmX8GNl29QInfdPr6YZjs3Of8gJ5KFAM4WqticjqJcq+PhwxmcK1Sb4p7r\nIO5LWezZnLRuDnIcuXINGx1ZMSu5Cq40bwLt2JSO4v23X4fF880MpOt2rOu431phcWfGjoWlLKKh\nAHZPGx+seMSwZbwyZmSO8YK5UlBGjMtZo6zrbddtxVtu3uV5vAABDx9ZQVmvIx52/8hIgfjlV16J\niNYs/5o1xb11wZBujsleyXEqFkJEC3pG7m7ivm1drKVRhNM3X1jK4oqZpFWa1mnLyPGkYyHMJCOo\nm3VanN+E5Hh/9uad1gpZSUQL4A++OI8zubJrpUV5joAhok5xr+oNnC/WMJOMIh3THOOz33xKtToK\nFd2WFiqtqkyugs3pKA4t59AQwKHTOej1BrRgwHb9psxroObMzy9m8QN7N1ljao5Dt4m7zK/3E7kD\nwG3XuTanGyjsuTNjx/xiFldvSVsTWVbk7pHr3mxOoePU+eZKQSvv2/za7EXT9vH29OWqR1XYASAZ\n1kDkspTeFK0jmbyVraGKhddEnpu4uzGdDLfYMtL7Nd7fXhRLjYxlISyvNEHA/Zo1qyDmWl5zjt8t\nNVDWVpe2lDE+xzcL8+Yj30u9Zs4UUDnWqt7AsZWC9VowQFgfDyMUDBhF1mSzj1wFq4Wq4zrZxyGR\n+fV+xX0YsLgzY4XskKOKSzzcPnKfd5TFdf6+t4O4NydsO1QHdFnMEggQUpFWi0WKRd2s9+18j3TM\nfWVkJl9BRAsgFWn/pVuN3M8Vqli8ULZds5RTPJXIuN0qVTUF1Yl8/3Y53U7hdXvNNqHq/GYR1WzZ\nQGrmkCr6znGoHark6l65j7OrlXqdnOOwxupjdeqwYXFnxorFC2VcKNVs0ZX0uL3Ed34pixt3b2hZ\nKTi/lMXOjXGrtKsX0oppF7mrIuPEtY6L8nh+yZicVC2GdpH7TCriOhmpovrmC0v2yVTAyLKJhZpl\nf22RsSWe7kvz1WuvMhUPYdu6mOdkrFHx0TtyV8U9EQ4iQMo3C/Pmk4o2x7d8oYxVc0GS3M8Yd/MG\n8uLL1iGsBawxZZTtAWMBkvNmoN7sm5G7/f+WbHgib4SjCIs7M1Y0rZSU9ZyMrN3Et6LXceRMHtfv\nXI/dGxO2Gh8Ljm8AXiQiPiL3duIebU2nUx+rUaUl7rGQbRGPdRyfPq/0zc8Vq7ZaKbZxKd8OsiUd\nATKupdcK16rewBElBdUNo9aNeybNhVINtbrAplQEp86XcMHRoFoVdyKy3RSz5RpioSDCWsAa3zOn\nDU9dPo6GgkhFNWRyFeumdu32dbh6c7PsrvMmrKZ9zi9lsX19zPLi5TWSx3cb6yaO3BmmPywsGd2G\nrt6i2DJtIvfDp/PQGwJzW9PYt7W5UjBf0fHcatGXuFuRe5s8ei9bBjBF1CNyv3pzCgtLOdviGgAt\ni3jU40y3qWUisXzzfAXzS1lsSrVaKeq3g1y5hnQsBCJCMqK5lsOVKahekTtg3ECeXSmg5HKtpIjK\nidiFZXv0nnFEw+loSEnV1C2hXR83bBUp2Op1l3bU8bNFFKt17JtNYW42bU2mO2+OapE1t5u9l+fe\nzJd3nzgeBVjcmbFifjGLXRsTNitF1vJ2i9zVCcC52TROnDVWCh50LFZph/T0vRqCOIXZiVvmS7as\ngwh4ye71mF/KKl/zm5E70Coq7ewfleZCpmrLZKo1LltkrFu57zKt0K02DdB+AnpuNm1lqDix6tBf\n3axDb3s9bzSblpPSxjeLZuQuhTYYIGxIhK3xuEXizbFOYW5rGquFKpaz5dbI3SyylslX8OxKoeU6\nxcNBY7Vw2fl3qCIcDFg3nFGExZ0ZK5yTqYDxYY+Fgq6R+/xiFvFwEDs3JqwP7sGlrKdV4UaiQ+Se\ncQizk5QSgUqypRqSEQ3XbJ1CvqLj8ePnAMDmuQN2O6BWb+Bs0bvzj4p8n1PnizhyJu96nmo522yp\nKZ4AXFepNlNQE57HlWsP2nnqRreo1oVSzqha/WaRNb9ZqONbutA6qTmdimAlV8H8YhbBAGHP5qT1\nd//m0VXU6qIl0geAhw+vQIjW/w9G8bDWyW2/cx/DhMWdGRuy5RqOny26RqGJSNBVfOeXjGJZwQBZ\nN4WFpSwWlrJmw4bOX6vjHTz3jMuqURU1AlXPJR0NWWP66jMZ4z1aIvfmMc8WqhDCX4aG3OaRo6uG\nLeUm7g5P2ybubpG7IwXVje3rY0hFNGuSWEX11GUdeufrLeKuzAlIq0o9P8B+U5XZL/NLWVxp5vXv\nNRduWdfYFulHba91uk7WWPMVTI+w3w6wuDNjhNVtyOUDGA9rLT6v9FFlNLYpFcFG8+v8/KLxDcBP\n5JXokC3TKfc8HQ0hV9Ft9WkMDzmEq7ekECDg6+bKzuaEqvTcW7sP+RH3RDiIWChova+rLaPYRaqn\nLY+hirtbCqobRIR9s2nXXHc1jXNuNo3DZ3K2ujvGpHTzZqvOVbRE7uY1SISDthXBM6kIchUdT5w4\nb51zKhrCZRviLddY/f3rh1eQimrYvt6+GExeJ7e5Dz/foIYJizszNril9Eni4SAKDk/85LkScmXd\n+pATGZ2Lnjp5waiQ6MOSAYxem0RtIvdO4m6KUl4RCCNS1hANBXHFTBJnC1UECNaKUDdbphtxl775\n2UIVsVAQuza2WimyxIEQojVyT0ZxrlizsnXcUlC9mNtqTGA2HHV2VCtjbmsatbrA0Uzeen3FIZj2\nm0/rNwu3ayEfny1UrdpDgBEQnC20tsVTt/e62bt98+pmdeqwYHFnxob5xSw2JMLYnG79ULm12nOb\nAJybTePgcg4VveHLbwcMoUyEtbaRu1z16Ia1GlQR6mypGYnKcWxMNsvHphwrSOVxgPadf1Sk+Fxt\n2lKt4wqh3hAoVuu28aj7yhrzCy4pqF7MzaZRrNbx/Nmi7Xl1MlO+j7RmChUdBcekdCoaQsFMB1Un\nfIHmNfASd+MYU83flZuSuo0ssgZ4z7841xzUGwJnCxMi7kT0GiI6RERHiOgul9fXE9E/E9FTRPRt\nInpB/4fKXOpIW8AtukpEWrsxzS8axbL2KmmT6gfYTxQqMW4e7pH7St6+6tGJFE21nneurFuRqFWH\nXRHtRFgzFvGokXsHb9+Js6GH17jOFqooVOuukbG6otSZguqFvMaunro5pt3TSURDzcVFbtUupU10\nOltGvSFcbz4t4q5cQzVyl2Nyru6VRdaANtfJsU5htVCx5dePKh3FnYiCAD4I4FYAcwDeTERzjs3+\nHwBPCCGuBfAWAO/v90CZS5tavYFDp3OeH0C3PqrzS1nsnk4gFm7We5H7q2Vd/WDcPLwj93YfdDeL\nxYiUDZGR3yzUCbpAgJBypFBmchWkIppV/KsTsv2bl/0kI2FZb0f13K0SBOYqVbcUVC/2bE4aeeiO\nSdVMrjkJGQwQrt6Sti3gUo8LNK/byXMl22NjO3uxMIn8O2xJR22FvuTffTrZmuHi5zq52mMjvDoV\n8FcV8gYAR4QQxwCAiO4FcBuAeWWbOQDvBQAhxEEi2kVEm4UQp/s9YObSYTVfwT1fP4aq3kC+rBsd\ncjw+gAmXPqoLS9mW0qqXTycQ1gLYsynZUp+7HfFwEKU22TJtxT1mt1jqDYFcpRm5y6jSabc4y/52\n6/PKTJB2ESngLp7yOB/7xnP4+uEVfPu5s7j58o2+jhsNBXHlTNI2qeqWxjk3m8Z9T5zC//cvB3DC\ntHDskbtjfLHWbBnnNduQCIOo9Zy3TkWtmu9OZpIRaGbapBvqauGQo7LkKONH3LcBOKE8PgngRsc2\nTwL4UQBfJ6IbAOwEsB2ATdyJ6A4AdwDAZZdd1uOQmUuF+55cxF9/9ZjxNZqA2akobti9wXXbeMTu\nuVf1Bk6eK+FN12+3bacFA3jDdVutcsF+6eS5X73Z24uWoikzX+TEqhSvmVQEP7B3E1525caW/dTI\n/fjZIraua83m8OKG3Rtw3Y51njdEefxTlng2xX1zOop9s2k8ceI8njhxHgEivGpuk+v7uDG3NY1H\njjZru7ulcb5y7yY88PQSPvPYSQDA7ukEdioTv3Ku4pTLzWf7+hiu27Gu5f9DKBjAq/Ztxg/O2evz\nExHe+KJtWBcPwcn3XzWD9fFwS0VP5zhyZaMZjLwRzU75/1sMg34tr3ovgPcT0RMA/gvA4wBaPglC\niHsA3AMA+/fvH+9uxszAMSoQhvGd335Vx5RFQ3ztvihgiJST//Gm7+l6LPFIEOcK1ZbnnT1N3WhW\nFnSU11UmCD/61pe07qdM5OmmLfVzN+/0Peabr9iIz7/jZd7jsmyZYst4QsEAvvSu7/N9LCf7ZlP4\n58dPYTXiohlMAAAgAElEQVRfwUal8qJ6nV41txmP/94Peo9P3nzk+JSbTzQU9Dy3v3nLftfnf/9H\nrnF9/m0v293mTOyrhY2VsTlMxfytkRgmfr6XngKwQ3m83XzOQgiRFUK8TQhxHQzPfQbAsb6Nkrkk\nmTdz1P3kosfDGip6A7qZutdtZkknDNunNXKXxbDa1XtJRew13eXEqipWbqiFvY45Gjf3A6ftkYq2\nH083yEwVac30YmW02DLR4Sz1d86ZtJvYHyX8iPt3AOwhot1EFAZwO4D71A2IaJ35GgD8AoCvCSG8\nizozTAdq9QYOn877FjOrcqPS+ALony9qTNi611fvdJxAwCjG1VJet4OYqpF7sxrmVLtdukJOqLp5\n2mtFZqrItQm93GzTLePr382nG9TVwnq9gYNtyh6PEh3/mkIInYjeCeBBAEEAHxVCHCCiO83X7waw\nD8AniEgAOADg5wc4ZuYS4Ggmj2rdewLVSVzpxpSOhvou7l7ZMn6P41xKD3QW03Ss6bkvLGUR1gK4\nfMa7rku3RLQgoqEAFs/3Xzw3JiPYko7a6qgD3f09ZDqoHF9qWJG7Uvb3udUCKm0m9kcJX1dLCHE/\ngPsdz92t/P5NAFf1d2jMpYzfFniShKOPqtpsuh945bn7FndHHRfAX+ReqNah1xuYX8riKqVxc79I\nR0M4k6uAyGgJ2E/2zaZsqY6pqP80TqCZDnqhVEM0FPCc8Bw0atnfA4v+C84NG16hyowk84tZRLT2\nFQhV4o4+qpm8e0/TXklENNTqwlYLBXBffONGKqrBraVdO9TmzLIWTr+R0XoqoiHQpiBYL8xtTVs9\nYjuli3qPz7gGna7VIFFb7c0vZREKEq7c1F221TBgcWdGElnNUfMZqSbCrZF7Pws7yZrxzug9k/PX\n09Twz419ZRGqZAebQQrakTN5o3HzIMTdHMMg/Oy52SmrR2yvfw95DYbltwOwtfxbWMphz6ZUV2sk\nhsXoj5C55HBWc/SDsxuT345FfmnaPnbf3W9db2fjiVREa1s619jHELT/PLYKAJjb2r/JVOcxBhEZ\ny0nHhaWsURSsl8hdivuQ/HYAVsu/XLnm2fhkFGFxZ0aO5WwZ54r+KhBKnH1Ue7UBvGjaPo7I3edx\nbI0nzHK/nfcxjvmfz54FAOz1UbSrW5qRcf/Fc+eGOOLhIOaXsj1XUbRsmSFG7oBxnY5mCljJV8Zi\nMhVgcWdGkG4nU4HWyL3XSNGLtpG7j28I6VgI+YqORsMor+sn80MK2qPPn8WODbGBRNeD9LQDAcLe\nLSk89vw55Cp6T9+kmpH7kMU9puHR542b7DhMpgIs7swIIsV9bxcfIhm5F6t11/Kxa8Uzcs/568iT\njmoQAshX9Zbyul7IG0C5NrjUu0F72nNb03h60Sgg1svfQy6sGlYapCQdDaFcMybTOXJnmB5ZWM5i\n58a4rwqEEkt8q/VmBks/PXeXPqrd9DRVl7BnlXK/fvYB+rt4SSU14Mh4bnYKwiw0Ms62jLy5bFsX\nw5RLfZpRhMWdGTl6SfsLawGEgoRCRR9I1T63Pqrd9DRt5krrtnK/7UiGjbIFQHe157tBjmNQkbGt\nScY42zKO2vvjAIs7M1LkKzqeWy329NU3FjIqQw5C3N36qHZzHHWVo7OlnReBAFkplvsGMJkKDN6W\nuXqz0SMWMHrYdouVzTOACd9exjEufjvA4s4oOHtedoMQ7vsKIbp634OyNV4PEVIiYlSG7GWpeyfc\nIvdujiNF9HyxhnzFX7YMYIhKOqphWxelfruhmQo5GPGMhYPYPZ0AKf1hu8HKwx+VyJ3FfTL50ENH\ncNsHvzHsYQyEQ8s57P29B3DkTL7zxi686e5v4s+/fKjl+d/8zFN4xz9+1/f7HFw2qgh2M5kqkX1U\nO/U07YV4qDlhK+mmGNaUKaKL50sQwr+YbkxG8IJtUwOrQLjRFNx+rglw8sJtU9iUivhekKYiuyn1\nq4xEr8jjXzNGtsxwv+uMGUfO5PHcSmHYwxgI3zq2iqrewLMrha6XVgshcGDxgqvIPXMmj2OZPIQQ\nvgTK6lDfg9jIPqqZXAUb2vQ07QUtGEBEC9i6PXVlyzi7HvmM3P/0TdciMsDVkNdsTeNjb30Jvv+q\nmYEd465b9+FMrtzTvi++bB0+9taX4Kbd/rpADYo3vmgbLp9OYMeG+FDH0Q0s7l1QrBittiYRmX6o\ndv7xS76io1xr2PpMSnKlGnJlHSfPlXx9MLKlGmKhYE/Lu2Uf1X6XHpAkIpqtT2s3xbCSVvla2RjD\nn7hf1abDUz8gIrxir/8OS72wZSqKLT02trgY4/NDIqLhpVdOD3sYXcG2TBcUqvrkirvpdedcBLoT\nMoLNlVurJsp6KvL9O5Er6z1Pnsk+qv1enSqJh4P2yL2L4wTNydFB1E5nGDdY3LvAaJIrPCcPxxXZ\nwg2ArSGzX6S4u0XuzmYTnfCbSeJGPKIZee59Xp0qSYRbI/duvOpUVOs6cmeYXmFx7wLZo7NWnyxx\nly3cgN5sGZk14ty3XKtb77vgM3LPlv2t3nQjEQ4iXxlg5B6xR+7d3kSMmu5mow4Wd2bAsLh3gcyU\nmDRrRkbVRO7Rdyeakbtu+1Yj34vIvy2TLek9p+XFwxpW8hXU6mIgnrvMxpF06+2rgs62DDNoWNy7\nQOY46xMWuc8vZREOGo0xZAu4bpDL/esNYRM/+V57t6Rx8lzJagzdjjVF7pHgmpa6dyIe1qxvb+Va\nHbmK3mXk3hT0bkorMEwvsLh3gVydWJ2wyH1hKYurtiSxIR5eU+QO2CN/+fuNuzdYx+lEtrQGz11p\nEzcYz70ZufeyClaeVzKi9ZTzzTDdwP/DfFJvCJRqk2fLCCGsWi5qn89usIm7EvlLD/6my40c5U7i\nLoQwimr1mi0TaaYkDmJRjjFhazYD6WEV7KBXgzKMCou7T6SwA5Ml7mdyFauFWzqq9WTLZPIVKy/d\nHrkb73XlpgSmk5GOGTPFah31hhjpyN1qBtLF6lTJIFvaMYwTFnefqDVFJkncrcYYW6fWFLlfbjay\nVjNm1EbQ+2ZTHSdV5bHXki0DGBUiBxEdx8MaSjXjBiTFvZtiWINsaccwTljcfaLmN1f1yZlQlYK7\ndzZltIIr1brK4280BFbyVVwxY5QscPPc07EQ5ramcfh03kqNdEN+a1hLnjtgRNODqMUibZ9SzVgF\n220xrEG2tGMYJyzuPilMauS+lLVauKVjGhqitZVcO84Vq6g3BK6YkZG76rnrCJs1WeZm06jWGzia\n8S5M1rwZ9LpC1RDfQVgygL0bUyZfwYZ4uKuJ0UG2tGMYJ77+ZxLRa4joEBEdIaK7XF6fJqIHiOhJ\nIjpARG/r/1CHS7E6mZ77gtIYo9lQwr81IycWL5eRe8keuadjGojIqqbXblJVtXF6QYrvoMRd7aPa\nS8PnQddOZxiVjuJOREEAHwRwK4A5AG8mojnHZu8E8KQQ4nsA3ALgz4houDU6+0xB6Z05KamQxaqO\nZ1cLVgs3qxVcF7679J63roshFgoiV7Fny0hB27UxgYgWaDupumbPPXJxInfZ7alrcedsGeYi4ud/\n2Q0AjgghjgEAEd0L4DYA88o2ywCuJcPoTAI4C6D7tIsRxh65989zF0LgIw8/i9ddO4vZqcE0ZDiW\nyeOerx1D3dE0I1uuQYhmlx+1FZzXWD/6jefwyr2bsMucQF1RUgLTMc0RuetImYKmBQPYuyWFA+3E\n3Txury3fYtKWGVBt8oTSp1WdRPYLR+7MxcTPp2gbgBPK45MAbnRs8zcA/g3AIoAUgJ8UQrSEt0R0\nB4A7AOCyyy7rZbxDQ43ca20mBbvlbKGKP/rfC2gIgTu+/4q+va/KF55YxL3fOYGtLmVX925JYf8u\nY5GR9IS9KkMuZ8v4wy/OY/F8Cb/7euPLm4zcp5NhY0K2bM+WUaPUKzYl8c2jq57jlMftVdw3xMN4\nxdUz+N49gynNGrdsGR0rPdSv2TwVwfftmcZLzOvNMIOkX98P3w3gKQCvAHAFgH8loq8LIWxhmhDi\nHgD3AMD+/fvHKuVkUJ67zJ/vJb/cL9lyDcmIhkfe/cq221mRu4e4S79c9c0zuQqioQCSEc1IpVQn\nVMs1bFvf/DayKRXFSr7i2bgjW9YRDQUQ0TrXR3dDCwbwsbfd0NO+fpCR+5lsGRW90bW4R7Qg/v7n\nnXERwwwGPxOqpwDsUB5vN59TeRmAfxIGRwA8C2Bvf4Y4GqjZMv303MtS3HvIL/eL32JclufucaOR\nfvn8UtZKl5TeMxEhFdUckbtumxydToZRqwvPGjNrKT1wMYibts9zq0bZ3kF5+wzTD/yI+3cA7CGi\n3eYk6e0A7nNscxDAKwGAiDYDuBrAsX4OdNioee799NzLtd5L7frFbzEuaYd4jUXmxJ8v1rB0wWib\nlsk3KyPKPHn7cVtXjarlCnoZ57BImHn0z68arRYH5e0zTD/oKO5CCB1GNsyDABYAfFoIcYCI7iSi\nO83N/hjAfiJ6Cob3/ltCiJVBDXoYDCrP3bJlemiS4Re/EXEoGEAsFPT8FjG/mMWs6dvLKF7NGknH\nNOs8ZC139bgdxX0N5X4vBlbkvsKROzP6+MpzF0LcL4S4SghxhRDiPeZzdwsh7jZ/zwghXi+EuFYI\n8QIhxCcHOehhUKzUETYXrPRT3C1bZqCRu/9iXEbGS+uNJl/R8dxqEbddt81Wn90m7soK15zVlKJ5\nXLlUX+bGt45ztCP3iBZAgJqR+yCKkzFMv+AVqj4pVHVMxQ3habeEvltK1Yvhufv3sp0ZL5JDy4aY\nv2TXeuzcEMfCUha1egPnijXMJI1oPh0LQTerZ7rlrMvtvCP30fbcicjs01pHKEiYGuEbEcOwuPuk\nWK1jnflh7qvnbrW3G5wtk+siIvYqHtYsMJbG3NY05peyWM1XAQDTKWO9mpon77baNB3TEA4G2kTu\nvZf7vVjIdMjpZASBQP/r1zBMv2Bx90mholuRWl9tmQFH7o2GQK7i38v2Kvs7v5TF+ngIW9JRzM2m\n8fxqEcdWjDox1oSqKczZcq3ZK1QRayLCTCriGrkLIUY+cgea6ZDstzOjDou7T4rVOlJRDcEADWRC\ntVitQx9AWYN8VYcQ/ldFtovc982mQUSYM+vEfP2wMWeueu6AYa941YmZ9hD3Uq0OvSFG2nMHmpE7\nZ8owow6Lu08KVR3xiIZQkAaS5w7AmoTsJ90W43KmMwKAXm/g4HLOKjAma9F89VAGgCLupjDnyrpn\nnZiZpLu4r7Xc78Vi0MXJGKZfsLj7pFipIxEOIhQMoNbHeu5qh6dBWDOWaHaTLVPWbTXdn1stoKI3\nrIh9czqC9fGQlTEzbeW5K7aMh1jPpMJWPRrbONdY7vdiMeiywgzTL1jcfVKs6oiHjQnB/qZCNt9r\nEJOqlmh2EbnXG8JWbuGAMpkKwGbNpKMaoiFD8JorXGvIlmsIBQnRkP2/2EwygtVCtcWCWmu534uF\n1RCExZ0ZcVjcfSCEIXaJiBm5D8iWGUzkLotx+ffcnWOZX8oiHAxY3ZYAWBaNKnLWCteybk2OOmvI\nzKQiEMIomGYb5xrL/V4sEgOuPMkw/YLF3QfVegN6QyAe1hDSBue5D2Ihk1vWSjtk5Kz6//OLWezZ\nnERI6TokI3dV3CNaENFQwIzcdVehnvFYyNS0cUbblpGe+zRH7syIw+LuA1lXxvLce8xzL7m0ryvV\nmitf/UbuFb3uupBKrzdsNwughwnVWGt9mYWl5mSqRE6qOldpykVQznK/Eq8SBLlxidw5W4YZE1jc\nfSDrysQjpufewwrV51cLeOHvP4inT12wPV+q1i3B8+u5v/2T38Wv/q8nWp5/75cO4if++pu257Jd\n1kh3lv09kytjJV/BPoe4Xz6TQCIctJX0BWCV/fUqJeC1SlV+w+i1lvvFYkMiglCQsCnN4s6MNqP9\nSRoR5ORiIqxBC/aW537yXAl6Q+DE2SJesG3Ker6sNzCdDGPpQslX5N5oCPznsVVEQ8GWuujfPLaK\nI2fytuezJR2JcNB3I2dn2d95x2SqJBQM4LO/9FLMpu3iLsv+Zks1bHXpLCVXs7baMjVEtN5ruV8s\nbn/JDty4e4NlzzDMqMKRuw9kF6a4OaHai+cu36PgsGbK1Tpi4aAZ8XYW9+NniyhU61gtVG3Rb63e\nwOHTeVT0BvJK16huSg8A6qSoMRaZ7uiM3AFg75a0VW9HIvPks2XdNQqPhzUkI5pL5D7aRcMkiYhm\nuzkzzKjC4u4DNXLvNVtG5rOXqnbrpazXEQ0FTa+6sy2jdkGaV34/mslbNx1VOLPl7pb0O2u6Lyzl\nsH19zHeRLGOFq5kt47HPdDLcKu4jXu6XYcYNFncfWJF7OGjmuXc/oVowJ2WdkXupWkcsFDTsDB+R\n+/xSFrJelSru84v21neSbKm7YlxWxktZ2jIXWiZT25GOaljJVVDRG55i7VZfZlwid4YZF1jcfSAj\n93g4iFCPnnvRjNiLlXaRuw9xX8ziyk1JbF8fswm6TdzzvUfuQNNaKVZ1HFsptPjtbfeNhZCr6Nbv\nbsykIq6e+6gvYGKYcYLF3QcyWyYRMWyZXuq5e0fuDUPcPZpkOJlfymJuNo252bQ9cl/KYscGYwKz\nxZbpMiKWxcMOLecghLvf7rmvWuLXQ6zd6st45cUzDNMbLO4+kHnu8XAQIa03z92K3B2ee6VWRzQU\nQDoasnK9vThXqGLpQhn7ZtPYN5vGsysFFKtGHZiFpSxuvnwjQkFqtWW69LJl2V958+jKllEsIC87\naCYVQa6styzgYs+dYfoHi7sPrDx3q7ZMD567+R6FiiNyrxmeu5yIbIecTJUNM4QADi3nsJwt41yx\nhhdsm8K0EhU3GqLrbBmgGbkvLGWRimrYvr41pdFzXz+Ru5nXLwuICSHYc2eYPsOhkg+KVSO6Dgao\nd8+9Iuu22xtt6w2BaCiIiBZEvqJDrzc8c9LVtES52nV+KWvVaZmbTRvibopmoaqjIbovxpWOhvDc\nSgHzi4YF5KwP03ZfRaDbee6AYR9tXx9HudZArS7Yc2eYPsLi7oNCRbc68PSaCukWuUtbIhYKQgsa\nApqv6FgXD7u+x/xiFpvTEUwnIxBCIBXVML+YxVmz3d3e2TRmUhGczpYBdF9XRpKOaThfquFMroKf\n2L+ju30Va8Xbc7evUh2Xcr8MM06wLeODYrVudeDpdUJVZtyokbvMfY+Gg7b+o17ML2WtyU0iwr7Z\nNBaWslhYzmLnxjiSEc02WdltRUhJOhrC+WINxWq9q0wZwBm5e3vuQDOrZ1zK/TLMOMHi7gM1cg9r\nvea5t65QrZi13KNawLXUrkpFr+PImbxtcnNuNo2FpRyePpW1leBdLVTRaIieRVMV6G4mU9VjaQFC\nLOReSmBj0ixB0BK5s7gzTL9gcfdBsVpHPCwj917z3M3IvdIaucfCwWYXI4+FTIdP56E3hC2Sntua\nRqlWx/GzRZu41xsC54pVq2xv17aMItB7Nic7bG1HrnBNx1pruUtCwQDWx0OKuI9HuV+GGSd8iTsR\nvYaIDhHRESK6y+X13yCiJ8yfp4moTkQb+j/c4VCo6khEmp673hBoNLqL3i3PvdrquUe1YMfI3S0t\nUf19n6N5RiZf6boLk0TeDK7clOy6kJcxORzoKNTqKlXrGwZH7gzTNzqKOxEFAXwQwK0A5gC8mYjm\n1G2EEH8qhLhOCHEdgHcD+KoQ4uwgBjwMSrbI3bhktUZ30btbtozMeImFg0pNF3fPfX4xi1goiJ0b\nE9ZzezYnoZm1CJzNMzK5Ss+iKW8G3Voy1v6xUMdjqqtUm5E7izvD9As/kfsNAI4IIY4JIaoA7gVw\nW5vt3wzgU/0Y3KhQqCqeuxR3xXd/frWA933lGVtTabf3kPvJCVlrQjXU2XOfX8pi72wKwUDT6oho\nQVy5KYl18RBmp4wMFNlEIpOr9FwjXY6l28lUa/+o1lGoZ5IRPLOcw9s/+Rj+4VvP9zROhmG88SPu\n2wCcUB6fNJ9rgYjiAF4D4LMer99BRI8S0aOZTKbbsQ6NYkXNljHEVW3Y8cDTy3jfVw5jJV913b/e\nECjXGlhnlseV0btsjh0NBZEMayBy99zlClS3MgA/feNleNtLd1v+9rQjco+b3aO6Yc+mJF5x9Qxe\nPbe5q/0kP/ri7XjtC2fbbvPquS3Yvj6Oo5k8GkLgdS+ctRptMwyzdvodKv0wgG94WTJCiHsA3AMA\n+/fv761X3RBQI/eQJiP3prjLCDxXrtl6ikqkmM8kIzhfrKFQrWNdXPHcQ0EEAoRURHNdpXryXAm5\nso5rXCLpn715l+1xIhxELBQ0I/feinElIho+9rYbut5P8o5XXNlxm9ddO4vXXdv+BsAwTO/4CelO\nAVBXsmw3n3PjdkyYJSOj7riyiAmArWGHjMC9ygfITBkp/DJjRl3EBMgWda2Re7uGGU6IyPKzuy33\nyzDM5OBH3L8DYA8R7SaiMAwBv8+5ERFNAXg5gC/0d4jDpWhVhDQEWHruuuK5S5H2SmOUOe5S3GXG\nTMkp7h5lf+cXsyAC9m5J+RqzzETpNXJnGGb86SjuQggdwDsBPAhgAcCnhRAHiOhOIrpT2fSNAL4s\nhCgMZqjDoVnL3R6512yRuynuHpOhVuSedEbuTc8dgGfZ34WlLHZPJ3z37ZSrVLkYF8NcuvhSCyHE\n/QDudzx3t+PxxwF8vF8DGxVk1J1wTKhWXTx3rzRGZ+RedETuEdPHT0dDOH622LL//FIW1+1Y53vM\nM6kIvvXsKtLREK6cYVuGYS5FeIVqB1oid601FdJ35G7ZMobYV2p1RLQAAmZ6YzoWslaVSi6Uajh5\nrtRVw4yZlDFxe7ZQ5cidYS5RWNw7YEXuYbvnbs+WMX73arbRMqGqRO6xcDP9T7a3U1FruPtFHidf\n0dlzZ5hLFBb3DliRe8ThuesunruXLVN1TKiaN4xStY6osrw/HdOQq+ioK6UNZG/Ua7qJ3JPNdExe\nGMQwlyYs7h2w+qeGvT33jraMKebTSXvkXtYbLZE7AOQVa2ZhKYvpZNg1f96LaWVbtmUY5tKExb0D\nsiZMzFlbRvHcZY0Yz1RI8/VUVENEC1g3jFK1bk2mytcB+01C1nDvphuSeiNgW4ZhLk1Y3DvQjNyb\n9dwBRyqkLiN3r0VMOrQAIRwMIBHRrBtGRXd47maUfcG8SVT1Bg6fznddwGs62ezkxIuYGObShMW9\nA03P3Rm5KxOqVXOFquciJqOqJBEhHg7aIne1oYXVjcmM3I9m8qjWG10X8IpoQUyZNwqO3Bnm0oTF\nvQOFSjPqBhTPXZlQrXRMhWzWg0+Em5F7Wa/bimXJKFtOzMrJ1F5K70prhj13hrk0YXHvgOzCJD1v\nt5K/HRcxKfXg4xH/kfvCUhYRLYDd0wl0i8yY4e5GDHNpMvbivmo2fOiFC6WaleniRaHSjLqBVlum\nVm9AbwiEtQBKtbpr8+xiRbcWQSXCWjNbptZAJNT8E8go+5nlHP7r5AU8dvwcrt6SgtZlyV6gGbl3\n2xybYZjJYKzFfX4xi/3v+QoOLed62v8n//qbeO+XDrbdplDVragbaC35K28Om9OGmLotZLJF7uGg\nledertkj91REQzQUwN8+/Cx++AMP4/Hj5/HCbVM9ndtlG+LYmAhbE8AMw1xajPV39qULJQgBnDhb\nxNU+KyaqnDxXwqPPt+8GuJKvWvnpQGueuyz+tTkVxYmzJWTLOjYm7TnpxaqOTSmjU1IiotlWqKqe\neyBA+OdfehlOnSsBAIiA/bt6a0V75y1X4Mf3b+9pX4Zhxp+xFvdSh4nMduj1BvIVHc8s51GrNzy7\nFa3kKrZslVBArlA1PHcZuW8yI3e3jJlipY74xmbkXqzqEEK0RO6AUbO9mzoyXiQjGpKRsf7zMgyz\nBsb6O7vVJMMjBbEdedMaqdYbOJrJe26XyVVsi4ICAUIwQJYtI28wMjJ3u9GonZwSEQ2FSh3VegMN\nYfRPZRiG6TdjrSzNyN09S6UdamaLTDlsef9qHbmKbrNlAMOacXruzci9dSxqD9Z4OIhSrW6lQ3Lf\nUIZhBsFYi3ulQwekdtiW+HuI+4qZieOs6xIKBizPXZYekJG7c0JVCGGP3M1/zxaNZtrqClWGYZh+\nMdbibtV06cFzlzeEYICwsOwu7mdy7uIeDgaakbuZ+rjJ3MY5lopu2C9W5G7+e7ZgiLtaFZJhGKZf\njLW4WzVdPBYPtUOK8Au2TWF+MQshRMs2GSnuLbZMwJpQlTeYjckwAtQ6lmY9eHvkLvPzOXJnGGYQ\njLW4WzVdeorcDdG9afcGnCvWsJwtt2yTMQV4k9OW0Zqee0VvNrlOx1obXDc7OQVt/67KyJ0nVBmG\nGQBjrSzNaoy9e+43Xb4RgLvvnslVQARsSIRtz7t57rFw0LWTklVVMqLZ/j2bl+LOkTvDMP1nvMW9\nugZbplQDEXD9rvUAmu3sVFbyFWxMhFuW/6ueu8zYMSJ3rSVzp1CxR+6xlsidxZ1hmP4z1uK+lkVM\n2bKOVERDOhrCro1xzLuIeyZXaUmDBEzPvS4XMRkiHw25R+5FZ+QuPXdT3J2LmBiGYfrBWIu7zDHP\nlXXXCdF2ZEs1q1DX3Na0py3j1t5OzXOXN5iIFjDE3a/nbvr5HLkzDDMIxlrcpbDWG8ISUb9ky7pV\nYnffljSeWy1aq1YlmVylJVMGMD13MwWyUqsjGgqAiAxbxmERFR2dnCzPnSN3hmEGiC9xJ6LXENEh\nIjpCRHd5bHMLET1BRAeI6Kv9HaY70hIBurdmsuWa1RxD1o45qFgzQghk8u6Re1ize+5SoN0id8tz\nj9gj95U8Z8swDDM4OioLEQUBfBDArQDmALyZiOYc26wD8CEAPyKEuAbAjw9grC2otdi7nVTNlmpW\n5C7FXZ1UzZZ1VPWGhy2jeu7Nyo7pWAjFat3Wgs8ZuUe0AIIBwrkiT6gyDDM4/ISNNwA4IoQ4JoSo\nAo35/UUAAA8KSURBVLgXwG2ObX4KwOeEEMcBQAhxpr/DdKdcq1tpit1G7rmybnnuW9JRrI+HcEDx\n3TMeq1MBp+feUCJ3zXpviYzc5Tayj2q9IUBkiD3DMEy/8aMs2wCcUB6fNJ9TuQrAeiJ6iIgeI6K3\nuL0REd1BRI8S0aOZTKa3ESuUavXmsv8u68uokTsRYd9s2ha5e61OBex57uVaHRElcneOpWg2+wgE\nyHpORvFRrdm+j2EYpp/0K2zUAFwP4HUAfgjA7xLRVc6NhBD3CCH2CyH2z8zMrPmg5VoDm9PepXa9\nqDcEchUdKaW/6NxsGgeXc9BN0c54FA0DHLVlanXETN/c2QMVkF2Y7HXVpf/OpQcYhhkUfsT9FIAd\nyuPt5nMqJwE8KIQoCCFWAHwNwPf0Z4je2CN3/5573rRNZKQNGL57RW/gudUCgE62jL22jBRp+X6q\nLVOs6EhE7CLejNzZkmEYZjD4UZfvANhDRLuJKAzgdgD3Obb5AoDvJSKNiOIAbgSw0N+h2qk3BKp6\no20HJC9kZJ1WI3dzUlX67iv5CkJBwlSstcG0WlumrNetyo4y+0Ydi2vkbt4Mohy5MwwzIDqKuxBC\nB/BOAA/CEOxPCyEOENGdRHSnuc0CgAcAPAXg2wD+Vgjx9OCG3SzYlYqGEAsFu7JlLpjiq0buV8wk\nEQ4GrJWqcnWqmyfurC0jRTrlYssUqzoSDhGXue5c7pdhmEHhq8mmEOJ+APc7nrvb8fhPAfxp/4bW\nHqtgl6zp0oUt04zcm+IeCgawZ3PSWqnqtToVcHrujWbkHpWRuz1bJu2I/p11ZhiGYfrN2Jq+sklG\nNOS+7L8dUnyljSKZUzJmvFanAq157rGwcRkTYc2o6d4pcpeeOy9gYhhmQIytusjIPepRR70dbpE7\nYPjuK/kqzuTKnqtTAUPc6w2BekMYi5jMyD0QIKQcxcMKlXpLhG5ly/ACJoZhBsTYirtcnWpUY+zS\nlnHx3AEjcgeAp09dwGo7cdcMH75WbxjlBxTxdpb9LSr9UyXNyJ3FnWGYwTD24u7VAakd2bIOIiAV\nsYvuXlPcHz68ioZwT4MEDM8dMCo+NoRdpJ1lfwvVuhWpS+RjFneGYQbFGIu74bl7dUBqR7ZUQzKi\n2VaNAsBULITt62P46jNG9YR2nrt8H8BF3M0bTa3eQFVvtETu8RDbMgzDDJaxFXdZ7jeqBZGKal3V\ndM8p5X6dzM2mcTRjLGSabuO5A03vXhVpNXPHWctdEo/whCrDMINlbNXFam8XDiAdC0FvCOu5Thjl\nfj3E3VzMBLSL3I2IX65EVUVajdydXZgkMpLnyJ1hmEExtuJetjogBZs1XXxOqhpFw9xT/OWkKtDG\nc9fstow9cm9aRM7+qRLpuUdY3BmGGRBjL+6xcLC57N/npGpWKffrZJ8p7vFwsCXilkhbphm52z33\nQrUOvd5oqeUu4cidYZhB42uF6ihiT4VsLbXbjmyphtRsyvW17etjSEU1q068G07PPerw3AHgoUMZ\nHD9bBIDWbJkwZ8swDDNYxlbcS1VzhaoWaNZR9x251zwnVIkI1+9cj0abudl2nrssQfwLf/eo9ZzT\nu59JRRAMEDan3W0fhmGYtTK24l7W6wgFCVow4FrTxYtGQyBf8bZlAOD9P/kiCHire9iZLaN46j90\nzRZ89u0vtRpop6Ia9my2f0vYnI7iof9+C7avj3UcL8MwTC+MrbiXqvbepYC/yD1X0SEEPCdUAWAq\n7i38ABDSHJ67Ut0xGDAi/07s2BDvuA3DMEyvjO2EakWvWxOSqWhrHXUvvEoPdINzERNXd2QYZtQY\nW3FXI/eIFkQ0FLDVdPHCq2hYN0jP3ZpQ5brsDMOMGOMr7rW6Pb/cZwkCr3K/3RB2pkKGx/YyMgwz\noYytKpVrDfvKUJ/Fw/oRuWvKhGqAmmLPMAwzKoytKpVqdcfiIX9lf2V079Yb1S9qKmQ0FHRtxccw\nDDNMxlbcK05x9x25m7bMGiL3sDKhyqtMGYYZRcZW3N0895yPCdWceQNItkmF7ITMlnHWcmcYhhkV\nxlbcWz13zfeEaiqiIRjo3UqRee4Al+1lGGY0GVtlamlvZ5ba7VTTvV25X79Izx3gyJ1hmNFkbMW9\nXKsjouSXp6Ih1OrC6tDkRbZUsxY99Uoo0Lxs7LkzDDOKjLW4OxtTA51LELQrGuaXQICgmbYOR+4M\nw4wivsSdiF5DRIeI6AgR3eXy+i1EdIGInjB/fq//Q22i1xuo1UXLhCrQuQRBtqSvaQGTRE6qsrgz\nDDOKdFQ5IgoC+CCAVwM4CeA7RHSfEGLesenXhRCvH8AYWyibFRedi5gAf5H73qh7LfduCAUJpRrX\nlWEYZjTxE8LeAOCIEOIYABDRvQBuA+AU94tGyWw8HXMsYgKA3/zMU20nTJcvlNc8oQo0W+1FtbF1\nthiGmWD8iPs2ACeUxycB3Oiy3UuJ6CkApwD8dyHEAecGRHQHgDsA4LLLLut+tCZW/1RF3PduSeP1\n187iQgdb5mVXTuO1L5zt+dgSactw5M4wzCjSr3ru3wVwmRAiT0SvBfB5AHucGwkh7gFwDwDs37+/\nfc5iG6z+qYq4x8JBfOCnXtzrW3YNe+4Mw4wyfjyFUwB2KI+3m89ZCCGyQoi8+fv9AEJENN23UTqQ\n6Y7DFFaZ687izjDMKOJH3L8DYA8R7SaiMIDbAdynbkBEW8isnkVEN5jvu9rvwUpKLpH7xaYZubPn\nzjDM6NHRlhFC6ET0TgAPAggC+KgQ4gAR3Wm+fjeANwF4OxHpAEoAbhedloquAWnLDFNY5YQqL2Ji\nGGYU8eW5m1bL/Y7n7lZ+/wCAD/R3aN6ULHEfhcidxZ1hmNFjLD0Fa0J1iJkq0nPnyJ1hmFFkrMWd\nI3eGYRh3xlLc3RYxXWzCPKHKMMwIM5bK5FZ+4GJjLWLiyJ1hmBFkLMVdRu5RbYi2jMa2DMMwo8tY\nintZryOsBRBYQzeltWJNqHL5AYZhRpDxFPdqfeh2iOW5D/HbA8MwjBfjKe6O/qnDwMqWCY/lJWQY\nZsIZS2Uq1YYfuXMqJMMwo8xYinu5Vh+6qIY0XsTEMMzoMpbiXhoBcd+SjmI6GbEieIZhmFGiX/Xc\nLyrlEbBlfvamnfjRF28f6hgYhmG8GMuwcxQmVLVgAFN9aNfHMAwzCMZS3Eu1OueXMwzDtGEsxb1c\nq3N+OcMwTBvGV9w5cmcYhvFkTMW9wZE7wzBMG8ZS3A3PfSyHzjAMc1EYO4Ws1RuoNwRH7gzDMG0Y\nO3EvjUCLPYZhmFFn7MS9XB1+iz2GYZhRZ/zEvSa7MLG4MwzDeDF24m7ZMizuDMMwnoyduJdr0pYZ\nu6EzDMNcNHwpJBG9hogOEdERIrqrzXYvISKdiN7UvyHa4cidYRimMx3FnYiCAD4I4FYAcwDeTERz\nHtv9CYAv93uQKjJyj7C4MwzDeOIncr8BwBEhxDEhRBXAvQBuc9nulwF8FsCZPo6vhTJH7gzDMB3x\nI+7bAJxQHp80n7Mgom0A3gjgw+3eiIjuIKJHiejRTCbT7VgBADOpCF77wi3YkAj3tD/DMMylQL+a\ndbwPwG8JIRpE5LmREOIeAPcAwP79+0UvB7p+5wZcv3NDT4NkGIa5VPAj7qcA7FAebzefU9kP4F5T\n2KcBvJaIdCHE5/sySoZhGKYr/Ij7dwDsIaLdMET9dgA/pW4ghNgtfyeijwP4Igs7wzDM8Ogo7kII\nnYjeCeBBAEEAHxVCHCCiO83X7x7wGBmGYZgu8eW5CyHuB3C/4zlXURdCvHXtw2IYhmHWAi/zZBiG\nmUBY3BmGYSYQFneGYZgJhMWdYRhmAiEhelpLtPYDE2UAPN/j7tMAVvo4nHHhUjzvS/GcgUvzvC/F\ncwa6P++dQoiZThsNTdzXAhE9KoTYP+xxXGwuxfO+FM8ZuDTP+1I8Z2Bw5822DMMwzATC4s4wDDOB\njKu43zPsAQyJS/G8L8VzBi7N874UzxkY0HmPpefOMAzDtGdcI3eGYRimDSzuDMMwE8jYibvfZt3j\nDBHtIKL/IKJ5IjpARO8yn99ARP9KRIfNf9cPe6z9hoiCRPQ4EX3RfHwpnPM6IvoMER0kogUiuvkS\nOe93m//HnyaiTxFRdNLOm4g+SkRniOhp5TnPczSvyRFT435oLcceK3H326x7AtAB/LoQYg7ATQDe\nYZ7nXQD+TQixB8C/mY8njXcBWFAeXwrn/H4ADwgh9gL4HhjnP9HnTUS7ANwB4HohxAtglBO/HZN3\n3h8H8BrHc67naH7GbwdwjbnPh0zN64mxEnf4b9Y91gghloQQ3zV/z8H4sG+Dca6fMDf7BIA3DGeE\ng4GItgN4HYC/VZ6e9HOeAvD9AD4CAEKIqhDiPCb8vAFkAdQAxIhIAxAHsIgJO28hxNcAnHU87XWO\ntwG4VwhREUI8C+AIDM3riXET947NuicNM8J5EYD/BLBZCLFkvrQMYPOQhjUo3gfgNwE0lOcm/Zx3\nA8gA+JhpR/0tESUw4ecthDgL4H8COA5gCcAFIcSXMeHnbeJ1jn3Vt3ET90sKIkoC+CyA/1sIkVVf\nE0YO68TksRLR6wGcEUI85rXNpJ2ziQbgxQA+LIR4EYACHFbEJJ43EV0B4Fdh3Ny2AkgQ0c+o20zi\neTsZ5DmOm7j7adY9ERBRCIaw/4MQ4nPm06eJaNZ8fRbAmWGNbwC8DMCPENFzMOy2HyCiT2Kyzxkw\norOTQoj/NB9/BobYT/p57wfwiBAiI4SoAfgcgJdi8s8b8D7HvurbuIm71aybiMIwJh/uG/KY+g4R\nEQwPdkEI8efKS/cB+Dnz958D8IWLPbZBIYR4txBiuxBiF4y/678LIX4GE3zOACCEWAZwgoiuNp96\nJYB5TPh5AzgE4CYiipv/318JY25p0s8b8D7H+wDcTkQRItoNYA+Ab/d8FCHEWP0AeC2AZwAcBfDb\nwx7PgM7xe2F8VXsKwBPmz2sBbIQxu34YwFcAbBj2WAd0/rcA+KL5+8SfM4DrADxq/r0/D2D9JXLe\nvwXjRvY0gL8HEJm08wbwKRhzCjUY39J+vt05AvhtU9sOAbh1Lcfm8gMMwzATyLjZMgzDMIwPWNwZ\nhmEmEBZ3hmGYCYTFnWEYZgJhcWcYhplAWNwZhmEmEBZ3hmGYCeT/AE+dENEXX/HRAAAAAElFTkSu\nQmCC\n"
},
"metadata": {},
"output_type": "display_data"
}
]
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "## Prediction\n\n左右の傾き方向で 4 連の LED の光る順序が変わります。\nまた、認識した際の確率が 6 割を超えたら 2 連の LED が光ります。\n\nボタン 3 を押すと止まります。"
},
{
"metadata": {
"collapsed": false,
"trusted": false,
"deletable": true,
"editable": true,
"ExecuteTime": {
"start_time": "2017-03-04T06:58:00.572Z"
}
},
"cell_type": "code",
"source": "delay = 0.1\n\ncolor = 0\n\nleds = [LED(index) for index in range(4)]\nrgbleds = [RGBLED(index) for index in [4,5]] \nbtns = [Button(index) for index in range(4)]\n \nfor led in leds:\n led.on() \n\nwhile (btns[3].read() == 0):\n val = [analog1.read_raw()[0] / max_samples, analog1.read_raw()[0] / max_samples, analog1.read_raw()[0] / max_samples]\n _x = np.matrix(val).T\n _y1 = layer1.propagate_forward(_x)\n _y2 = layer2.propagate_forward(_y1)\n is_slope = np.argmax(_y2)\n accuracy = _y2[0, 0]\n\n if accuracy > 0.7:\n for rgbled in rgbleds:\n rgbled.write(1)\n sleep(delay)\n elif accuracy < 0.3:\n for rgbled in rgbleds:\n rgbled.write(2)\n sleep(delay)\n else:\n for rgbled in rgbleds:\n rgbled.off()\n\n if (is_slope == 1):\n for led in leds:\n led.off()\n sleep(delay)\n for led in leds:\n led.toggle()\n sleep(delay)\n \n elif (is_slope == 0):\n for led in leds[::-1]:\n led.off()\n sleep(delay)\n for led in leds[::-1]:\n led.toggle()\n sleep(delay) \n \nfor led in leds:\n led.off()\n\nfor rgbled in rgbleds:\n rgbled.off()\n \ndel leds,btns",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"deletable": true,
"editable": true
},
"cell_type": "markdown",
"source": "# Summary\n\nとりあえず、MPS で学んだ Deep Learnig を PYNQ に組み込めました。\nただし、これはソフトで積和演算をやっているため、FPGA による高速化を試すことができていません。\n\n* FPGA による積和演算の組み込みによる高速化\n* MPS のターゲットである義手を PYNQ で製作\n* PYNQ 関係のハッカソン or アイデアソン"
},
{
"metadata": {
"collapsed": true,
"trusted": false,
"deletable": true,
"editable": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"toc": {
"threshold": 4,
"number_sections": true,
"toc_cell": false,
"toc_window_display": false,
"toc_section_display": "block",
"sideBar": true,
"navigate_menu": true,
"moveMenuLeft": true,
"colors": {
"hover_highlight": "#DAA520",
"selected_highlight": "#FFD700",
"running_highlight": "#FF0000"
},
"nav_menu": {
"width": "0px",
"height": "0px"
}
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3",
"language": "python"
},
"language_info": {
"name": "python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2",
"file_extension": ".py",
"mimetype": "text/x-python"
},
"gist": {
"id": "",
"data": {
"description": "Documents/OSS/PYNQ 祭り_20170304/PYNQ ではじめる機械学習.ipynb",
"public": true
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.