diff --git a/5_nn/Perceptron.ipynb b/5_nn/Perceptron.ipynb index a438284..f104f9b 100644 --- a/5_nn/Perceptron.ipynb +++ b/5_nn/Perceptron.ipynb @@ -59,7 +59,7 @@ "\n", "假设训练数据集是线性可分的,感知机学习的目标是求得一个能够将训练数据的正负实例点完全分开的分离超平面,即最终求得参数w、b。这需要一个学习策略,即定义(经验)损失函数并将损失函数最小化。\n", "\n", - "损失函数的一个自然的选择是误分类的点的总数。但是这样得到的损失函数不是参数w、b的连续可导函数,不宜优化。损失函数的另一个选择是误分类点到分里面的距离之和。\n", + "损失函数的一个自然的选择是误分类的点的总数。但是这样得到的损失函数不是参数w、b的连续可导函数,不宜优化。损失函数的另一个选择是误分类点到分类面的距离之和。\n", "\n", "首先,对于任意一点xo到超平面的距离为\n", "$$\n", @@ -124,10 +124,11 @@ "输出:w, b;感知机模型f(x)=sign(w·x+b)\n", "(1) 初始化w0,b0\n", "(2) 在训练数据集中选取(xi, yi)\n", - "(3) 如果yi(w xi+b)≤0\n", + "(3) 如果yi(w * xi+b)≤0\n", " w = w + ηyixi\n", " b = b + ηyi\n", - "(4) 转至(2)\n", + "(4) 如果所有的样本都正确分类,或者迭代次数超过设定值,则终止\n", + "(5) 否则,跳转至(2)\n", "```\n", "\n" ] @@ -141,7 +142,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 3, "metadata": { "lines_to_end_of_cell_marker": 2 }, @@ -150,13 +151,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "update weight and bias: 1.0 3.0 0.5\n", - "update weight and bias: -0.5 2.5 0.0\n", - "update weight and bias: -2.5 2.0 -0.5\n", - "w = [-2.5, 2.0]\n", - "b = -0.5\n", - "[ 1 1 1 1 -1 -1 -1 -1]\n", - "[1, 1, 1, 1, -1, -1, -1, -1]\n" + "update weight and bias: 1.0 2.5 0.5\n", + "update weight and bias: -2.5 1.0 0.0\n", + "update weight and bias: -1.5 3.5 0.5\n", + "update weight and bias: -5.0 2.0 0.0\n", + "update weight and bias: -4.0 4.5 0.5\n", + "w = [-4.0, 4.5]\n", + "b = 0.5\n", + "ground_truth: [1, 1, 1, 1, -1, -1, -1, -1]\n", + "predicted: [1, 1, 1, 1, -1, -1, -1, -1]\n" ] } ], @@ -214,8 +217,8 @@ "# predict \n", "y_pred = perceptron_pred(train_data, w, b)\n", "\n", - "print(train_data[:, 2])\n", - "print(y_pred)" + "print(\"ground_truth: \", list(train_data[:, 2]))\n", + "print(\"predicted: \", y_pred)" ] }, { diff --git a/5_nn/mlp_bp.ipynb b/5_nn/mlp_bp.ipynb index 5832e12..2600c77 100644 --- a/5_nn/mlp_bp.ipynb +++ b/5_nn/mlp_bp.ipynb @@ -307,7 +307,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -346,7 +346,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -408,7 +408,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -928,7 +928,13 @@ "epoch [ 510] L = 38.677077, acc = 0.850000\n", "epoch [ 511] L = 38.676627, acc = 0.850000\n", "epoch [ 512] L = 38.676178, acc = 0.850000\n", - "epoch [ 513] L = 38.675731, acc = 0.850000\n", + "epoch [ 513] L = 38.675731, acc = 0.850000\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "epoch [ 514] L = 38.675286, acc = 0.850000\n", "epoch [ 515] L = 38.674843, acc = 0.850000\n", "epoch [ 516] L = 38.674402, acc = 0.850000\n", @@ -1019,13 +1025,7 @@ "epoch [ 601] L = 38.642293, acc = 0.850000\n", "epoch [ 602] L = 38.641965, acc = 0.850000\n", "epoch [ 603] L = 38.641638, acc = 0.850000\n", - "epoch [ 604] L = 38.641313, acc = 0.850000\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "epoch [ 604] L = 38.641313, acc = 0.850000\n", "epoch [ 605] L = 38.640988, acc = 0.850000\n", "epoch [ 606] L = 38.640664, acc = 0.850000\n", "epoch [ 607] L = 38.640341, acc = 0.850000\n", @@ -1396,7 +1396,13 @@ "epoch [ 972] L = 38.558232, acc = 0.850000\n", "epoch [ 973] L = 38.558069, acc = 0.850000\n", "epoch [ 974] L = 38.557907, acc = 0.850000\n", - "epoch [ 975] L = 38.557746, acc = 0.850000\n", + "epoch [ 975] L = 38.557746, acc = 0.850000\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "epoch [ 976] L = 38.557584, acc = 0.850000\n", "epoch [ 977] L = 38.557423, acc = 0.850000\n", "epoch [ 978] L = 38.557262, acc = 0.850000\n", @@ -1628,13 +1634,7 @@ "epoch [1204] L = 38.525797, acc = 0.845000\n", "epoch [1205] L = 38.525676, acc = 0.845000\n", "epoch [1206] L = 38.525555, acc = 0.845000\n", - "epoch [1207] L = 38.525434, acc = 0.845000\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "epoch [1207] L = 38.525434, acc = 0.845000\n", "epoch [1208] L = 38.525313, acc = 0.845000\n", "epoch [1209] L = 38.525192, acc = 0.845000\n", "epoch [1210] L = 38.525072, acc = 0.845000\n", @@ -1867,7 +1867,13 @@ "epoch [1437] L = 38.500522, acc = 0.845000\n", "epoch [1438] L = 38.500424, acc = 0.845000\n", "epoch [1439] L = 38.500326, acc = 0.845000\n", - "epoch [1440] L = 38.500229, acc = 0.845000\n", + "epoch [1440] L = 38.500229, acc = 0.845000\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "epoch [1441] L = 38.500131, acc = 0.845000\n", "epoch [1442] L = 38.500034, acc = 0.845000\n", "epoch [1443] L = 38.499936, acc = 0.845000\n", @@ -2266,13 +2272,7 @@ "epoch [1836] L = 38.466240, acc = 0.845000\n", "epoch [1837] L = 38.466164, acc = 0.845000\n", "epoch [1838] L = 38.466087, acc = 0.845000\n", - "epoch [1839] L = 38.466011, acc = 0.845000\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "epoch [1839] L = 38.466011, acc = 0.845000\n", "epoch [1840] L = 38.465934, acc = 0.845000\n", "epoch [1841] L = 38.465858, acc = 0.845000\n", "epoch [1842] L = 38.465781, acc = 0.845000\n", @@ -2341,7 +2341,13 @@ "epoch [1905] L = 38.461040, acc = 0.845000\n", "epoch [1906] L = 38.460966, acc = 0.845000\n", "epoch [1907] L = 38.460892, acc = 0.845000\n", - "epoch [1908] L = 38.460818, acc = 0.845000\n", + "epoch [1908] L = 38.460818, acc = 0.845000\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "epoch [1909] L = 38.460744, acc = 0.845000\n", "epoch [1910] L = 38.460670, acc = 0.845000\n", "epoch [1911] L = 38.460596, acc = 0.845000\n", @@ -2437,6 +2443,8 @@ } ], "source": [ + "# FIXME: change variable name to math\n", + "\n", "from sklearn.metrics import accuracy_score\n", "\n", "y_true = np.array(nn.y).astype(float)\n", @@ -2471,7 +2479,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -2521,7 +2529,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -2543,7 +2551,7 @@ " self.n_epoch = 1000 # iterative number\n", " \n", " if not nodes:\n", - " self.nodes = [2, 4, 2] # default nodes size (from input -> output)\n", + " self.nodes = [2, 6, 2] # default nodes size (from input -> output)\n", " else:\n", " self.nodes = nodes\n", " \n", @@ -2635,7 +2643,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -2668,2037 +2676,2049 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "L = 141.641114, acc = 0.500000\n", - "L = 134.717649, acc = 0.500000\n", - "L = 127.447549, acc = 0.500000\n", - "L = 119.980618, acc = 0.500000\n", - "L = 112.582569, acc = 0.500000\n", - "L = 105.715501, acc = 0.500000\n", - "L = 99.910286, acc = 0.500000\n", - "L = 95.430744, acc = 0.500000\n", - "L = 92.118517, acc = 0.770000\n", - "L = 89.603045, acc = 0.830000\n", - "L = 87.556338, acc = 0.840000\n", - "L = 85.773311, acc = 0.835000\n", - "L = 84.144954, acc = 0.845000\n", - "L = 82.616875, acc = 0.840000\n", - "L = 81.161930, acc = 0.840000\n", - "L = 79.765895, acc = 0.840000\n", - "L = 78.420663, acc = 0.840000\n", - "L = 77.121120, acc = 0.845000\n", - "L = 75.863725, acc = 0.845000\n", - "L = 74.645849, acc = 0.845000\n", - "L = 73.465450, acc = 0.845000\n", - "L = 72.320894, acc = 0.845000\n", - "L = 71.210846, acc = 0.845000\n", - "L = 70.134203, acc = 0.845000\n", - "L = 69.090038, acc = 0.845000\n", - "L = 68.077556, acc = 0.835000\n", - "L = 67.096067, acc = 0.835000\n", - "L = 66.144952, acc = 0.835000\n", - "L = 65.223644, acc = 0.845000\n", - "L = 64.331609, acc = 0.845000\n", - "L = 63.468334, acc = 0.845000\n", - "L = 62.633311, acc = 0.845000\n", - "L = 61.826031, acc = 0.845000\n", - "L = 61.045977, acc = 0.845000\n", - "L = 60.292618, acc = 0.845000\n", - "L = 59.565408, acc = 0.845000\n", - "L = 58.863782, acc = 0.845000\n", - "L = 58.187156, acc = 0.845000\n", - "L = 57.534928, acc = 0.845000\n", - "L = 56.906480, acc = 0.845000\n", - "L = 56.301176, acc = 0.845000\n", - "L = 55.718368, acc = 0.845000\n", - "L = 55.157398, acc = 0.845000\n", - "L = 54.617598, acc = 0.845000\n", - "L = 54.098297, acc = 0.850000\n", - "L = 53.598818, acc = 0.850000\n", - "L = 53.118487, acc = 0.850000\n", - "L = 52.656632, acc = 0.850000\n", - "L = 52.212586, acc = 0.850000\n", - "L = 51.785690, acc = 0.850000\n", - "L = 51.375293, acc = 0.850000\n", - "L = 50.980758, acc = 0.850000\n", - "L = 50.601458, acc = 0.850000\n", - "L = 50.236784, acc = 0.850000\n", - "L = 49.886141, acc = 0.850000\n", - "L = 49.548949, acc = 0.850000\n", - "L = 49.224649, acc = 0.850000\n", - "L = 48.912696, acc = 0.850000\n", - "L = 48.612567, acc = 0.845000\n", - "L = 48.323755, acc = 0.845000\n", - "L = 48.045774, acc = 0.845000\n", - "L = 47.778154, acc = 0.845000\n", - "L = 47.520447, acc = 0.840000\n", - "L = 47.272220, acc = 0.840000\n", - "L = 47.033060, acc = 0.840000\n", - "L = 46.802572, acc = 0.840000\n", - "L = 46.580376, acc = 0.840000\n", - "L = 46.366112, acc = 0.840000\n", - "L = 46.159435, acc = 0.835000\n", - "L = 45.960013, acc = 0.835000\n", - "L = 45.767534, acc = 0.835000\n", - "L = 45.581698, acc = 0.835000\n", - "L = 45.402218, acc = 0.835000\n", - "L = 45.228823, acc = 0.835000\n", - "L = 45.061253, acc = 0.835000\n", - "L = 44.899263, acc = 0.840000\n", - "L = 44.742616, acc = 0.840000\n", - "L = 44.591089, acc = 0.840000\n", - "L = 44.444469, acc = 0.840000\n", - "L = 44.302554, acc = 0.835000\n", - "L = 44.165150, acc = 0.835000\n", - "L = 44.032074, acc = 0.835000\n", - "L = 43.903152, acc = 0.835000\n", - "L = 43.778215, acc = 0.835000\n", - "L = 43.657106, acc = 0.835000\n", - "L = 43.539675, acc = 0.835000\n", - "L = 43.425776, acc = 0.835000\n", - "L = 43.315273, acc = 0.835000\n", - "L = 43.208036, acc = 0.835000\n", - "L = 43.103940, acc = 0.835000\n", - "L = 43.002866, acc = 0.835000\n", - "L = 42.904701, acc = 0.835000\n", - "L = 42.809337, acc = 0.840000\n", - "L = 42.716670, acc = 0.840000\n", - "L = 42.626604, acc = 0.840000\n", - "L = 42.539042, acc = 0.840000\n", - "L = 42.453897, acc = 0.840000\n", - "L = 42.371082, acc = 0.840000\n", - "L = 42.290514, acc = 0.840000\n", - "L = 42.212116, acc = 0.840000\n", - "L = 42.135813, acc = 0.840000\n", - "L = 42.061533, acc = 0.840000\n", - "L = 41.989207, acc = 0.840000\n", - "L = 41.918769, acc = 0.840000\n", - "L = 41.850156, acc = 0.840000\n", - "L = 41.783309, acc = 0.840000\n", - "L = 41.718168, acc = 0.840000\n", - "L = 41.654679, acc = 0.840000\n", - "L = 41.592788, acc = 0.840000\n", - "L = 41.532444, acc = 0.840000\n", - "L = 41.473598, acc = 0.840000\n", - "L = 41.416203, acc = 0.840000\n", - "L = 41.360213, acc = 0.840000\n", - "L = 41.305586, acc = 0.840000\n", - "L = 41.252279, acc = 0.840000\n", - "L = 41.200251, acc = 0.840000\n", - "L = 41.149465, acc = 0.840000\n", - "L = 41.099883, acc = 0.840000\n", - "L = 41.051469, acc = 0.840000\n", - "L = 41.004189, acc = 0.840000\n", - "L = 40.958008, acc = 0.840000\n", - "L = 40.912896, acc = 0.840000\n", - "L = 40.868821, acc = 0.840000\n", - "L = 40.825754, acc = 0.840000\n", - "L = 40.783665, acc = 0.840000\n", - "L = 40.742527, acc = 0.840000\n", - "L = 40.702314, acc = 0.840000\n", - "L = 40.662998, acc = 0.840000\n", - "L = 40.624556, acc = 0.840000\n", - "L = 40.586964, acc = 0.840000\n", - "L = 40.550197, acc = 0.840000\n", - "L = 40.514234, acc = 0.840000\n", - "L = 40.479052, acc = 0.845000\n", - "L = 40.444631, acc = 0.845000\n", - "L = 40.410950, acc = 0.845000\n", - "L = 40.377990, acc = 0.845000\n", - "L = 40.345732, acc = 0.845000\n", - "L = 40.314157, acc = 0.845000\n", - "L = 40.283247, acc = 0.845000\n", - "L = 40.252984, acc = 0.845000\n", - "L = 40.223353, acc = 0.845000\n", - "L = 40.194338, acc = 0.845000\n", - "L = 40.165921, acc = 0.845000\n", - "L = 40.138088, acc = 0.845000\n", - "L = 40.110825, acc = 0.845000\n", - "L = 40.084117, acc = 0.845000\n", - "L = 40.057949, acc = 0.845000\n", - "L = 40.032310, acc = 0.845000\n", - "L = 40.007184, acc = 0.845000\n", - "L = 39.982561, acc = 0.845000\n", - "L = 39.958427, acc = 0.845000\n", - "L = 39.934771, acc = 0.845000\n", - "L = 39.911581, acc = 0.850000\n", - "L = 39.888845, acc = 0.850000\n", - "L = 39.866553, acc = 0.850000\n", - "L = 39.844694, acc = 0.850000\n", - "L = 39.823258, acc = 0.850000\n", - "L = 39.802235, acc = 0.850000\n", - "L = 39.781615, acc = 0.850000\n", - "L = 39.761388, acc = 0.850000\n", - "L = 39.741546, acc = 0.850000\n", - "L = 39.722079, acc = 0.850000\n", - "L = 39.702978, acc = 0.850000\n", - "L = 39.684235, acc = 0.850000\n", - "L = 39.665843, acc = 0.850000\n", - "L = 39.647792, acc = 0.850000\n", - "L = 39.630075, acc = 0.850000\n", - "L = 39.612685, acc = 0.850000\n", - "L = 39.595613, acc = 0.850000\n", - "L = 39.578853, acc = 0.850000\n", - "L = 39.562398, acc = 0.850000\n", - "L = 39.546241, acc = 0.850000\n", - "L = 39.530376, acc = 0.850000\n", - "L = 39.514794, acc = 0.850000\n", - "L = 39.499492, acc = 0.850000\n", - "L = 39.484461, acc = 0.855000\n", - "L = 39.469697, acc = 0.855000\n", - "L = 39.455194, acc = 0.855000\n", - "L = 39.440945, acc = 0.855000\n", - "L = 39.426945, acc = 0.855000\n", - "L = 39.413189, acc = 0.855000\n", - "L = 39.399671, acc = 0.855000\n", - "L = 39.386387, acc = 0.855000\n", - "L = 39.373331, acc = 0.855000\n", - "L = 39.360498, acc = 0.855000\n", - "L = 39.347884, acc = 0.855000\n", - "L = 39.335484, acc = 0.855000\n", - "L = 39.323293, acc = 0.855000\n", - "L = 39.311308, acc = 0.855000\n", - "L = 39.299522, acc = 0.855000\n", - "L = 39.287933, acc = 0.855000\n", - "L = 39.276537, acc = 0.855000\n", - "L = 39.265328, acc = 0.855000\n", - "L = 39.254304, acc = 0.855000\n", - "L = 39.243460, acc = 0.855000\n", - "L = 39.232792, acc = 0.855000\n", - "L = 39.222298, acc = 0.855000\n", - "L = 39.211973, acc = 0.855000\n", - "L = 39.201813, acc = 0.855000\n", - "L = 39.191816, acc = 0.855000\n", - "L = 39.181979, acc = 0.855000\n", - "L = 39.172297, acc = 0.855000\n", - "L = 39.162767, acc = 0.855000\n", - "L = 39.153387, acc = 0.855000\n", - "L = 39.144154, acc = 0.855000\n", - "L = 39.135064, acc = 0.855000\n", - "L = 39.126114, acc = 0.855000\n", - "L = 39.117302, acc = 0.855000\n", - "L = 39.108625, acc = 0.855000\n", - "L = 39.100080, acc = 0.855000\n", - "L = 39.091665, acc = 0.855000\n", - "L = 39.083376, acc = 0.855000\n", - "L = 39.075211, acc = 0.855000\n", - "L = 39.067169, acc = 0.855000\n", - "L = 39.059246, acc = 0.855000\n", - "L = 39.051439, acc = 0.855000\n", - "L = 39.043748, acc = 0.855000\n", - "L = 39.036168, acc = 0.855000\n", - "L = 39.028699, acc = 0.855000\n", - "L = 39.021337, acc = 0.855000\n", - "L = 39.014081, acc = 0.855000\n", - "L = 39.006929, acc = 0.855000\n", - "L = 38.999878, acc = 0.855000\n", - "L = 38.992927, acc = 0.855000\n", - "L = 38.986073, acc = 0.855000\n", - "L = 38.979315, acc = 0.855000\n", - "L = 38.972651, acc = 0.855000\n", - "L = 38.966078, acc = 0.855000\n", - "L = 38.959596, acc = 0.855000\n", - "L = 38.953201, acc = 0.855000\n", - "L = 38.946893, acc = 0.855000\n", - "L = 38.940670, acc = 0.855000\n", - "L = 38.934530, acc = 0.855000\n", - "L = 38.928471, acc = 0.855000\n", - "L = 38.922493, acc = 0.855000\n", - "L = 38.916592, acc = 0.855000\n", - "L = 38.910768, acc = 0.855000\n", - "L = 38.905019, acc = 0.855000\n", - "L = 38.899344, acc = 0.855000\n", - "L = 38.893741, acc = 0.855000\n", - "L = 38.888209, acc = 0.855000\n", - "L = 38.882746, acc = 0.855000\n", - "L = 38.877352, acc = 0.855000\n", - "L = 38.872023, acc = 0.855000\n", - "L = 38.866760, acc = 0.855000\n", - "L = 38.861562, acc = 0.855000\n", - "L = 38.856425, acc = 0.855000\n", - "L = 38.851351, acc = 0.855000\n", - "L = 38.846336, acc = 0.855000\n", - "L = 38.841381, acc = 0.855000\n", - "L = 38.836483, acc = 0.855000\n", - "L = 38.831642, acc = 0.855000\n", - "L = 38.826857, acc = 0.855000\n", - "L = 38.822126, acc = 0.855000\n", - "L = 38.817449, acc = 0.855000\n", - "L = 38.812823, acc = 0.855000\n", - "L = 38.808249, acc = 0.855000\n", - "L = 38.803725, acc = 0.855000\n", - "L = 38.799250, acc = 0.855000\n", - "L = 38.794823, acc = 0.855000\n", - "L = 38.790443, acc = 0.855000\n", - "L = 38.786110, acc = 0.855000\n", - "L = 38.781821, acc = 0.855000\n", - "L = 38.777577, acc = 0.855000\n", - "L = 38.773377, acc = 0.855000\n", - "L = 38.769218, acc = 0.855000\n", - "L = 38.765101, acc = 0.855000\n", - "L = 38.761025, acc = 0.855000\n", - "L = 38.756989, acc = 0.855000\n", - "L = 38.752992, acc = 0.855000\n", - "L = 38.749033, acc = 0.855000\n", - "L = 38.745111, acc = 0.855000\n", - "L = 38.741225, acc = 0.855000\n", - "L = 38.737376, acc = 0.855000\n", - "L = 38.733561, acc = 0.855000\n", - "L = 38.729781, acc = 0.855000\n", - "L = 38.726034, acc = 0.855000\n", - "L = 38.722320, acc = 0.855000\n", - "L = 38.718637, acc = 0.855000\n", - "L = 38.714986, acc = 0.855000\n", - "L = 38.711366, acc = 0.855000\n", - "L = 38.707775, acc = 0.855000\n", - "L = 38.704214, acc = 0.855000\n", - "L = 38.700681, acc = 0.855000\n", - "L = 38.697176, acc = 0.855000\n", - "L = 38.693699, acc = 0.855000\n", - "L = 38.690248, acc = 0.855000\n", - "L = 38.686823, acc = 0.855000\n", - "L = 38.683423, acc = 0.855000\n", - "L = 38.680048, acc = 0.855000\n", - "L = 38.676697, acc = 0.850000\n", - "L = 38.673369, acc = 0.850000\n", - "L = 38.670065, acc = 0.850000\n", - "L = 38.666783, acc = 0.845000\n", - "L = 38.663523, acc = 0.850000\n", - "L = 38.660284, acc = 0.850000\n", - "L = 38.657066, acc = 0.850000\n", - "L = 38.653868, acc = 0.850000\n", - "L = 38.650689, acc = 0.850000\n", - "L = 38.647530, acc = 0.850000\n", - "L = 38.644389, acc = 0.850000\n", - "L = 38.641267, acc = 0.850000\n", - "L = 38.638162, acc = 0.850000\n", - "L = 38.635074, acc = 0.850000\n", - "L = 38.632003, acc = 0.850000\n", - "L = 38.628947, acc = 0.850000\n", - "L = 38.625908, acc = 0.850000\n", - "L = 38.622884, acc = 0.850000\n", - "L = 38.619874, acc = 0.850000\n", - "L = 38.616879, acc = 0.850000\n", - "L = 38.613897, acc = 0.850000\n", - "L = 38.610929, acc = 0.850000\n", - "L = 38.607974, acc = 0.850000\n", - "L = 38.605031, acc = 0.850000\n", - "L = 38.602101, acc = 0.850000\n", - "L = 38.599182, acc = 0.850000\n", - "L = 38.596274, acc = 0.850000\n", - "L = 38.593377, acc = 0.850000\n", - "L = 38.590491, acc = 0.850000\n", - "L = 38.587615, acc = 0.850000\n", - "L = 38.584748, acc = 0.850000\n", - "L = 38.581891, acc = 0.850000\n", - "L = 38.579042, acc = 0.850000\n", - "L = 38.576202, acc = 0.850000\n", - "L = 38.573370, acc = 0.850000\n", - "L = 38.570546, acc = 0.850000\n", - "L = 38.567729, acc = 0.850000\n", - "L = 38.564919, acc = 0.850000\n", - "L = 38.562116, acc = 0.850000\n", - "L = 38.559319, acc = 0.850000\n", - "L = 38.556528, acc = 0.850000\n", - "L = 38.553743, acc = 0.850000\n", - "L = 38.550963, acc = 0.850000\n", - "L = 38.548188, acc = 0.850000\n", - "L = 38.545417, acc = 0.850000\n", - "L = 38.542651, acc = 0.850000\n", - "L = 38.539889, acc = 0.850000\n", - "L = 38.537131, acc = 0.850000\n", - "L = 38.534375, acc = 0.850000\n", - "L = 38.531623, acc = 0.850000\n", - "L = 38.528874, acc = 0.850000\n", - "L = 38.526127, acc = 0.850000\n", - "L = 38.523382, acc = 0.850000\n", - "L = 38.520638, acc = 0.850000\n", - "L = 38.517897, acc = 0.850000\n", - "L = 38.515156, acc = 0.850000\n", - "L = 38.512416, acc = 0.850000\n", - "L = 38.509677, acc = 0.850000\n", - "L = 38.506939, acc = 0.850000\n", - "L = 38.504200, acc = 0.850000\n", - "L = 38.501461, acc = 0.850000\n", - "L = 38.498722, acc = 0.850000\n", - "L = 38.495982, acc = 0.850000\n", - "L = 38.493241, acc = 0.850000\n", - "L = 38.490498, acc = 0.850000\n", - "L = 38.487754, acc = 0.850000\n", - "L = 38.485009, acc = 0.850000\n", - "L = 38.482261, acc = 0.850000\n", - "L = 38.479510, acc = 0.850000\n", - "L = 38.476758, acc = 0.850000\n", - "L = 38.474002, acc = 0.850000\n", - "L = 38.471243, acc = 0.850000\n", - "L = 38.468481, acc = 0.850000\n", - "L = 38.465715, acc = 0.850000\n", - "L = 38.462946, acc = 0.850000\n", - "L = 38.460172, acc = 0.850000\n", - "L = 38.457394, acc = 0.850000\n", - "L = 38.454612, acc = 0.850000\n", - "L = 38.451825, acc = 0.850000\n", - "L = 38.449033, acc = 0.850000\n", - "L = 38.446235, acc = 0.850000\n", - "L = 38.443432, acc = 0.855000\n", - "L = 38.440624, acc = 0.855000\n", - "L = 38.437809, acc = 0.855000\n", - "L = 38.434989, acc = 0.855000\n", - "L = 38.432162, acc = 0.855000\n", - "L = 38.429329, acc = 0.855000\n", - "L = 38.426489, acc = 0.855000\n", - "L = 38.423642, acc = 0.855000\n", - "L = 38.420787, acc = 0.855000\n", - "L = 38.417926, acc = 0.855000\n", - "L = 38.415056, acc = 0.855000\n", - "L = 38.412179, acc = 0.855000\n", - "L = 38.409294, acc = 0.855000\n", - "L = 38.406401, acc = 0.855000\n", - "L = 38.403500, acc = 0.855000\n", - "L = 38.400590, acc = 0.855000\n", - "L = 38.397671, acc = 0.855000\n", - "L = 38.394743, acc = 0.855000\n", - "L = 38.391806, acc = 0.855000\n", - "L = 38.388859, acc = 0.855000\n", - "L = 38.385904, acc = 0.855000\n", - "L = 38.382938, acc = 0.855000\n", - "L = 38.379962, acc = 0.855000\n", - "L = 38.376977, acc = 0.855000\n", - "L = 38.373981, acc = 0.855000\n", - "L = 38.370975, acc = 0.860000\n", - "L = 38.367958, acc = 0.860000\n", - "L = 38.364930, acc = 0.860000\n", - "L = 38.361891, acc = 0.860000\n", - "L = 38.358842, acc = 0.860000\n", - "L = 38.355780, acc = 0.860000\n", - "L = 38.352708, acc = 0.860000\n", - "L = 38.349624, acc = 0.860000\n", - "L = 38.346527, acc = 0.860000\n", - "L = 38.343419, acc = 0.860000\n", - "L = 38.340299, acc = 0.860000\n", - "L = 38.337167, acc = 0.860000\n", - "L = 38.334022, acc = 0.860000\n", - "L = 38.330864, acc = 0.860000\n", - "L = 38.327694, acc = 0.860000\n", - "L = 38.324510, acc = 0.860000\n", - "L = 38.321314, acc = 0.860000\n", - "L = 38.318104, acc = 0.860000\n", - "L = 38.314881, acc = 0.860000\n", - "L = 38.311645, acc = 0.860000\n", - "L = 38.308394, acc = 0.860000\n", - "L = 38.305130, acc = 0.860000\n", - "L = 38.301852, acc = 0.865000\n", - "L = 38.298560, acc = 0.865000\n", - "L = 38.295253, acc = 0.865000\n", - "L = 38.291932, acc = 0.865000\n", - "L = 38.288597, acc = 0.865000\n", - "L = 38.285246, acc = 0.865000\n", - "L = 38.281881, acc = 0.865000\n", - "L = 38.278501, acc = 0.865000\n", - "L = 38.275106, acc = 0.865000\n", - "L = 38.271695, acc = 0.865000\n", - "L = 38.268269, acc = 0.865000\n", - "L = 38.264828, acc = 0.865000\n", - "L = 38.261370, acc = 0.865000\n", - "L = 38.257897, acc = 0.865000\n", - "L = 38.254408, acc = 0.865000\n", - "L = 38.250903, acc = 0.865000\n", - "L = 38.247382, acc = 0.865000\n", - "L = 38.243844, acc = 0.865000\n", - "L = 38.240290, acc = 0.865000\n", - "L = 38.236720, acc = 0.865000\n", - "L = 38.233133, acc = 0.865000\n", - "L = 38.229528, acc = 0.865000\n", - "L = 38.225907, acc = 0.865000\n", - "L = 38.222269, acc = 0.865000\n", - "L = 38.218614, acc = 0.865000\n", - "L = 38.214941, acc = 0.865000\n", - "L = 38.211251, acc = 0.865000\n", - "L = 38.207543, acc = 0.865000\n", - "L = 38.203818, acc = 0.865000\n", - "L = 38.200074, acc = 0.865000\n", - "L = 38.196313, acc = 0.865000\n", - "L = 38.192534, acc = 0.865000\n", - "L = 38.188737, acc = 0.865000\n", - "L = 38.184921, acc = 0.865000\n", - "L = 38.181087, acc = 0.865000\n", - "L = 38.177235, acc = 0.865000\n", - "L = 38.173364, acc = 0.865000\n", - "L = 38.169474, acc = 0.865000\n", - "L = 38.165565, acc = 0.865000\n", - "L = 38.161637, acc = 0.865000\n", - "L = 38.157691, acc = 0.865000\n", - "L = 38.153725, acc = 0.865000\n", - "L = 38.149740, acc = 0.865000\n", - "L = 38.145735, acc = 0.865000\n", - "L = 38.141711, acc = 0.865000\n", - "L = 38.137668, acc = 0.865000\n", - "L = 38.133604, acc = 0.865000\n", - "L = 38.129521, acc = 0.865000\n", - "L = 38.125418, acc = 0.865000\n", - "L = 38.121295, acc = 0.865000\n", - "L = 38.117152, acc = 0.865000\n", - "L = 38.112988, acc = 0.865000\n", - "L = 38.108804, acc = 0.865000\n", - "L = 38.104600, acc = 0.865000\n", - "L = 38.100375, acc = 0.865000\n", - "L = 38.096130, acc = 0.865000\n", - "L = 38.091863, acc = 0.865000\n", - "L = 38.087576, acc = 0.865000\n", - "L = 38.083268, acc = 0.865000\n", - "L = 38.078938, acc = 0.865000\n", - "L = 38.074588, acc = 0.865000\n", - "L = 38.070216, acc = 0.865000\n", - "L = 38.065823, acc = 0.865000\n", - "L = 38.061408, acc = 0.865000\n", - "L = 38.056972, acc = 0.865000\n", - "L = 38.052514, acc = 0.865000\n", - "L = 38.048034, acc = 0.865000\n", - "L = 38.043532, acc = 0.865000\n", - "L = 38.039009, acc = 0.865000\n", - "L = 38.034463, acc = 0.860000\n", - "L = 38.029894, acc = 0.860000\n", - "L = 38.025304, acc = 0.860000\n", - "L = 38.020691, acc = 0.860000\n", - "L = 38.016056, acc = 0.860000\n", - "L = 38.011397, acc = 0.860000\n", - "L = 38.006717, acc = 0.860000\n", - "L = 38.002013, acc = 0.860000\n", - "L = 37.997286, acc = 0.860000\n", - "L = 37.992536, acc = 0.860000\n", - "L = 37.987763, acc = 0.860000\n", - "L = 37.982967, acc = 0.860000\n", - "L = 37.978147, acc = 0.860000\n", - "L = 37.973304, acc = 0.860000\n", - "L = 37.968438, acc = 0.860000\n", - "L = 37.963547, acc = 0.860000\n", - "L = 37.958633, acc = 0.860000\n", - "L = 37.953695, acc = 0.860000\n", - "L = 37.948733, acc = 0.860000\n", - "L = 37.943746, acc = 0.860000\n", - "L = 37.938736, acc = 0.860000\n", - "L = 37.933701, acc = 0.860000\n", - "L = 37.928641, acc = 0.860000\n", - "L = 37.923557, acc = 0.860000\n", - "L = 37.918449, acc = 0.860000\n", - "L = 37.913315, acc = 0.860000\n", - "L = 37.908157, acc = 0.860000\n", - "L = 37.902973, acc = 0.860000\n", - "L = 37.897765, acc = 0.860000\n", - "L = 37.892531, acc = 0.860000\n", - "L = 37.887272, acc = 0.860000\n", - "L = 37.881987, acc = 0.860000\n", - "L = 37.876677, acc = 0.860000\n", - "L = 37.871341, acc = 0.860000\n", - "L = 37.865979, acc = 0.860000\n", - "L = 37.860592, acc = 0.860000\n", - "L = 37.855178, acc = 0.860000\n", - "L = 37.849738, acc = 0.860000\n", - "L = 37.844272, acc = 0.860000\n", - "L = 37.838779, acc = 0.860000\n", - "L = 37.833260, acc = 0.860000\n", - "L = 37.827714, acc = 0.860000\n", - "L = 37.822141, acc = 0.860000\n", - "L = 37.816542, acc = 0.860000\n", - "L = 37.810915, acc = 0.860000\n", - "L = 37.805261, acc = 0.860000\n", - "L = 37.799580, acc = 0.860000\n", - "L = 37.793872, acc = 0.860000\n", - "L = 37.788136, acc = 0.860000\n", - "L = 37.782373, acc = 0.860000\n", - "L = 37.776581, acc = 0.860000\n", - "L = 37.770762, acc = 0.860000\n", - "L = 37.764914, acc = 0.860000\n", - "L = 37.759039, acc = 0.860000\n", - "L = 37.753135, acc = 0.860000\n", - "L = 37.747203, acc = 0.860000\n", - "L = 37.741242, acc = 0.860000\n", - "L = 37.735252, acc = 0.860000\n", - "L = 37.729234, acc = 0.865000\n", - "L = 37.723187, acc = 0.865000\n", - "L = 37.717110, acc = 0.865000\n", - "L = 37.711005, acc = 0.865000\n", - "L = 37.704870, acc = 0.865000\n", - "L = 37.698705, acc = 0.865000\n", - "L = 37.692511, acc = 0.865000\n", - "L = 37.686287, acc = 0.865000\n", - "L = 37.680033, acc = 0.865000\n", - "L = 37.673749, acc = 0.865000\n", - "L = 37.667434, acc = 0.865000\n", - "L = 37.661090, acc = 0.865000\n", - "L = 37.654714, acc = 0.865000\n", - "L = 37.648309, acc = 0.865000\n", - "L = 37.641872, acc = 0.865000\n", - "L = 37.635404, acc = 0.865000\n", - "L = 37.628906, acc = 0.865000\n", - "L = 37.622376, acc = 0.865000\n", - "L = 37.615814, acc = 0.865000\n", - "L = 37.609222, acc = 0.865000\n", - "L = 37.602597, acc = 0.865000\n", - "L = 37.595941, acc = 0.865000\n", - "L = 37.589252, acc = 0.865000\n", - "L = 37.582532, acc = 0.865000\n", - "L = 37.575779, acc = 0.865000\n", - "L = 37.568994, acc = 0.865000\n", - "L = 37.562176, acc = 0.865000\n", - "L = 37.555325, acc = 0.865000\n", - "L = 37.548442, acc = 0.865000\n", - "L = 37.541525, acc = 0.865000\n", - "L = 37.534575, acc = 0.865000\n", - "L = 37.527592, acc = 0.865000\n", - "L = 37.520575, acc = 0.865000\n", - "L = 37.513525, acc = 0.865000\n", - "L = 37.506441, acc = 0.865000\n", - "L = 37.499322, acc = 0.865000\n", - "L = 37.492170, acc = 0.865000\n", - "L = 37.484983, acc = 0.865000\n", - "L = 37.477762, acc = 0.865000\n", - "L = 37.470506, acc = 0.865000\n", - "L = 37.463215, acc = 0.865000\n", - "L = 37.455889, acc = 0.865000\n", - "L = 37.448528, acc = 0.865000\n", - "L = 37.441132, acc = 0.865000\n", - "L = 37.433700, acc = 0.865000\n", - "L = 37.426233, acc = 0.865000\n", - "L = 37.418730, acc = 0.865000\n", - "L = 37.411191, acc = 0.865000\n", - "L = 37.403616, acc = 0.865000\n", - "L = 37.396004, acc = 0.865000\n", - "L = 37.388356, acc = 0.865000\n", - "L = 37.380672, acc = 0.865000\n" + "L = 121.621107, acc = 0.500000\n", + "L = 115.928422, acc = 0.500000\n", + "L = 111.304997, acc = 0.500000\n", + "L = 107.789222, acc = 0.500000\n", + "L = 105.265297, acc = 0.500000\n", + "L = 103.533617, acc = 0.500000\n", + "L = 102.380546, acc = 0.500000\n", + "L = 101.622557, acc = 0.500000\n", + "L = 101.121698, acc = 0.500000\n", + "L = 100.782803, acc = 0.510000\n", + "L = 100.543751, acc = 0.530000\n", + "L = 100.365372, acc = 0.540000\n", + "L = 100.223492, acc = 0.520000\n", + "L = 100.103371, acc = 0.475000\n", + "L = 99.996073, acc = 0.460000\n", + "L = 99.896185, acc = 0.465000\n", + "L = 99.800411, acc = 0.465000\n", + "L = 99.706725, acc = 0.495000\n", + "L = 99.613854, acc = 0.515000\n", + "L = 99.520981, acc = 0.560000\n", + "L = 99.427551, acc = 0.585000\n", + "L = 99.333171, acc = 0.630000\n", + "L = 99.237541, acc = 0.660000\n", + "L = 99.140415, acc = 0.690000\n", + "L = 99.041582, acc = 0.705000\n", + "L = 98.940844, acc = 0.710000\n", + "L = 98.838015, acc = 0.720000\n", + "L = 98.732913, acc = 0.740000\n", + "L = 98.625357, acc = 0.745000\n", + "L = 98.515164, acc = 0.755000\n", + "L = 98.402148, acc = 0.785000\n", + "L = 98.286120, acc = 0.790000\n", + "L = 98.166887, acc = 0.800000\n", + "L = 98.044250, acc = 0.800000\n", + "L = 97.918005, acc = 0.805000\n", + "L = 97.787942, acc = 0.815000\n", + "L = 97.653845, acc = 0.830000\n", + "L = 97.515489, acc = 0.830000\n", + "L = 97.372644, acc = 0.830000\n", + "L = 97.225071, acc = 0.830000\n", + "L = 97.072523, acc = 0.830000\n", + "L = 96.914745, acc = 0.835000\n", + "L = 96.751472, acc = 0.835000\n", + "L = 96.582430, acc = 0.835000\n", + "L = 96.407335, acc = 0.835000\n", + "L = 96.225894, acc = 0.835000\n", + "L = 96.037800, acc = 0.835000\n", + "L = 95.842740, acc = 0.835000\n", + "L = 95.640384, acc = 0.835000\n", + "L = 95.430396, acc = 0.835000\n", + "L = 95.212423, acc = 0.835000\n", + "L = 94.986104, acc = 0.830000\n", + "L = 94.751064, acc = 0.830000\n", + "L = 94.506915, acc = 0.830000\n", + "L = 94.253259, acc = 0.830000\n", + "L = 93.989683, acc = 0.830000\n", + "L = 93.715765, acc = 0.830000\n", + "L = 93.431069, acc = 0.830000\n", + "L = 93.135151, acc = 0.830000\n", + "L = 92.827554, acc = 0.830000\n", + "L = 92.507814, acc = 0.830000\n", + "L = 92.175457, acc = 0.830000\n", + "L = 91.830004, acc = 0.835000\n", + "L = 91.470973, acc = 0.835000\n", + "L = 91.097875, acc = 0.835000\n", + "L = 90.710225, acc = 0.840000\n", + "L = 90.307539, acc = 0.845000\n", + "L = 89.889339, acc = 0.845000\n", + "L = 89.455160, acc = 0.845000\n", + "L = 89.004546, acc = 0.840000\n", + "L = 88.537066, acc = 0.840000\n", + "L = 88.052308, acc = 0.840000\n", + "L = 87.549895, acc = 0.840000\n", + "L = 87.029483, acc = 0.845000\n", + "L = 86.490773, acc = 0.845000\n", + "L = 85.933518, acc = 0.845000\n", + "L = 85.357526, acc = 0.845000\n", + "L = 84.762674, acc = 0.845000\n", + "L = 84.148911, acc = 0.845000\n", + "L = 83.516272, acc = 0.845000\n", + "L = 82.864878, acc = 0.845000\n", + "L = 82.194952, acc = 0.845000\n", + "L = 81.506820, acc = 0.840000\n", + "L = 80.800921, acc = 0.840000\n", + "L = 80.077810, acc = 0.840000\n", + "L = 79.338167, acc = 0.840000\n", + "L = 78.582791, acc = 0.840000\n", + "L = 77.812612, acc = 0.840000\n", + "L = 77.028680, acc = 0.840000\n", + "L = 76.232171, acc = 0.840000\n", + "L = 75.424374, acc = 0.840000\n", + "L = 74.606691, acc = 0.840000\n", + "L = 73.780620, acc = 0.840000\n", + "L = 72.947751, acc = 0.840000\n", + "L = 72.109745, acc = 0.840000\n", + "L = 71.268324, acc = 0.840000\n", + "L = 70.425252, acc = 0.840000\n", + "L = 69.582316, acc = 0.840000\n", + "L = 68.741307, acc = 0.840000\n", + "L = 67.904004, acc = 0.840000\n", + "L = 67.072151, acc = 0.840000\n", + "L = 66.247442, acc = 0.840000\n", + "L = 65.431502, acc = 0.840000\n", + "L = 64.625872, acc = 0.840000\n", + "L = 63.831996, acc = 0.840000\n", + "L = 63.051206, acc = 0.840000\n", + "L = 62.284717, acc = 0.840000\n", + "L = 61.533617, acc = 0.840000\n", + "L = 60.798864, acc = 0.840000\n", + "L = 60.081280, acc = 0.840000\n", + "L = 59.381556, acc = 0.840000\n", + "L = 58.700250, acc = 0.840000\n", + "L = 58.037794, acc = 0.840000\n", + "L = 57.394496, acc = 0.840000\n", + "L = 56.770551, acc = 0.840000\n", + "L = 56.166043, acc = 0.840000\n", + "L = 55.580959, acc = 0.840000\n", + "L = 55.015197, acc = 0.840000\n", + "L = 54.468573, acc = 0.840000\n", + "L = 53.940833, acc = 0.840000\n", + "L = 53.431659, acc = 0.840000\n", + "L = 52.940684, acc = 0.840000\n", + "L = 52.467494, acc = 0.840000\n", + "L = 52.011639, acc = 0.840000\n", + "L = 51.572642, acc = 0.840000\n", + "L = 51.150004, acc = 0.840000\n", + "L = 50.743209, acc = 0.840000\n", + "L = 50.351731, acc = 0.840000\n", + "L = 49.975042, acc = 0.840000\n", + "L = 49.612610, acc = 0.835000\n", + "L = 49.263906, acc = 0.835000\n", + "L = 48.928410, acc = 0.840000\n", + "L = 48.605606, acc = 0.840000\n", + "L = 48.294993, acc = 0.840000\n", + "L = 47.996079, acc = 0.840000\n", + "L = 47.708390, acc = 0.840000\n", + "L = 47.431462, acc = 0.840000\n", + "L = 47.164849, acc = 0.840000\n", + "L = 46.908123, acc = 0.840000\n", + "L = 46.660868, acc = 0.840000\n", + "L = 46.422687, acc = 0.840000\n", + "L = 46.193200, acc = 0.840000\n", + "L = 45.972040, acc = 0.840000\n", + "L = 45.758860, acc = 0.840000\n", + "L = 45.553325, acc = 0.840000\n", + "L = 45.355116, acc = 0.840000\n", + "L = 45.163929, acc = 0.835000\n", + "L = 44.979474, acc = 0.835000\n", + "L = 44.801473, acc = 0.835000\n", + "L = 44.629662, acc = 0.835000\n", + "L = 44.463789, acc = 0.835000\n", + "L = 44.303614, acc = 0.835000\n", + "L = 44.148907, acc = 0.835000\n", + "L = 43.999451, acc = 0.835000\n", + "L = 43.855036, acc = 0.835000\n", + "L = 43.715465, acc = 0.835000\n", + "L = 43.580546, acc = 0.835000\n", + "L = 43.450099, acc = 0.835000\n", + "L = 43.323950, acc = 0.835000\n", + "L = 43.201935, acc = 0.835000\n", + "L = 43.083894, acc = 0.835000\n", + "L = 42.969678, acc = 0.835000\n", + "L = 42.859141, acc = 0.835000\n", + "L = 42.752145, acc = 0.835000\n", + "L = 42.648557, acc = 0.835000\n", + "L = 42.548251, acc = 0.835000\n", + "L = 42.451106, acc = 0.835000\n", + "L = 42.357004, acc = 0.835000\n", + "L = 42.265834, acc = 0.835000\n", + "L = 42.177489, acc = 0.835000\n", + "L = 42.091866, acc = 0.845000\n", + "L = 42.008866, acc = 0.845000\n", + "L = 41.928395, acc = 0.845000\n", + "L = 41.850363, acc = 0.845000\n", + "L = 41.774680, acc = 0.845000\n", + "L = 41.701264, acc = 0.845000\n", + "L = 41.630034, acc = 0.845000\n", + "L = 41.560912, acc = 0.845000\n", + "L = 41.493823, acc = 0.845000\n", + "L = 41.428697, acc = 0.845000\n", + "L = 41.365463, acc = 0.845000\n", + "L = 41.304056, acc = 0.850000\n", + "L = 41.244412, acc = 0.850000\n", + "L = 41.186469, acc = 0.850000\n", + "L = 41.130168, acc = 0.850000\n", + "L = 41.075452, acc = 0.850000\n", + "L = 41.022266, acc = 0.850000\n", + "L = 40.970558, acc = 0.850000\n", + "L = 40.920276, acc = 0.850000\n", + "L = 40.871372, acc = 0.850000\n", + "L = 40.823798, acc = 0.850000\n", + "L = 40.777509, acc = 0.850000\n", + "L = 40.732461, acc = 0.855000\n", + "L = 40.688613, acc = 0.855000\n", + "L = 40.645922, acc = 0.855000\n", + "L = 40.604351, acc = 0.855000\n", + "L = 40.563861, acc = 0.855000\n", + "L = 40.524415, acc = 0.855000\n", + "L = 40.485980, acc = 0.855000\n", + "L = 40.448521, acc = 0.855000\n", + "L = 40.412004, acc = 0.855000\n", + "L = 40.376400, acc = 0.855000\n", + "L = 40.341678, acc = 0.855000\n", + "L = 40.307807, acc = 0.855000\n", + "L = 40.274761, acc = 0.855000\n", + "L = 40.242511, acc = 0.855000\n", + "L = 40.211032, acc = 0.855000\n", + "L = 40.180297, acc = 0.855000\n", + "L = 40.150284, acc = 0.855000\n", + "L = 40.120967, acc = 0.855000\n", + "L = 40.092325, acc = 0.855000\n", + "L = 40.064334, acc = 0.855000\n", + "L = 40.036975, acc = 0.855000\n", + "L = 40.010226, acc = 0.855000\n", + "L = 39.984068, acc = 0.855000\n", + "L = 39.958481, acc = 0.855000\n", + "L = 39.933446, acc = 0.855000\n", + "L = 39.908947, acc = 0.855000\n", + "L = 39.884966, acc = 0.855000\n", + "L = 39.861486, acc = 0.855000\n", + "L = 39.838490, acc = 0.855000\n", + "L = 39.815964, acc = 0.855000\n", + "L = 39.793892, acc = 0.855000\n", + "L = 39.772260, acc = 0.855000\n", + "L = 39.751053, acc = 0.855000\n", + "L = 39.730259, acc = 0.855000\n", + "L = 39.709863, acc = 0.855000\n", + "L = 39.689852, acc = 0.855000\n", + "L = 39.670216, acc = 0.855000\n", + "L = 39.650941, acc = 0.855000\n", + "L = 39.632017, acc = 0.855000\n", + "L = 39.613431, acc = 0.855000\n", + "L = 39.595173, acc = 0.855000\n", + "L = 39.577233, acc = 0.855000\n", + "L = 39.559600, acc = 0.855000\n", + "L = 39.542265, acc = 0.855000\n", + "L = 39.525218, acc = 0.855000\n", + "L = 39.508449, acc = 0.855000\n", + "L = 39.491950, acc = 0.855000\n", + "L = 39.475713, acc = 0.855000\n", + "L = 39.459727, acc = 0.855000\n", + "L = 39.443987, acc = 0.855000\n", + "L = 39.428483, acc = 0.855000\n", + "L = 39.413208, acc = 0.855000\n", + "L = 39.398154, acc = 0.855000\n", + "L = 39.383314, acc = 0.855000\n", + "L = 39.368682, acc = 0.855000\n", + "L = 39.354250, acc = 0.855000\n", + "L = 39.340012, acc = 0.855000\n", + "L = 39.325961, acc = 0.860000\n", + "L = 39.312091, acc = 0.860000\n", + "L = 39.298397, acc = 0.860000\n", + "L = 39.284872, acc = 0.860000\n", + "L = 39.271510, acc = 0.860000\n", + "L = 39.258306, acc = 0.860000\n", + "L = 39.245255, acc = 0.860000\n", + "L = 39.232351, acc = 0.860000\n", + "L = 39.219590, acc = 0.860000\n", + "L = 39.206966, acc = 0.860000\n", + "L = 39.194474, acc = 0.860000\n", + "L = 39.182111, acc = 0.860000\n", + "L = 39.169870, acc = 0.860000\n", + "L = 39.157749, acc = 0.860000\n", + "L = 39.145742, acc = 0.860000\n", + "L = 39.133846, acc = 0.850000\n", + "L = 39.122056, acc = 0.850000\n", + "L = 39.110369, acc = 0.850000\n", + "L = 39.098780, acc = 0.850000\n", + "L = 39.087286, acc = 0.850000\n", + "L = 39.075884, acc = 0.850000\n", + "L = 39.064569, acc = 0.850000\n", + "L = 39.053338, acc = 0.850000\n", + "L = 39.042188, acc = 0.850000\n", + "L = 39.031116, acc = 0.850000\n", + "L = 39.020118, acc = 0.850000\n", + "L = 39.009191, acc = 0.850000\n", + "L = 38.998332, acc = 0.850000\n", + "L = 38.987539, acc = 0.850000\n", + "L = 38.976808, acc = 0.850000\n", + "L = 38.966136, acc = 0.850000\n", + "L = 38.955522, acc = 0.850000\n", + "L = 38.944961, acc = 0.850000\n", + "L = 38.934453, acc = 0.850000\n", + "L = 38.923993, acc = 0.855000\n", + "L = 38.913579, acc = 0.855000\n", + "L = 38.903210, acc = 0.855000\n", + "L = 38.892883, acc = 0.855000\n", + "L = 38.882595, acc = 0.855000\n", + "L = 38.872344, acc = 0.855000\n", + "L = 38.862129, acc = 0.855000\n", + "L = 38.851946, acc = 0.855000\n", + "L = 38.841794, acc = 0.855000\n", + "L = 38.831671, acc = 0.855000\n", + "L = 38.821574, acc = 0.855000\n", + "L = 38.811503, acc = 0.855000\n", + "L = 38.801454, acc = 0.855000\n", + "L = 38.791426, acc = 0.855000\n", + "L = 38.781418, acc = 0.855000\n", + "L = 38.771427, acc = 0.855000\n", + "L = 38.761452, acc = 0.855000\n", + "L = 38.751491, acc = 0.855000\n", + "L = 38.741542, acc = 0.855000\n", + "L = 38.731604, acc = 0.855000\n", + "L = 38.721676, acc = 0.855000\n", + "L = 38.711755, acc = 0.855000\n", + "L = 38.701840, acc = 0.855000\n", + "L = 38.691929, acc = 0.855000\n", + "L = 38.682022, acc = 0.855000\n", + "L = 38.672117, acc = 0.855000\n", + "L = 38.662212, acc = 0.855000\n", + "L = 38.652306, acc = 0.855000\n", + "L = 38.642397, acc = 0.855000\n", + "L = 38.632485, acc = 0.855000\n", + "L = 38.622568, acc = 0.855000\n", + "L = 38.612645, acc = 0.855000\n", + "L = 38.602715, acc = 0.855000\n", + "L = 38.592775, acc = 0.855000\n", + "L = 38.582826, acc = 0.855000\n", + "L = 38.572866, acc = 0.855000\n", + "L = 38.562894, acc = 0.855000\n", + "L = 38.552908, acc = 0.855000\n", + "L = 38.542908, acc = 0.855000\n", + "L = 38.532892, acc = 0.855000\n", + "L = 38.522860, acc = 0.855000\n", + "L = 38.512811, acc = 0.855000\n", + "L = 38.502742, acc = 0.855000\n", + "L = 38.492655, acc = 0.855000\n", + "L = 38.482546, acc = 0.855000\n", + "L = 38.472416, acc = 0.855000\n", + "L = 38.462263, acc = 0.855000\n", + "L = 38.452087, acc = 0.855000\n", + "L = 38.441886, acc = 0.855000\n", + "L = 38.431660, acc = 0.855000\n", + "L = 38.421407, acc = 0.855000\n", + "L = 38.411128, acc = 0.855000\n", + "L = 38.400820, acc = 0.855000\n", + "L = 38.390483, acc = 0.855000\n", + "L = 38.380116, acc = 0.855000\n", + "L = 38.369719, acc = 0.855000\n", + "L = 38.359290, acc = 0.855000\n", + "L = 38.348829, acc = 0.855000\n", + "L = 38.338334, acc = 0.855000\n", + "L = 38.327806, acc = 0.855000\n", + "L = 38.317242, acc = 0.855000\n", + "L = 38.306643, acc = 0.855000\n", + "L = 38.296008, acc = 0.855000\n", + "L = 38.285335, acc = 0.855000\n", + "L = 38.274625, acc = 0.855000\n", + "L = 38.263875, acc = 0.855000\n", + "L = 38.253086, acc = 0.855000\n", + "L = 38.242257, acc = 0.855000\n", + "L = 38.231387, acc = 0.855000\n", + "L = 38.220475, acc = 0.855000\n", + "L = 38.209520, acc = 0.855000\n", + "L = 38.198523, acc = 0.855000\n", + "L = 38.187481, acc = 0.855000\n", + "L = 38.176394, acc = 0.855000\n", + "L = 38.165262, acc = 0.855000\n", + "L = 38.154084, acc = 0.855000\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "L = 38.142859, acc = 0.855000\n", + "L = 38.131586, acc = 0.855000\n", + "L = 38.120265, acc = 0.855000\n", + "L = 38.108895, acc = 0.855000\n", + "L = 38.097475, acc = 0.855000\n", + "L = 38.086004, acc = 0.855000\n", + "L = 38.074483, acc = 0.855000\n", + "L = 38.062909, acc = 0.855000\n", + "L = 38.051283, acc = 0.855000\n", + "L = 38.039603, acc = 0.855000\n", + "L = 38.027870, acc = 0.855000\n", + "L = 38.016082, acc = 0.855000\n", + "L = 38.004238, acc = 0.855000\n", + "L = 37.992338, acc = 0.860000\n", + "L = 37.980381, acc = 0.860000\n", + "L = 37.968367, acc = 0.860000\n", + "L = 37.956295, acc = 0.860000\n", + "L = 37.944163, acc = 0.860000\n", + "L = 37.931972, acc = 0.860000\n", + "L = 37.919720, acc = 0.860000\n", + "L = 37.907408, acc = 0.860000\n", + "L = 37.895033, acc = 0.860000\n", + "L = 37.882596, acc = 0.860000\n", + "L = 37.870096, acc = 0.860000\n", + "L = 37.857532, acc = 0.860000\n", + "L = 37.844903, acc = 0.860000\n", + "L = 37.832209, acc = 0.860000\n", + "L = 37.819448, acc = 0.860000\n", + "L = 37.806621, acc = 0.860000\n", + "L = 37.793727, acc = 0.860000\n", + "L = 37.780763, acc = 0.860000\n", + "L = 37.767731, acc = 0.860000\n", + "L = 37.754630, acc = 0.860000\n", + "L = 37.741457, acc = 0.860000\n", + "L = 37.728214, acc = 0.865000\n", + "L = 37.714898, acc = 0.865000\n", + "L = 37.701510, acc = 0.865000\n", + "L = 37.688048, acc = 0.865000\n", + "L = 37.674512, acc = 0.865000\n", + "L = 37.660902, acc = 0.865000\n", + "L = 37.647215, acc = 0.865000\n", + "L = 37.633452, acc = 0.865000\n", + "L = 37.619612, acc = 0.865000\n", + "L = 37.605693, acc = 0.865000\n", + "L = 37.591696, acc = 0.865000\n", + "L = 37.577620, acc = 0.865000\n", + "L = 37.563463, acc = 0.865000\n", + "L = 37.549225, acc = 0.870000\n", + "L = 37.534905, acc = 0.865000\n", + "L = 37.520503, acc = 0.865000\n", + "L = 37.506017, acc = 0.865000\n", + "L = 37.491447, acc = 0.865000\n", + "L = 37.476792, acc = 0.865000\n", + "L = 37.462052, acc = 0.865000\n", + "L = 37.447224, acc = 0.865000\n", + "L = 37.432310, acc = 0.865000\n", + "L = 37.417307, acc = 0.865000\n", + "L = 37.402215, acc = 0.865000\n", + "L = 37.387033, acc = 0.865000\n", + "L = 37.371761, acc = 0.865000\n", + "L = 37.356398, acc = 0.865000\n", + "L = 37.340942, acc = 0.865000\n", + "L = 37.325393, acc = 0.865000\n", + "L = 37.309751, acc = 0.865000\n", + "L = 37.294013, acc = 0.865000\n", + "L = 37.278181, acc = 0.865000\n", + "L = 37.262252, acc = 0.865000\n", + "L = 37.246226, acc = 0.865000\n", + "L = 37.230101, acc = 0.865000\n", + "L = 37.213879, acc = 0.865000\n", + "L = 37.197556, acc = 0.865000\n", + "L = 37.181133, acc = 0.865000\n", + "L = 37.164609, acc = 0.865000\n", + "L = 37.147983, acc = 0.865000\n", + "L = 37.131254, acc = 0.865000\n", + "L = 37.114421, acc = 0.865000\n", + "L = 37.097483, acc = 0.865000\n", + "L = 37.080440, acc = 0.865000\n", + "L = 37.063291, acc = 0.865000\n", + "L = 37.046035, acc = 0.865000\n", + "L = 37.028670, acc = 0.865000\n", + "L = 37.011197, acc = 0.865000\n", + "L = 36.993614, acc = 0.865000\n", + "L = 36.975921, acc = 0.865000\n", + "L = 36.958116, acc = 0.865000\n", + "L = 36.940199, acc = 0.865000\n", + "L = 36.922169, acc = 0.865000\n", + "L = 36.904025, acc = 0.865000\n", + "L = 36.885767, acc = 0.865000\n", + "L = 36.867393, acc = 0.870000\n", + "L = 36.848902, acc = 0.870000\n", + "L = 36.830294, acc = 0.870000\n", + "L = 36.811568, acc = 0.870000\n", + "L = 36.792724, acc = 0.870000\n", + "L = 36.773759, acc = 0.870000\n", + "L = 36.754674, acc = 0.870000\n", + "L = 36.735467, acc = 0.870000\n", + "L = 36.716138, acc = 0.870000\n", + "L = 36.696686, acc = 0.870000\n", + "L = 36.677111, acc = 0.870000\n", + "L = 36.657410, acc = 0.870000\n", + "L = 36.637584, acc = 0.870000\n", + "L = 36.617631, acc = 0.870000\n", + "L = 36.597551, acc = 0.870000\n", + "L = 36.577343, acc = 0.870000\n", + "L = 36.557006, acc = 0.870000\n", + "L = 36.536540, acc = 0.870000\n", + "L = 36.515943, acc = 0.875000\n", + "L = 36.495215, acc = 0.875000\n", + "L = 36.474354, acc = 0.875000\n", + "L = 36.453361, acc = 0.875000\n", + "L = 36.432234, acc = 0.875000\n", + "L = 36.410972, acc = 0.875000\n", + "L = 36.389576, acc = 0.875000\n", + "L = 36.368043, acc = 0.875000\n", + "L = 36.346373, acc = 0.875000\n", + "L = 36.324566, acc = 0.875000\n", + "L = 36.302620, acc = 0.875000\n", + "L = 36.280535, acc = 0.875000\n", + "L = 36.258310, acc = 0.875000\n", + "L = 36.235944, acc = 0.875000\n", + "L = 36.213437, acc = 0.875000\n", + "L = 36.190788, acc = 0.875000\n", + "L = 36.167996, acc = 0.875000\n", + "L = 36.145060, acc = 0.875000\n", + "L = 36.121980, acc = 0.875000\n", + "L = 36.098755, acc = 0.875000\n", + "L = 36.075384, acc = 0.875000\n", + "L = 36.051866, acc = 0.875000\n", + "L = 36.028201, acc = 0.875000\n", + "L = 36.004388, acc = 0.875000\n", + "L = 35.980427, acc = 0.875000\n", + "L = 35.956316, acc = 0.875000\n", + "L = 35.932055, acc = 0.875000\n", + "L = 35.907644, acc = 0.875000\n", + "L = 35.883081, acc = 0.875000\n", + "L = 35.858366, acc = 0.875000\n", + "L = 35.833499, acc = 0.875000\n", + "L = 35.808478, acc = 0.875000\n", + "L = 35.783303, acc = 0.875000\n", + "L = 35.757974, acc = 0.875000\n", + "L = 35.732489, acc = 0.875000\n", + "L = 35.706849, acc = 0.875000\n", + "L = 35.681052, acc = 0.875000\n", + "L = 35.655099, acc = 0.875000\n", + "L = 35.628988, acc = 0.875000\n", + "L = 35.602718, acc = 0.875000\n", + "L = 35.576290, acc = 0.875000\n", + "L = 35.549703, acc = 0.875000\n", + "L = 35.522956, acc = 0.875000\n", + "L = 35.496049, acc = 0.875000\n", + "L = 35.468980, acc = 0.875000\n", + "L = 35.441751, acc = 0.875000\n", + "L = 35.414359, acc = 0.875000\n", + "L = 35.386805, acc = 0.875000\n", + "L = 35.359088, acc = 0.875000\n", + "L = 35.331208, acc = 0.875000\n", + "L = 35.303164, acc = 0.875000\n", + "L = 35.274956, acc = 0.875000\n", + "L = 35.246582, acc = 0.875000\n", + "L = 35.218044, acc = 0.875000\n", + "L = 35.189340, acc = 0.875000\n", + "L = 35.160470, acc = 0.875000\n", + "L = 35.131434, acc = 0.875000\n", + "L = 35.102230, acc = 0.875000\n", + "L = 35.072860, acc = 0.875000\n", + "L = 35.043321, acc = 0.875000\n", + "L = 35.013615, acc = 0.875000\n", + "L = 34.983741, acc = 0.880000\n", + "L = 34.953697, acc = 0.880000\n", + "L = 34.923485, acc = 0.880000\n", + "L = 34.893103, acc = 0.880000\n", + "L = 34.862552, acc = 0.880000\n", + "L = 34.831831, acc = 0.880000\n", + "L = 34.800940, acc = 0.880000\n", + "L = 34.769878, acc = 0.880000\n", + "L = 34.738645, acc = 0.880000\n", + "L = 34.707242, acc = 0.880000\n", + "L = 34.675667, acc = 0.880000\n", + "L = 34.643920, acc = 0.880000\n", + "L = 34.612002, acc = 0.880000\n", + "L = 34.579912, acc = 0.880000\n", + "L = 34.547650, acc = 0.880000\n", + "L = 34.515216, acc = 0.880000\n", + "L = 34.482609, acc = 0.880000\n", + "L = 34.449830, acc = 0.880000\n", + "L = 34.416878, acc = 0.885000\n", + "L = 34.383754, acc = 0.885000\n", + "L = 34.350456, acc = 0.885000\n", + "L = 34.316985, acc = 0.885000\n", + "L = 34.283341, acc = 0.890000\n", + "L = 34.249524, acc = 0.890000\n", + "L = 34.215534, acc = 0.890000\n", + "L = 34.181370, acc = 0.890000\n", + "L = 34.147033, acc = 0.890000\n", + "L = 34.112523, acc = 0.890000\n", + "L = 34.077839, acc = 0.890000\n", + "L = 34.042982, acc = 0.890000\n", + "L = 34.007951, acc = 0.890000\n", + "L = 33.972747, acc = 0.890000\n", + "L = 33.937370, acc = 0.890000\n", + "L = 33.901819, acc = 0.890000\n", + "L = 33.866095, acc = 0.890000\n", + "L = 33.830199, acc = 0.890000\n", + "L = 33.794129, acc = 0.890000\n", + "L = 33.757886, acc = 0.890000\n", + "L = 33.721471, acc = 0.890000\n", + "L = 33.684882, acc = 0.890000\n", + "L = 33.648122, acc = 0.890000\n", + "L = 33.611189, acc = 0.890000\n", + "L = 33.574083, acc = 0.890000\n", + "L = 33.536806, acc = 0.890000\n", + "L = 33.499357, acc = 0.890000\n", + "L = 33.461737, acc = 0.895000\n", + "L = 33.423945, acc = 0.895000\n", + "L = 33.385982, acc = 0.895000\n", + "L = 33.347848, acc = 0.895000\n", + "L = 33.309543, acc = 0.895000\n", + "L = 33.271069, acc = 0.895000\n", + "L = 33.232424, acc = 0.895000\n", + "L = 33.193610, acc = 0.895000\n", + "L = 33.154626, acc = 0.895000\n", + "L = 33.115473, acc = 0.895000\n", + "L = 33.076151, acc = 0.895000\n", + "L = 33.036662, acc = 0.895000\n", + "L = 32.997004, acc = 0.895000\n", + "L = 32.957179, acc = 0.895000\n", + "L = 32.917186, acc = 0.895000\n", + "L = 32.877027, acc = 0.895000\n", + "L = 32.836701, acc = 0.895000\n", + "L = 32.796210, acc = 0.895000\n", + "L = 32.755553, acc = 0.895000\n", + "L = 32.714731, acc = 0.895000\n", + "L = 32.673745, acc = 0.895000\n", + "L = 32.632595, acc = 0.895000\n", + "L = 32.591282, acc = 0.895000\n", + "L = 32.549805, acc = 0.895000\n", + "L = 32.508166, acc = 0.895000\n", + "L = 32.466366, acc = 0.895000\n", + "L = 32.424404, acc = 0.895000\n", + "L = 32.382281, acc = 0.895000\n", + "L = 32.339998, acc = 0.895000\n", + "L = 32.297556, acc = 0.895000\n", + "L = 32.254955, acc = 0.895000\n", + "L = 32.212196, acc = 0.900000\n", + "L = 32.169279, acc = 0.900000\n", + "L = 32.126206, acc = 0.900000\n", + "L = 32.082976, acc = 0.900000\n", + "L = 32.039590, acc = 0.900000\n", + "L = 31.996050, acc = 0.900000\n", + "L = 31.952356, acc = 0.900000\n", + "L = 31.908508, acc = 0.900000\n", + "L = 31.864507, acc = 0.900000\n", + "L = 31.820355, acc = 0.900000\n", + "L = 31.776051, acc = 0.900000\n", + "L = 31.731597, acc = 0.900000\n", + "L = 31.686994, acc = 0.900000\n", + "L = 31.642241, acc = 0.900000\n", + "L = 31.597341, acc = 0.900000\n", + "L = 31.552294, acc = 0.900000\n", + "L = 31.507100, acc = 0.900000\n", + "L = 31.461761, acc = 0.900000\n", + "L = 31.416278, acc = 0.900000\n", + "L = 31.370651, acc = 0.900000\n", + "L = 31.324881, acc = 0.900000\n", + "L = 31.278969, acc = 0.900000\n", + "L = 31.232916, acc = 0.900000\n", + "L = 31.186724, acc = 0.900000\n", + "L = 31.140392, acc = 0.900000\n", + "L = 31.093922, acc = 0.900000\n", + "L = 31.047316, acc = 0.900000\n", + "L = 31.000573, acc = 0.900000\n", + "L = 30.953695, acc = 0.900000\n", + "L = 30.906683, acc = 0.900000\n", + "L = 30.859538, acc = 0.905000\n", + "L = 30.812261, acc = 0.905000\n", + "L = 30.764853, acc = 0.905000\n", + "L = 30.717315, acc = 0.905000\n", + "L = 30.669648, acc = 0.905000\n", + "L = 30.621854, acc = 0.905000\n", + "L = 30.573933, acc = 0.905000\n", + "L = 30.525886, acc = 0.910000\n", + "L = 30.477715, acc = 0.910000\n", + "L = 30.429421, acc = 0.910000\n", + "L = 30.381005, acc = 0.910000\n", + "L = 30.332468, acc = 0.910000\n", + "L = 30.283811, acc = 0.910000\n", + "L = 30.235036, acc = 0.910000\n", + "L = 30.186143, acc = 0.910000\n", + "L = 30.137135, acc = 0.910000\n", + "L = 30.088011, acc = 0.910000\n", + "L = 30.038774, acc = 0.910000\n", + "L = 29.989424, acc = 0.910000\n", + "L = 29.939963, acc = 0.910000\n", + "L = 29.890392, acc = 0.910000\n", + "L = 29.840713, acc = 0.910000\n", + "L = 29.790926, acc = 0.910000\n", + "L = 29.741034, acc = 0.910000\n", + "L = 29.691036, acc = 0.910000\n", + "L = 29.640935, acc = 0.910000\n", + "L = 29.590733, acc = 0.910000\n", + "L = 29.540429, acc = 0.910000\n", + "L = 29.490027, acc = 0.910000\n", + "L = 29.439526, acc = 0.915000\n", + "L = 29.388929, acc = 0.915000\n", + "L = 29.338237, acc = 0.915000\n", + "L = 29.287451, acc = 0.915000\n", + "L = 29.236573, acc = 0.915000\n", + "L = 29.185604, acc = 0.915000\n", + "L = 29.134546, acc = 0.915000\n", + "L = 29.083399, acc = 0.915000\n", + "L = 29.032166, acc = 0.915000\n", + "L = 28.980848, acc = 0.915000\n", + "L = 28.929446, acc = 0.915000\n", + "L = 28.877963, acc = 0.915000\n", + "L = 28.826398, acc = 0.915000\n", + "L = 28.774755, acc = 0.915000\n", + "L = 28.723034, acc = 0.915000\n", + "L = 28.671237, acc = 0.915000\n", + "L = 28.619366, acc = 0.915000\n", + "L = 28.567421, acc = 0.915000\n", + "L = 28.515405, acc = 0.915000\n", + "L = 28.463320, acc = 0.915000\n", + "L = 28.411166, acc = 0.915000\n", + "L = 28.358945, acc = 0.915000\n", + "L = 28.306660, acc = 0.915000\n", + "L = 28.254311, acc = 0.915000\n", + "L = 28.201900, acc = 0.915000\n", + "L = 28.149428, acc = 0.920000\n", + "L = 28.096899, acc = 0.920000\n", + "L = 28.044312, acc = 0.920000\n", + "L = 27.991670, acc = 0.920000\n", + "L = 27.938974, acc = 0.920000\n", + "L = 27.886226, acc = 0.920000\n", + "L = 27.833427, acc = 0.920000\n", + "L = 27.780580, acc = 0.920000\n", + "L = 27.727686, acc = 0.920000\n", + "L = 27.674747, acc = 0.920000\n", + "L = 27.621764, acc = 0.920000\n", + "L = 27.568739, acc = 0.920000\n", + "L = 27.515673, acc = 0.920000\n", + "L = 27.462569, acc = 0.925000\n", + "L = 27.409429, acc = 0.925000\n", + "L = 27.356253, acc = 0.925000\n", + "L = 27.303043, acc = 0.925000\n", + "L = 27.249802, acc = 0.925000\n", + "L = 27.196531, acc = 0.925000\n", + "L = 27.143232, acc = 0.925000\n", + "L = 27.089906, acc = 0.925000\n", + "L = 27.036556, acc = 0.925000\n", + "L = 26.983183, acc = 0.925000\n", + "L = 26.929788, acc = 0.925000\n", + "L = 26.876374, acc = 0.925000\n", + "L = 26.822943, acc = 0.925000\n", + "L = 26.769495, acc = 0.925000\n", + "L = 26.716034, acc = 0.925000\n", + "L = 26.662560, acc = 0.925000\n", + "L = 26.609075, acc = 0.925000\n", + "L = 26.555582, acc = 0.925000\n", + "L = 26.502081, acc = 0.925000\n", + "L = 26.448576, acc = 0.925000\n", + "L = 26.395067, acc = 0.925000\n", + "L = 26.341556, acc = 0.925000\n", + "L = 26.288045, acc = 0.925000\n", + "L = 26.234536, acc = 0.925000\n", + "L = 26.181031, acc = 0.930000\n", + "L = 26.127532, acc = 0.930000\n", + "L = 26.074040, acc = 0.930000\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "L = 26.020557, acc = 0.930000\n", + "L = 25.967084, acc = 0.930000\n", + "L = 25.913625, acc = 0.930000\n", + "L = 25.860180, acc = 0.930000\n", + "L = 25.806751, acc = 0.930000\n", + "L = 25.753340, acc = 0.930000\n", + "L = 25.699949, acc = 0.930000\n", + "L = 25.646580, acc = 0.930000\n", + "L = 25.593234, acc = 0.930000\n", + "L = 25.539913, acc = 0.930000\n", + "L = 25.486619, acc = 0.930000\n", + "L = 25.433354, acc = 0.930000\n", + "L = 25.380119, acc = 0.930000\n", + "L = 25.326917, acc = 0.930000\n", + "L = 25.273749, acc = 0.930000\n", + "L = 25.220617, acc = 0.930000\n", + "L = 25.167522, acc = 0.930000\n", + "L = 25.114466, acc = 0.930000\n", + "L = 25.061452, acc = 0.930000\n", + "L = 25.008480, acc = 0.930000\n", + "L = 24.955553, acc = 0.930000\n", + "L = 24.902673, acc = 0.930000\n", + "L = 24.849840, acc = 0.935000\n", + "L = 24.797058, acc = 0.935000\n", + "L = 24.744326, acc = 0.935000\n", + "L = 24.691648, acc = 0.935000\n", + "L = 24.639025, acc = 0.935000\n", + "L = 24.586459, acc = 0.935000\n", + "L = 24.533951, acc = 0.935000\n", + "L = 24.481502, acc = 0.935000\n", + "L = 24.429116, acc = 0.935000\n", + "L = 24.376793, acc = 0.935000\n", + "L = 24.324535, acc = 0.935000\n", + "L = 24.272343, acc = 0.940000\n", + "L = 24.220220, acc = 0.940000\n", + "L = 24.168167, acc = 0.940000\n", + "L = 24.116186, acc = 0.940000\n", + "L = 24.064277, acc = 0.940000\n", + "L = 24.012444, acc = 0.940000\n", + "L = 23.960687, acc = 0.940000\n", + "L = 23.909008, acc = 0.940000\n", + "L = 23.857408, acc = 0.940000\n", + "L = 23.805890, acc = 0.940000\n", + "L = 23.754455, acc = 0.940000\n", + "L = 23.703103, acc = 0.940000\n", + "L = 23.651838, acc = 0.940000\n", + "L = 23.600660, acc = 0.940000\n", + "L = 23.549570, acc = 0.940000\n", + "L = 23.498571, acc = 0.940000\n", + "L = 23.447664, acc = 0.940000\n", + "L = 23.396850, acc = 0.940000\n", + "L = 23.346131, acc = 0.940000\n", + "L = 23.295508, acc = 0.940000\n", + "L = 23.244983, acc = 0.940000\n", + "L = 23.194557, acc = 0.940000\n", + "L = 23.144231, acc = 0.940000\n", + "L = 23.094008, acc = 0.940000\n", + "L = 23.043887, acc = 0.940000\n", + "L = 22.993871, acc = 0.940000\n", + "L = 22.943961, acc = 0.940000\n", + "L = 22.894159, acc = 0.940000\n", + "L = 22.844465, acc = 0.940000\n", + "L = 22.794881, acc = 0.940000\n", + "L = 22.745409, acc = 0.940000\n", + "L = 22.696048, acc = 0.940000\n", + "L = 22.646802, acc = 0.940000\n", + "L = 22.597671, acc = 0.945000\n", + "L = 22.548656, acc = 0.945000\n", + "L = 22.499758, acc = 0.945000\n", + "L = 22.450980, acc = 0.945000\n", + "L = 22.402321, acc = 0.945000\n", + "L = 22.353783, acc = 0.945000\n", + "L = 22.305367, acc = 0.945000\n", + "L = 22.257075, acc = 0.945000\n", + "L = 22.208907, acc = 0.945000\n", + "L = 22.160865, acc = 0.945000\n", + "L = 22.112950, acc = 0.945000\n", + "L = 22.065162, acc = 0.945000\n", + "L = 22.017503, acc = 0.945000\n", + "L = 21.969973, acc = 0.945000\n", + "L = 21.922575, acc = 0.945000\n", + "L = 21.875308, acc = 0.945000\n", + "L = 21.828175, acc = 0.945000\n", + "L = 21.781174, acc = 0.945000\n", + "L = 21.734309, acc = 0.945000\n", + "L = 21.687579, acc = 0.945000\n", + "L = 21.640986, acc = 0.945000\n", + "L = 21.594530, acc = 0.945000\n", + "L = 21.548213, acc = 0.945000\n", + "L = 21.502034, acc = 0.945000\n", + "L = 21.455996, acc = 0.945000\n", + "L = 21.410098, acc = 0.945000\n", + "L = 21.364342, acc = 0.945000\n", + "L = 21.318729, acc = 0.945000\n", + "L = 21.273258, acc = 0.945000\n", + "L = 21.227932, acc = 0.945000\n", + "L = 21.182750, acc = 0.945000\n", + "L = 21.137714, acc = 0.945000\n", + "L = 21.092823, acc = 0.945000\n", + "L = 21.048079, acc = 0.945000\n", + "L = 21.003483, acc = 0.945000\n", + "L = 20.959034, acc = 0.945000\n", + "L = 20.914734, acc = 0.945000\n", + "L = 20.870584, acc = 0.945000\n", + "L = 20.826583, acc = 0.945000\n", + "L = 20.782732, acc = 0.945000\n", + "L = 20.739032, acc = 0.945000\n", + "L = 20.695484, acc = 0.945000\n", + "L = 20.652088, acc = 0.945000\n", + "L = 20.608844, acc = 0.945000\n", + "L = 20.565752, acc = 0.945000\n", + "L = 20.522815, acc = 0.945000\n", + "L = 20.480031, acc = 0.945000\n", + "L = 20.437401, acc = 0.945000\n", + "L = 20.394926, acc = 0.945000\n", + "L = 20.352605, acc = 0.945000\n", + "L = 20.310440, acc = 0.945000\n", + "L = 20.268431, acc = 0.945000\n", + "L = 20.226578, acc = 0.945000\n", + "L = 20.184881, acc = 0.945000\n", + "L = 20.143341, acc = 0.945000\n", + "L = 20.101957, acc = 0.945000\n", + "L = 20.060731, acc = 0.945000\n", + "L = 20.019662, acc = 0.945000\n", + "L = 19.978751, acc = 0.945000\n", + "L = 19.937997, acc = 0.945000\n", + "L = 19.897402, acc = 0.945000\n", + "L = 19.856965, acc = 0.945000\n", + "L = 19.816686, acc = 0.945000\n", + "L = 19.776566, acc = 0.945000\n", + "L = 19.736604, acc = 0.945000\n", + "L = 19.696802, acc = 0.945000\n", + "L = 19.657158, acc = 0.945000\n", + "L = 19.617673, acc = 0.945000\n", + "L = 19.578347, acc = 0.945000\n", + "L = 19.539180, acc = 0.945000\n", + "L = 19.500173, acc = 0.945000\n", + "L = 19.461324, acc = 0.945000\n", + "L = 19.422635, acc = 0.945000\n", + "L = 19.384105, acc = 0.945000\n", + "L = 19.345734, acc = 0.945000\n", + "L = 19.307522, acc = 0.945000\n", + "L = 19.269469, acc = 0.945000\n", + "L = 19.231575, acc = 0.945000\n", + "L = 19.193840, acc = 0.945000\n", + "L = 19.156264, acc = 0.945000\n", + "L = 19.118847, acc = 0.945000\n", + "L = 19.081588, acc = 0.945000\n", + "L = 19.044488, acc = 0.945000\n", + "L = 19.007546, acc = 0.945000\n", + "L = 18.970763, acc = 0.945000\n", + "L = 18.934137, acc = 0.945000\n", + "L = 18.897670, acc = 0.945000\n", + "L = 18.861360, acc = 0.945000\n", + "L = 18.825208, acc = 0.945000\n", + "L = 18.789212, acc = 0.945000\n", + "L = 18.753374, acc = 0.945000\n", + "L = 18.717693, acc = 0.945000\n", + "L = 18.682169, acc = 0.945000\n", + "L = 18.646800, acc = 0.945000\n", + "L = 18.611588, acc = 0.945000\n", + "L = 18.576532, acc = 0.945000\n", + "L = 18.541631, acc = 0.945000\n", + "L = 18.506885, acc = 0.945000\n", + "L = 18.472295, acc = 0.945000\n", + "L = 18.437858, acc = 0.945000\n", + "L = 18.403577, acc = 0.945000\n", + "L = 18.369449, acc = 0.945000\n", + "L = 18.335475, acc = 0.945000\n", + "L = 18.301654, acc = 0.945000\n", + "L = 18.267985, acc = 0.945000\n", + "L = 18.234470, acc = 0.945000\n", + "L = 18.201106, acc = 0.945000\n", + "L = 18.167895, acc = 0.945000\n", + "L = 18.134835, acc = 0.945000\n", + "L = 18.101925, acc = 0.945000\n", + "L = 18.069167, acc = 0.945000\n", + "L = 18.036558, acc = 0.945000\n", + "L = 18.004099, acc = 0.945000\n", + "L = 17.971790, acc = 0.945000\n", + "L = 17.939629, acc = 0.945000\n", + "L = 17.907617, acc = 0.945000\n", + "L = 17.875753, acc = 0.945000\n", + "L = 17.844036, acc = 0.945000\n", + "L = 17.812467, acc = 0.945000\n", + "L = 17.781044, acc = 0.945000\n", + "L = 17.749767, acc = 0.945000\n", + "L = 17.718636, acc = 0.945000\n", + "L = 17.687650, acc = 0.945000\n", + "L = 17.656809, acc = 0.945000\n", + "L = 17.626111, acc = 0.945000\n", + "L = 17.595558, acc = 0.945000\n", + "L = 17.565148, acc = 0.945000\n", + "L = 17.534880, acc = 0.945000\n", + "L = 17.504755, acc = 0.945000\n", + "L = 17.474771, acc = 0.945000\n", + "L = 17.444929, acc = 0.945000\n", + "L = 17.415227, acc = 0.945000\n", + "L = 17.385665, acc = 0.945000\n", + "L = 17.356243, acc = 0.945000\n", + "L = 17.326960, acc = 0.945000\n", + "L = 17.297815, acc = 0.945000\n", + "L = 17.268808, acc = 0.945000\n", + "L = 17.239939, acc = 0.945000\n", + "L = 17.211206, acc = 0.945000\n", + "L = 17.182610, acc = 0.950000\n", + "L = 17.154149, acc = 0.950000\n", + "L = 17.125824, acc = 0.950000\n", + "L = 17.097633, acc = 0.950000\n", + "L = 17.069577, acc = 0.950000\n", + "L = 17.041653, acc = 0.950000\n", + "L = 17.013863, acc = 0.950000\n", + "L = 16.986205, acc = 0.950000\n", + "L = 16.958679, acc = 0.950000\n", + "L = 16.931284, acc = 0.950000\n", + "L = 16.904020, acc = 0.950000\n", + "L = 16.876886, acc = 0.950000\n", + "L = 16.849881, acc = 0.950000\n", + "L = 16.823006, acc = 0.950000\n", + "L = 16.796258, acc = 0.950000\n", + "L = 16.769639, acc = 0.950000\n", + "L = 16.743146, acc = 0.950000\n", + "L = 16.716780, acc = 0.950000\n", + "L = 16.690540, acc = 0.950000\n", + "L = 16.664426, acc = 0.950000\n", + "L = 16.638436, acc = 0.950000\n", + "L = 16.612571, acc = 0.950000\n", + "L = 16.586829, acc = 0.950000\n", + "L = 16.561211, acc = 0.950000\n", + "L = 16.535715, acc = 0.950000\n", + "L = 16.510341, acc = 0.950000\n", + "L = 16.485088, acc = 0.950000\n", + "L = 16.459956, acc = 0.950000\n", + "L = 16.434944, acc = 0.950000\n", + "L = 16.410051, acc = 0.950000\n", + "L = 16.385278, acc = 0.950000\n", + "L = 16.360623, acc = 0.950000\n", + "L = 16.336085, acc = 0.950000\n", + "L = 16.311665, acc = 0.950000\n", + "L = 16.287362, acc = 0.950000\n", + "L = 16.263175, acc = 0.950000\n", + "L = 16.239103, acc = 0.955000\n", + "L = 16.215146, acc = 0.955000\n", + "L = 16.191303, acc = 0.955000\n", + "L = 16.167574, acc = 0.955000\n", + "L = 16.143958, acc = 0.955000\n", + "L = 16.120455, acc = 0.955000\n", + "L = 16.097064, acc = 0.955000\n", + "L = 16.073784, acc = 0.955000\n", + "L = 16.050615, acc = 0.955000\n", + "L = 16.027556, acc = 0.955000\n", + "L = 16.004606, acc = 0.955000\n", + "L = 15.981766, acc = 0.955000\n", + "L = 15.959035, acc = 0.955000\n", + "L = 15.936411, acc = 0.955000\n", + "L = 15.913895, acc = 0.955000\n", + "L = 15.891485, acc = 0.955000\n", + "L = 15.869182, acc = 0.955000\n", + "L = 15.846984, acc = 0.955000\n", + "L = 15.824892, acc = 0.955000\n", + "L = 15.802904, acc = 0.955000\n", + "L = 15.781020, acc = 0.955000\n", + "L = 15.759239, acc = 0.955000\n", + "L = 15.737561, acc = 0.955000\n", + "L = 15.715986, acc = 0.955000\n", + "L = 15.694512, acc = 0.955000\n", + "L = 15.673140, acc = 0.955000\n", + "L = 15.651868, acc = 0.955000\n", + "L = 15.630696, acc = 0.955000\n", + "L = 15.609624, acc = 0.955000\n", + "L = 15.588651, acc = 0.955000\n", + "L = 15.567776, acc = 0.955000\n", + "L = 15.546999, acc = 0.955000\n", + "L = 15.526320, acc = 0.955000\n", + "L = 15.505737, acc = 0.955000\n", + "L = 15.485251, acc = 0.955000\n", + "L = 15.464860, acc = 0.955000\n", + "L = 15.444565, acc = 0.955000\n", + "L = 15.424364, acc = 0.955000\n", + "L = 15.404258, acc = 0.955000\n", + "L = 15.384245, acc = 0.955000\n", + "L = 15.364325, acc = 0.955000\n", + "L = 15.344498, acc = 0.955000\n", + "L = 15.324763, acc = 0.955000\n", + "L = 15.305119, acc = 0.955000\n", + "L = 15.285567, acc = 0.955000\n", + "L = 15.266105, acc = 0.955000\n", + "L = 15.246733, acc = 0.955000\n", + "L = 15.227450, acc = 0.955000\n", + "L = 15.208257, acc = 0.955000\n", + "L = 15.189152, acc = 0.955000\n", + "L = 15.170135, acc = 0.955000\n", + "L = 15.151205, acc = 0.955000\n", + "L = 15.132362, acc = 0.955000\n", + "L = 15.113606, acc = 0.955000\n", + "L = 15.094936, acc = 0.955000\n", + "L = 15.076352, acc = 0.955000\n", + "L = 15.057852, acc = 0.955000\n", + "L = 15.039437, acc = 0.955000\n", + "L = 15.021106, acc = 0.955000\n", + "L = 15.002859, acc = 0.955000\n", + "L = 14.984695, acc = 0.955000\n", + "L = 14.966613, acc = 0.955000\n", + "L = 14.948613, acc = 0.960000\n", + "L = 14.930695, acc = 0.960000\n", + "L = 14.912859, acc = 0.960000\n", + "L = 14.895103, acc = 0.960000\n", + "L = 14.877427, acc = 0.960000\n", + "L = 14.859831, acc = 0.960000\n", + "L = 14.842314, acc = 0.960000\n", + "L = 14.824876, acc = 0.960000\n", + "L = 14.807517, acc = 0.960000\n", + "L = 14.790236, acc = 0.960000\n", + "L = 14.773032, acc = 0.960000\n", + "L = 14.755905, acc = 0.960000\n", + "L = 14.738855, acc = 0.960000\n", + "L = 14.721881, acc = 0.960000\n", + "L = 14.704982, acc = 0.960000\n", + "L = 14.688159, acc = 0.960000\n", + "L = 14.671411, acc = 0.960000\n", + "L = 14.654737, acc = 0.960000\n", + "L = 14.638137, acc = 0.960000\n", + "L = 14.621611, acc = 0.960000\n", + "L = 14.605157, acc = 0.960000\n", + "L = 14.588777, acc = 0.960000\n", + "L = 14.572468, acc = 0.960000\n", + "L = 14.556232, acc = 0.960000\n", + "L = 14.540067, acc = 0.960000\n", + "L = 14.523973, acc = 0.960000\n", + "L = 14.507949, acc = 0.960000\n", + "L = 14.491996, acc = 0.960000\n", + "L = 14.476113, acc = 0.960000\n", + "L = 14.460298, acc = 0.960000\n", + "L = 14.444553, acc = 0.960000\n", + "L = 14.428877, acc = 0.960000\n", + "L = 14.413268, acc = 0.960000\n", + "L = 14.397727, acc = 0.960000\n", + "L = 14.382254, acc = 0.960000\n", + "L = 14.366847, acc = 0.960000\n", + "L = 14.351507, acc = 0.960000\n", + "L = 14.336234, acc = 0.960000\n", + "L = 14.321026, acc = 0.960000\n", + "L = 14.305883, acc = 0.960000\n", + "L = 14.290805, acc = 0.960000\n", + "L = 14.275793, acc = 0.960000\n", + "L = 14.260844, acc = 0.960000\n", + "L = 14.245959, acc = 0.960000\n", + "L = 14.231138, acc = 0.960000\n", + "L = 14.216380, acc = 0.960000\n", + "L = 14.201684, acc = 0.960000\n", + "L = 14.187051, acc = 0.960000\n", + "L = 14.172480, acc = 0.960000\n", + "L = 14.157971, acc = 0.960000\n", + "L = 14.143523, acc = 0.960000\n", + "L = 14.129136, acc = 0.960000\n", + "L = 14.114810, acc = 0.960000\n", + "L = 14.100543, acc = 0.960000\n", + "L = 14.086337, acc = 0.960000\n", + "L = 14.072190, acc = 0.960000\n", + "L = 14.058102, acc = 0.960000\n", + "L = 14.044074, acc = 0.960000\n", + "L = 14.030103, acc = 0.960000\n", + "L = 14.016191, acc = 0.960000\n", + "L = 14.002337, acc = 0.960000\n", + "L = 13.988540, acc = 0.960000\n", + "L = 13.974800, acc = 0.960000\n", + "L = 13.961117, acc = 0.960000\n", + "L = 13.947491, acc = 0.960000\n", + "L = 13.933920, acc = 0.960000\n", + "L = 13.920406, acc = 0.960000\n", + "L = 13.906947, acc = 0.960000\n", + "L = 13.893543, acc = 0.960000\n", + "L = 13.880194, acc = 0.960000\n", + "L = 13.866899, acc = 0.960000\n", + "L = 13.853659, acc = 0.960000\n", + "L = 13.840472, acc = 0.960000\n", + "L = 13.827339, acc = 0.960000\n", + "L = 13.814260, acc = 0.960000\n", + "L = 13.801233, acc = 0.960000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "L = 37.372950, acc = 0.865000\n", - "L = 37.365192, acc = 0.865000\n", - "L = 37.357397, acc = 0.865000\n", - "L = 37.349564, acc = 0.865000\n", - "L = 37.341694, acc = 0.865000\n", - "L = 37.333786, acc = 0.865000\n", - "L = 37.325840, acc = 0.865000\n", - "L = 37.317857, acc = 0.865000\n", - "L = 37.309835, acc = 0.865000\n", - "L = 37.301775, acc = 0.865000\n", - "L = 37.293677, acc = 0.865000\n", - "L = 37.285540, acc = 0.865000\n", - "L = 37.277364, acc = 0.865000\n", - "L = 37.269149, acc = 0.865000\n", - "L = 37.260895, acc = 0.865000\n", - "L = 37.252602, acc = 0.865000\n", - "L = 37.244269, acc = 0.865000\n", - "L = 37.235897, acc = 0.865000\n", - "L = 37.227485, acc = 0.865000\n", - "L = 37.219033, acc = 0.870000\n", - "L = 37.210541, acc = 0.870000\n", - "L = 37.202008, acc = 0.870000\n", - "L = 37.193436, acc = 0.870000\n", - "L = 37.184822, acc = 0.870000\n", - "L = 37.176168, acc = 0.870000\n", - "L = 37.167473, acc = 0.870000\n", - "L = 37.158737, acc = 0.870000\n", - "L = 37.149959, acc = 0.870000\n", - "L = 37.141140, acc = 0.870000\n", - "L = 37.132280, acc = 0.870000\n", - "L = 37.123377, acc = 0.870000\n", - "L = 37.114433, acc = 0.870000\n", - "L = 37.105447, acc = 0.870000\n", - "L = 37.096418, acc = 0.870000\n", - "L = 37.087348, acc = 0.870000\n", - "L = 37.078234, acc = 0.870000\n", - "L = 37.069078, acc = 0.870000\n", - "L = 37.059879, acc = 0.870000\n", - "L = 37.050637, acc = 0.870000\n", - "L = 37.041352, acc = 0.870000\n", - "L = 37.032023, acc = 0.870000\n", - "L = 37.022651, acc = 0.870000\n", - "L = 37.013236, acc = 0.870000\n", - "L = 37.003776, acc = 0.870000\n", - "L = 36.994273, acc = 0.870000\n", - "L = 36.984726, acc = 0.870000\n", - "L = 36.975134, acc = 0.870000\n", - "L = 36.965498, acc = 0.870000\n", - "L = 36.955818, acc = 0.870000\n", - "L = 36.946092, acc = 0.870000\n", - "L = 36.936322, acc = 0.870000\n", - "L = 36.926507, acc = 0.870000\n", - "L = 36.916647, acc = 0.870000\n", - "L = 36.906742, acc = 0.870000\n", - "L = 36.896791, acc = 0.870000\n", - "L = 36.886795, acc = 0.870000\n", - "L = 36.876753, acc = 0.870000\n", - "L = 36.866666, acc = 0.870000\n", - "L = 36.856532, acc = 0.870000\n", - "L = 36.846353, acc = 0.870000\n", - "L = 36.836127, acc = 0.870000\n", - "L = 36.825855, acc = 0.870000\n", - "L = 36.815536, acc = 0.870000\n", - "L = 36.805171, acc = 0.875000\n", - "L = 36.794759, acc = 0.875000\n", - "L = 36.784300, acc = 0.875000\n", - "L = 36.773795, acc = 0.875000\n", - "L = 36.763242, acc = 0.875000\n", - "L = 36.752642, acc = 0.875000\n", - "L = 36.741995, acc = 0.875000\n", - "L = 36.731300, acc = 0.875000\n", - "L = 36.720558, acc = 0.875000\n", - "L = 36.709768, acc = 0.875000\n", - "L = 36.698930, acc = 0.875000\n", - "L = 36.688045, acc = 0.875000\n", - "L = 36.677111, acc = 0.875000\n", - "L = 36.666130, acc = 0.875000\n", - "L = 36.655100, acc = 0.875000\n", - "L = 36.644022, acc = 0.875000\n", - "L = 36.632896, acc = 0.875000\n", - "L = 36.621721, acc = 0.875000\n", - "L = 36.610497, acc = 0.875000\n", - "L = 36.599225, acc = 0.875000\n", - "L = 36.587904, acc = 0.875000\n", - "L = 36.576534, acc = 0.875000\n", - "L = 36.565115, acc = 0.875000\n", - "L = 36.553647, acc = 0.875000\n", - "L = 36.542130, acc = 0.875000\n", - "L = 36.530564, acc = 0.875000\n", - "L = 36.518949, acc = 0.875000\n", - "L = 36.507284, acc = 0.875000\n", - "L = 36.495570, acc = 0.875000\n", - "L = 36.483806, acc = 0.875000\n", - "L = 36.471992, acc = 0.875000\n", - "L = 36.460129, acc = 0.875000\n", - "L = 36.448217, acc = 0.875000\n", - "L = 36.436254, acc = 0.875000\n", - "L = 36.424242, acc = 0.875000\n", - "L = 36.412179, acc = 0.875000\n", - "L = 36.400067, acc = 0.875000\n", - "L = 36.387905, acc = 0.875000\n", - "L = 36.375692, acc = 0.875000\n", - "L = 36.363430, acc = 0.875000\n", - "L = 36.351117, acc = 0.875000\n", - "L = 36.338754, acc = 0.875000\n", - "L = 36.326341, acc = 0.875000\n", - "L = 36.313877, acc = 0.875000\n", - "L = 36.301363, acc = 0.875000\n", - "L = 36.288799, acc = 0.875000\n", - "L = 36.276184, acc = 0.875000\n", - "L = 36.263519, acc = 0.875000\n", - "L = 36.250803, acc = 0.875000\n", - "L = 36.238037, acc = 0.875000\n", - "L = 36.225221, acc = 0.875000\n", - "L = 36.212353, acc = 0.875000\n", - "L = 36.199435, acc = 0.875000\n", - "L = 36.186467, acc = 0.875000\n", - "L = 36.173448, acc = 0.880000\n", - "L = 36.160378, acc = 0.880000\n", - "L = 36.147258, acc = 0.880000\n", - "L = 36.134087, acc = 0.880000\n", - "L = 36.120866, acc = 0.880000\n", - "L = 36.107593, acc = 0.880000\n", - "L = 36.094271, acc = 0.880000\n", - "L = 36.080897, acc = 0.880000\n", - "L = 36.067473, acc = 0.880000\n", - "L = 36.053998, acc = 0.880000\n", - "L = 36.040473, acc = 0.880000\n", - "L = 36.026897, acc = 0.880000\n", - "L = 36.013271, acc = 0.880000\n", - "L = 35.999593, acc = 0.880000\n", - "L = 35.985866, acc = 0.880000\n", - "L = 35.972088, acc = 0.880000\n", - "L = 35.958259, acc = 0.880000\n", - "L = 35.944380, acc = 0.880000\n", - "L = 35.930451, acc = 0.880000\n", - "L = 35.916471, acc = 0.880000\n", - "L = 35.902441, acc = 0.880000\n", - "L = 35.888361, acc = 0.880000\n", - "L = 35.874230, acc = 0.880000\n", - "L = 35.860049, acc = 0.880000\n", - "L = 35.845818, acc = 0.885000\n", - "L = 35.831537, acc = 0.885000\n", - "L = 35.817206, acc = 0.885000\n", - "L = 35.802825, acc = 0.885000\n", - "L = 35.788394, acc = 0.885000\n", - "L = 35.773913, acc = 0.885000\n", - "L = 35.759382, acc = 0.885000\n", - "L = 35.744802, acc = 0.885000\n", - "L = 35.730171, acc = 0.885000\n", - "L = 35.715492, acc = 0.885000\n", - "L = 35.700763, acc = 0.885000\n", - "L = 35.685984, acc = 0.885000\n", - "L = 35.671156, acc = 0.885000\n", - "L = 35.656279, acc = 0.885000\n", - "L = 35.641353, acc = 0.885000\n", - "L = 35.626377, acc = 0.885000\n", - "L = 35.611353, acc = 0.885000\n", - "L = 35.596280, acc = 0.885000\n", - "L = 35.581158, acc = 0.885000\n", - "L = 35.565987, acc = 0.885000\n", - "L = 35.550768, acc = 0.885000\n", - "L = 35.535500, acc = 0.885000\n", - "L = 35.520184, acc = 0.885000\n", - "L = 35.504820, acc = 0.885000\n", - "L = 35.489407, acc = 0.885000\n", - "L = 35.473947, acc = 0.885000\n", - "L = 35.458439, acc = 0.885000\n", - "L = 35.442882, acc = 0.885000\n", - "L = 35.427279, acc = 0.885000\n", - "L = 35.411628, acc = 0.885000\n", - "L = 35.395929, acc = 0.885000\n", - "L = 35.380183, acc = 0.885000\n", - "L = 35.364390, acc = 0.885000\n", - "L = 35.348551, acc = 0.885000\n", - "L = 35.332664, acc = 0.885000\n", - "L = 35.316731, acc = 0.885000\n", - "L = 35.300751, acc = 0.885000\n", - "L = 35.284725, acc = 0.885000\n", - "L = 35.268652, acc = 0.885000\n", - "L = 35.252534, acc = 0.885000\n", - "L = 35.236370, acc = 0.885000\n", - "L = 35.220160, acc = 0.885000\n", - "L = 35.203904, acc = 0.885000\n", - "L = 35.187603, acc = 0.885000\n", - "L = 35.171257, acc = 0.885000\n", - "L = 35.154866, acc = 0.885000\n", - "L = 35.138430, acc = 0.885000\n", - "L = 35.121949, acc = 0.890000\n", - "L = 35.105424, acc = 0.890000\n", - "L = 35.088854, acc = 0.890000\n", - "L = 35.072240, acc = 0.890000\n", - "L = 35.055582, acc = 0.890000\n", - "L = 35.038881, acc = 0.890000\n", - "L = 35.022136, acc = 0.890000\n", - "L = 35.005347, acc = 0.890000\n", - "L = 34.988515, acc = 0.890000\n", - "L = 34.971641, acc = 0.890000\n", - "L = 34.954723, acc = 0.890000\n", - "L = 34.937763, acc = 0.890000\n", - "L = 34.920760, acc = 0.890000\n", - "L = 34.903716, acc = 0.890000\n", - "L = 34.886629, acc = 0.890000\n", - "L = 34.869501, acc = 0.890000\n", - "L = 34.852331, acc = 0.890000\n", - "L = 34.835120, acc = 0.890000\n", - "L = 34.817867, acc = 0.890000\n", - "L = 34.800574, acc = 0.890000\n", - "L = 34.783240, acc = 0.895000\n", - "L = 34.765866, acc = 0.895000\n", - "L = 34.748452, acc = 0.895000\n", - "L = 34.730997, acc = 0.895000\n", - "L = 34.713503, acc = 0.895000\n", - "L = 34.695970, acc = 0.895000\n", - "L = 34.678397, acc = 0.895000\n", - "L = 34.660785, acc = 0.895000\n", - "L = 34.643134, acc = 0.895000\n", - "L = 34.625445, acc = 0.895000\n", - "L = 34.607718, acc = 0.895000\n", - "L = 34.589952, acc = 0.895000\n", - "L = 34.572149, acc = 0.895000\n", - "L = 34.554308, acc = 0.895000\n", - "L = 34.536429, acc = 0.895000\n", - "L = 34.518514, acc = 0.895000\n", - "L = 34.500562, acc = 0.895000\n", - "L = 34.482574, acc = 0.895000\n", - "L = 34.464549, acc = 0.895000\n", - "L = 34.446488, acc = 0.895000\n", - "L = 34.428391, acc = 0.895000\n", - "L = 34.410259, acc = 0.895000\n", - "L = 34.392092, acc = 0.895000\n", - "L = 34.373889, acc = 0.895000\n", - "L = 34.355652, acc = 0.895000\n", - "L = 34.337381, acc = 0.895000\n", - "L = 34.319075, acc = 0.895000\n", - "L = 34.300736, acc = 0.895000\n", - "L = 34.282362, acc = 0.895000\n", - "L = 34.263956, acc = 0.895000\n", - "L = 34.245516, acc = 0.895000\n", - "L = 34.227044, acc = 0.895000\n", - "L = 34.208539, acc = 0.895000\n", - "L = 34.190002, acc = 0.895000\n", - "L = 34.171432, acc = 0.895000\n", - "L = 34.152831, acc = 0.895000\n", - "L = 34.134199, acc = 0.895000\n", - "L = 34.115536, acc = 0.895000\n", - "L = 34.096841, acc = 0.895000\n", - "L = 34.078117, acc = 0.895000\n", - "L = 34.059361, acc = 0.895000\n", - "L = 34.040576, acc = 0.895000\n", - "L = 34.021761, acc = 0.895000\n", - "L = 34.002917, acc = 0.895000\n", - "L = 33.984043, acc = 0.895000\n", - "L = 33.965141, acc = 0.895000\n", - "L = 33.946210, acc = 0.895000\n", - "L = 33.927251, acc = 0.895000\n", - "L = 33.908264, acc = 0.895000\n", - "L = 33.889249, acc = 0.895000\n", - "L = 33.870206, acc = 0.895000\n", - "L = 33.851137, acc = 0.895000\n", - "L = 33.832040, acc = 0.895000\n", - "L = 33.812917, acc = 0.895000\n", - "L = 33.793768, acc = 0.895000\n", - "L = 33.774593, acc = 0.895000\n", - "L = 33.755392, acc = 0.895000\n", - "L = 33.736165, acc = 0.895000\n", - "L = 33.716914, acc = 0.895000\n", - "L = 33.697638, acc = 0.895000\n", - "L = 33.678337, acc = 0.895000\n", - "L = 33.659012, acc = 0.895000\n", - "L = 33.639663, acc = 0.895000\n", - "L = 33.620290, acc = 0.895000\n", - "L = 33.600894, acc = 0.895000\n", - "L = 33.581474, acc = 0.895000\n", - "L = 33.562032, acc = 0.895000\n", - "L = 33.542568, acc = 0.895000\n", - "L = 33.523081, acc = 0.895000\n", - "L = 33.503572, acc = 0.895000\n", - "L = 33.484041, acc = 0.895000\n", - "L = 33.464489, acc = 0.895000\n", - "L = 33.444916, acc = 0.895000\n", - "L = 33.425323, acc = 0.895000\n", - "L = 33.405708, acc = 0.895000\n", - "L = 33.386074, acc = 0.895000\n", - "L = 33.366419, acc = 0.895000\n", - "L = 33.346745, acc = 0.895000\n", - "L = 33.327051, acc = 0.895000\n", - "L = 33.307339, acc = 0.895000\n", - "L = 33.287607, acc = 0.895000\n", - "L = 33.267857, acc = 0.895000\n", - "L = 33.248089, acc = 0.895000\n", - "L = 33.228302, acc = 0.895000\n", - "L = 33.208498, acc = 0.895000\n", - "L = 33.188677, acc = 0.895000\n", - "L = 33.168838, acc = 0.895000\n", - "L = 33.148982, acc = 0.895000\n", - "L = 33.129110, acc = 0.895000\n", - "L = 33.109221, acc = 0.895000\n", - "L = 33.089317, acc = 0.895000\n", - "L = 33.069396, acc = 0.895000\n", - "L = 33.049460, acc = 0.895000\n", - "L = 33.029509, acc = 0.895000\n", - "L = 33.009543, acc = 0.895000\n", - "L = 32.989562, acc = 0.895000\n", - "L = 32.969566, acc = 0.895000\n", - "L = 32.949556, acc = 0.895000\n", - "L = 32.929533, acc = 0.895000\n", - "L = 32.909495, acc = 0.895000\n", - "L = 32.889445, acc = 0.895000\n", - "L = 32.869381, acc = 0.895000\n", - "L = 32.849304, acc = 0.895000\n", - "L = 32.829215, acc = 0.895000\n", - "L = 32.809113, acc = 0.895000\n", - "L = 32.788999, acc = 0.895000\n", - "L = 32.768873, acc = 0.895000\n", - "L = 32.748736, acc = 0.895000\n", - "L = 32.728587, acc = 0.895000\n", - "L = 32.708427, acc = 0.895000\n", - "L = 32.688257, acc = 0.895000\n", - "L = 32.668075, acc = 0.895000\n", - "L = 32.647884, acc = 0.895000\n", - "L = 32.627682, acc = 0.895000\n", - "L = 32.607470, acc = 0.895000\n", - "L = 32.587249, acc = 0.895000\n", - "L = 32.567018, acc = 0.895000\n", - "L = 32.546778, acc = 0.895000\n", - "L = 32.526529, acc = 0.895000\n", - "L = 32.506271, acc = 0.895000\n", - "L = 32.486005, acc = 0.895000\n", - "L = 32.465731, acc = 0.895000\n", - "L = 32.445449, acc = 0.900000\n", - "L = 32.425159, acc = 0.900000\n", - "L = 32.404862, acc = 0.900000\n", - "L = 32.384557, acc = 0.900000\n", - "L = 32.364245, acc = 0.900000\n", - "L = 32.343926, acc = 0.900000\n", - "L = 32.323601, acc = 0.900000\n", - "L = 32.303270, acc = 0.900000\n", - "L = 32.282932, acc = 0.900000\n", - "L = 32.262588, acc = 0.900000\n", - "L = 32.242239, acc = 0.900000\n", - "L = 32.221884, acc = 0.900000\n", - "L = 32.201523, acc = 0.900000\n", - "L = 32.181158, acc = 0.900000\n", - "L = 32.160788, acc = 0.900000\n", - "L = 32.140413, acc = 0.900000\n", - "L = 32.120034, acc = 0.900000\n", - "L = 32.099650, acc = 0.900000\n", - "L = 32.079262, acc = 0.900000\n", - "L = 32.058871, acc = 0.900000\n", - "L = 32.038476, acc = 0.900000\n", - "L = 32.018078, acc = 0.900000\n", - "L = 31.997676, acc = 0.900000\n", - "L = 31.977272, acc = 0.900000\n", - "L = 31.956864, acc = 0.900000\n", - "L = 31.936454, acc = 0.900000\n", - "L = 31.916042, acc = 0.900000\n", - "L = 31.895627, acc = 0.900000\n", - "L = 31.875211, acc = 0.900000\n", - "L = 31.854792, acc = 0.900000\n", - "L = 31.834372, acc = 0.900000\n", - "L = 31.813951, acc = 0.900000\n", - "L = 31.793528, acc = 0.900000\n", - "L = 31.773104, acc = 0.900000\n", - "L = 31.752679, acc = 0.900000\n", - "L = 31.732254, acc = 0.900000\n", - "L = 31.711828, acc = 0.900000\n", - "L = 31.691402, acc = 0.900000\n", - "L = 31.670975, acc = 0.900000\n", - "L = 31.650549, acc = 0.900000\n", - "L = 31.630123, acc = 0.900000\n", - "L = 31.609697, acc = 0.900000\n", - "L = 31.589272, acc = 0.900000\n", - "L = 31.568847, acc = 0.900000\n", - "L = 31.548423, acc = 0.900000\n", - "L = 31.528001, acc = 0.900000\n", - "L = 31.507580, acc = 0.900000\n", - "L = 31.487160, acc = 0.900000\n", - "L = 31.466741, acc = 0.900000\n", - "L = 31.446325, acc = 0.900000\n", - "L = 31.425910, acc = 0.900000\n", - "L = 31.405497, acc = 0.900000\n", - "L = 31.385087, acc = 0.900000\n", - "L = 31.364679, acc = 0.900000\n", - "L = 31.344274, acc = 0.900000\n", - "L = 31.323871, acc = 0.900000\n", - "L = 31.303471, acc = 0.900000\n", - "L = 31.283074, acc = 0.900000\n", - "L = 31.262680, acc = 0.900000\n", - "L = 31.242290, acc = 0.900000\n", - "L = 31.221903, acc = 0.900000\n", - "L = 31.201520, acc = 0.900000\n", - "L = 31.181141, acc = 0.900000\n", - "L = 31.160765, acc = 0.900000\n", - "L = 31.140393, acc = 0.905000\n", - "L = 31.120026, acc = 0.905000\n", - "L = 31.099663, acc = 0.905000\n", - "L = 31.079305, acc = 0.905000\n", - "L = 31.058951, acc = 0.905000\n", - "L = 31.038602, acc = 0.905000\n", - "L = 31.018258, acc = 0.905000\n", - "L = 30.997919, acc = 0.905000\n", - "L = 30.977585, acc = 0.905000\n", - "L = 30.957256, acc = 0.905000\n", - "L = 30.936933, acc = 0.905000\n", - "L = 30.916616, acc = 0.905000\n", - "L = 30.896304, acc = 0.905000\n", - "L = 30.875998, acc = 0.905000\n", - "L = 30.855698, acc = 0.905000\n", - "L = 30.835404, acc = 0.905000\n", - "L = 30.815117, acc = 0.905000\n", - "L = 30.794836, acc = 0.905000\n", - "L = 30.774561, acc = 0.905000\n", - "L = 30.754293, acc = 0.905000\n", - "L = 30.734031, acc = 0.905000\n", - "L = 30.713777, acc = 0.905000\n", - "L = 30.693529, acc = 0.905000\n", - "L = 30.673288, acc = 0.905000\n", - "L = 30.653055, acc = 0.905000\n", - "L = 30.632829, acc = 0.905000\n", - "L = 30.612610, acc = 0.905000\n", - "L = 30.592399, acc = 0.905000\n", - "L = 30.572196, acc = 0.905000\n", - "L = 30.552000, acc = 0.905000\n", - "L = 30.531812, acc = 0.905000\n", - "L = 30.511633, acc = 0.905000\n", - "L = 30.491461, acc = 0.905000\n", - "L = 30.471297, acc = 0.905000\n", - "L = 30.451142, acc = 0.905000\n", - "L = 30.430995, acc = 0.905000\n", - "L = 30.410857, acc = 0.905000\n", - "L = 30.390727, acc = 0.905000\n", - "L = 30.370606, acc = 0.905000\n", - "L = 30.350494, acc = 0.905000\n", - "L = 30.330391, acc = 0.905000\n", - "L = 30.310296, acc = 0.905000\n", - "L = 30.290211, acc = 0.905000\n", - "L = 30.270135, acc = 0.905000\n", - "L = 30.250069, acc = 0.905000\n", - "L = 30.230011, acc = 0.905000\n", - "L = 30.209963, acc = 0.905000\n", - "L = 30.189925, acc = 0.905000\n", - "L = 30.169896, acc = 0.905000\n", - "L = 30.149878, acc = 0.905000\n", - "L = 30.129868, acc = 0.905000\n", - "L = 30.109869, acc = 0.905000\n", - "L = 30.089880, acc = 0.905000\n", - "L = 30.069901, acc = 0.905000\n", - "L = 30.049932, acc = 0.905000\n", - "L = 30.029974, acc = 0.905000\n", - "L = 30.010025, acc = 0.905000\n", - "L = 29.990087, acc = 0.905000\n", - "L = 29.970160, acc = 0.905000\n", - "L = 29.950243, acc = 0.905000\n", - "L = 29.930337, acc = 0.905000\n", - "L = 29.910442, acc = 0.905000\n", - "L = 29.890557, acc = 0.905000\n", - "L = 29.870683, acc = 0.905000\n", - "L = 29.850820, acc = 0.905000\n", - "L = 29.830969, acc = 0.905000\n", - "L = 29.811128, acc = 0.905000\n", - "L = 29.791298, acc = 0.905000\n", - "L = 29.771480, acc = 0.905000\n", - "L = 29.751673, acc = 0.905000\n", - "L = 29.731877, acc = 0.905000\n", - "L = 29.712093, acc = 0.905000\n", - "L = 29.692320, acc = 0.905000\n", - "L = 29.672559, acc = 0.905000\n", - "L = 29.652810, acc = 0.905000\n", - "L = 29.633072, acc = 0.905000\n", - "L = 29.613346, acc = 0.915000\n", - "L = 29.593631, acc = 0.915000\n", - "L = 29.573929, acc = 0.915000\n", - "L = 29.554239, acc = 0.915000\n", - "L = 29.534560, acc = 0.915000\n", - "L = 29.514894, acc = 0.915000\n", - "L = 29.495239, acc = 0.915000\n", - "L = 29.475597, acc = 0.915000\n", - "L = 29.455967, acc = 0.915000\n", - "L = 29.436350, acc = 0.915000\n", - "L = 29.416744, acc = 0.915000\n", - "L = 29.397151, acc = 0.915000\n", - "L = 29.377571, acc = 0.915000\n", - "L = 29.358003, acc = 0.915000\n", - "L = 29.338447, acc = 0.915000\n", - "L = 29.318904, acc = 0.915000\n", - "L = 29.299374, acc = 0.915000\n", - "L = 29.279856, acc = 0.915000\n", - "L = 29.260351, acc = 0.915000\n", - "L = 29.240859, acc = 0.915000\n", - "L = 29.221379, acc = 0.915000\n", - "L = 29.201913, acc = 0.915000\n", - "L = 29.182459, acc = 0.915000\n", - "L = 29.163018, acc = 0.915000\n", - "L = 29.143591, acc = 0.915000\n", - "L = 29.124176, acc = 0.915000\n", - "L = 29.104774, acc = 0.915000\n", - "L = 29.085385, acc = 0.915000\n", - "L = 29.066010, acc = 0.915000\n", - "L = 29.046648, acc = 0.915000\n", - "L = 29.027299, acc = 0.915000\n", - "L = 29.007963, acc = 0.915000\n", - "L = 28.988640, acc = 0.915000\n", - "L = 28.969331, acc = 0.915000\n", - "L = 28.950035, acc = 0.915000\n", - "L = 28.930753, acc = 0.915000\n", - "L = 28.911483, acc = 0.915000\n", - "L = 28.892228, acc = 0.915000\n", - "L = 28.872986, acc = 0.915000\n", - "L = 28.853757, acc = 0.915000\n", - "L = 28.834542, acc = 0.915000\n", - "L = 28.815340, acc = 0.915000\n", - "L = 28.796152, acc = 0.915000\n", - "L = 28.776978, acc = 0.915000\n", - "L = 28.757817, acc = 0.915000\n", - "L = 28.738670, acc = 0.915000\n", - "L = 28.719537, acc = 0.915000\n", - "L = 28.700417, acc = 0.915000\n", - "L = 28.681311, acc = 0.915000\n", - "L = 28.662219, acc = 0.915000\n", - "L = 28.643141, acc = 0.915000\n", - "L = 28.624076, acc = 0.915000\n", - "L = 28.605026, acc = 0.915000\n", - "L = 28.585989, acc = 0.915000\n", - "L = 28.566966, acc = 0.915000\n", - "L = 28.547957, acc = 0.915000\n", - "L = 28.528962, acc = 0.915000\n", - "L = 28.509980, acc = 0.915000\n", - "L = 28.491013, acc = 0.915000\n", - "L = 28.472060, acc = 0.915000\n", - "L = 28.453121, acc = 0.915000\n", - "L = 28.434195, acc = 0.915000\n", - "L = 28.415284, acc = 0.915000\n", - "L = 28.396387, acc = 0.915000\n", - "L = 28.377504, acc = 0.915000\n", - "L = 28.358635, acc = 0.915000\n", - "L = 28.339780, acc = 0.915000\n", - "L = 28.320939, acc = 0.915000\n", - "L = 28.302112, acc = 0.915000\n", - "L = 28.283299, acc = 0.915000\n", - "L = 28.264500, acc = 0.915000\n", - "L = 28.245716, acc = 0.915000\n", - "L = 28.226945, acc = 0.915000\n", - "L = 28.208189, acc = 0.915000\n", - "L = 28.189447, acc = 0.915000\n", - "L = 28.170719, acc = 0.915000\n", - "L = 28.152006, acc = 0.915000\n", - "L = 28.133306, acc = 0.915000\n", - "L = 28.114621, acc = 0.915000\n", - "L = 28.095950, acc = 0.915000\n", - "L = 28.077293, acc = 0.915000\n", - "L = 28.058650, acc = 0.915000\n", - "L = 28.040021, acc = 0.915000\n", - "L = 28.021407, acc = 0.915000\n", - "L = 28.002807, acc = 0.915000\n", - "L = 27.984221, acc = 0.915000\n", - "L = 27.965649, acc = 0.915000\n", - "L = 27.947092, acc = 0.915000\n", - "L = 27.928549, acc = 0.915000\n", - "L = 27.910020, acc = 0.915000\n", - "L = 27.891505, acc = 0.915000\n", - "L = 27.873004, acc = 0.915000\n", - "L = 27.854518, acc = 0.915000\n", - "L = 27.836046, acc = 0.915000\n", - "L = 27.817588, acc = 0.915000\n", - "L = 27.799144, acc = 0.915000\n", - "L = 27.780715, acc = 0.915000\n", - "L = 27.762300, acc = 0.915000\n", - "L = 27.743899, acc = 0.915000\n", - "L = 27.725512, acc = 0.915000\n", - "L = 27.707140, acc = 0.915000\n", - "L = 27.688781, acc = 0.915000\n", - "L = 27.670437, acc = 0.915000\n", - "L = 27.652107, acc = 0.915000\n", - "L = 27.633791, acc = 0.915000\n", - "L = 27.615490, acc = 0.915000\n", - "L = 27.597202, acc = 0.915000\n", - "L = 27.578929, acc = 0.915000\n", - "L = 27.560670, acc = 0.915000\n", - "L = 27.542425, acc = 0.915000\n", - "L = 27.524194, acc = 0.915000\n", - "L = 27.505977, acc = 0.915000\n", - "L = 27.487775, acc = 0.915000\n", - "L = 27.469586, acc = 0.915000\n", - "L = 27.451412, acc = 0.915000\n", - "L = 27.433252, acc = 0.915000\n", - "L = 27.415106, acc = 0.915000\n", - "L = 27.396973, acc = 0.915000\n", - "L = 27.378855, acc = 0.915000\n", - "L = 27.360751, acc = 0.915000\n", - "L = 27.342662, acc = 0.915000\n", - "L = 27.324586, acc = 0.915000\n", - "L = 27.306524, acc = 0.915000\n", - "L = 27.288476, acc = 0.915000\n", - "L = 27.270442, acc = 0.915000\n", - "L = 27.252422, acc = 0.915000\n", - "L = 27.234416, acc = 0.915000\n", - "L = 27.216424, acc = 0.915000\n", - "L = 27.198446, acc = 0.915000\n", - "L = 27.180482, acc = 0.920000\n", - "L = 27.162532, acc = 0.920000\n", - "L = 27.144595, acc = 0.920000\n", - "L = 27.126673, acc = 0.920000\n", - "L = 27.108764, acc = 0.920000\n", - "L = 27.090869, acc = 0.920000\n", - "L = 27.072988, acc = 0.920000\n", - "L = 27.055121, acc = 0.920000\n", - "L = 27.037267, acc = 0.920000\n", - "L = 27.019427, acc = 0.920000\n" + "L = 13.788259, acc = 0.960000\n", + "L = 13.775337, acc = 0.960000\n", + "L = 13.762467, acc = 0.965000\n", + "L = 13.749649, acc = 0.965000\n", + "L = 13.736883, acc = 0.965000\n", + "L = 13.724167, acc = 0.965000\n", + "L = 13.711503, acc = 0.965000\n", + "L = 13.698888, acc = 0.965000\n", + "L = 13.686324, acc = 0.965000\n", + "L = 13.673810, acc = 0.965000\n", + "L = 13.661346, acc = 0.965000\n", + "L = 13.648931, acc = 0.965000\n", + "L = 13.636565, acc = 0.965000\n", + "L = 13.624248, acc = 0.965000\n", + "L = 13.611980, acc = 0.965000\n", + "L = 13.599759, acc = 0.965000\n", + "L = 13.587587, acc = 0.965000\n", + "L = 13.575462, acc = 0.965000\n", + "L = 13.563385, acc = 0.965000\n", + "L = 13.551354, acc = 0.965000\n", + "L = 13.539371, acc = 0.965000\n", + "L = 13.527434, acc = 0.965000\n", + "L = 13.515544, acc = 0.965000\n", + "L = 13.503699, acc = 0.965000\n", + "L = 13.491901, acc = 0.965000\n", + "L = 13.480147, acc = 0.965000\n", + "L = 13.468439, acc = 0.965000\n", + "L = 13.456776, acc = 0.965000\n", + "L = 13.445158, acc = 0.965000\n", + "L = 13.433585, acc = 0.965000\n", + "L = 13.422055, acc = 0.965000\n", + "L = 13.410569, acc = 0.965000\n", + "L = 13.399128, acc = 0.965000\n", + "L = 13.387729, acc = 0.965000\n", + "L = 13.376374, acc = 0.965000\n", + "L = 13.365062, acc = 0.965000\n", + "L = 13.353792, acc = 0.965000\n", + "L = 13.342565, acc = 0.965000\n", + "L = 13.331380, acc = 0.965000\n", + "L = 13.320237, acc = 0.965000\n", + "L = 13.309136, acc = 0.965000\n", + "L = 13.298077, acc = 0.965000\n", + "L = 13.287059, acc = 0.965000\n", + "L = 13.276081, acc = 0.965000\n", + "L = 13.265145, acc = 0.965000\n", + "L = 13.254249, acc = 0.965000\n", + "L = 13.243393, acc = 0.965000\n", + "L = 13.232578, acc = 0.965000\n", + "L = 13.221802, acc = 0.965000\n", + "L = 13.211066, acc = 0.965000\n", + "L = 13.200370, acc = 0.965000\n", + "L = 13.189712, acc = 0.965000\n", + "L = 13.179094, acc = 0.965000\n", + "L = 13.168515, acc = 0.965000\n", + "L = 13.157973, acc = 0.965000\n", + "L = 13.147471, acc = 0.965000\n", + "L = 13.137006, acc = 0.965000\n", + "L = 13.126579, acc = 0.965000\n", + "L = 13.116190, acc = 0.965000\n", + "L = 13.105839, acc = 0.965000\n", + "L = 13.095525, acc = 0.965000\n", + "L = 13.085247, acc = 0.965000\n", + "L = 13.075007, acc = 0.965000\n", + "L = 13.064803, acc = 0.965000\n", + "L = 13.054636, acc = 0.965000\n", + "L = 13.044504, acc = 0.965000\n", + "L = 13.034409, acc = 0.965000\n", + "L = 13.024350, acc = 0.965000\n", + "L = 13.014326, acc = 0.965000\n", + "L = 13.004338, acc = 0.965000\n", + "L = 12.994385, acc = 0.965000\n", + "L = 12.984467, acc = 0.965000\n", + "L = 12.974583, acc = 0.965000\n", + "L = 12.964735, acc = 0.965000\n", + "L = 12.954920, acc = 0.965000\n", + "L = 12.945140, acc = 0.965000\n", + "L = 12.935394, acc = 0.965000\n", + "L = 12.925682, acc = 0.965000\n", + "L = 12.916004, acc = 0.965000\n", + "L = 12.906359, acc = 0.965000\n", + "L = 12.896747, acc = 0.965000\n", + "L = 12.887169, acc = 0.965000\n", + "L = 12.877623, acc = 0.965000\n", + "L = 12.868110, acc = 0.965000\n", + "L = 12.858630, acc = 0.965000\n", + "L = 12.849182, acc = 0.965000\n", + "L = 12.839766, acc = 0.965000\n", + "L = 12.830383, acc = 0.965000\n", + "L = 12.821031, acc = 0.965000\n", + "L = 12.811711, acc = 0.965000\n", + "L = 12.802422, acc = 0.965000\n", + "L = 12.793165, acc = 0.965000\n", + "L = 12.783939, acc = 0.965000\n", + "L = 12.774743, acc = 0.965000\n", + "L = 12.765579, acc = 0.965000\n", + "L = 12.756445, acc = 0.965000\n", + "L = 12.747342, acc = 0.965000\n", + "L = 12.738269, acc = 0.965000\n", + "L = 12.729226, acc = 0.965000\n", + "L = 12.720214, acc = 0.965000\n", + "L = 12.711231, acc = 0.965000\n", + "L = 12.702277, acc = 0.965000\n", + "L = 12.693354, acc = 0.965000\n", + "L = 12.684459, acc = 0.965000\n", + "L = 12.675594, acc = 0.965000\n", + "L = 12.666757, acc = 0.965000\n", + "L = 12.657950, acc = 0.965000\n", + "L = 12.649171, acc = 0.965000\n", + "L = 12.640421, acc = 0.965000\n", + "L = 12.631699, acc = 0.965000\n", + "L = 12.623006, acc = 0.965000\n", + "L = 12.614340, acc = 0.965000\n", + "L = 12.605703, acc = 0.965000\n", + "L = 12.597093, acc = 0.965000\n", + "L = 12.588511, acc = 0.965000\n", + "L = 12.579956, acc = 0.965000\n", + "L = 12.571429, acc = 0.965000\n", + "L = 12.562928, acc = 0.965000\n", + "L = 12.554455, acc = 0.965000\n", + "L = 12.546009, acc = 0.965000\n", + "L = 12.537590, acc = 0.965000\n", + "L = 12.529197, acc = 0.965000\n", + "L = 12.520831, acc = 0.965000\n", + "L = 12.512491, acc = 0.965000\n", + "L = 12.504177, acc = 0.965000\n", + "L = 12.495889, acc = 0.965000\n", + "L = 12.487627, acc = 0.965000\n", + "L = 12.479391, acc = 0.965000\n", + "L = 12.471180, acc = 0.965000\n", + "L = 12.462995, acc = 0.965000\n", + "L = 12.454836, acc = 0.965000\n", + "L = 12.446701, acc = 0.965000\n", + "L = 12.438592, acc = 0.965000\n", + "L = 12.430508, acc = 0.965000\n", + "L = 12.422448, acc = 0.965000\n", + "L = 12.414413, acc = 0.965000\n", + "L = 12.406403, acc = 0.965000\n", + "L = 12.398417, acc = 0.965000\n", + "L = 12.390456, acc = 0.965000\n", + "L = 12.382519, acc = 0.965000\n", + "L = 12.374605, acc = 0.965000\n", + "L = 12.366716, acc = 0.965000\n", + "L = 12.358851, acc = 0.965000\n", + "L = 12.351009, acc = 0.965000\n", + "L = 12.343190, acc = 0.965000\n", + "L = 12.335396, acc = 0.965000\n", + "L = 12.327624, acc = 0.965000\n", + "L = 12.319876, acc = 0.965000\n", + "L = 12.312151, acc = 0.965000\n", + "L = 12.304448, acc = 0.965000\n", + "L = 12.296769, acc = 0.965000\n", + "L = 12.289112, acc = 0.965000\n", + "L = 12.281478, acc = 0.965000\n", + "L = 12.273866, acc = 0.965000\n", + "L = 12.266277, acc = 0.965000\n", + "L = 12.258710, acc = 0.965000\n", + "L = 12.251165, acc = 0.965000\n", + "L = 12.243642, acc = 0.965000\n", + "L = 12.236141, acc = 0.965000\n", + "L = 12.228662, acc = 0.965000\n", + "L = 12.221204, acc = 0.965000\n", + "L = 12.213768, acc = 0.965000\n", + "L = 12.206354, acc = 0.965000\n", + "L = 12.198961, acc = 0.965000\n", + "L = 12.191589, acc = 0.965000\n", + "L = 12.184238, acc = 0.965000\n", + "L = 12.176908, acc = 0.965000\n", + "L = 12.169599, acc = 0.965000\n", + "L = 12.162311, acc = 0.965000\n", + "L = 12.155044, acc = 0.965000\n", + "L = 12.147797, acc = 0.965000\n", + "L = 12.140571, acc = 0.965000\n", + "L = 12.133365, acc = 0.965000\n", + "L = 12.126180, acc = 0.965000\n", + "L = 12.119015, acc = 0.965000\n", + "L = 12.111869, acc = 0.965000\n", + "L = 12.104744, acc = 0.965000\n", + "L = 12.097639, acc = 0.965000\n", + "L = 12.090553, acc = 0.965000\n", + "L = 12.083487, acc = 0.965000\n", + "L = 12.076441, acc = 0.965000\n", + "L = 12.069414, acc = 0.965000\n", + "L = 12.062407, acc = 0.965000\n", + "L = 12.055419, acc = 0.965000\n", + "L = 12.048450, acc = 0.965000\n", + "L = 12.041500, acc = 0.965000\n", + "L = 12.034569, acc = 0.965000\n", + "L = 12.027657, acc = 0.965000\n", + "L = 12.020764, acc = 0.965000\n", + "L = 12.013890, acc = 0.965000\n", + "L = 12.007034, acc = 0.965000\n", + "L = 12.000197, acc = 0.965000\n", + "L = 11.993379, acc = 0.965000\n", + "L = 11.986578, acc = 0.965000\n", + "L = 11.979796, acc = 0.965000\n", + "L = 11.973033, acc = 0.965000\n", + "L = 11.966287, acc = 0.965000\n", + "L = 11.959559, acc = 0.965000\n", + "L = 11.952849, acc = 0.965000\n", + "L = 11.946157, acc = 0.965000\n", + "L = 11.939483, acc = 0.965000\n", + "L = 11.932827, acc = 0.965000\n", + "L = 11.926188, acc = 0.965000\n", + "L = 11.919566, acc = 0.965000\n", + "L = 11.912962, acc = 0.965000\n", + "L = 11.906376, acc = 0.965000\n", + "L = 11.899806, acc = 0.965000\n", + "L = 11.893254, acc = 0.965000\n", + "L = 11.886718, acc = 0.965000\n", + "L = 11.880200, acc = 0.965000\n", + "L = 11.873699, acc = 0.965000\n", + "L = 11.867214, acc = 0.965000\n", + "L = 11.860747, acc = 0.965000\n", + "L = 11.854295, acc = 0.965000\n", + "L = 11.847861, acc = 0.965000\n", + "L = 11.841443, acc = 0.965000\n", + "L = 11.835041, acc = 0.965000\n", + "L = 11.828656, acc = 0.965000\n", + "L = 11.822287, acc = 0.965000\n", + "L = 11.815935, acc = 0.965000\n", + "L = 11.809598, acc = 0.965000\n", + "L = 11.803278, acc = 0.965000\n", + "L = 11.796973, acc = 0.965000\n", + "L = 11.790684, acc = 0.965000\n", + "L = 11.784412, acc = 0.965000\n", + "L = 11.778154, acc = 0.965000\n", + "L = 11.771913, acc = 0.965000\n", + "L = 11.765687, acc = 0.965000\n", + "L = 11.759477, acc = 0.965000\n", + "L = 11.753282, acc = 0.970000\n", + "L = 11.747103, acc = 0.970000\n", + "L = 11.740939, acc = 0.970000\n", + "L = 11.734790, acc = 0.970000\n", + "L = 11.728656, acc = 0.970000\n", + "L = 11.722538, acc = 0.970000\n", + "L = 11.716434, acc = 0.970000\n", + "L = 11.710346, acc = 0.970000\n", + "L = 11.704272, acc = 0.970000\n", + "L = 11.698213, acc = 0.970000\n", + "L = 11.692169, acc = 0.970000\n", + "L = 11.686140, acc = 0.970000\n", + "L = 11.680125, acc = 0.970000\n", + "L = 11.674125, acc = 0.970000\n", + "L = 11.668140, acc = 0.970000\n", + "L = 11.662169, acc = 0.970000\n", + "L = 11.656212, acc = 0.970000\n", + "L = 11.650269, acc = 0.970000\n", + "L = 11.644341, acc = 0.970000\n", + "L = 11.638427, acc = 0.970000\n", + "L = 11.632527, acc = 0.970000\n", + "L = 11.626641, acc = 0.970000\n", + "L = 11.620769, acc = 0.970000\n", + "L = 11.614911, acc = 0.970000\n", + "L = 11.609067, acc = 0.970000\n", + "L = 11.603237, acc = 0.970000\n", + "L = 11.597420, acc = 0.970000\n", + "L = 11.591618, acc = 0.970000\n", + "L = 11.585828, acc = 0.970000\n", + "L = 11.580053, acc = 0.970000\n", + "L = 11.574291, acc = 0.970000\n", + "L = 11.568542, acc = 0.970000\n", + "L = 11.562807, acc = 0.970000\n", + "L = 11.557085, acc = 0.970000\n", + "L = 11.551376, acc = 0.970000\n", + "L = 11.545680, acc = 0.970000\n", + "L = 11.539998, acc = 0.970000\n", + "L = 11.534329, acc = 0.970000\n", + "L = 11.528673, acc = 0.970000\n", + "L = 11.523029, acc = 0.970000\n", + "L = 11.517399, acc = 0.970000\n", + "L = 11.511782, acc = 0.970000\n", + "L = 11.506177, acc = 0.970000\n", + "L = 11.500585, acc = 0.970000\n", + "L = 11.495006, acc = 0.970000\n", + "L = 11.489440, acc = 0.970000\n", + "L = 11.483886, acc = 0.970000\n", + "L = 11.478345, acc = 0.970000\n", + "L = 11.472816, acc = 0.970000\n", + "L = 11.467300, acc = 0.970000\n", + "L = 11.461796, acc = 0.970000\n", + "L = 11.456304, acc = 0.970000\n", + "L = 11.450825, acc = 0.970000\n", + "L = 11.445358, acc = 0.970000\n", + "L = 11.439903, acc = 0.970000\n", + "L = 11.434461, acc = 0.970000\n", + "L = 11.429030, acc = 0.970000\n", + "L = 11.423612, acc = 0.970000\n", + "L = 11.418205, acc = 0.970000\n", + "L = 11.412810, acc = 0.970000\n", + "L = 11.407428, acc = 0.970000\n", + "L = 11.402057, acc = 0.970000\n", + "L = 11.396698, acc = 0.970000\n", + "L = 11.391351, acc = 0.970000\n", + "L = 11.386015, acc = 0.970000\n", + "L = 11.380691, acc = 0.970000\n", + "L = 11.375379, acc = 0.970000\n", + "L = 11.370078, acc = 0.970000\n", + "L = 11.364789, acc = 0.970000\n", + "L = 11.359511, acc = 0.970000\n", + "L = 11.354245, acc = 0.970000\n", + "L = 11.348990, acc = 0.970000\n", + "L = 11.343746, acc = 0.970000\n", + "L = 11.338514, acc = 0.970000\n", + "L = 11.333293, acc = 0.970000\n", + "L = 11.328083, acc = 0.970000\n", + "L = 11.322884, acc = 0.970000\n", + "L = 11.317696, acc = 0.970000\n", + "L = 11.312520, acc = 0.970000\n", + "L = 11.307354, acc = 0.970000\n", + "L = 11.302200, acc = 0.970000\n", + "L = 11.297056, acc = 0.970000\n", + "L = 11.291923, acc = 0.970000\n", + "L = 11.286802, acc = 0.970000\n", + "L = 11.281691, acc = 0.970000\n", + "L = 11.276590, acc = 0.970000\n", + "L = 11.271501, acc = 0.970000\n", + "L = 11.266422, acc = 0.970000\n", + "L = 11.261354, acc = 0.970000\n", + "L = 11.256296, acc = 0.970000\n", + "L = 11.251249, acc = 0.970000\n", + "L = 11.246213, acc = 0.970000\n", + "L = 11.241187, acc = 0.970000\n", + "L = 11.236171, acc = 0.970000\n", + "L = 11.231166, acc = 0.970000\n", + "L = 11.226172, acc = 0.970000\n", + "L = 11.221187, acc = 0.970000\n", + "L = 11.216213, acc = 0.970000\n", + "L = 11.211249, acc = 0.970000\n", + "L = 11.206296, acc = 0.970000\n", + "L = 11.201352, acc = 0.970000\n", + "L = 11.196419, acc = 0.970000\n", + "L = 11.191496, acc = 0.970000\n", + "L = 11.186583, acc = 0.970000\n", + "L = 11.181680, acc = 0.970000\n", + "L = 11.176787, acc = 0.970000\n", + "L = 11.171904, acc = 0.970000\n", + "L = 11.167031, acc = 0.970000\n", + "L = 11.162167, acc = 0.970000\n", + "L = 11.157314, acc = 0.970000\n", + "L = 11.152470, acc = 0.970000\n", + "L = 11.147637, acc = 0.970000\n", + "L = 11.142813, acc = 0.970000\n", + "L = 11.137998, acc = 0.970000\n", + "L = 11.133194, acc = 0.970000\n", + "L = 11.128399, acc = 0.970000\n", + "L = 11.123613, acc = 0.970000\n", + "L = 11.118838, acc = 0.970000\n", + "L = 11.114072, acc = 0.970000\n", + "L = 11.109315, acc = 0.970000\n", + "L = 11.104568, acc = 0.970000\n", + "L = 11.099830, acc = 0.970000\n", + "L = 11.095102, acc = 0.970000\n", + "L = 11.090383, acc = 0.970000\n", + "L = 11.085673, acc = 0.970000\n", + "L = 11.080973, acc = 0.970000\n", + "L = 11.076282, acc = 0.970000\n", + "L = 11.071600, acc = 0.970000\n", + "L = 11.066928, acc = 0.970000\n", + "L = 11.062264, acc = 0.970000\n", + "L = 11.057610, acc = 0.970000\n", + "L = 11.052965, acc = 0.970000\n", + "L = 11.048329, acc = 0.970000\n", + "L = 11.043702, acc = 0.970000\n", + "L = 11.039085, acc = 0.970000\n", + "L = 11.034476, acc = 0.970000\n", + "L = 11.029876, acc = 0.970000\n", + "L = 11.025285, acc = 0.970000\n", + "L = 11.020703, acc = 0.970000\n", + "L = 11.016130, acc = 0.970000\n", + "L = 11.011566, acc = 0.970000\n", + "L = 11.007011, acc = 0.970000\n", + "L = 11.002464, acc = 0.970000\n", + "L = 10.997927, acc = 0.970000\n", + "L = 10.993398, acc = 0.970000\n", + "L = 10.988877, acc = 0.970000\n", + "L = 10.984366, acc = 0.970000\n", + "L = 10.979863, acc = 0.970000\n", + "L = 10.975369, acc = 0.970000\n", + "L = 10.970883, acc = 0.970000\n", + "L = 10.966406, acc = 0.970000\n", + "L = 10.961938, acc = 0.970000\n", + "L = 10.957478, acc = 0.970000\n", + "L = 10.953026, acc = 0.970000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "L = 27.001601, acc = 0.920000\n", - "L = 26.983789, acc = 0.925000\n", - "L = 26.965991, acc = 0.925000\n", - "L = 26.948206, acc = 0.925000\n", - "L = 26.930434, acc = 0.925000\n", - "L = 26.912677, acc = 0.925000\n", - "L = 26.894933, acc = 0.925000\n", - "L = 26.877202, acc = 0.925000\n", - "L = 26.859486, acc = 0.925000\n", - "L = 26.841782, acc = 0.925000\n", - "L = 26.824093, acc = 0.925000\n", - "L = 26.806416, acc = 0.925000\n", - "L = 26.788754, acc = 0.925000\n", - "L = 26.771104, acc = 0.925000\n", - "L = 26.753468, acc = 0.925000\n", - "L = 26.735846, acc = 0.925000\n", - "L = 26.718237, acc = 0.925000\n", - "L = 26.700641, acc = 0.925000\n", - "L = 26.683059, acc = 0.925000\n", - "L = 26.665490, acc = 0.925000\n", - "L = 26.647934, acc = 0.925000\n", - "L = 26.630391, acc = 0.925000\n", - "L = 26.612862, acc = 0.925000\n", - "L = 26.595346, acc = 0.930000\n", - "L = 26.577843, acc = 0.935000\n", - "L = 26.560353, acc = 0.935000\n", - "L = 26.542877, acc = 0.935000\n", - "L = 26.525413, acc = 0.935000\n", - "L = 26.507963, acc = 0.935000\n", - "L = 26.490525, acc = 0.935000\n", - "L = 26.473101, acc = 0.935000\n", - "L = 26.455690, acc = 0.935000\n", - "L = 26.438291, acc = 0.935000\n", - "L = 26.420905, acc = 0.935000\n", - "L = 26.403533, acc = 0.935000\n", - "L = 26.386173, acc = 0.935000\n", - "L = 26.368826, acc = 0.935000\n", - "L = 26.351492, acc = 0.935000\n", - "L = 26.334170, acc = 0.935000\n", - "L = 26.316862, acc = 0.935000\n", - "L = 26.299566, acc = 0.935000\n", - "L = 26.282283, acc = 0.935000\n", - "L = 26.265012, acc = 0.935000\n", - "L = 26.247754, acc = 0.935000\n", - "L = 26.230508, acc = 0.935000\n", - "L = 26.213276, acc = 0.935000\n", - "L = 26.196055, acc = 0.935000\n", - "L = 26.178847, acc = 0.935000\n", - "L = 26.161652, acc = 0.935000\n", - "L = 26.144469, acc = 0.935000\n", - "L = 26.127298, acc = 0.935000\n", - "L = 26.110140, acc = 0.935000\n", - "L = 26.092994, acc = 0.935000\n", - "L = 26.075860, acc = 0.935000\n", - "L = 26.058738, acc = 0.935000\n", - "L = 26.041629, acc = 0.935000\n", - "L = 26.024532, acc = 0.935000\n", - "L = 26.007447, acc = 0.935000\n", - "L = 25.990374, acc = 0.935000\n", - "L = 25.973313, acc = 0.935000\n", - "L = 25.956264, acc = 0.935000\n", - "L = 25.939227, acc = 0.935000\n", - "L = 25.922202, acc = 0.935000\n", - "L = 25.905189, acc = 0.935000\n", - "L = 25.888188, acc = 0.935000\n", - "L = 25.871198, acc = 0.935000\n", - "L = 25.854221, acc = 0.935000\n", - "L = 25.837255, acc = 0.935000\n", - "L = 25.820301, acc = 0.935000\n", - "L = 25.803358, acc = 0.935000\n", - "L = 25.786427, acc = 0.935000\n", - "L = 25.769508, acc = 0.935000\n", - "L = 25.752600, acc = 0.935000\n", - "L = 25.735704, acc = 0.935000\n", - "L = 25.718819, acc = 0.935000\n", - "L = 25.701946, acc = 0.935000\n", - "L = 25.685084, acc = 0.935000\n", - "L = 25.668233, acc = 0.935000\n", - "L = 25.651394, acc = 0.935000\n", - "L = 25.634566, acc = 0.935000\n", - "L = 25.617749, acc = 0.935000\n", - "L = 25.600943, acc = 0.935000\n", - "L = 25.584148, acc = 0.935000\n", - "L = 25.567365, acc = 0.935000\n", - "L = 25.550592, acc = 0.935000\n", - "L = 25.533831, acc = 0.935000\n", - "L = 25.517080, acc = 0.935000\n", - "L = 25.500341, acc = 0.935000\n", - "L = 25.483612, acc = 0.935000\n", - "L = 25.466894, acc = 0.935000\n", - "L = 25.450187, acc = 0.935000\n", - "L = 25.433491, acc = 0.935000\n", - "L = 25.416805, acc = 0.935000\n", - "L = 25.400130, acc = 0.935000\n", - "L = 25.383465, acc = 0.935000\n", - "L = 25.366811, acc = 0.935000\n", - "L = 25.350168, acc = 0.935000\n", - "L = 25.333535, acc = 0.935000\n", - "L = 25.316912, acc = 0.935000\n", - "L = 25.300300, acc = 0.935000\n", - "L = 25.283698, acc = 0.935000\n", - "L = 25.267106, acc = 0.935000\n", - "L = 25.250525, acc = 0.935000\n", - "L = 25.233954, acc = 0.935000\n", - "L = 25.217393, acc = 0.935000\n", - "L = 25.200842, acc = 0.935000\n", - "L = 25.184301, acc = 0.935000\n", - "L = 25.167769, acc = 0.935000\n", - "L = 25.151248, acc = 0.935000\n", - "L = 25.134737, acc = 0.935000\n", - "L = 25.118236, acc = 0.935000\n", - "L = 25.101744, acc = 0.935000\n", - "L = 25.085262, acc = 0.935000\n", - "L = 25.068790, acc = 0.935000\n", - "L = 25.052327, acc = 0.935000\n", - "L = 25.035874, acc = 0.935000\n", - "L = 25.019431, acc = 0.935000\n", - "L = 25.002997, acc = 0.935000\n", - "L = 24.986572, acc = 0.935000\n", - "L = 24.970157, acc = 0.935000\n", - "L = 24.953751, acc = 0.935000\n", - "L = 24.937355, acc = 0.935000\n", - "L = 24.920967, acc = 0.935000\n", - "L = 24.904589, acc = 0.935000\n", - "L = 24.888220, acc = 0.935000\n", - "L = 24.871860, acc = 0.935000\n", - "L = 24.855509, acc = 0.935000\n", - "L = 24.839167, acc = 0.935000\n", - "L = 24.822834, acc = 0.935000\n", - "L = 24.806510, acc = 0.935000\n", - "L = 24.790195, acc = 0.935000\n", - "L = 24.773888, acc = 0.935000\n", - "L = 24.757590, acc = 0.935000\n", - "L = 24.741301, acc = 0.935000\n", - "L = 24.725020, acc = 0.935000\n", - "L = 24.708748, acc = 0.935000\n", - "L = 24.692484, acc = 0.940000\n", - "L = 24.676229, acc = 0.940000\n", - "L = 24.659982, acc = 0.940000\n", - "L = 24.643744, acc = 0.940000\n", - "L = 24.627513, acc = 0.940000\n", - "L = 24.611291, acc = 0.940000\n", - "L = 24.595078, acc = 0.940000\n", - "L = 24.578872, acc = 0.940000\n", - "L = 24.562674, acc = 0.940000\n", - "L = 24.546485, acc = 0.940000\n", - "L = 24.530303, acc = 0.940000\n", - "L = 24.514129, acc = 0.940000\n", - "L = 24.497963, acc = 0.940000\n", - "L = 24.481805, acc = 0.940000\n", - "L = 24.465655, acc = 0.940000\n", - "L = 24.449512, acc = 0.940000\n", - "L = 24.433377, acc = 0.940000\n", - "L = 24.417249, acc = 0.940000\n", - "L = 24.401129, acc = 0.940000\n", - "L = 24.385016, acc = 0.940000\n", - "L = 24.368911, acc = 0.940000\n", - "L = 24.352813, acc = 0.940000\n", - "L = 24.336723, acc = 0.940000\n", - "L = 24.320639, acc = 0.940000\n", - "L = 24.304563, acc = 0.940000\n", - "L = 24.288494, acc = 0.940000\n", - "L = 24.272432, acc = 0.940000\n", - "L = 24.256377, acc = 0.940000\n", - "L = 24.240329, acc = 0.940000\n", - "L = 24.224288, acc = 0.940000\n", - "L = 24.208254, acc = 0.940000\n", - "L = 24.192226, acc = 0.940000\n", - "L = 24.176205, acc = 0.940000\n", - "L = 24.160191, acc = 0.940000\n", - "L = 24.144184, acc = 0.940000\n", - "L = 24.128183, acc = 0.940000\n", - "L = 24.112189, acc = 0.940000\n", - "L = 24.096201, acc = 0.940000\n", - "L = 24.080219, acc = 0.940000\n", - "L = 24.064244, acc = 0.940000\n", - "L = 24.048275, acc = 0.940000\n", - "L = 24.032313, acc = 0.940000\n", - "L = 24.016356, acc = 0.940000\n", - "L = 24.000406, acc = 0.940000\n", - "L = 23.984461, acc = 0.940000\n", - "L = 23.968523, acc = 0.940000\n", - "L = 23.952591, acc = 0.940000\n", - "L = 23.936664, acc = 0.940000\n", - "L = 23.920744, acc = 0.940000\n", - "L = 23.904829, acc = 0.940000\n", - "L = 23.888920, acc = 0.940000\n", - "L = 23.873016, acc = 0.940000\n", - "L = 23.857119, acc = 0.940000\n", - "L = 23.841226, acc = 0.940000\n", - "L = 23.825340, acc = 0.940000\n", - "L = 23.809459, acc = 0.940000\n", - "L = 23.793583, acc = 0.940000\n", - "L = 23.777712, acc = 0.940000\n", - "L = 23.761847, acc = 0.940000\n", - "L = 23.745987, acc = 0.940000\n", - "L = 23.730133, acc = 0.940000\n", - "L = 23.714283, acc = 0.940000\n", - "L = 23.698438, acc = 0.940000\n", - "L = 23.682599, acc = 0.940000\n", - "L = 23.666764, acc = 0.940000\n", - "L = 23.650935, acc = 0.940000\n", - "L = 23.635110, acc = 0.940000\n", - "L = 23.619290, acc = 0.940000\n", - "L = 23.603475, acc = 0.940000\n", - "L = 23.587665, acc = 0.940000\n", - "L = 23.571859, acc = 0.940000\n", - "L = 23.556058, acc = 0.940000\n", - "L = 23.540261, acc = 0.940000\n", - "L = 23.524469, acc = 0.940000\n", - "L = 23.508682, acc = 0.940000\n", - "L = 23.492899, acc = 0.940000\n", - "L = 23.477120, acc = 0.940000\n", - "L = 23.461345, acc = 0.940000\n", - "L = 23.445575, acc = 0.940000\n", - "L = 23.429809, acc = 0.940000\n", - "L = 23.414047, acc = 0.940000\n", - "L = 23.398289, acc = 0.940000\n", - "L = 23.382536, acc = 0.940000\n", - "L = 23.366786, acc = 0.940000\n", - "L = 23.351040, acc = 0.940000\n", - "L = 23.335299, acc = 0.940000\n", - "L = 23.319561, acc = 0.940000\n", - "L = 23.303827, acc = 0.940000\n", - "L = 23.288096, acc = 0.940000\n", - "L = 23.272370, acc = 0.940000\n", - "L = 23.256647, acc = 0.940000\n", - "L = 23.240927, acc = 0.940000\n", - "L = 23.225212, acc = 0.940000\n", - "L = 23.209500, acc = 0.940000\n", - "L = 23.193791, acc = 0.940000\n", - "L = 23.178086, acc = 0.940000\n", - "L = 23.162384, acc = 0.940000\n", - "L = 23.146686, acc = 0.940000\n", - "L = 23.130991, acc = 0.940000\n", - "L = 23.115299, acc = 0.940000\n", - "L = 23.099610, acc = 0.940000\n", - "L = 23.083925, acc = 0.940000\n", - "L = 23.068243, acc = 0.940000\n", - "L = 23.052564, acc = 0.940000\n", - "L = 23.036888, acc = 0.940000\n", - "L = 23.021215, acc = 0.940000\n", - "L = 23.005545, acc = 0.940000\n", - "L = 22.989879, acc = 0.940000\n", - "L = 22.974215, acc = 0.940000\n", - "L = 22.958554, acc = 0.940000\n", - "L = 22.942895, acc = 0.940000\n", - "L = 22.927240, acc = 0.940000\n", - "L = 22.911587, acc = 0.940000\n", - "L = 22.895938, acc = 0.940000\n", - "L = 22.880290, acc = 0.940000\n", - "L = 22.864646, acc = 0.940000\n", - "L = 22.849004, acc = 0.940000\n", - "L = 22.833365, acc = 0.940000\n", - "L = 22.817728, acc = 0.940000\n", - "L = 22.802094, acc = 0.940000\n", - "L = 22.786463, acc = 0.940000\n", - "L = 22.770834, acc = 0.940000\n", - "L = 22.755207, acc = 0.940000\n", - "L = 22.739583, acc = 0.940000\n", - "L = 22.723961, acc = 0.940000\n", - "L = 22.708342, acc = 0.940000\n", - "L = 22.692725, acc = 0.940000\n", - "L = 22.677110, acc = 0.940000\n", - "L = 22.661498, acc = 0.940000\n", - "L = 22.645887, acc = 0.940000\n", - "L = 22.630280, acc = 0.940000\n", - "L = 22.614674, acc = 0.940000\n", - "L = 22.599070, acc = 0.940000\n", - "L = 22.583469, acc = 0.940000\n", - "L = 22.567870, acc = 0.940000\n", - "L = 22.552273, acc = 0.940000\n", - "L = 22.536678, acc = 0.940000\n", - "L = 22.521085, acc = 0.940000\n", - "L = 22.505494, acc = 0.940000\n", - "L = 22.489905, acc = 0.945000\n", - "L = 22.474319, acc = 0.945000\n", - "L = 22.458734, acc = 0.945000\n", - "L = 22.443151, acc = 0.945000\n", - "L = 22.427570, acc = 0.945000\n", - "L = 22.411992, acc = 0.945000\n", - "L = 22.396415, acc = 0.945000\n", - "L = 22.380840, acc = 0.945000\n", - "L = 22.365267, acc = 0.945000\n", - "L = 22.349696, acc = 0.945000\n", - "L = 22.334127, acc = 0.945000\n", - "L = 22.318560, acc = 0.945000\n", - "L = 22.302995, acc = 0.945000\n", - "L = 22.287431, acc = 0.945000\n", - "L = 22.271870, acc = 0.945000\n", - "L = 22.256310, acc = 0.945000\n", - "L = 22.240752, acc = 0.945000\n", - "L = 22.225196, acc = 0.945000\n", - "L = 22.209642, acc = 0.945000\n", - "L = 22.194090, acc = 0.945000\n", - "L = 22.178539, acc = 0.945000\n", - "L = 22.162991, acc = 0.945000\n", - "L = 22.147444, acc = 0.945000\n", - "L = 22.131899, acc = 0.945000\n", - "L = 22.116356, acc = 0.945000\n", - "L = 22.100815, acc = 0.945000\n", - "L = 22.085276, acc = 0.945000\n", - "L = 22.069738, acc = 0.945000\n", - "L = 22.054203, acc = 0.945000\n", - "L = 22.038669, acc = 0.945000\n", - "L = 22.023137, acc = 0.945000\n", - "L = 22.007607, acc = 0.945000\n", - "L = 21.992079, acc = 0.945000\n", - "L = 21.976553, acc = 0.945000\n", - "L = 21.961028, acc = 0.945000\n", - "L = 21.945506, acc = 0.945000\n", - "L = 21.929986, acc = 0.945000\n", - "L = 21.914467, acc = 0.945000\n", - "L = 21.898951, acc = 0.945000\n", - "L = 21.883436, acc = 0.945000\n", - "L = 21.867924, acc = 0.945000\n", - "L = 21.852413, acc = 0.945000\n", - "L = 21.836904, acc = 0.945000\n", - "L = 21.821398, acc = 0.945000\n", - "L = 21.805893, acc = 0.945000\n", - "L = 21.790391, acc = 0.945000\n", - "L = 21.774891, acc = 0.945000\n", - "L = 21.759393, acc = 0.945000\n", - "L = 21.743897, acc = 0.945000\n", - "L = 21.728403, acc = 0.945000\n", - "L = 21.712911, acc = 0.945000\n", - "L = 21.697422, acc = 0.945000\n", - "L = 21.681935, acc = 0.945000\n", - "L = 21.666450, acc = 0.945000\n", - "L = 21.650967, acc = 0.945000\n", - "L = 21.635487, acc = 0.945000\n", - "L = 21.620009, acc = 0.945000\n", - "L = 21.604534, acc = 0.945000\n", - "L = 21.589061, acc = 0.945000\n", - "L = 21.573590, acc = 0.945000\n", - "L = 21.558122, acc = 0.945000\n", - "L = 21.542657, acc = 0.945000\n", - "L = 21.527194, acc = 0.945000\n", - "L = 21.511733, acc = 0.945000\n", - "L = 21.496276, acc = 0.945000\n", - "L = 21.480821, acc = 0.945000\n", - "L = 21.465368, acc = 0.945000\n", - "L = 21.449919, acc = 0.945000\n", - "L = 21.434472, acc = 0.945000\n", - "L = 21.419028, acc = 0.945000\n", - "L = 21.403587, acc = 0.945000\n", - "L = 21.388149, acc = 0.945000\n", - "L = 21.372714, acc = 0.945000\n", - "L = 21.357282, acc = 0.945000\n", - "L = 21.341853, acc = 0.945000\n", - "L = 21.326427, acc = 0.945000\n", - "L = 21.311004, acc = 0.945000\n", - "L = 21.295585, acc = 0.945000\n", - "L = 21.280168, acc = 0.945000\n", - "L = 21.264755, acc = 0.945000\n", - "L = 21.249346, acc = 0.945000\n", - "L = 21.233940, acc = 0.945000\n", - "L = 21.218537, acc = 0.945000\n", - "L = 21.203138, acc = 0.945000\n", - "L = 21.187743, acc = 0.945000\n", - "L = 21.172351, acc = 0.945000\n", - "L = 21.156962, acc = 0.945000\n", - "L = 21.141578, acc = 0.945000\n", - "L = 21.126197, acc = 0.945000\n", - "L = 21.110821, acc = 0.945000\n", - "L = 21.095448, acc = 0.945000\n", - "L = 21.080079, acc = 0.945000\n", - "L = 21.064714, acc = 0.945000\n", - "L = 21.049354, acc = 0.945000\n", - "L = 21.033997, acc = 0.945000\n", - "L = 21.018645, acc = 0.945000\n", - "L = 21.003297, acc = 0.945000\n", - "L = 20.987954, acc = 0.945000\n", - "L = 20.972615, acc = 0.945000\n", - "L = 20.957280, acc = 0.945000\n", - "L = 20.941950, acc = 0.945000\n", - "L = 20.926625, acc = 0.945000\n", - "L = 20.911304, acc = 0.945000\n", - "L = 20.895988, acc = 0.945000\n", - "L = 20.880677, acc = 0.945000\n", - "L = 20.865371, acc = 0.945000\n", - "L = 20.850070, acc = 0.945000\n", - "L = 20.834774, acc = 0.945000\n", - "L = 20.819483, acc = 0.945000\n", - "L = 20.804198, acc = 0.945000\n", - "L = 20.788917, acc = 0.945000\n", - "L = 20.773642, acc = 0.945000\n", - "L = 20.758373, acc = 0.945000\n", - "L = 20.743109, acc = 0.945000\n", - "L = 20.727850, acc = 0.945000\n", - "L = 20.712598, acc = 0.945000\n", - "L = 20.697351, acc = 0.945000\n", - "L = 20.682109, acc = 0.945000\n", - "L = 20.666874, acc = 0.945000\n", - "L = 20.651645, acc = 0.945000\n", - "L = 20.636421, acc = 0.945000\n", - "L = 20.621204, acc = 0.945000\n", - "L = 20.605993, acc = 0.945000\n", - "L = 20.590789, acc = 0.945000\n", - "L = 20.575591, acc = 0.945000\n", - "L = 20.560399, acc = 0.945000\n", - "L = 20.545214, acc = 0.945000\n", - "L = 20.530035, acc = 0.945000\n", - "L = 20.514863, acc = 0.945000\n", - "L = 20.499698, acc = 0.945000\n", - "L = 20.484540, acc = 0.945000\n", - "L = 20.469389, acc = 0.945000\n", - "L = 20.454245, acc = 0.945000\n", - "L = 20.439107, acc = 0.945000\n", - "L = 20.423978, acc = 0.945000\n", - "L = 20.408855, acc = 0.945000\n", - "L = 20.393740, acc = 0.945000\n", - "L = 20.378632, acc = 0.945000\n", - "L = 20.363532, acc = 0.945000\n", - "L = 20.348440, acc = 0.945000\n", - "L = 20.333355, acc = 0.945000\n", - "L = 20.318278, acc = 0.945000\n", - "L = 20.303209, acc = 0.945000\n", - "L = 20.288148, acc = 0.945000\n", - "L = 20.273095, acc = 0.945000\n", - "L = 20.258051, acc = 0.945000\n", - "L = 20.243014, acc = 0.945000\n", - "L = 20.227986, acc = 0.945000\n", - "L = 20.212966, acc = 0.945000\n", - "L = 20.197955, acc = 0.945000\n", - "L = 20.182953, acc = 0.945000\n", - "L = 20.167959, acc = 0.945000\n", - "L = 20.152974, acc = 0.945000\n", - "L = 20.137998, acc = 0.945000\n", - "L = 20.123030, acc = 0.945000\n", - "L = 20.108072, acc = 0.945000\n", - "L = 20.093123, acc = 0.945000\n", - "L = 20.078184, acc = 0.945000\n", - "L = 20.063253, acc = 0.945000\n", - "L = 20.048332, acc = 0.945000\n", - "L = 20.033421, acc = 0.945000\n", - "L = 20.018519, acc = 0.945000\n", - "L = 20.003627, acc = 0.945000\n", - "L = 19.988745, acc = 0.945000\n", - "L = 19.973872, acc = 0.945000\n", - "L = 19.959009, acc = 0.945000\n", - "L = 19.944157, acc = 0.945000\n", - "L = 19.929315, acc = 0.945000\n", - "L = 19.914483, acc = 0.945000\n", - "L = 19.899661, acc = 0.945000\n", - "L = 19.884849, acc = 0.945000\n", - "L = 19.870048, acc = 0.945000\n", - "L = 19.855258, acc = 0.945000\n", - "L = 19.840478, acc = 0.945000\n", - "L = 19.825710, acc = 0.945000\n", - "L = 19.810951, acc = 0.945000\n", - "L = 19.796204, acc = 0.945000\n", - "L = 19.781468, acc = 0.945000\n", - "L = 19.766743, acc = 0.945000\n", - "L = 19.752030, acc = 0.945000\n", - "L = 19.737327, acc = 0.945000\n", - "L = 19.722636, acc = 0.945000\n", - "L = 19.707956, acc = 0.945000\n", - "L = 19.693288, acc = 0.945000\n", - "L = 19.678632, acc = 0.945000\n", - "L = 19.663987, acc = 0.945000\n", - "L = 19.649354, acc = 0.950000\n", - "L = 19.634733, acc = 0.950000\n", - "L = 19.620124, acc = 0.950000\n", - "L = 19.605528, acc = 0.950000\n", - "L = 19.590943, acc = 0.950000\n", - "L = 19.576370, acc = 0.950000\n", - "L = 19.561810, acc = 0.950000\n", - "L = 19.547262, acc = 0.950000\n", - "L = 19.532727, acc = 0.950000\n", - "L = 19.518204, acc = 0.950000\n", - "L = 19.503694, acc = 0.950000\n", - "L = 19.489197, acc = 0.950000\n", - "L = 19.474712, acc = 0.950000\n", - "L = 19.460241, acc = 0.950000\n", - "L = 19.445782, acc = 0.950000\n", - "L = 19.431337, acc = 0.950000\n", - "L = 19.416904, acc = 0.950000\n", - "L = 19.402485, acc = 0.950000\n", - "L = 19.388079, acc = 0.950000\n", - "L = 19.373687, acc = 0.950000\n", - "L = 19.359308, acc = 0.950000\n", - "L = 19.344942, acc = 0.950000\n", - "L = 19.330591, acc = 0.950000\n", - "L = 19.316252, acc = 0.950000\n", - "L = 19.301928, acc = 0.950000\n", - "L = 19.287618, acc = 0.950000\n", - "L = 19.273321, acc = 0.950000\n", - "L = 19.259039, acc = 0.950000\n", - "L = 19.244770, acc = 0.950000\n", - "L = 19.230516, acc = 0.950000\n", - "L = 19.216276, acc = 0.950000\n", - "L = 19.202050, acc = 0.950000\n", - "L = 19.187839, acc = 0.950000\n", - "L = 19.173642, acc = 0.950000\n", - "L = 19.159460, acc = 0.950000\n", - "L = 19.145292, acc = 0.950000\n", - "L = 19.131139, acc = 0.950000\n", - "L = 19.117001, acc = 0.950000\n", - "L = 19.102877, acc = 0.950000\n", - "L = 19.088769, acc = 0.950000\n", - "L = 19.074675, acc = 0.950000\n", - "L = 19.060596, acc = 0.950000\n", - "L = 19.046533, acc = 0.950000\n", - "L = 19.032484, acc = 0.950000\n", - "L = 19.018451, acc = 0.950000\n", - "L = 19.004433, acc = 0.950000\n", - "L = 18.990431, acc = 0.950000\n", - "L = 18.976444, acc = 0.950000\n", - "L = 18.962472, acc = 0.950000\n", - "L = 18.948516, acc = 0.950000\n", - "L = 18.934576, acc = 0.950000\n", - "L = 18.920651, acc = 0.950000\n", - "L = 18.906742, acc = 0.950000\n", - "L = 18.892849, acc = 0.950000\n", - "L = 18.878972, acc = 0.950000\n", - "L = 18.865111, acc = 0.950000\n", - "L = 18.851265, acc = 0.950000\n", - "L = 18.837436, acc = 0.950000\n", - "L = 18.823623, acc = 0.950000\n", - "L = 18.809826, acc = 0.950000\n", - "L = 18.796045, acc = 0.950000\n", - "L = 18.782280, acc = 0.950000\n", - "L = 18.768532, acc = 0.950000\n", - "L = 18.754800, acc = 0.950000\n", - "L = 18.741085, acc = 0.950000\n", - "L = 18.727386, acc = 0.950000\n", - "L = 18.713704, acc = 0.950000\n", - "L = 18.700038, acc = 0.950000\n", - "L = 18.686389, acc = 0.950000\n", - "L = 18.672757, acc = 0.950000\n", - "L = 18.659141, acc = 0.950000\n", - "L = 18.645542, acc = 0.950000\n", - "L = 18.631961, acc = 0.950000\n", - "L = 18.618396, acc = 0.950000\n", - "L = 18.604848, acc = 0.950000\n", - "L = 18.591317, acc = 0.950000\n", - "L = 18.577803, acc = 0.950000\n", - "L = 18.564306, acc = 0.950000\n", - "L = 18.550826, acc = 0.950000\n", - "L = 18.537364, acc = 0.950000\n", - "L = 18.523919, acc = 0.950000\n", - "L = 18.510491, acc = 0.950000\n", - "L = 18.497081, acc = 0.955000\n", - "L = 18.483687, acc = 0.955000\n", - "L = 18.470312, acc = 0.955000\n", - "L = 18.456953, acc = 0.955000\n", - "L = 18.443613, acc = 0.955000\n", - "L = 18.430290, acc = 0.955000\n", - "L = 18.416984, acc = 0.955000\n", - "L = 18.403696, acc = 0.955000\n", - "L = 18.390426, acc = 0.955000\n", - "L = 18.377173, acc = 0.955000\n", - "L = 18.363938, acc = 0.955000\n", - "L = 18.350721, acc = 0.955000\n", - "L = 18.337522, acc = 0.955000\n", - "L = 18.324341, acc = 0.955000\n", - "L = 18.311177, acc = 0.955000\n", - "L = 18.298032, acc = 0.955000\n", - "L = 18.284904, acc = 0.955000\n", - "L = 18.271794, acc = 0.955000\n", - "L = 18.258703, acc = 0.955000\n", - "L = 18.245629, acc = 0.955000\n", - "L = 18.232574, acc = 0.955000\n", - "L = 18.219537, acc = 0.955000\n", - "L = 18.206518, acc = 0.955000\n", - "L = 18.193517, acc = 0.955000\n", - "L = 18.180534, acc = 0.955000\n", - "L = 18.167570, acc = 0.955000\n", - "L = 18.154623, acc = 0.955000\n", - "L = 18.141695, acc = 0.955000\n", - "L = 18.128786, acc = 0.955000\n", - "L = 18.115895, acc = 0.955000\n", - "L = 18.103022, acc = 0.955000\n", - "L = 18.090167, acc = 0.955000\n", - "L = 18.077331, acc = 0.955000\n", - "L = 18.064514, acc = 0.955000\n", - "L = 18.051715, acc = 0.955000\n", - "L = 18.038934, acc = 0.955000\n", - "L = 18.026172, acc = 0.955000\n", - "L = 18.013429, acc = 0.955000\n", - "L = 18.000704, acc = 0.955000\n", - "L = 17.987997, acc = 0.955000\n", - "L = 17.975310, acc = 0.955000\n", - "L = 17.962641, acc = 0.955000\n", - "L = 17.949990, acc = 0.955000\n", - "L = 17.937358, acc = 0.955000\n", - "L = 17.924745, acc = 0.955000\n", - "L = 17.912151, acc = 0.955000\n", - "L = 17.899575, acc = 0.955000\n", - "L = 17.887018, acc = 0.955000\n", - "L = 17.874480, acc = 0.955000\n", - "L = 17.861961, acc = 0.955000\n", - "L = 17.849460, acc = 0.955000\n", - "L = 17.836978, acc = 0.955000\n", - "L = 17.824515, acc = 0.955000\n", - "L = 17.812071, acc = 0.955000\n", - "L = 17.799646, acc = 0.955000\n", - "L = 17.787240, acc = 0.955000\n", - "L = 17.774852, acc = 0.955000\n", - "L = 17.762483, acc = 0.955000\n", - "L = 17.750133, acc = 0.955000\n", - "L = 17.737802, acc = 0.955000\n", - "L = 17.725490, acc = 0.955000\n", - "L = 17.713197, acc = 0.955000\n", - "L = 17.700923, acc = 0.955000\n", - "L = 17.688668, acc = 0.955000\n", - "L = 17.676432, acc = 0.955000\n", - "L = 17.664214, acc = 0.955000\n", - "L = 17.652016, acc = 0.955000\n", - "L = 17.639836, acc = 0.955000\n", - "L = 17.627676, acc = 0.955000\n", - "L = 17.615534, acc = 0.955000\n", - "L = 17.603412, acc = 0.955000\n" + "L = 10.948583, acc = 0.970000\n", + "L = 10.944149, acc = 0.970000\n", + "L = 10.939723, acc = 0.970000\n", + "L = 10.935305, acc = 0.970000\n", + "L = 10.930896, acc = 0.965000\n", + "L = 10.926495, acc = 0.965000\n", + "L = 10.922102, acc = 0.965000\n", + "L = 10.917718, acc = 0.965000\n", + "L = 10.913342, acc = 0.965000\n", + "L = 10.908974, acc = 0.965000\n", + "L = 10.904614, acc = 0.965000\n", + "L = 10.900263, acc = 0.965000\n", + "L = 10.895920, acc = 0.965000\n", + "L = 10.891585, acc = 0.965000\n", + "L = 10.887258, acc = 0.965000\n", + "L = 10.882939, acc = 0.965000\n", + "L = 10.878628, acc = 0.965000\n", + "L = 10.874325, acc = 0.965000\n", + "L = 10.870031, acc = 0.965000\n", + "L = 10.865744, acc = 0.965000\n", + "L = 10.861465, acc = 0.965000\n", + "L = 10.857195, acc = 0.965000\n", + "L = 10.852932, acc = 0.965000\n", + "L = 10.848677, acc = 0.965000\n", + "L = 10.844430, acc = 0.965000\n", + "L = 10.840191, acc = 0.965000\n", + "L = 10.835959, acc = 0.965000\n", + "L = 10.831736, acc = 0.965000\n", + "L = 10.827520, acc = 0.965000\n", + "L = 10.823312, acc = 0.965000\n", + "L = 10.819112, acc = 0.965000\n", + "L = 10.814919, acc = 0.965000\n", + "L = 10.810735, acc = 0.965000\n", + "L = 10.806558, acc = 0.965000\n", + "L = 10.802388, acc = 0.965000\n", + "L = 10.798226, acc = 0.965000\n", + "L = 10.794072, acc = 0.965000\n", + "L = 10.789926, acc = 0.965000\n", + "L = 10.785787, acc = 0.965000\n", + "L = 10.781655, acc = 0.965000\n", + "L = 10.777531, acc = 0.965000\n", + "L = 10.773415, acc = 0.965000\n", + "L = 10.769306, acc = 0.965000\n", + "L = 10.765205, acc = 0.965000\n", + "L = 10.761111, acc = 0.965000\n", + "L = 10.757024, acc = 0.965000\n", + "L = 10.752945, acc = 0.965000\n", + "L = 10.748873, acc = 0.965000\n", + "L = 10.744809, acc = 0.965000\n", + "L = 10.740752, acc = 0.965000\n", + "L = 10.736702, acc = 0.965000\n", + "L = 10.732660, acc = 0.965000\n", + "L = 10.728625, acc = 0.965000\n", + "L = 10.724597, acc = 0.965000\n", + "L = 10.720576, acc = 0.965000\n", + "L = 10.716563, acc = 0.965000\n", + "L = 10.712557, acc = 0.965000\n", + "L = 10.708558, acc = 0.965000\n", + "L = 10.704566, acc = 0.965000\n", + "L = 10.700582, acc = 0.965000\n", + "L = 10.696604, acc = 0.965000\n", + "L = 10.692634, acc = 0.965000\n", + "L = 10.688671, acc = 0.965000\n", + "L = 10.684715, acc = 0.965000\n", + "L = 10.680766, acc = 0.965000\n", + "L = 10.676824, acc = 0.965000\n", + "L = 10.672889, acc = 0.965000\n", + "L = 10.668961, acc = 0.965000\n", + "L = 10.665040, acc = 0.965000\n", + "L = 10.661126, acc = 0.965000\n", + "L = 10.657219, acc = 0.965000\n", + "L = 10.653318, acc = 0.965000\n", + "L = 10.649425, acc = 0.965000\n", + "L = 10.645539, acc = 0.965000\n", + "L = 10.641659, acc = 0.965000\n", + "L = 10.637787, acc = 0.965000\n", + "L = 10.633921, acc = 0.965000\n", + "L = 10.630062, acc = 0.965000\n", + "L = 10.626210, acc = 0.965000\n", + "L = 10.622365, acc = 0.965000\n", + "L = 10.618526, acc = 0.965000\n", + "L = 10.614695, acc = 0.965000\n", + "L = 10.610870, acc = 0.965000\n", + "L = 10.607051, acc = 0.965000\n", + "L = 10.603240, acc = 0.965000\n", + "L = 10.599435, acc = 0.965000\n", + "L = 10.595637, acc = 0.965000\n", + "L = 10.591845, acc = 0.965000\n", + "L = 10.588060, acc = 0.965000\n", + "L = 10.584282, acc = 0.965000\n", + "L = 10.580510, acc = 0.965000\n", + "L = 10.576745, acc = 0.965000\n", + "L = 10.572987, acc = 0.965000\n", + "L = 10.569235, acc = 0.965000\n", + "L = 10.565490, acc = 0.965000\n", + "L = 10.561751, acc = 0.965000\n", + "L = 10.558019, acc = 0.965000\n", + "L = 10.554293, acc = 0.965000\n", + "L = 10.550574, acc = 0.965000\n", + "L = 10.546861, acc = 0.965000\n", + "L = 10.543154, acc = 0.965000\n", + "L = 10.539454, acc = 0.965000\n", + "L = 10.535761, acc = 0.965000\n", + "L = 10.532074, acc = 0.965000\n", + "L = 10.528393, acc = 0.965000\n", + "L = 10.524719, acc = 0.965000\n", + "L = 10.521051, acc = 0.965000\n", + "L = 10.517389, acc = 0.965000\n", + "L = 10.513734, acc = 0.965000\n", + "L = 10.510085, acc = 0.965000\n", + "L = 10.506442, acc = 0.965000\n", + "L = 10.502806, acc = 0.965000\n", + "L = 10.499176, acc = 0.965000\n", + "L = 10.495552, acc = 0.965000\n", + "L = 10.491934, acc = 0.965000\n", + "L = 10.488323, acc = 0.965000\n", + "L = 10.484717, acc = 0.965000\n", + "L = 10.481118, acc = 0.965000\n", + "L = 10.477526, acc = 0.965000\n", + "L = 10.473939, acc = 0.965000\n", + "L = 10.470359, acc = 0.965000\n", + "L = 10.466784, acc = 0.965000\n", + "L = 10.463216, acc = 0.965000\n", + "L = 10.459654, acc = 0.965000\n", + "L = 10.456098, acc = 0.965000\n", + "L = 10.452548, acc = 0.965000\n", + "L = 10.449004, acc = 0.965000\n", + "L = 10.445466, acc = 0.965000\n", + "L = 10.441935, acc = 0.965000\n", + "L = 10.438409, acc = 0.965000\n", + "L = 10.434889, acc = 0.965000\n", + "L = 10.431376, acc = 0.965000\n", + "L = 10.427868, acc = 0.965000\n", + "L = 10.424366, acc = 0.965000\n", + "L = 10.420870, acc = 0.965000\n", + "L = 10.417381, acc = 0.965000\n", + "L = 10.413897, acc = 0.965000\n", + "L = 10.410419, acc = 0.965000\n", + "L = 10.406947, acc = 0.965000\n", + "L = 10.403481, acc = 0.965000\n", + "L = 10.400020, acc = 0.965000\n", + "L = 10.396566, acc = 0.965000\n", + "L = 10.393117, acc = 0.965000\n", + "L = 10.389675, acc = 0.965000\n", + "L = 10.386238, acc = 0.965000\n", + "L = 10.382807, acc = 0.965000\n", + "L = 10.379381, acc = 0.965000\n", + "L = 10.375962, acc = 0.965000\n", + "L = 10.372548, acc = 0.965000\n", + "L = 10.369140, acc = 0.965000\n", + "L = 10.365738, acc = 0.965000\n", + "L = 10.362341, acc = 0.965000\n", + "L = 10.358951, acc = 0.965000\n", + "L = 10.355566, acc = 0.965000\n", + "L = 10.352186, acc = 0.965000\n", + "L = 10.348813, acc = 0.965000\n", + "L = 10.345445, acc = 0.965000\n", + "L = 10.342082, acc = 0.965000\n", + "L = 10.338726, acc = 0.965000\n", + "L = 10.335375, acc = 0.965000\n", + "L = 10.332029, acc = 0.965000\n", + "L = 10.328690, acc = 0.965000\n", + "L = 10.325355, acc = 0.965000\n", + "L = 10.322027, acc = 0.965000\n", + "L = 10.318704, acc = 0.965000\n", + "L = 10.315386, acc = 0.965000\n", + "L = 10.312074, acc = 0.965000\n", + "L = 10.308768, acc = 0.965000\n", + "L = 10.305467, acc = 0.965000\n", + "L = 10.302172, acc = 0.965000\n", + "L = 10.298882, acc = 0.965000\n", + "L = 10.295597, acc = 0.965000\n", + "L = 10.292319, acc = 0.965000\n", + "L = 10.289045, acc = 0.965000\n", + "L = 10.285777, acc = 0.965000\n", + "L = 10.282515, acc = 0.965000\n", + "L = 10.279258, acc = 0.965000\n", + "L = 10.276006, acc = 0.965000\n", + "L = 10.272760, acc = 0.965000\n", + "L = 10.269519, acc = 0.965000\n", + "L = 10.266283, acc = 0.965000\n", + "L = 10.263053, acc = 0.965000\n", + "L = 10.259828, acc = 0.965000\n", + "L = 10.256609, acc = 0.965000\n", + "L = 10.253395, acc = 0.965000\n", + "L = 10.250186, acc = 0.965000\n", + "L = 10.246983, acc = 0.965000\n", + "L = 10.243785, acc = 0.965000\n", + "L = 10.240592, acc = 0.965000\n", + "L = 10.237404, acc = 0.965000\n", + "L = 10.234222, acc = 0.965000\n", + "L = 10.231045, acc = 0.965000\n", + "L = 10.227873, acc = 0.965000\n", + "L = 10.224707, acc = 0.965000\n", + "L = 10.221545, acc = 0.965000\n", + "L = 10.218389, acc = 0.965000\n", + "L = 10.215238, acc = 0.965000\n", + "L = 10.212092, acc = 0.965000\n", + "L = 10.208952, acc = 0.965000\n", + "L = 10.205816, acc = 0.965000\n", + "L = 10.202686, acc = 0.965000\n", + "L = 10.199561, acc = 0.965000\n", + "L = 10.196441, acc = 0.965000\n", + "L = 10.193326, acc = 0.965000\n", + "L = 10.190216, acc = 0.965000\n", + "L = 10.187112, acc = 0.965000\n", + "L = 10.184012, acc = 0.965000\n", + "L = 10.180918, acc = 0.965000\n", + "L = 10.177828, acc = 0.965000\n", + "L = 10.174744, acc = 0.965000\n", + "L = 10.171665, acc = 0.965000\n", + "L = 10.168591, acc = 0.965000\n", + "L = 10.165521, acc = 0.965000\n", + "L = 10.162457, acc = 0.965000\n", + "L = 10.159398, acc = 0.965000\n", + "L = 10.156344, acc = 0.965000\n", + "L = 10.153294, acc = 0.965000\n", + "L = 10.150250, acc = 0.965000\n", + "L = 10.147211, acc = 0.965000\n", + "L = 10.144176, acc = 0.965000\n", + "L = 10.141147, acc = 0.965000\n", + "L = 10.138122, acc = 0.965000\n", + "L = 10.135103, acc = 0.965000\n", + "L = 10.132088, acc = 0.965000\n", + "L = 10.129078, acc = 0.965000\n", + "L = 10.126073, acc = 0.965000\n", + "L = 10.123073, acc = 0.965000\n", + "L = 10.120078, acc = 0.965000\n", + "L = 10.117088, acc = 0.965000\n", + "L = 10.114103, acc = 0.965000\n", + "L = 10.111122, acc = 0.965000\n", + "L = 10.108146, acc = 0.965000\n", + "L = 10.105175, acc = 0.965000\n", + "L = 10.102209, acc = 0.965000\n", + "L = 10.099248, acc = 0.965000\n", + "L = 10.096291, acc = 0.965000\n", + "L = 10.093339, acc = 0.965000\n", + "L = 10.090392, acc = 0.965000\n", + "L = 10.087450, acc = 0.965000\n", + "L = 10.084512, acc = 0.965000\n", + "L = 10.081579, acc = 0.965000\n", + "L = 10.078651, acc = 0.965000\n", + "L = 10.075728, acc = 0.965000\n", + "L = 10.072809, acc = 0.965000\n", + "L = 10.069895, acc = 0.965000\n", + "L = 10.066986, acc = 0.965000\n", + "L = 10.064081, acc = 0.965000\n", + "L = 10.061181, acc = 0.965000\n", + "L = 10.058286, acc = 0.965000\n", + "L = 10.055395, acc = 0.965000\n", + "L = 10.052509, acc = 0.965000\n", + "L = 10.049628, acc = 0.965000\n", + "L = 10.046751, acc = 0.965000\n", + "L = 10.043879, acc = 0.965000\n", + "L = 10.041011, acc = 0.965000\n", + "L = 10.038148, acc = 0.965000\n", + "L = 10.035290, acc = 0.965000\n", + "L = 10.032436, acc = 0.965000\n", + "L = 10.029586, acc = 0.965000\n", + "L = 10.026742, acc = 0.965000\n", + "L = 10.023901, acc = 0.965000\n", + "L = 10.021066, acc = 0.965000\n", + "L = 10.018234, acc = 0.965000\n", + "L = 10.015408, acc = 0.965000\n", + "L = 10.012586, acc = 0.965000\n", + "L = 10.009768, acc = 0.965000\n", + "L = 10.006955, acc = 0.965000\n", + "L = 10.004146, acc = 0.965000\n", + "L = 10.001342, acc = 0.965000\n", + "L = 9.998542, acc = 0.965000\n", + "L = 9.995746, acc = 0.965000\n", + "L = 9.992955, acc = 0.965000\n", + "L = 9.990169, acc = 0.965000\n", + "L = 9.987387, acc = 0.965000\n", + "L = 9.984609, acc = 0.965000\n", + "L = 9.981835, acc = 0.965000\n", + "L = 9.979066, acc = 0.965000\n", + "L = 9.976302, acc = 0.965000\n", + "L = 9.973542, acc = 0.965000\n", + "L = 9.970786, acc = 0.965000\n", + "L = 9.968034, acc = 0.965000\n", + "L = 9.965287, acc = 0.965000\n", + "L = 9.962544, acc = 0.965000\n", + "L = 9.959806, acc = 0.965000\n", + "L = 9.957071, acc = 0.965000\n", + "L = 9.954342, acc = 0.965000\n", + "L = 9.951616, acc = 0.965000\n", + "L = 9.948895, acc = 0.965000\n", + "L = 9.946177, acc = 0.965000\n", + "L = 9.943465, acc = 0.970000\n", + "L = 9.940756, acc = 0.970000\n", + "L = 9.938052, acc = 0.970000\n", + "L = 9.935352, acc = 0.970000\n", + "L = 9.932656, acc = 0.970000\n", + "L = 9.929964, acc = 0.970000\n", + "L = 9.927277, acc = 0.970000\n", + "L = 9.924594, acc = 0.970000\n", + "L = 9.921915, acc = 0.970000\n", + "L = 9.919240, acc = 0.970000\n", + "L = 9.916569, acc = 0.970000\n", + "L = 9.913903, acc = 0.970000\n", + "L = 9.911240, acc = 0.970000\n", + "L = 9.908582, acc = 0.970000\n", + "L = 9.905928, acc = 0.970000\n", + "L = 9.903278, acc = 0.970000\n", + "L = 9.900632, acc = 0.970000\n", + "L = 9.897991, acc = 0.970000\n", + "L = 9.895353, acc = 0.970000\n", + "L = 9.892720, acc = 0.970000\n", + "L = 9.890090, acc = 0.970000\n", + "L = 9.887465, acc = 0.970000\n", + "L = 9.884844, acc = 0.970000\n", + "L = 9.882227, acc = 0.970000\n", + "L = 9.879614, acc = 0.970000\n", + "L = 9.877004, acc = 0.970000\n", + "L = 9.874399, acc = 0.970000\n", + "L = 9.871798, acc = 0.970000\n", + "L = 9.869201, acc = 0.970000\n", + "L = 9.866608, acc = 0.970000\n", + "L = 9.864019, acc = 0.970000\n", + "L = 9.861434, acc = 0.970000\n", + "L = 9.858853, acc = 0.970000\n", + "L = 9.856276, acc = 0.970000\n", + "L = 9.853703, acc = 0.970000\n", + "L = 9.851134, acc = 0.970000\n", + "L = 9.848569, acc = 0.970000\n", + "L = 9.846008, acc = 0.970000\n", + "L = 9.843450, acc = 0.970000\n", + "L = 9.840897, acc = 0.970000\n", + "L = 9.838348, acc = 0.970000\n", + "L = 9.835802, acc = 0.970000\n", + "L = 9.833261, acc = 0.970000\n", + "L = 9.830723, acc = 0.970000\n", + "L = 9.828189, acc = 0.970000\n", + "L = 9.825659, acc = 0.970000\n", + "L = 9.823133, acc = 0.970000\n", + "L = 9.820611, acc = 0.970000\n", + "L = 9.818092, acc = 0.970000\n", + "L = 9.815578, acc = 0.970000\n", + "L = 9.813067, acc = 0.970000\n", + "L = 9.810560, acc = 0.970000\n", + "L = 9.808057, acc = 0.970000\n", + "L = 9.805558, acc = 0.970000\n", + "L = 9.803062, acc = 0.970000\n", + "L = 9.800570, acc = 0.970000\n", + "L = 9.798082, acc = 0.970000\n", + "L = 9.795598, acc = 0.970000\n", + "L = 9.793118, acc = 0.970000\n", + "L = 9.790641, acc = 0.970000\n", + "L = 9.788168, acc = 0.970000\n", + "L = 9.785699, acc = 0.970000\n", + "L = 9.783234, acc = 0.970000\n", + "L = 9.780772, acc = 0.970000\n", + "L = 9.778314, acc = 0.970000\n", + "L = 9.775860, acc = 0.970000\n", + "L = 9.773410, acc = 0.970000\n", + "L = 9.770963, acc = 0.970000\n", + "L = 9.768520, acc = 0.970000\n", + "L = 9.766080, acc = 0.970000\n", + "L = 9.763645, acc = 0.970000\n", + "L = 9.761213, acc = 0.970000\n", + "L = 9.758784, acc = 0.970000\n", + "L = 9.756359, acc = 0.970000\n", + "L = 9.753938, acc = 0.970000\n", + "L = 9.751521, acc = 0.970000\n", + "L = 9.749107, acc = 0.970000\n", + "L = 9.746696, acc = 0.970000\n", + "L = 9.744290, acc = 0.970000\n", + "L = 9.741887, acc = 0.970000\n", + "L = 9.739487, acc = 0.970000\n", + "L = 9.737091, acc = 0.970000\n", + "L = 9.734699, acc = 0.970000\n", + "L = 9.732310, acc = 0.970000\n", + "L = 9.729925, acc = 0.970000\n", + "L = 9.727544, acc = 0.970000\n", + "L = 9.725166, acc = 0.970000\n", + "L = 9.722791, acc = 0.970000\n", + "L = 9.720420, acc = 0.970000\n", + "L = 9.718053, acc = 0.970000\n", + "L = 9.715689, acc = 0.970000\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "L = 17.591308, acc = 0.955000\n", - "L = 17.579224, acc = 0.955000\n", - "L = 17.567158, acc = 0.955000\n", - "L = 17.555112, acc = 0.955000\n", - "L = 17.543084, acc = 0.955000\n", - "L = 17.531076, acc = 0.955000\n", - "L = 17.519086, acc = 0.955000\n", - "L = 17.507116, acc = 0.955000\n", - "L = 17.495165, acc = 0.955000\n", - "L = 17.483232, acc = 0.955000\n", - "L = 17.471319, acc = 0.955000\n", - "L = 17.459424, acc = 0.955000\n", - "L = 17.447549, acc = 0.955000\n", - "L = 17.435692, acc = 0.955000\n", - "L = 17.423855, acc = 0.955000\n", - "L = 17.412037, acc = 0.955000\n", - "L = 17.400237, acc = 0.955000\n", - "L = 17.388457, acc = 0.955000\n", - "L = 17.376696, acc = 0.955000\n", - "L = 17.364953, acc = 0.955000\n", - "L = 17.353230, acc = 0.955000\n", - "L = 17.341526, acc = 0.955000\n", - "L = 17.329840, acc = 0.955000\n", - "L = 17.318174, acc = 0.955000\n", - "L = 17.306527, acc = 0.955000\n", - "L = 17.294898, acc = 0.955000\n", - "L = 17.283289, acc = 0.955000\n", - "L = 17.271698, acc = 0.955000\n", - "L = 17.260127, acc = 0.955000\n", - "L = 17.248574, acc = 0.955000\n", - "L = 17.237041, acc = 0.955000\n", - "L = 17.225526, acc = 0.955000\n", - "L = 17.214031, acc = 0.955000\n", - "L = 17.202554, acc = 0.955000\n", - "L = 17.191096, acc = 0.955000\n", - "L = 17.179657, acc = 0.955000\n", - "L = 17.168237, acc = 0.955000\n", - "L = 17.156836, acc = 0.955000\n", - "L = 17.145453, acc = 0.955000\n", - "L = 17.134090, acc = 0.955000\n", - "L = 17.122746, acc = 0.955000\n", - "L = 17.111420, acc = 0.955000\n", - "L = 17.100113, acc = 0.955000\n", - "L = 17.088825, acc = 0.955000\n", - "L = 17.077556, acc = 0.955000\n", - "L = 17.066305, acc = 0.955000\n", - "L = 17.055074, acc = 0.955000\n", - "L = 17.043861, acc = 0.955000\n", - "L = 17.032667, acc = 0.955000\n", - "L = 17.021492, acc = 0.955000\n", - "L = 17.010335, acc = 0.955000\n", - "L = 16.999197, acc = 0.955000\n", - "L = 16.988078, acc = 0.955000\n", - "L = 16.976978, acc = 0.955000\n", - "L = 16.965896, acc = 0.955000\n", - "L = 16.954833, acc = 0.955000\n", - "L = 16.943789, acc = 0.955000\n", - "L = 16.932763, acc = 0.955000\n", - "L = 16.921756, acc = 0.955000\n", - "L = 16.910768, acc = 0.955000\n", - "L = 16.899798, acc = 0.955000\n", - "L = 16.888846, acc = 0.955000\n", - "L = 16.877914, acc = 0.955000\n", - "L = 16.867000, acc = 0.955000\n", - "L = 16.856104, acc = 0.955000\n", - "L = 16.845227, acc = 0.955000\n", - "L = 16.834368, acc = 0.955000\n", - "L = 16.823528, acc = 0.955000\n", - "L = 16.812707, acc = 0.955000\n", - "L = 16.801904, acc = 0.955000\n", - "L = 16.791119, acc = 0.955000\n", - "L = 16.780352, acc = 0.955000\n", - "L = 16.769605, acc = 0.955000\n", - "L = 16.758875, acc = 0.955000\n", - "L = 16.748164, acc = 0.955000\n", - "L = 16.737471, acc = 0.955000\n", - "L = 16.726796, acc = 0.955000\n", - "L = 16.716140, acc = 0.955000\n", - "L = 16.705502, acc = 0.955000\n", - "L = 16.694883, acc = 0.955000\n", - "L = 16.684281, acc = 0.955000\n", - "L = 16.673698, acc = 0.955000\n", - "L = 16.663133, acc = 0.955000\n", - "L = 16.652586, acc = 0.955000\n", - "L = 16.642058, acc = 0.955000\n", - "L = 16.631547, acc = 0.955000\n", - "L = 16.621055, acc = 0.955000\n", - "L = 16.610580, acc = 0.955000\n", - "L = 16.600124, acc = 0.955000\n", - "L = 16.589686, acc = 0.955000\n", - "L = 16.579266, acc = 0.955000\n", - "L = 16.568864, acc = 0.955000\n", - "L = 16.558480, acc = 0.955000\n", - "L = 16.548114, acc = 0.955000\n", - "L = 16.537766, acc = 0.955000\n", - "L = 16.527435, acc = 0.955000\n", - "L = 16.517123, acc = 0.955000\n", - "L = 16.506829, acc = 0.955000\n", - "L = 16.496552, acc = 0.955000\n", - "L = 16.486293, acc = 0.955000\n", - "L = 16.476052, acc = 0.955000\n", - "L = 16.465829, acc = 0.955000\n", - "L = 16.455624, acc = 0.955000\n", - "L = 16.445436, acc = 0.955000\n", - "L = 16.435266, acc = 0.955000\n", - "L = 16.425114, acc = 0.955000\n", - "L = 16.414979, acc = 0.955000\n", - "L = 16.404862, acc = 0.955000\n", - "L = 16.394763, acc = 0.955000\n", - "L = 16.384681, acc = 0.955000\n", - "L = 16.374617, acc = 0.955000\n", - "L = 16.364571, acc = 0.955000\n", - "L = 16.354542, acc = 0.955000\n", - "L = 16.344530, acc = 0.955000\n", - "L = 16.334536, acc = 0.955000\n", - "L = 16.324560, acc = 0.960000\n", - "L = 16.314600, acc = 0.960000\n", - "L = 16.304659, acc = 0.960000\n", - "L = 16.294734, acc = 0.960000\n", - "L = 16.284827, acc = 0.960000\n", - "L = 16.274937, acc = 0.960000\n", - "L = 16.265065, acc = 0.960000\n", - "L = 16.255210, acc = 0.960000\n", - "L = 16.245372, acc = 0.960000\n", - "L = 16.235551, acc = 0.960000\n", - "L = 16.225748, acc = 0.960000\n", - "L = 16.215962, acc = 0.960000\n", - "L = 16.206192, acc = 0.960000\n", - "L = 16.196440, acc = 0.960000\n", - "L = 16.186705, acc = 0.960000\n", - "L = 16.176988, acc = 0.960000\n", - "L = 16.167287, acc = 0.960000\n", - "L = 16.157603, acc = 0.960000\n", - "L = 16.147936, acc = 0.960000\n", - "L = 16.138286, acc = 0.960000\n", - "L = 16.128653, acc = 0.960000\n", - "L = 16.119037, acc = 0.960000\n", - "L = 16.109438, acc = 0.960000\n", - "L = 16.099856, acc = 0.960000\n", - "L = 16.090290, acc = 0.960000\n", - "L = 16.080742, acc = 0.960000\n", - "L = 16.071210, acc = 0.960000\n", - "L = 16.061695, acc = 0.960000\n", - "L = 16.052196, acc = 0.960000\n", - "L = 16.042715, acc = 0.960000\n", - "L = 16.033250, acc = 0.960000\n", - "L = 16.023801, acc = 0.960000\n", - "L = 16.014369, acc = 0.960000\n", - "L = 16.004954, acc = 0.960000\n", - "L = 15.995555, acc = 0.960000\n", - "L = 15.986173, acc = 0.960000\n", - "L = 15.976808, acc = 0.960000\n", - "L = 15.967458, acc = 0.960000\n", - "L = 15.958126, acc = 0.960000\n", - "L = 15.948809, acc = 0.960000\n", - "L = 15.939510, acc = 0.960000\n", - "L = 15.930226, acc = 0.960000\n", - "L = 15.920959, acc = 0.960000\n", - "L = 15.911708, acc = 0.960000\n", - "L = 15.902473, acc = 0.960000\n", - "L = 15.893255, acc = 0.960000\n", - "L = 15.884053, acc = 0.960000\n", - "L = 15.874867, acc = 0.960000\n", - "L = 15.865697, acc = 0.960000\n", - "L = 15.856543, acc = 0.960000\n", - "L = 15.847406, acc = 0.960000\n", - "L = 15.838284, acc = 0.960000\n", - "L = 15.829179, acc = 0.960000\n", - "L = 15.820089, acc = 0.960000\n", - "L = 15.811016, acc = 0.960000\n", - "L = 15.801959, acc = 0.960000\n", - "L = 15.792917, acc = 0.960000\n", - "L = 15.783891, acc = 0.960000\n", - "L = 15.774882, acc = 0.960000\n", - "L = 15.765888, acc = 0.960000\n", - "L = 15.756910, acc = 0.960000\n", - "L = 15.747948, acc = 0.960000\n", - "L = 15.739001, acc = 0.960000\n", - "L = 15.730071, acc = 0.960000\n", - "L = 15.721156, acc = 0.960000\n" + "L = 9.713328, acc = 0.970000\n", + "L = 9.710971, acc = 0.970000\n", + "L = 9.708618, acc = 0.970000\n", + "L = 9.706268, acc = 0.970000\n", + "L = 9.703921, acc = 0.970000\n", + "L = 9.701578, acc = 0.970000\n", + "L = 9.699239, acc = 0.970000\n", + "L = 9.696903, acc = 0.970000\n", + "L = 9.694570, acc = 0.970000\n", + "L = 9.692241, acc = 0.970000\n", + "L = 9.689915, acc = 0.970000\n", + "L = 9.687593, acc = 0.970000\n", + "L = 9.685274, acc = 0.970000\n", + "L = 9.682959, acc = 0.970000\n", + "L = 9.680647, acc = 0.970000\n", + "L = 9.678338, acc = 0.970000\n", + "L = 9.676033, acc = 0.970000\n", + "L = 9.673731, acc = 0.970000\n", + "L = 9.671432, acc = 0.970000\n", + "L = 9.669137, acc = 0.970000\n", + "L = 9.666845, acc = 0.970000\n", + "L = 9.664557, acc = 0.970000\n", + "L = 9.662272, acc = 0.970000\n", + "L = 9.659990, acc = 0.970000\n", + "L = 9.657712, acc = 0.970000\n", + "L = 9.655437, acc = 0.970000\n", + "L = 9.653165, acc = 0.970000\n", + "L = 9.650897, acc = 0.970000\n", + "L = 9.648631, acc = 0.970000\n", + "L = 9.646370, acc = 0.970000\n", + "L = 9.644111, acc = 0.970000\n", + "L = 9.641856, acc = 0.970000\n", + "L = 9.639604, acc = 0.970000\n", + "L = 9.637355, acc = 0.970000\n", + "L = 9.635110, acc = 0.970000\n", + "L = 9.632868, acc = 0.970000\n", + "L = 9.630629, acc = 0.970000\n", + "L = 9.628393, acc = 0.970000\n", + "L = 9.626160, acc = 0.970000\n", + "L = 9.623931, acc = 0.970000\n", + "L = 9.621705, acc = 0.970000\n", + "L = 9.619482, acc = 0.970000\n", + "L = 9.617263, acc = 0.970000\n", + "L = 9.615046, acc = 0.970000\n", + "L = 9.612833, acc = 0.970000\n", + "L = 9.610623, acc = 0.970000\n", + "L = 9.608416, acc = 0.970000\n", + "L = 9.606213, acc = 0.970000\n", + "L = 9.604012, acc = 0.970000\n", + "L = 9.601815, acc = 0.970000\n", + "L = 9.599621, acc = 0.970000\n", + "L = 9.597430, acc = 0.970000\n", + "L = 9.595242, acc = 0.970000\n", + "L = 9.593057, acc = 0.970000\n", + "L = 9.590876, acc = 0.970000\n", + "L = 9.588697, acc = 0.970000\n", + "L = 9.586522, acc = 0.970000\n", + "L = 9.584349, acc = 0.970000\n", + "L = 9.582180, acc = 0.970000\n", + "L = 9.580014, acc = 0.970000\n", + "L = 9.577851, acc = 0.970000\n", + "L = 9.575691, acc = 0.970000\n", + "L = 9.573534, acc = 0.970000\n", + "L = 9.571381, acc = 0.970000\n", + "L = 9.569230, acc = 0.970000\n", + "L = 9.567082, acc = 0.970000\n", + "L = 9.564937, acc = 0.970000\n", + "L = 9.562796, acc = 0.970000\n", + "L = 9.560657, acc = 0.970000\n", + "L = 9.558522, acc = 0.970000\n", + "L = 9.556389, acc = 0.970000\n", + "L = 9.554260, acc = 0.970000\n", + "L = 9.552133, acc = 0.970000\n", + "L = 9.550010, acc = 0.970000\n", + "L = 9.547889, acc = 0.970000\n", + "L = 9.545772, acc = 0.970000\n", + "L = 9.543657, acc = 0.970000\n", + "L = 9.541546, acc = 0.970000\n", + "L = 9.539437, acc = 0.970000\n", + "L = 9.537332, acc = 0.970000\n", + "L = 9.535229, acc = 0.970000\n", + "L = 9.533129, acc = 0.970000\n", + "L = 9.531032, acc = 0.970000\n", + "L = 9.528939, acc = 0.970000\n", + "L = 9.526848, acc = 0.970000\n", + "L = 9.524760, acc = 0.970000\n", + "L = 9.522675, acc = 0.970000\n", + "L = 9.520592, acc = 0.970000\n", + "L = 9.518513, acc = 0.970000\n", + "L = 9.516437, acc = 0.970000\n", + "L = 9.514363, acc = 0.970000\n", + "L = 9.512293, acc = 0.970000\n", + "L = 9.510225, acc = 0.970000\n", + "L = 9.508160, acc = 0.970000\n", + "L = 9.506098, acc = 0.970000\n", + "L = 9.504039, acc = 0.970000\n", + "L = 9.501983, acc = 0.970000\n", + "L = 9.499930, acc = 0.970000\n", + "L = 9.497879, acc = 0.970000\n", + "L = 9.495832, acc = 0.970000\n", + "L = 9.493787, acc = 0.975000\n", + "L = 9.491745, acc = 0.975000\n", + "L = 9.489706, acc = 0.975000\n", + "L = 9.487669, acc = 0.975000\n", + "L = 9.485636, acc = 0.975000\n", + "L = 9.483605, acc = 0.975000\n", + "L = 9.481577, acc = 0.975000\n", + "L = 9.479552, acc = 0.975000\n", + "L = 9.477529, acc = 0.975000\n", + "L = 9.475510, acc = 0.975000\n", + "L = 9.473493, acc = 0.975000\n", + "L = 9.471479, acc = 0.975000\n", + "L = 9.469467, acc = 0.975000\n", + "L = 9.467459, acc = 0.975000\n", + "L = 9.465453, acc = 0.975000\n", + "L = 9.463450, acc = 0.975000\n", + "L = 9.461450, acc = 0.975000\n", + "L = 9.459452, acc = 0.975000\n", + "L = 9.457457, acc = 0.975000\n", + "L = 9.455465, acc = 0.975000\n", + "L = 9.453475, acc = 0.975000\n", + "L = 9.451489, acc = 0.975000\n", + "L = 9.449505, acc = 0.975000\n", + "L = 9.447523, acc = 0.975000\n", + "L = 9.445545, acc = 0.975000\n", + "L = 9.443569, acc = 0.975000\n", + "L = 9.441595, acc = 0.975000\n", + "L = 9.439625, acc = 0.975000\n", + "L = 9.437657, acc = 0.975000\n", + "L = 9.435692, acc = 0.975000\n", + "L = 9.433729, acc = 0.975000\n" ] } ], "source": [ "# use the NN model and training\n", - "nn = NN_Model([2, 6, 2])\n", + "nn = NN_Model([2, 6, 4, 2])\n", "nn.init_weight()\n", "nn.backpropagation(X, t, 2000)\n", "\n" @@ -4758,7 +4778,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { diff --git a/5_nn/softmax_ce.ipynb b/5_nn/softmax_ce.ipynb index d67f147..08a8a3b 100644 --- a/5_nn/softmax_ce.ipynb +++ b/5_nn/softmax_ce.ipynb @@ -126,7 +126,8 @@ "\\frac{\\partial C}{\\partial z_i} & = & (-\\sum_j y_j \\frac{1}{a_j} ) \\frac{\\partial a_j}{\\partial z_i} \\\\\n", " & = & - \\frac{y_i}{a_i} a_i ( 1 - a_i) + \\sum_{j \\ne i} \\frac{y_j}{a_j} a_i a_j \\\\\n", " & = & -y_i + y_i a_i + \\sum_{j \\ne i} y_j a_i \\\\\n", - " & = & -y_i + a_i \\sum_{j} y_j\n", + " & = & -y_i + a_i \\sum_{j} y_j \\\\\n", + " & = & -y_i + a_i\n", "\\end{eqnarray}" ] }, diff --git a/6_pytorch/0_basic/autograd.ipynb b/6_pytorch/0_basic/autograd.ipynb index 7e22996..fec46ec 100644 --- a/6_pytorch/0_basic/autograd.ipynb +++ b/6_pytorch/0_basic/autograd.ipynb @@ -10,10 +10,8 @@ }, { "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": true - }, + "execution_count": 2, + "metadata": {}, "outputs": [], "source": [ "import torch\n", @@ -30,17 +28,14 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Variable containing:\n", - " 19\n", - "[torch.FloatTensor of size 1]\n", - "\n" + "tensor([19.], grad_fn=)\n" ] } ], @@ -71,17 +66,14 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Variable containing:\n", - " 8\n", - "[torch.FloatTensor of size 1]\n", - "\n" + "tensor([8.])\n" ] } ], @@ -100,7 +92,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ diff --git a/6_pytorch/1_NN/linear-regression-gradient-descend.ipynb b/6_pytorch/1_NN/1-linear-regression-gradient-descend.ipynb similarity index 100% rename from 6_pytorch/1_NN/linear-regression-gradient-descend.ipynb rename to 6_pytorch/1_NN/1-linear-regression-gradient-descend.ipynb diff --git a/6_pytorch/1_NN/logistic-regression.ipynb b/6_pytorch/1_NN/2-logistic-regression.ipynb similarity index 63% rename from 6_pytorch/1_NN/logistic-regression.ipynb rename to 6_pytorch/1_NN/2-logistic-regression.ipynb index 1e5dbb5..f865ed9 100644 --- a/6_pytorch/1_NN/logistic-regression.ipynb +++ b/6_pytorch/1_NN/2-logistic-regression.ipynb @@ -113,7 +113,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -162,7 +162,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 3, @@ -215,7 +215,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -237,7 +237,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -255,16 +255,16 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[]" + "[]" ] }, - "execution_count": 19, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, @@ -292,7 +292,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -320,7 +320,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -341,22 +341,22 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 28, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -368,7 +368,7 @@ } ], "source": [ - "# 画出参数更新之前的结果\n", + "# 画出参数更新之前的结果 (FIXME: the plot is wrong)\n", "w0 = w[0].data[0]\n", "w1 = w[1].data[0]\n", "b0 = b.data[0]\n", @@ -395,7 +395,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -416,14 +416,14 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.7911, grad_fn=)\n" + "tensor(0.8986, grad_fn=)\n" ] } ], @@ -442,27 +442,174 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.7801, grad_fn=)\n" + "tensor(0.7402, grad_fn=)\n", + "tensor(0.7348, grad_fn=)\n", + "tensor(0.7299, grad_fn=)\n", + "tensor(0.7254, grad_fn=)\n", + "tensor(0.7212, grad_fn=)\n", + "tensor(0.7175, grad_fn=)\n", + "tensor(0.7140, grad_fn=)\n", + "tensor(0.7108, grad_fn=)\n", + "tensor(0.7079, grad_fn=)\n", + "tensor(0.7052, grad_fn=)\n", + "tensor(0.7028, grad_fn=)\n", + "tensor(0.7005, grad_fn=)\n", + "tensor(0.6984, grad_fn=)\n", + "tensor(0.6965, grad_fn=)\n", + "tensor(0.6947, grad_fn=)\n", + "tensor(0.6931, grad_fn=)\n", + "tensor(0.6916, grad_fn=)\n", + "tensor(0.6901, grad_fn=)\n", + "tensor(0.6888, grad_fn=)\n", + "tensor(0.6876, grad_fn=)\n", + "tensor(0.6865, grad_fn=)\n", + "tensor(0.6855, grad_fn=)\n", + "tensor(0.6845, grad_fn=)\n", + "tensor(0.6836, grad_fn=)\n", + "tensor(0.6827, grad_fn=)\n", + "tensor(0.6819, grad_fn=)\n", + "tensor(0.6811, grad_fn=)\n", + "tensor(0.6804, grad_fn=)\n", + "tensor(0.6797, grad_fn=)\n", + "tensor(0.6791, grad_fn=)\n", + "tensor(0.6785, grad_fn=)\n", + "tensor(0.6779, grad_fn=)\n", + "tensor(0.6773, grad_fn=)\n", + "tensor(0.6768, grad_fn=)\n", + "tensor(0.6763, grad_fn=)\n", + "tensor(0.6758, grad_fn=)\n", + "tensor(0.6753, grad_fn=)\n", + "tensor(0.6749, grad_fn=)\n", + "tensor(0.6745, grad_fn=)\n", + "tensor(0.6740, grad_fn=)\n", + "tensor(0.6736, grad_fn=)\n", + "tensor(0.6732, grad_fn=)\n", + "tensor(0.6728, grad_fn=)\n", + "tensor(0.6725, grad_fn=)\n", + "tensor(0.6721, grad_fn=)\n", + "tensor(0.6718, grad_fn=)\n", + "tensor(0.6714, grad_fn=)\n", + "tensor(0.6711, grad_fn=)\n", + "tensor(0.6707, grad_fn=)\n", + "tensor(0.6704, grad_fn=)\n", + "tensor(0.6701, grad_fn=)\n", + "tensor(0.6698, grad_fn=)\n", + "tensor(0.6694, grad_fn=)\n", + "tensor(0.6691, grad_fn=)\n", + "tensor(0.6688, grad_fn=)\n", + "tensor(0.6685, grad_fn=)\n", + "tensor(0.6682, grad_fn=)\n", + "tensor(0.6679, grad_fn=)\n", + "tensor(0.6676, grad_fn=)\n", + "tensor(0.6673, grad_fn=)\n", + "tensor(0.6671, grad_fn=)\n", + "tensor(0.6668, grad_fn=)\n", + "tensor(0.6665, grad_fn=)\n", + "tensor(0.6662, grad_fn=)\n", + "tensor(0.6659, grad_fn=)\n", + "tensor(0.6656, grad_fn=)\n", + "tensor(0.6654, grad_fn=)\n", + "tensor(0.6651, grad_fn=)\n", + "tensor(0.6648, grad_fn=)\n", + "tensor(0.6645, grad_fn=)\n", + "tensor(0.6643, grad_fn=)\n", + "tensor(0.6640, grad_fn=)\n", + "tensor(0.6637, grad_fn=)\n", + "tensor(0.6634, grad_fn=)\n", + "tensor(0.6632, grad_fn=)\n", + "tensor(0.6629, grad_fn=)\n", + "tensor(0.6626, grad_fn=)\n", + "tensor(0.6624, grad_fn=)\n", + "tensor(0.6621, grad_fn=)\n", + "tensor(0.6618, grad_fn=)\n", + "tensor(0.6616, grad_fn=)\n", + "tensor(0.6613, grad_fn=)\n", + "tensor(0.6610, grad_fn=)\n", + "tensor(0.6608, grad_fn=)\n", + "tensor(0.6605, grad_fn=)\n", + "tensor(0.6603, grad_fn=)\n", + "tensor(0.6600, grad_fn=)\n", + "tensor(0.6597, grad_fn=)\n", + "tensor(0.6595, grad_fn=)\n", + "tensor(0.6592, grad_fn=)\n", + "tensor(0.6589, grad_fn=)\n", + "tensor(0.6587, grad_fn=)\n", + "tensor(0.6584, grad_fn=)\n", + "tensor(0.6582, grad_fn=)\n", + "tensor(0.6579, grad_fn=)\n", + "tensor(0.6576, grad_fn=)\n", + "tensor(0.6574, grad_fn=)\n", + "tensor(0.6571, grad_fn=)\n", + "tensor(0.6569, grad_fn=)\n", + "tensor(0.6566, grad_fn=)\n" ] } ], "source": [ "# 自动求导并更新参数\n", - "loss.backward()\n", - "w.data = w.data - 0.1 * w.grad.data\n", - "b.data = b.data - 0.1 * b.grad.data\n", + "for i in range(10):\n", + " w.grad.data.zero_()\n", + " b.grad.data.zero_()\n", + " \n", + " # calc grad\n", + " loss.backward()\n", + " w.data = w.data - 0.1 * w.grad.data\n", + " b.data = b.data - 0.1 * b.grad.data\n", "\n", - "# 算出一次更新之后的loss\n", - "y_pred = logistic_regression(x_data)\n", - "loss = binary_loss(y_pred, y_data)\n", - "print(loss)" + " # 算出一次更新之后的loss\n", + " y_pred = logistic_regression(x_data)\n", + " loss = binary_loss(y_pred, y_data)\n", + " print(loss)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAD8CAYAAAB+UHOxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJzt3Xt8VPWd//HXNyEh3BQIyD0JICqogNy8glwTSv2hVv2pgD+pVapb225/24fVRW23LRV39/fT1bZbqXW9JFq3aFvWtSYBQQFFDRYEES0JF0EEDF64SiDf/WMmx0lIJjOZM3POzHk/H495MDM5nPOZM2e+n/O9nO8x1lpERCR4srwOQEREvKEEICISUEoAIiIBpQQgIhJQSgAiIgGlBCAiElBKACIiAaUEICISUEoAIiIB1c7rAKLp0aOHLSoq8joMEZG0sXbt2k+stT1jWdbXCaCoqIiqqiqvwxARSRvGmO2xLqsmIBGRgFICEBEJKCUAEZGAUgIQEQkoJQARkYByJQEYYx4zxuw1xmxs4e/GGPOQMWaLMeYdY8woN7YbGGVlUFQEWVmhf8vKvI5IRDKAWzWAx4HpUf7+NWBI+DEP+HeXtpv5yspg3jzYvh2sDf07b57rSUA5Jj3pe5NEuJIArLWvAvujLHI58KQNWQN0Ncb0cWPbGW/+fDh8uPF7hw+H3ndJinJMxooshHv0CD1SUSDH+70lO1koGaUha60rD6AI2NjC314ALol4vQwY08Ky84AqoKqgoMAGTmmptYWF1hoT+jf02z75YYxrm2xpM4WFrm0iY5WWWtuxY8tfU8eOoWWSIZ7vrbk43Ywt2euX2AFVNtZyO9YFW12RSwkg8jF69Ogk7SKfau5XZEzSS+eWNuFijslY0XJ0shNpS99bwzYbziEazimSGZtOIvwjngSQqlFAu4ABEa/7h9+TSM0191gLxjR+r2NHWLDAtc0WFMT3vnxlxw53lmmLlr4fY05uFtrewuQAbsXW0noa3lfzkD+lKgEsAf5PeDTQBcDn1trdKdp2+mjpV2QtFBaGftmFhbBoEcye7dpmFywI5ZRILueYjBVLkkxWIm3uezMmdLhEOnwYsrPjjy2eQjvaSURZGXzzm42T0je/qSTgC7FWFaI9gGeA3UAdsBP4FnArcGv47wb4FVANbCCG5h8bxCYgD+vRTbse0rntNpWfxcs+gIbtx9Jl1BBLLLGVllqbnx/fZ4nWB9DcuiD0vh+l+28BL/oAkvEIXAIIQE9asn9cXuzCyM+Unx96eFV4RDuHiGXft5bQItfV3P9tbv3R1uW1pjHfdlv6/wSVANKZD08/3AopFYVzKipRPvyKHInu41g6teNdp18TgBdjLlJx7CgBiGvcLLRTUTgne0STHypprRUiiRQysRT+8X5vfm0CijXZuXX8pOrYUQIQ17hZaKdiuGmmD3dMZiFSWhp9aGlbv7fSUmtzcxv/39xc72tO8XxWN77fVB078SQATQYnUbU2vC8eqRhumuwRTW7uj7ZI5oXh8+eHiqRYxfq9zZ4Njz3WeCDbY4+5OpCtTaINo43k1vHj9bHTHCUAicrNQjsVw01nzw6Nkk3WqNlE90ei4+GTWYjEs454v7fZs2HbNqivD/3rdeEPLR+Pt96anOPHl9fbxFpV8OKhJiDvld620nY0h1xrcvBzB2osEmmCcaP5JpnNCLG2iafj99YSr4cMqw9ACSA+HhyxpVxvC9lqDSdsodluS29bmbxtpoG2fgVuFN5tKURijdfraxqCQKOAlADazs1TiFiORK97PDNMtLPqeMRTiMR7yHhxTUM61gr9HLMSQCYqLbU2O9udAjnWUsEHs8R5/UNzc/stfX3Z2W5FezIvcngyE5Qf+D1mJYBM01rdPN4COdZSweMagNc/NLe371YNIB6pzuHRLq5qLhmkYyXT7zErAWSa1nrnsrPjO0WNtVTwuAT2+ocWz7QKt93mzxa1VG8zlvmIIveNDyqZcUtmzG7UOJUAMk08V6zEUkBH+5U2Peo8bIPxunCItttbmy+nua/Bq3mKkrHNlg6LWA7VyOTjdZJvi2TF7NZ3pQSQaeK5Zj2WIzFNhnskOrFZsrbfUlu+X/NpPKOA2jpaqKHgj2XfRCbwVCZFv89p5VZiUQLINC0dcbH8wqKts7WagMda+tipmrEx3t3u83waVTyFWrznI60dWqlIim4X2m2NuaX/V1qa2M85khJAJmruyHHjlMGtdpYk/YqT9bGTsf14Cr1Etp8M8ezTWJp5GmoCTZf1Khn6oakpnhMa1QCUAFrnxlVBLU3VmOyrkxLQ1pyVzCaA1h5t6bdI5W6NZ5/GkgAb/p/Xw3gbREtaicQUz+drS5Oi+gAkukQHXefknDxVo5/mJ3Bpc8luAmgYBeRmDSCVuzWebcWSAH3QgthItO8mkWsp4zmm4hnLkUhyUgKQ5rX0K8jPT+w0LcXDdUpLre2YW9f4h5db16azL7cLKjcTTSp3a7xxRzaF+aWZJ5rWklYqEnS8NYC2HptKANK8ZJUoqW5gLS21pTlzv5qfiK22lFmh0/AWpLowTbTZo9TFC7/j2aabHZt+42ZHq7XxH1PR+gDcvF+CEkCmSvSX5vcBzJHri/Y5W/ocxrS4zdY+up8KsWhnq348u04nbv4E2toU2fQ4Ky0NtcRGriMnRwlACSCSG4VsMnsVUznIOlpjagu/vmirTXEfdquiNRWo8E+Mm9+1W+ty+7xMCSATuXWUJPtUNxW1lGg9elHq8i2F5ochgpG8vgLaL6KNmU/kEHPzJ+DGutz+vpUAMlE6lApunBLF8jlLS1terg2ltt92rd8Skhe8vggwlbysAeiWkOnCl/eTa8KNG9bG8jlnzw7dt8+lm7f6bdem4taZftfSobRoUfLuiewVT7/vWDOFFw/VACL4raG6OW6cSsfzOWOpf8ewjOu71oV2AZc+WtqKd8y8nyrCbeHmd4magDKU33/xidZlIweXN4yBTHaHcpNNJ7xrU5So0+F8IBGpGjOfiVKeAIDpwPvAFuDOZv4+F9gHrAs/bo5lvRmVAPxeeLshkVKpuf+bm5vYPQk9uD4hVSVUpvcTBKkPwG0pTQBANlANDAJygfXAsCbLzAV+Ge+6MyYBZPrpWqS2JrpYJ5iJcrHXSby+lDaJ2/Rbx7XbSksbT1OVn+/eKKBMl+oEcCFQHvH6LuCuJssEOwEk43Qt034F8TT6xlor8MNkOm5uM+I7L8z+MKkfLdrhlYqRxEE5X0qGVCeAq4FHI17f0LSwDyeA3cA7wGJgQJT1zQOqgKqCgoKk7qiUcft0LRN/IbHUAJp7tDZhjdfTabq1zSafpZTrbUcOJuWjeX3RXCrytt+uBXCTHxNAPtA+/PzbwMuxrDvjawD5+bGvI/Ioy8SesNaaUNp6dp2qX2eyL99tZv2lXG8Lsz90/aNFK4Ddmv4gmmQ3b/nxamA3+a4JqMny2cDnsaw7YxJAaenJsz1B8xN+tDRZSCyFY7o3AEd+9pbuU+CXz930e0pW72TkyKgUffZoBbBbE6A12i1N9mVh/oGouT7RXRptd8a7fj92xqc6AbQDaoCBEZ3AZzdZpk/E8yuBNbGsO2MSgLWx3XilpV9LrIVhOtcAmnPbbfHfZTwVog1RcWs+pIaSpbXPn4TP3lIB3JYaQKvLN7MvS3PmnjTdt5t5tbVdGs/6/dgZ78Uw0BnAB+HRQPPD7/0UmBl+fh/wbjg5LAfOimW9GZUAYjlS2toO7savwq+iDa306nMn87QvnqawJN0IuTRn7sn9C+H7LcTb5NHqYd/CviztdEurZ+ptFcvPLNb1B74GkMxHRiWAWI6UeC9/zM72T89TMrVUKEaODWzLOtt6tp7M075YTwKS9Z2Ht1/K9Y3vt5D/XWeReHZdq4d9K/dqTMaujiXHNrv+Zj54swkxty60vzz6bSoB+FEsp07ROov91tOUam4P20hkfybztM/rJi+XS9xWd3Urp/nJ2tWtda2ctP4oH6TRoZl/wJbmzPX0t6oE4FetFWKtjb/z01izdBT3rz7KepKVkFurASS7MElCiRv10C0tbfmzGpP0UTYxrz/W/eKDNiElgHSmgj452lzvj7K+ZHxPzcXZcFaeiuPBi3GNrQyQSMWFZ62uP9aakQ96hZUARJpys+cv2bw+CUj19v04mL4p1QCUACSNuTn2T9znddJrTaxJygfJLJ4EoBvCSDBEu7tLYWHoTiOzZ6cuHr8rK4OiIsjKCv1bVpbc7c2eDdu2QX196F+/fRezZ4eOkcLC0I2IWjpmYl3OJ0woYfjTmDFjbFVVlddhSCYoK4N58xrfTqpjR1//OD2jfZXWjDFrrbVjYllWNQAJhjQ7M/OUG7f2lLSgGoCINJaVFWq9bsqYUBON+JpqACLSdi31l0TrR5G0pAQgIo0tWBBq84/UsWPofckoSgAi0pj6SwKjndcBiIgPzZ6tAj8AVAMQEQkoJQARkYBSAhARCSglABGRgFICEBEJKCUAEZGAUgIQEQkoJQARkYBSAhARCSglABGRgFICEBEJKCUAEZGAUgIQEQkoVxKAMWa6MeZ9Y8wWY8ydzfy9vTHm2fDf3zDGFLmxXRERabuEE4AxJhv4FfA1YBhwvTFmWJPFvgV8aq09HXgAuD/R7YqISGLcqAGMA7ZYa2ustceA3wOXN1nmcuCJ8PPFwBRjjHFh2yIi0kZuJIB+wIcRr3eG32t2GWvtceBzIL+5lRlj5hljqowxVfv27XMhPBERaY7vOoGttYustWOstWN69uzpdTgiIhnLjQSwCxgQ8bp/+L1mlzHGtANOBWpd2LaIiLSRGwngLWCIMWagMSYXuA5Y0mSZJcCN4edXAy9ba60L2xYRkTZK+Kbw1trjxpjbgXIgG3jMWvuuMeanQJW1dgnwO+ApY8wWYD+hJCEiIh5KOAEAWGtfBF5s8t69Ec+PAte4sS0REXGH7zqBRUQkNZQAREQCSglARCSglABERAJKCUBEJKCUAEREAkoJQEQkoJQAREQCSglARCSglABERAJKCUBEJKCUAEREAkoJQEQkoJQAREQCSglARCSglABERAJKCUBEJKCUAEREAkoJQEQkoJQAREQCSglARCSglABERAJKCUBEJKCUAEREAkoJQEQkoJQAREQCKqEEYIzpboypNMb8LfxvtxaWO2GMWRd+LElkmyIi4o5EawB3AsustUOAZeHXzTlirR0ZfsxMcJsiIuKCRBPA5cAT4edPAFckuD4REUmRRBNAL2vt7vDzj4FeLSyXZ4ypMsasMcYoSYiI+EC71hYwxiwFejfzp/mRL6y11hhjW1hNobV2lzFmEPCyMWaDtba6he3NA+YBFBQUtBaeiIi0UasJwFo7taW/GWP2GGP6WGt3G2P6AHtbWMeu8L81xpgVwHlAswnAWrsIWAQwZsyYlhKKiIgkKNEmoCXAjeHnNwJ/brqAMaabMaZ9+HkP4GJgU4LbFRGRBCWaABYC04wxfwOmhl9jjBljjHk0vMxQoMoYsx5YDiy01ioBiIh4rNUmoGistbXAlGberwJuDj9/DTg3ke2IiIj7dCWwiEhAKQGIiASUEoCISEBlZAIoe6eMt3e/Tb2t9zoUERHfSqgT2I+O1B3hpiU3cezEMXp27Mm0wdMoHlRM8eBi+nTp43V4IiK+kXEJoENOB7Z9fxtLa5ZSUVNBRXUFT294GoBzTzuX4sGhZDC+YDwdcjp4HK2IiHeMtf692HbMmDG2qqoqoXXU23rWf7yeyppKKqorWLljJcdOHCOvXR4TCidQPKiYktNLOLvn2RhjXIpcRMQbxpi11toxMS2b6QmgqcN1h3ll2ytUVFdQUVPBpn2ha9L6dukbqh0MKmbqoKn07NTT1e2KiKSCEkAcPvz8QyprKimvLmdpzVL2H9kPwKg+o5zawUUDLiI3OzepcYiIuEEJoI1O1J9g7e61VFaHEsLrO1/neP1xOuV0YmLRREoGl1A8uJgz8s9Qc5GI+JISgEsOfHmA5duWU1FdQXl1OVv2bwGg4NQCp3YweeBkunfo7lmMIiKRlACSpObTGqd2sGzrMr748guyTBZj+451Rhed3+98crJzvA5VRAJKCSAFjtcf542db1BRXUFlTSVv7HqDelvPKe1PYfLAyU4NYVC3QV6HKiIBogTggU+PfMrLW1+mvLqc8upydny+A4DB3QZTPLiYksElTBo4iVPan+JxpCKSyZQAPGat5W/7/0b5lnIqaipYvnU5h+oOkW2yuXDAhU5n8ug+o8nOyvY6XBHJIEoAPnPsxDFe//B1yqvLqaiuYO3utQB079CdqYOmOlNVDDh1gMeRiki6UwLwuX2H9jWaquKjAx8BcFaPs5zawaWFl9Ipt5PHkYpIulECSCPWWjbt2+TUDl7d/ipHjh8hNzuXSwoucWoHI3qPIMtk5OStIuIiJYA0dvT4UVbtWEX5llBn8oa9GwA4rdNpTBs0jeLBxUwbNE0zm4pIs5QAMsjuA7tZWrOU8upyKmsq2XtoLwDDew13agfjC8eT1y7P40hFxA+UADJUva3nnT3vOKOLVu1Y5cxsemnhpc7FaJrZVCS4lAAC4tCxQ7yy/RXKt4RqB+998h6gmU1FgkwJIKAiZzatrK7k06OfYjChmU3DF6NdOOBCzWwqksGUAMSZ2bSiOjTU9LUPX+OEPUGnnE5MGjjJ6T/QzKYimUUJQE7yxZdfsGLbCmd0UfWn1QAUnlro1A4mD5xMtw7dPI5URBKhBCCtqvm0xqkdRM5sOq7fOKd2cH7/82mXlXG3jRbJaClLAMaYa4CfAEOBcdbaZktrY8x04N+AbOBRa+3CWNavBJAadSfqeHPXm85tMt/c9aYzs+mUgVOc0UWa2VTE/1KZAIYC9cAjwA+bSwDGmGzgA2AasBN4C7jeWruptfUrAXhj/5H9oZlNw8NNG2Y2Pb376U7tQDObivhTPAkgofq9tfa98AajLTYO2GKtrQkv+3vgcqDVBCDe6N6hO1cPu5qrh12NtZYPaj9w7or2xPon+HXVr2mX1Y4L+381s+moPqM0s6lImklFA28/4MOI1zuB81OwXXGBMYYze5zJmT3O5Lvnf5cvj3/J6ztfdxLC3cvv5u7ldzszmzYkhP6n9Pc6dBFpRasJwBizFOjdzJ/mW2v/7HZAxph5wDyAgoICt1cvCWrfrj0TiyYysWgiv5jyi0Yzm5ZvKec/3/1PAIb2GOokgwmFEzSzqYgPuTIKyBizgpb7AC4EfmKtLQm/vgvAWntfa+tVH0B6sdayce9G52K0V7e/ytHjR8nNzmV8wXinM3l4r+Ga2VQkSVI+DLSVBNCOUCfwFGAXoU7gWdbad1tbrxJAejtSd4RVO1Y5zUXNzWxaPLiY3p2bq2CKSFukchTQlcDDQE/gM2CdtbbEGNOX0HDPGeHlZgAPEhoG+pi1dkEs61cCyCy7D+ymsqbSuf5g3+F9QGhm04bmoksKLtHMpiIJ0IVg4nv1tp71H693agerdqyirr7Omdm0ISEM6zlMU1WIxEEJQNJO5Mym5dXlvF/7PgD9uvRzmoqmDppKj449PI5UxN+UACTt7fh8h9NUtLRmaaOZTRtqB5rZVORkSgCSUU7Un6DqoypnqorXP3ydE/YEnXM7M6loklNDGNJ9iJqLJPCUACSjfX70c5ZvW+7cCKdhZtOirkXOVBWa2VSCSglAAqV6f7Vz7cGymmUcOHaALJPF+f3Od2oH4/qN08ymEghKABJYdSfqeGPXG07t4M1db2KxnNr+VKYMmuLUEAZ2G+h1qCJJoQQgErb/yH6W1Sxzhpt++EVoWqoh3Yc4tYNJRZPo0r6Lx5GKuCOjE0BdXR07d+7k6NGjHkUVHHl5efTv35+cnByvQ3GFtZb3a993ksGKbSs4XHeYdlntuGjARRQPKqbk9BJG9RmlqSokbWV0Ati6dStdunQhPz9fIz6SyFpLbW0tBw4cYODAzGwu+fL4l7z24WtOQvjrx38FIL9DfqOZTfud0s/jSEVil9EJ4L333uOss85S4Z8C1lo2b97M0KFDvQ4lJfYe2hua2TR8/cHug7sBOLvn2U5z0YTCCXTM6ehxpCItS9kNYbyiwj81grafT+t0GrPOncWsc2dhreXdfe86d0X796p/54E1DzSa2bRkcAnn9jpXzUWStnTkJtm2bdt4+umnndfr1q3jxRdfdF4vWbKEhQtjukVyq+bOncvixYsBuPnmm9m0STddaytjDOecdg7/cNE/UD6nnP137Kd8TjnfHfdd9h7ay4+W/oiRj4yk7//ryw1/vIGn1j/Fxwc/9jpskbikZQ0gnTQkgFmzZgGhBFBVVcWMGTMAmDlzJjNnznR9u48++qjr6wyyDjkdnGYggI8OfERFdQWVNZW8tOUlSt8pBWBErxFO7eDigos1s6n4mmoAbfDkk08yfPhwRowYwQ033AA0PvsG6Ny5MwB33nknK1euZOTIkdx///3ce++9PPvss4wcOZJnn32Wxx9/nNtvv91Zx/e+9z0uuugiBg0a5Kyvvr6ev/u7v+Oss85i2rRpzJgxo9G2mjNx4kQa+k86d+7M/PnzGTFiBBdccAF79uwBYN++fVx11VWMHTuWsWPHsnr1and3VAbr26Uvc0fOpewbZez54R7WzlvLLyb/gu4duvPgmgeZ+tRUut/fna+VfY0H1zzIpn2b8HN/mwRTWtcA/v6lv2fdx+tcXefI3iN5cPqDLf793Xff5ec//zmvvfYaPXr0YP/+/VHXt3DhQv71X/+VF154AYBevXpRVVXFL3/5SwAef/zxRsvv3r2bVatWsXnzZmbOnMnVV1/N888/z7Zt29i0aRN79+5l6NCh3HTTTTF/pkOHDnHBBRewYMEC7rjjDn77299y99138/3vf58f/OAHXHLJJezYsYOSkhLee++9mNcrIVkmi1F9RjGqzyjuGn8XB48d5JVtr1BeHboY7QflPwC+mtm0ZHAJUwZN0cym4rm0TgBeePnll7nmmmvo0SP04+3evbur67/iiivIyspi2LBhzpn6qlWruOaaa8jKyqJ3795MmjQprnXm5uZy2WWXATB69GgqKysBWLp0aaN+gi+++IKDBw86tRdpm865nfn6GV/n62d8HYDtn213pqr40+Y/8R/r/gODYXTf0c5Q0wv6X6CZTSXl0joBRDtTT7V27dpRX18PhJpsjh071qb1tG/f3nnuVpNBTk6OM6InOzub48ePA6E416xZQ16e2qmTqbBrITePupmbR93szGxaXl1ORXUFC1ctZMHKBXTO7czkgZOdqSpO73564EZhSeqpDyBOkydP5g9/+AO1tbUAThNQUVERa9euBUIje+rq6gDo0qULBw4ccP5/09exuPjii3nuueeor69nz549rFixwoVPAsXFxTz88MPO63Xr3G1Ok5NlZ2Vzfv/zuffSe1l10ypq76jlj9f+kTnnzmHDng3c/pfbOeOXZzDooUF8+7++zfPvPc9nRz/zOmzJUGldA/DC2Wefzfz587n00kvJzs7mvPPO4/HHH+eWW27h8ssvZ8SIEUyfPp1OnToBMHz4cLKz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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# 画出参数更新之前的结果\n", + "w0 = w[0].data[0]\n", + "w1 = w[1].data[0]\n", + "b0 = b.data[0]\n", + "\n", + "plot_x = np.arange(0.2, 1, 0.01)\n", + "plot_y = (-w0.numpy() * plot_x - b0.numpy()) / w1.numpy()\n", + "\n", + "plt.plot(plot_x, plot_y, 'g', label='cutting line')\n", + "plt.plot(plot_x0, plot_y0, 'ro', label='x_0')\n", + "plt.plot(plot_x1, plot_y1, 'bo', label='x_1')\n", + "plt.legend(loc='best')" ] }, { diff --git a/6_pytorch/1_NN/nn-sequential-module.ipynb b/6_pytorch/1_NN/3-nn-sequential-module.ipynb similarity index 100% rename from 6_pytorch/1_NN/nn-sequential-module.ipynb rename to 6_pytorch/1_NN/3-nn-sequential-module.ipynb diff --git a/6_pytorch/1_NN/deep-nn.ipynb b/6_pytorch/1_NN/4-deep-nn.ipynb similarity index 100% rename from 6_pytorch/1_NN/deep-nn.ipynb rename to 6_pytorch/1_NN/4-deep-nn.ipynb diff --git a/6_pytorch/1_NN/param_initialize.ipynb b/6_pytorch/1_NN/5-param_initialize.ipynb similarity index 100% rename from 6_pytorch/1_NN/param_initialize.ipynb rename to 6_pytorch/1_NN/5-param_initialize.ipynb diff --git a/6_pytorch/1_NN/nn_summary.ipynb b/6_pytorch/1_NN/6-nn_summary.ipynb similarity index 100% rename from 6_pytorch/1_NN/nn_summary.ipynb rename to 6_pytorch/1_NN/6-nn_summary.ipynb diff --git a/6_pytorch/1_NN/bp.ipynb b/6_pytorch/1_NN/bp.ipynb deleted file mode 100644 index c1b811b..0000000 --- a/6_pytorch/1_NN/bp.ipynb +++ /dev/null @@ -1,128 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 反向传播算法\n", - "\n", - "前面我们介绍了三个模型,整个处理的基本流程都是定义模型,读入数据,给出损失函数$f$,通过梯度下降法更新参数。PyTorch 提供了非常简单的自动求导帮助我们求解导数,对于比较简单的模型,我们也能手动求出参数的梯度,但是对于非常复杂的模型,比如一个 100 层的网络,我们如何能够有效地手动求出这个梯度呢?这里就需要引入反向传播算法,自动求导本质是就是一个反向传播算法。\n", - "\n", - "反向传播算法是一个有效地求解梯度的算法,本质上其实就是一个链式求导法则的应用,然而这个如此简单而且显而易见的方法却是在 Roseblatt 提出感知机算法后将近 30 年才被发明和普及的,对此 Bengio 这样说道:“很多看似显而易见的想法只有在事后才变得的显而易见。”\n", - "\n", - "下面我们就来详细将一讲什么是反向传播算法。" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 链式法则\n", - "\n", - "首先来简单地介绍一下链式法则,考虑一个简单的函数,比如\n", - "$$f(x, y, z) = (x + y)z$$\n", - "\n", - "我们当然可以直接求出这个函数的微分,但是这里我们要使用链式法则,令\n", - "$$q=x+y$$\n", - "\n", - "那么\n", - "\n", - "$$f = qz$$\n", - "\n", - "对于这两个式子,我们可以分别求出他们的微分 \n", - "\n", - "$$\\frac{\\partial f}{\\partial q} = z, \\frac{\\partial f}{\\partial z}=q$$\n", - "\n", - "同时$q$是$x$和$y$的求和,所以我们能够得到\n", - "\n", - "$$\\frac{\\partial q}{x} = 1, \\frac{\\partial q}{y} = 1$$\n", - "\n", - "我们关心的问题是\n", - "\n", - "$$\\frac{\\partial f}{\\partial x}, \\frac{\\partial f}{\\partial y}, \\frac{\\partial f}{\\partial z}$$\n", - "\n", - "链式法则告诉我们如何来计算出他们的值\n", - "\n", - "$$\n", - "\\frac{\\partial f}{\\partial x} = \\frac{\\partial f}{\\partial q}\\frac{\\partial q}{\\partial x}\n", - "$$\n", - "$$\n", - "\\frac{\\partial f}{\\partial y} = \\frac{\\partial f}{\\partial q}\\frac{\\partial q}{\\partial y}\n", - "$$\n", - "$$\n", - "\\frac{\\partial f}{\\partial z} = q\n", - "$$\n", - "\n", - "通过链式法则我们知道如果我们需要对其中的元素求导,那么我们可以一层一层求导然后将结果乘起来,这就是链式法则的核心,也是反向传播算法的核心,更多关于链式法则的算法,可以访问这个[文档](https://zh.wikipedia.org/wiki/%E9%93%BE%E5%BC%8F%E6%B3%95%E5%88%99)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 反向传播算法\n", - "\n", - "了解了链式法则,我们就可以开始介绍反向传播算法了,本质上反向传播算法只是链式法则的一个应用。我们还是使用之前那个相同的例子$q=x+y, f=qz$,通过计算图可以将这个计算过程表达出来\n", - "\n", - "![](https://ws1.sinaimg.cn/large/006tNc79ly1fmiozcinyzj30c806vglk.jpg)\n", - "\n", - "上面绿色的数字表示其数值,下面红色的数字表示求出的梯度,我们可以一步一步看看反向传播算法的实现。首先从最后开始,梯度当然是1,然后计算\n", - "\n", - "$$\\frac{\\partial f}{\\partial q} = z = -4,\\ \\frac{\\partial f}{\\partial z} = q = 3$$\n", - "\n", - "接着我们计算\n", - "$$\\frac{\\partial f}{\\partial x} = \\frac{\\partial f}{\\partial q} \\frac{\\partial q}{\\partial x} = -4 \\times 1 = -4,\\ \\frac{\\partial f}{\\partial y} = \\frac{\\partial f}{\\partial q} \\frac{\\partial q}{\\partial y} = -4 \\times 1 = -4$$\n", - "\n", - "这样一步一步我们就求出了$\\nabla f(x, y, z)$。\n", - "\n", - "直观上看反向传播算法是一个优雅的局部过程,每次求导只是对当前的运算求导,求解每层网络的参数都是通过链式法则将前面的结果求出不断迭代到这一层,所以说这是一个传播过程\n", - "\n", - "### Sigmoid函数举例\n", - "\n", - "下面我们通过Sigmoid函数来演示反向传播过程在一个复杂的函数上是如何进行的。\n", - "\n", - "$$\n", - "f(w, x) = \\frac{1}{1+e^{-(w_0 x_0 + w_1 x_1 + w_2)}}\n", - "$$\n", - "\n", - "我们需要求解出\n", - "$$\\frac{\\partial f}{\\partial w_0}, \\frac{\\partial f}{\\partial w_1}, \\frac{\\partial f}{\\partial w_2}$$\n", - "\n", - "首先我们将这个函数抽象成一个计算图来表示,即\n", - "$$\n", - " f(x) = \\frac{1}{x} \\\\\n", - " f_c(x) = 1 + x \\\\\n", - " f_e(x) = e^x \\\\\n", - " f_w(x) = -(w_0 x_0 + w_1 x_1 + w_2)\n", - "$$\n", - "\n", - "这样我们就能够画出下面的计算图\n", - "\n", - "![](https://ws1.sinaimg.cn/large/006tNc79ly1fmip1va5qjj30lb08e0t0.jpg)\n", - "\n", - "同样上面绿色的数子表示数值,下面红色的数字表示梯度,我们从后往前计算一下各个参数的梯度。首先最后面的梯度是1,,然后经过$\\frac{1}{x}$这个函数,这个函数的梯度是$-\\frac{1}{x^2}$,所以往前传播的梯度是$1 \\times -\\frac{1}{1.37^2} = -0.53$,然后是$+1$这个操作,梯度不变,接着是$e^x$这个运算,它的梯度就是$-0.53 \\times e^{-1} = -0.2$,这样不断往后传播就能够求得每个参数的梯度。" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.2" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/6_pytorch/1_NN/optimizer/sgd.ipynb b/6_pytorch/1_NN/optimizer/6_1-sgd.ipynb similarity index 100% rename from 6_pytorch/1_NN/optimizer/sgd.ipynb rename to 6_pytorch/1_NN/optimizer/6_1-sgd.ipynb diff --git a/6_pytorch/1_NN/optimizer/momentum.ipynb b/6_pytorch/1_NN/optimizer/6_2-momentum.ipynb similarity index 100% rename from 6_pytorch/1_NN/optimizer/momentum.ipynb rename to 6_pytorch/1_NN/optimizer/6_2-momentum.ipynb diff --git a/6_pytorch/1_NN/optimizer/adagrad.ipynb b/6_pytorch/1_NN/optimizer/6_3-adagrad.ipynb similarity index 100% rename from 6_pytorch/1_NN/optimizer/adagrad.ipynb rename to 6_pytorch/1_NN/optimizer/6_3-adagrad.ipynb diff --git a/6_pytorch/1_NN/optimizer/rmsprop.ipynb b/6_pytorch/1_NN/optimizer/6_4-rmsprop.ipynb similarity index 100% rename from 6_pytorch/1_NN/optimizer/rmsprop.ipynb rename to 6_pytorch/1_NN/optimizer/6_4-rmsprop.ipynb diff --git a/6_pytorch/1_NN/optimizer/adadelta.ipynb b/6_pytorch/1_NN/optimizer/6_5-adadelta.ipynb similarity index 100% rename from 6_pytorch/1_NN/optimizer/adadelta.ipynb rename to 6_pytorch/1_NN/optimizer/6_5-adadelta.ipynb diff --git a/6_pytorch/1_NN/optimizer/adam.ipynb b/6_pytorch/1_NN/optimizer/6_6-adam.ipynb similarity index 100% rename from 6_pytorch/1_NN/optimizer/adam.ipynb rename to 6_pytorch/1_NN/optimizer/6_6-adam.ipynb diff --git a/6_pytorch/1_NN/optimizer/adadelta.py b/6_pytorch/1_NN/optimizer/adadelta.py deleted file mode 100644 index fab95ed..0000000 --- a/6_pytorch/1_NN/optimizer/adadelta.py +++ /dev/null @@ -1,169 +0,0 @@ -# -*- coding: utf-8 -*- -# --- -# jupyter: -# jupytext_format_version: '1.2' -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# language_info: -# codemirror_mode: -# name: ipython -# version: 3 -# file_extension: .py -# mimetype: text/x-python -# name: python -# nbconvert_exporter: python -# pygments_lexer: ipython3 -# version: 3.5.2 -# --- - -# # Adadelta -# Adadelta 算是 Adagrad 法的延伸,它跟 RMSProp 一样,都是为了解决 Adagrad 中学习率不断减小的问题,RMSProp 是通过移动加权平均的方式,而 Adadelta 也是一种方法,有趣的是,它并不需要学习率这个参数。 -# -# ## Adadelta 法 -# Adadelta 跟 RMSProp 一样,先使用移动平均来计算 s -# -# $$ -# s = \rho s + (1 - \rho) g^2 -# $$ -# -# 这里 $\rho$ 和 RMSProp 中的 $\alpha$ 都是移动平均系数,g 是参数的梯度,然后我们会计算需要更新的参数的变化量 -# -# $$ -# g' = \frac{\sqrt{\Delta \theta + \epsilon}}{\sqrt{s + \epsilon}} g -# $$ -# -# $\Delta \theta$ 初始为 0 张量,每一步做如下的指数加权移动平均更新 -# -# $$ -# \Delta \theta = \rho \Delta \theta + (1 - \rho) g'^2 -# $$ -# -# 最后参数更新如下 -# -# $$ -# \theta = \theta - g' -# $$ -# -# 下面我们实现以下 Adadelta - -def adadelta(parameters, sqrs, deltas, rho): - eps = 1e-6 - for param, sqr, delta in zip(parameters, sqrs, deltas): - sqr[:] = rho * sqr + (1 - rho) * param.grad.data ** 2 - cur_delta = torch.sqrt(delta + eps) / torch.sqrt(sqr + eps) * param.grad.data - delta[:] = rho * delta + (1 - rho) * cur_delta ** 2 - param.data = param.data - cur_delta - -# + -import numpy as np -import torch -from torchvision.datasets import MNIST # 导入 pytorch 内置的 mnist 数据 -from torch.utils.data import DataLoader -from torch import nn -from torch.autograd import Variable -import time -import matplotlib.pyplot as plt -# %matplotlib inline - -def data_tf(x): - x = np.array(x, dtype='float32') / 255 - x = (x - 0.5) / 0.5 # 标准化,这个技巧之后会讲到 - x = x.reshape((-1,)) # 拉平 - x = torch.from_numpy(x) - return x - -train_set = MNIST('./data', train=True, transform=data_tf, download=True) # 载入数据集,申明定义的数据变换 -test_set = MNIST('./data', train=False, transform=data_tf, download=True) - -# 定义 loss 函数 -criterion = nn.CrossEntropyLoss() - -# + -train_data = DataLoader(train_set, batch_size=64, shuffle=True) -# 使用 Sequential 定义 3 层神经网络 -net = nn.Sequential( - nn.Linear(784, 200), - nn.ReLU(), - nn.Linear(200, 10), -) - -# 初始化梯度平方项和 delta 项 -sqrs = [] -deltas = [] -for param in net.parameters(): - sqrs.append(torch.zeros_like(param.data)) - deltas.append(torch.zeros_like(param.data)) - -# 开始训练 -losses = [] -idx = 0 -start = time.time() # 记时开始 -for e in range(5): - train_loss = 0 - for im, label in train_data: - im = Variable(im) - label = Variable(label) - # 前向传播 - out = net(im) - loss = criterion(out, label) - # 反向传播 - net.zero_grad() - loss.backward() - adadelta(net.parameters(), sqrs, deltas, 0.9) # rho 设置为 0.9 - # 记录误差 - train_loss += loss.data[0] - if idx % 30 == 0: - losses.append(loss.data[0]) - idx += 1 - print('epoch: {}, Train Loss: {:.6f}' - .format(e, train_loss / len(train_data))) -end = time.time() # 计时结束 -print('使用时间: {:.5f} s'.format(end - start)) -# - - -x_axis = np.linspace(0, 5, len(losses), endpoint=True) -plt.semilogy(x_axis, losses, label='rho=0.99') -plt.legend(loc='best') - -# 可以看到使用 adadelta 跑 5 次能够得到更小的 loss - -# **小练习:思考一下为什么 Adadelta 没有学习率这个参数,它是被什么代替了** - -# 当然 pytorch 也内置了 adadelta 的方法,非常简单,只需要调用 `torch.optim.Adadelta()` 就可以了,下面是例子 - -# + -train_data = DataLoader(train_set, batch_size=64, shuffle=True) -# 使用 Sequential 定义 3 层神经网络 -net = nn.Sequential( - nn.Linear(784, 200), - nn.ReLU(), - nn.Linear(200, 10), -) - -optimizer = torch.optim.Adadelta(net.parameters(), rho=0.9) - -# 开始训练 -start = time.time() # 记时开始 -for e in range(5): - train_loss = 0 - for im, label in train_data: - im = Variable(im) - label = Variable(label) - # 前向传播 - out = net(im) - loss = criterion(out, label) - # 反向传播 - optimizer.zero_grad() - loss.backward() - optimizer.step() - # 记录误差 - train_loss += loss.data[0] - print('epoch: {}, Train Loss: {:.6f}' - .format(e, train_loss / len(train_data))) -end = time.time() # 计时结束 -print('使用时间: {:.5f} s'.format(end - start)) -# - - -# **小练习:看看 pytorch 中的 adadelta,里面是有学习率这个参数,但是前面我们讲过 adadelta 不用设置学习率,看看这个学习率到底是干嘛的** diff --git a/6_pytorch/1_NN/optimizer/adam.py b/6_pytorch/1_NN/optimizer/adam.py deleted file mode 100644 index 220cb01..0000000 --- a/6_pytorch/1_NN/optimizer/adam.py +++ /dev/null @@ -1,182 +0,0 @@ -# -*- coding: utf-8 -*- -# --- -# jupyter: -# jupytext_format_version: '1.2' -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# language_info: -# codemirror_mode: -# name: ipython -# version: 3 -# file_extension: .py -# mimetype: text/x-python -# name: python -# nbconvert_exporter: python -# pygments_lexer: ipython3 -# version: 3.5.2 -# --- - -# # Adam -# Adam 是一个结合了动量法和 RMSProp 的优化算法,其结合了两者的优点。 -# -# ## Adam 算法 -# Adam 算法会使用一个动量变量 v 和一个 RMSProp 中的梯度元素平方的移动指数加权平均 s,首先将他们全部初始化为 0,然后在每次迭代中,计算他们的移动加权平均进行更新 -# -# $$ -# v = \beta_1 v + (1 - \beta_1) g \\ -# s = \beta_2 s + (1 - \beta_2) g^2 -# $$ -# -# 在 adam 算法里,为了减轻 v 和 s 被初始化为 0 的初期对计算指数加权移动平均的影响,每次 v 和 s 都做下面的修正 -# -# $$ -# \hat{v} = \frac{v}{1 - \beta_1^t} \\ -# \hat{s} = \frac{s}{1 - \beta_2^t} -# $$ -# -# 这里 t 是迭代次数,可以看到,当 $0 \leq \beta_1, \beta_2 \leq 1$ 的时候,迭代到后期 t 比较大,那么 $\beta_1^t$ 和 $\beta_2^t$ 就几乎为 0,就不会对 v 和 s 有任何影响了,算法作者建议$\beta_1 = 0.9$, $\beta_2 = 0.999$。 -# -# 最后使用修正之后的 $\hat{v}$ 和 $\hat{s}$ 进行学习率的重新计算 -# -# $$ -# g' = \frac{\eta \hat{v}}{\sqrt{\hat{s} + \epsilon}} -# $$ -# -# 这里 $\eta$ 是学习率,$epsilon$ 仍然是为了数值稳定性而添加的常数,最后参数更新有 -# -# $$ -# \theta_i = \theta_{i-1} - g' -# $$ - -# 下面我们来实现以下 adam 算法 - -def adam(parameters, vs, sqrs, lr, t, beta1=0.9, beta2=0.999): - eps = 1e-8 - for param, v, sqr in zip(parameters, vs, sqrs): - v[:] = beta1 * v + (1 - beta1) * param.grad.data - sqr[:] = beta2 * sqr + (1 - beta2) * param.grad.data ** 2 - v_hat = v / (1 - beta1 ** t) - s_hat = sqr / (1 - beta2 ** t) - param.data = param.data - lr * v_hat / torch.sqrt(s_hat + eps) - -# + -import numpy as np -import torch -from torchvision.datasets import MNIST # 导入 pytorch 内置的 mnist 数据 -from torch.utils.data import DataLoader -from torch import nn -from torch.autograd import Variable -import time -import matplotlib.pyplot as plt -# %matplotlib inline - -def data_tf(x): - x = np.array(x, dtype='float32') / 255 - x = (x - 0.5) / 0.5 # 标准化,这个技巧之后会讲到 - x = x.reshape((-1,)) # 拉平 - x = torch.from_numpy(x) - return x - -train_set = MNIST('../../../data/mnist', train=True, transform=data_tf, download=True) # 载入数据集,申明定义的数据变换 -test_set = MNIST('../../../data/mnist', train=False, transform=data_tf, download=True) - -# 定义 loss 函数 -criterion = nn.CrossEntropyLoss() - -# + -train_data = DataLoader(train_set, batch_size=64, shuffle=True) -# 使用 Sequential 定义 3 层神经网络 -net = nn.Sequential( - nn.Linear(784, 200), - nn.ReLU(), - nn.Linear(200, 10), -) - -# 初始化梯度平方项和动量项 -sqrs = [] -vs = [] -for param in net.parameters(): - sqrs.append(torch.zeros_like(param.data)) - vs.append(torch.zeros_like(param.data)) -t = 1 -# 开始训练 -losses = [] -idx = 0 - -start = time.time() # 记时开始 -for e in range(5): - train_loss = 0 - for im, label in train_data: - im = Variable(im) - label = Variable(label) - # 前向传播 - out = net(im) - loss = criterion(out, label) - # 反向传播 - net.zero_grad() - loss.backward() - adam(net.parameters(), vs, sqrs, 1e-3, t) # 学习率设为 0.001 - t += 1 - # 记录误差 - train_loss += loss.data[0] - if idx % 30 == 0: - losses.append(loss.data[0]) - idx += 1 - print('epoch: {}, Train Loss: {:.6f}' - .format(e, train_loss / len(train_data))) -end = time.time() # 计时结束 -print('使用时间: {:.5f} s'.format(end - start)) -# - - -x_axis = np.linspace(0, 5, len(losses), endpoint=True) -plt.semilogy(x_axis, losses, label='adam') -plt.legend(loc='best') - -# 可以看到使用 adam 算法 loss 能够更快更好地收敛,但是一定要小心学习率的设定,使用自适应的算法一般需要更小的学习率 -# -# 当然 pytorch 中也内置了 adam 的实现,只需要调用 `torch.optim.Adam()`,下面是例子 - -# + -train_data = DataLoader(train_set, batch_size=64, shuffle=True) -# 使用 Sequential 定义 3 层神经网络 -net = nn.Sequential( - nn.Linear(784, 200), - nn.ReLU(), - nn.Linear(200, 10), -) - -optimizer = torch.optim.Adam(net.parameters(), lr=1e-3) - -# 开始训练 -start = time.time() # 记时开始 -for e in range(5): - train_loss = 0 - for im, label in train_data: - im = Variable(im) - label = Variable(label) - # 前向传播 - out = net(im) - loss = criterion(out, label) - # 反向传播 - optimizer.zero_grad() - loss.backward() - optimizer.step() - # 记录误差 - train_loss += loss.data[0] - print('epoch: {}, Train Loss: {:.6f}' - .format(e, train_loss / len(train_data))) -end = time.time() # 计时结束 -print('使用时间: {:.5f} s'.format(end - start)) -# - - -# 这是我们讲的最后一个优化算法,下面放一张各个优化算法的对比图结束这一节的内容 -# -# ![](https://raw.githubusercontent.com/cs231n/cs231n.github.io/master/assets/nn3/opt1.gif) -# -# ![](https://raw.githubusercontent.com/cs231n/cs231n.github.io/master/assets/nn3/opt2.gif) -# -# - -# 这两张图生动形象地展示了各种优化算法的实际效果 diff --git a/6_pytorch/1_NN/optimizer/momentum.py b/6_pytorch/1_NN/optimizer/momentum.py deleted file mode 100644 index 1135a14..0000000 --- a/6_pytorch/1_NN/optimizer/momentum.py +++ /dev/null @@ -1,231 +0,0 @@ -# -*- coding: utf-8 -*- -# --- -# jupyter: -# jupytext_format_version: '1.2' -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# language_info: -# codemirror_mode: -# name: ipython -# version: 3 -# file_extension: .py -# mimetype: text/x-python -# name: python -# nbconvert_exporter: python -# pygments_lexer: ipython3 -# version: 3.5.2 -# --- - -# # 动量法 -# 使用梯度下降法,每次都会朝着目标函数下降最快的方向,这也称为最速下降法。这种更新方法看似非常快,实际上存在一些问题。 -# -# ## 梯度下降法的问题 -# 考虑一个二维输入,$[x_1, x_2]$,输出的损失函数 $L: R^2 \rightarrow R$,下面是这个函数的等高线 -# -# ![](https://ws1.sinaimg.cn/large/006tKfTcly1fmnketw5f4j30az04lq31.jpg) -# -# 可以想象成一个很扁的漏斗,这样在竖直方向上,梯度就非常大,在水平方向上,梯度就相对较小,所以我们在设置学习率的时候就不能设置太大,为了防止竖直方向上参数更新太过了,这样一个较小的学习率又导致了水平方向上参数在更新的时候太过于缓慢,所以就导致最终收敛起来非常慢。 -# -# ## 动量法 -# 动量法的提出就是为了应对这个问题,我们梯度下降法做一个修改如下 -# -# $$ -# v_i = \gamma v_{i-1} + \eta \nabla L(\theta) -# $$ -# $$ -# \theta_i = \theta_{i-1} - v_i -# $$ -# -# 其中 $v_i$ 是当前速度,$\gamma$ 是动量参数,是一个小于 1的正数,$\eta$ 是学习率 - -# 相当于每次在进行参数更新的时候,都会将之前的速度考虑进来,每个参数在各方向上的移动幅度不仅取决于当前的梯度,还取决于过去各个梯度在各个方向上是否一致,如果一个梯度一直沿着当前方向进行更新,那么每次更新的幅度就越来越大,如果一个梯度在一个方向上不断变化,那么其更新幅度就会被衰减,这样我们就可以使用一个较大的学习率,使得收敛更快,同时梯度比较大的方向就会因为动量的关系每次更新的幅度减少,如下图 -# -# ![](https://ws1.sinaimg.cn/large/006tNc79gy1fmo5l53o76j30ak04gjrh.jpg) -# -# 比如我们的梯度每次都等于 g,而且方向都相同,那么动量法在该方向上使参数加速移动,有下面的公式: -# -# $$ -# v_0 = 0 -# $$ -# $$ -# v_1 = \gamma v_0 + \eta g = \eta g -# $$ -# $$ -# v_2 = \gamma v_1 + \eta g = (1 + \gamma) \eta g -# $$ -# $$ -# v_3 = \gamma v_2 + \eta g = (1 + \gamma + \gamma^2) \eta g -# $$ -# $$ -# \cdots -# $$ -# $$ -# v_{+ \infty} = (1 + \gamma + \gamma^2 + \gamma^3 + \cdots) \eta g = \frac{1}{1 - \gamma} \eta g -# $$ -# -# 如果我们把 $\gamma$ 定为 0.9,那么更新幅度的峰值就是原本梯度乘学习率的 10 倍。 -# -# 本质上说,动量法就仿佛我们从高坡上推一个球,小球在向下滚动的过程中积累了动量,在途中也会变得越来越快,最后会达到一个峰值,对应于我们的算法中就是,动量项会沿着梯度指向方向相同的方向不断增大,对于梯度方向改变的方向逐渐减小,得到了更快的收敛速度以及更小的震荡。 -# -# 下面我们手动实现一个动量法,公式已经在上面了 - -def sgd_momentum(parameters, vs, lr, gamma): - for param, v in zip(parameters, vs): - v[:] = gamma * v + lr * param.grad.data - param.data = param.data - v - -# + -import numpy as np -import torch -from torchvision.datasets import MNIST # 导入 pytorch 内置的 mnist 数据 -from torch.utils.data import DataLoader -from torch import nn -from torch.autograd import Variable -import time -import matplotlib.pyplot as plt -# %matplotlib inline - -def data_tf(x): - x = np.array(x, dtype='float32') / 255 - x = (x - 0.5) / 0.5 # 标准化,这个技巧之后会讲到 - x = x.reshape((-1,)) # 拉平 - x = torch.from_numpy(x) - return x - -train_set = MNIST('./data', train=True, transform=data_tf, download=True) # 载入数据集,申明定义的数据变换 -test_set = MNIST('./data', train=False, transform=data_tf, download=True) - -# 定义 loss 函数 -criterion = nn.CrossEntropyLoss() - -# + -train_data = DataLoader(train_set, batch_size=64, shuffle=True) -# 使用 Sequential 定义 3 层神经网络 -net = nn.Sequential( - nn.Linear(784, 200), - nn.ReLU(), - nn.Linear(200, 10), -) - -# 将速度初始化为和参数形状相同的零张量 -vs = [] -for param in net.parameters(): - vs.append(torch.zeros_like(param.data)) - -# 开始训练 -losses = [] - -start = time.time() # 记时开始 -for e in range(5): - train_loss = 0 - for im, label in train_data: - im = Variable(im) - label = Variable(label) - # 前向传播 - out = net(im) - loss = criterion(out, label) - # 反向传播 - net.zero_grad() - loss.backward() - sgd_momentum(net.parameters(), vs, 1e-2, 0.9) # 使用的动量参数为 0.9,学习率 0.01 - # 记录误差 - train_loss += loss.data[0] - - losses.append(loss.data[0]) - print('epoch: {}, Train Loss: {:.6f}' - .format(e, train_loss / len(train_data))) -end = time.time() # 计时结束 -print('使用时间: {:.5f} s'.format(end - start)) -# - - -# 可以看到,加完动量之后 loss 能下降非常快,但是一定要小心学习率和动量参数,这两个值会直接影响到参数每次更新的幅度,所以可以多试几个值 - -# 当然,pytorch 内置了动量法的实现,非常简单,直接在 `torch.optim.SGD(momentum=0.9)` 即可,下面实现一下 - -# + -train_data = DataLoader(train_set, batch_size=64, shuffle=True) -# 使用 Sequential 定义 3 层神经网络 -net = nn.Sequential( - nn.Linear(784, 200), - nn.ReLU(), - nn.Linear(200, 10), -) - -optimizer = torch.optim.SGD(net.parameters(), lr=1e-2, momentum=0.9) # 加动量 -# 开始训练 -losses = [] -idx = 0 -start = time.time() # 记时开始 -for e in range(5): - train_loss = 0 - for im, label in train_data: - im = Variable(im) - label = Variable(label) - # 前向传播 - out = net(im) - loss = criterion(out, label) - # 反向传播 - optimizer.zero_grad() - loss.backward() - optimizer.step() - # 记录误差 - train_loss += loss.data[0] - if idx % 30 == 0: # 30 步记录一次 - losses.append(loss.data[0]) - idx += 1 - print('epoch: {}, Train Loss: {:.6f}' - .format(e, train_loss / len(train_data))) -end = time.time() # 计时结束 -print('使用时间: {:.5f} s'.format(end - start)) -# - - -x_axis = np.linspace(0, 5, len(losses), endpoint=True) -plt.semilogy(x_axis, losses, label='momentum: 0.9') -plt.legend(loc='best') - -# 我们可以对比一下不加动量的随机梯度下降法 - -# + -# 使用 Sequential 定义 3 层神经网络 -net = nn.Sequential( - nn.Linear(784, 200), - nn.ReLU(), - nn.Linear(200, 10), -) - -optimizer = torch.optim.SGD(net.parameters(), lr=1e-2) # 不加动量 -# 开始训练 -losses1 = [] -idx = 0 -start = time.time() # 记时开始 -for e in range(5): - train_loss = 0 - for im, label in train_data: - im = Variable(im) - label = Variable(label) - # 前向传播 - out = net(im) - loss = criterion(out, label) - # 反向传播 - optimizer.zero_grad() - loss.backward() - optimizer.step() - # 记录误差 - train_loss += loss.data[0] - if idx % 30 == 0: # 30 步记录一次 - losses1.append(loss.data[0]) - idx += 1 - print('epoch: {}, Train Loss: {:.6f}' - .format(e, train_loss / len(train_data))) -end = time.time() # 计时结束 -print('使用时间: {:.5f} s'.format(end - start)) -# - - -x_axis = np.linspace(0, 5, len(losses), endpoint=True) -plt.semilogy(x_axis, losses, label='momentum: 0.9') -plt.semilogy(x_axis, losses1, label='no momentum') -plt.legend(loc='best') - -# 可以看到加完动量之后的 loss 下降的程度更低了,可以将动量理解为一种惯性作用,所以每次更新的幅度都会比不加动量的情况更多 diff --git a/6_pytorch/1_NN/optimizer/rmsprop.py b/6_pytorch/1_NN/optimizer/rmsprop.py deleted file mode 100644 index 4547a7e..0000000 --- a/6_pytorch/1_NN/optimizer/rmsprop.py +++ /dev/null @@ -1,198 +0,0 @@ -# -*- coding: utf-8 -*- -# --- -# jupyter: -# jupytext_format_version: '1.2' -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# language_info: -# codemirror_mode: -# name: ipython -# version: 3 -# file_extension: .py -# mimetype: text/x-python -# name: python -# nbconvert_exporter: python -# pygments_lexer: ipython3 -# version: 3.5.2 -# --- - -# # RMSProp -# RMSprop 是由 Geoff Hinton 在他 Coursera 课程中提出的一种适应性学习率方法,至今仍未被公开发表。前面我们提到了 Adagrad 算法有一个问题,就是学习率分母上的变量 s 不断被累加增大,最后会导致学习率除以一个比较大的数之后变得非常小,这不利于我们找到最后的最优解,所以 RMSProp 的提出就是为了解决这个问题。 -# -# ## RMSProp 算法 -# RMSProp 仍然会使用梯度的平方量,不同于 Adagrad,其会使用一个指数加权移动平均来计算这个 s,也就是 -# -# $$ -# s_i = \alpha s_{i-1} + (1 - \alpha) \ g^2 -# $$ -# -# 这里 g 表示当前求出的参数梯度,然后最终更新和 Adagrad 是一样的,学习率变成了 -# -# $$ -# \frac{\eta}{\sqrt{s + \epsilon}} -# $$ -# -# 这里 $\alpha$ 是一个移动平均的系数,也是因为这个系数,导致了 RMSProp 和 Adagrad 不同的地方,这个系数使得 RMSProp 更新到后期累加的梯度平方较小,从而保证 s 不会太大,也就使得模型后期依然能够找到比较优的结果 -# -# 实现上和 Adagrad 非常像 - -def rmsprop(parameters, sqrs, lr, alpha): - eps = 1e-10 - for param, sqr in zip(parameters, sqrs): - sqr[:] = alpha * sqr + (1 - alpha) * param.grad.data ** 2 - div = lr / torch.sqrt(sqr + eps) * param.grad.data - param.data = param.data - div - -# + -import numpy as np -import torch -from torchvision.datasets import MNIST # 导入 pytorch 内置的 mnist 数据 -from torch.utils.data import DataLoader -from torch import nn -from torch.autograd import Variable -import time -import matplotlib.pyplot as plt -# %matplotlib inline - -def data_tf(x): - x = np.array(x, dtype='float32') / 255 - x = (x - 0.5) / 0.5 # 标准化,这个技巧之后会讲到 - x = x.reshape((-1,)) # 拉平 - x = torch.from_numpy(x) - return x - -train_set = MNIST('./data', train=True, transform=data_tf, download=True) # 载入数据集,申明定义的数据变换 -test_set = MNIST('./data', train=False, transform=data_tf, download=True) - -# 定义 loss 函数 -criterion = nn.CrossEntropyLoss() - -# + -train_data = DataLoader(train_set, batch_size=64, shuffle=True) -# 使用 Sequential 定义 3 层神经网络 -net = nn.Sequential( - nn.Linear(784, 200), - nn.ReLU(), - nn.Linear(200, 10), -) - -# 初始化梯度平方项 -sqrs = [] -for param in net.parameters(): - sqrs.append(torch.zeros_like(param.data)) - -# 开始训练 -losses = [] -idx = 0 -start = time.time() # 记时开始 -for e in range(5): - train_loss = 0 - for im, label in train_data: - im = Variable(im) - label = Variable(label) - # 前向传播 - out = net(im) - loss = criterion(out, label) - # 反向传播 - net.zero_grad() - loss.backward() - rmsprop(net.parameters(), sqrs, 1e-3, 0.9) # 学习率设为 0.001,alpha 设为 0.9 - # 记录误差 - train_loss += loss.data[0] - if idx % 30 == 0: - losses.append(loss.data[0]) - idx += 1 - print('epoch: {}, Train Loss: {:.6f}' - .format(e, train_loss / len(train_data))) -end = time.time() # 计时结束 -print('使用时间: {:.5f} s'.format(end - start)) -# - - -x_axis = np.linspace(0, 5, len(losses), endpoint=True) -plt.semilogy(x_axis, losses, label='alpha=0.9') -plt.legend(loc='best') - -# + -train_data = DataLoader(train_set, batch_size=64, shuffle=True) -# 使用 Sequential 定义 3 层神经网络 -net = nn.Sequential( - nn.Linear(784, 200), - nn.ReLU(), - nn.Linear(200, 10), -) - -# 初始化梯度平方项 -sqrs = [] -for param in net.parameters(): - sqrs.append(torch.zeros_like(param.data)) - -# 开始训练 -losses = [] -idx = 0 - -start = time.time() # 记时开始 -for e in range(5): - train_loss = 0 - for im, label in train_data: - im = Variable(im) - label = Variable(label) - # 前向传播 - out = net(im) - loss = criterion(out, label) - # 反向传播 - net.zero_grad() - loss.backward() - rmsprop(net.parameters(), sqrs, 1e-3, 0.999) # 学习率设为 0.001,alpha 设为 0.999 - # 记录误差 - train_loss += loss.data[0] - if idx % 30 == 0: - losses.append(loss.data[0]) - idx += 1 - print('epoch: {}, Train Loss: {:.6f}' - .format(e, train_loss / len(train_data))) -end = time.time() # 计时结束 -print('使用时间: {:.5f} s'.format(end - start)) -# - - -x_axis = np.linspace(0, 5, len(losses), endpoint=True) -plt.semilogy(x_axis, losses, label='alpha=0.999') -plt.legend(loc='best') - -# **小练习:可以看到使用了不同的 alpha 会使得 loss 在下降过程中的震荡程度不同,想想为什么** - -# 当然 pytorch 也内置了 rmsprop 的方法,非常简单,只需要调用 `torch.optim.RMSprop()` 就可以了,下面是例子 - -# + -train_data = DataLoader(train_set, batch_size=64, shuffle=True) -# 使用 Sequential 定义 3 层神经网络 -net = nn.Sequential( - nn.Linear(784, 200), - nn.ReLU(), - nn.Linear(200, 10), -) - -optimizer = torch.optim.RMSprop(net.parameters(), lr=1e-3, alpha=0.9) - -# 开始训练 - -start = time.time() # 记时开始 -for e in range(5): - train_loss = 0 - for im, label in train_data: - im = Variable(im) - label = Variable(label) - # 前向传播 - out = net(im) - loss = criterion(out, label) - # 反向传播 - optimizer.zero_grad() - loss.backward() - optimizer.step() - # 记录误差 - train_loss += loss.data[0] - print('epoch: {}, Train Loss: {:.6f}' - .format(e, train_loss / len(train_data))) -end = time.time() # 计时结束 -print('使用时间: {:.5f} s'.format(end - start)) diff --git a/6_pytorch/1_NN/optimizer/sgd.py b/6_pytorch/1_NN/optimizer/sgd.py deleted file mode 100644 index a42be92..0000000 --- a/6_pytorch/1_NN/optimizer/sgd.py +++ /dev/null @@ -1,222 +0,0 @@ -# -*- coding: utf-8 -*- -# --- -# jupyter: -# jupytext_format_version: '1.2' -# kernelspec: -# display_name: Python 3 -# language: python -# name: python3 -# language_info: -# codemirror_mode: -# name: ipython -# version: 3 -# file_extension: .py -# mimetype: text/x-python -# name: python -# nbconvert_exporter: python -# pygments_lexer: ipython3 -# version: 3.5.2 -# --- - -# # 随机梯度下降法 -# 前面我们介绍了梯度下降法的数学原理,下面我们通过例子来说明一下随机梯度下降法,我们分别从 0 自己实现,以及使用 pytorch 中自带的优化器 - -# + -import numpy as np -import torch -from torchvision.datasets import MNIST # 导入 pytorch 内置的 mnist 数据 -from torch.utils.data import DataLoader -from torch import nn -from torch.autograd import Variable -import time -import matplotlib.pyplot as plt -# %matplotlib inline - -def data_tf(x): - x = np.array(x, dtype='float32') / 255 # 将数据变到 0 ~ 1 之间 - x = (x - 0.5) / 0.5 # 标准化,这个技巧之后会讲到 - x = x.reshape((-1,)) # 拉平 - x = torch.from_numpy(x) - return x - -train_set = MNIST('./data', train=True, transform=data_tf, download=True) # 载入数据集,申明定义的数据变换 -test_set = MNIST('./data', train=False, transform=data_tf, download=True) - -# 定义 loss 函数 -criterion = nn.CrossEntropyLoss() -# - - -# 随机梯度下降法非常简单,公式就是 -# $$ -# \theta_{i+1} = \theta_i - \eta \nabla L(\theta) -# $$ -# 非常简单,我们可以从 0 开始自己实现 - -def sgd_update(parameters, lr): - for param in parameters: - param.data = param.data - lr * param.grad.data - -# 我们可以将 batch size 先设置为 1,看看有什么效果 - -# + -train_data = DataLoader(train_set, batch_size=1, shuffle=True) -# 使用 Sequential 定义 3 层神经网络 -net = nn.Sequential( - nn.Linear(784, 200), - nn.ReLU(), - nn.Linear(200, 10), -) - -# 开始训练 -losses1 = [] -idx = 0 - -start = time.time() # 记时开始 -for e in range(5): - train_loss = 0 - for im, label in train_data: - im = Variable(im) - label = Variable(label) - # 前向传播 - out = net(im) - loss = criterion(out, label) - # 反向传播 - net.zero_grad() - loss.backward() - sgd_update(net.parameters(), 1e-2) # 使用 0.01 的学习率 - # 记录误差 - train_loss += loss.data[0] - if idx % 30 == 0: - losses1.append(loss.data[0]) - idx += 1 - print('epoch: {}, Train Loss: {:.6f}' - .format(e, train_loss / len(train_data))) -end = time.time() # 计时结束 -print('使用时间: {:.5f} s'.format(end - start)) -# - - -x_axis = np.linspace(0, 5, len(losses1), endpoint=True) -plt.semilogy(x_axis, losses1, label='batch_size=1') -plt.legend(loc='best') - -# 可以看到,loss 在剧烈震荡,因为每次都是只对一个样本点做计算,每一层的梯度都具有很高的随机性,而且需要耗费了大量的时间 - -# + -train_data = DataLoader(train_set, batch_size=64, shuffle=True) -# 使用 Sequential 定义 3 层神经网络 -net = nn.Sequential( - nn.Linear(784, 200), - nn.ReLU(), - nn.Linear(200, 10), -) - -# 开始训练 -losses2 = [] -idx = 0 -start = time.time() # 记时开始 -for e in range(5): - train_loss = 0 - for im, label in train_data: - im = Variable(im) - label = Variable(label) - # 前向传播 - out = net(im) - loss = criterion(out, label) - # 反向传播 - net.zero_grad() - loss.backward() - sgd_update(net.parameters(), 1e-2) - # 记录误差 - train_loss += loss.data[0] - if idx % 30 == 0: - losses2.append(loss.data[0]) - idx += 1 - print('epoch: {}, Train Loss: {:.6f}' - .format(e, train_loss / len(train_data))) -end = time.time() # 计时结束 -print('使用时间: {:.5f} s'.format(end - start)) -# - - -x_axis = np.linspace(0, 5, len(losses2), endpoint=True) -plt.semilogy(x_axis, losses2, label='batch_size=64') -plt.legend(loc='best') - -# 通过上面的结果可以看到 loss 没有 batch 等于 1 震荡那么距离,同时也可以降到一定的程度了,时间上也比之前快了非常多,因为按照 batch 的数据量计算上更快,同时梯度对比于 batch size = 1 的情况也跟接近真实的梯度,所以 batch size 的值越大,梯度也就越稳定,而 batch size 越小,梯度具有越高的随机性,这里 batch size 为 64,可以看到 loss 仍然存在震荡,但这并没有关系,如果 batch size 太大,对于内存的需求就更高,同时也不利于网络跳出局部极小点,所以现在普遍使用基于 batch 的随机梯度下降法,而 batch 的多少基于实际情况进行考虑 - -# 下面我们调高学习率,看看有什么样的结果 - -# + -train_data = DataLoader(train_set, batch_size=64, shuffle=True) -# 使用 Sequential 定义 3 层神经网络 -net = nn.Sequential( - nn.Linear(784, 200), - nn.ReLU(), - nn.Linear(200, 10), -) - -# 开始训练 -losses3 = [] -idx = 0 -start = time.time() # 记时开始 -for e in range(5): - train_loss = 0 - for im, label in train_data: - im = Variable(im) - label = Variable(label) - # 前向传播 - out = net(im) - loss = criterion(out, label) - # 反向传播 - net.zero_grad() - loss.backward() - sgd_update(net.parameters(), 1) # 使用 1.0 的学习率 - # 记录误差 - train_loss += loss.data[0] - if idx % 30 == 0: - losses3.append(loss.data[0]) - idx += 1 - print('epoch: {}, Train Loss: {:.6f}' - .format(e, train_loss / len(train_data))) -end = time.time() # 计时结束 -print('使用时间: {:.5f} s'.format(end - start)) -# - - -x_axis = np.linspace(0, 5, len(losses3), endpoint=True) -plt.semilogy(x_axis, losses3, label='lr = 1') -plt.legend(loc='best') - -# 可以看到,学习率太大会使得损失函数不断回跳,从而无法让损失函数较好降低,所以我们一般都是用一个比较小的学习率 - -# 实际上我们并不用自己造轮子,因为 pytorch 中已经为我们内置了随机梯度下降发,而且之前我们一直在使用,下面我们来使用 pytorch 自带的优化器来实现随机梯度下降 - -# + -train_data = DataLoader(train_set, batch_size=64, shuffle=True) -# 使用 Sequential 定义 3 层神经网络 -net = nn.Sequential( - nn.Linear(784, 200), - nn.ReLU(), - nn.Linear(200, 10), -) - -optimzier = torch.optim.SGD(net.parameters(), 1e-2) -# 开始训练 - -start = time.time() # 记时开始 -for e in range(5): - train_loss = 0 - for im, label in train_data: - im = Variable(im) - label = Variable(label) - # 前向传播 - out = net(im) - loss = criterion(out, label) - # 反向传播 - optimzier.zero_grad() - loss.backward() - optimzier.step() - # 记录误差 - train_loss += loss.data[0] - print('epoch: {}, Train Loss: {:.6f}' - .format(e, train_loss / len(train_data))) -end = time.time() # 计时结束 -print('使用时间: {:.5f} s'.format(end - start)) diff --git a/6_pytorch/2_CNN/basic_conv.ipynb b/6_pytorch/2_CNN/1-basic_conv.ipynb similarity index 100% rename from 6_pytorch/2_CNN/basic_conv.ipynb rename to 6_pytorch/2_CNN/1-basic_conv.ipynb diff --git a/6_pytorch/2_CNN/batch-normalization.ipynb b/6_pytorch/2_CNN/2-batch-normalization.ipynb similarity index 100% rename from 6_pytorch/2_CNN/batch-normalization.ipynb rename to 6_pytorch/2_CNN/2-batch-normalization.ipynb diff --git a/6_pytorch/2_CNN/lr-decay.ipynb b/6_pytorch/2_CNN/3-lr-decay.ipynb similarity index 100% rename from 6_pytorch/2_CNN/lr-decay.ipynb rename to 6_pytorch/2_CNN/3-lr-decay.ipynb diff --git a/6_pytorch/2_CNN/regularization.ipynb b/6_pytorch/2_CNN/4-regularization.ipynb similarity index 100% rename from 6_pytorch/2_CNN/regularization.ipynb rename to 6_pytorch/2_CNN/4-regularization.ipynb diff --git a/6_pytorch/2_CNN/data-augumentation.ipynb b/6_pytorch/2_CNN/5-data-augumentation.ipynb similarity index 100% rename from 6_pytorch/2_CNN/data-augumentation.ipynb rename to 6_pytorch/2_CNN/5-data-augumentation.ipynb diff --git a/6_pytorch/2_CNN/vgg.ipynb b/6_pytorch/2_CNN/6-vgg.ipynb similarity index 100% rename from 6_pytorch/2_CNN/vgg.ipynb rename to 6_pytorch/2_CNN/6-vgg.ipynb diff --git a/6_pytorch/2_CNN/googlenet.ipynb b/6_pytorch/2_CNN/7-googlenet.ipynb similarity index 100% rename from 6_pytorch/2_CNN/googlenet.ipynb rename to 6_pytorch/2_CNN/7-googlenet.ipynb diff --git a/6_pytorch/2_CNN/resnet.ipynb b/6_pytorch/2_CNN/8-resnet.ipynb similarity index 100% rename from 6_pytorch/2_CNN/resnet.ipynb rename to 6_pytorch/2_CNN/8-resnet.ipynb diff --git a/6_pytorch/2_CNN/densenet.ipynb b/6_pytorch/2_CNN/9-densenet.ipynb similarity index 100% rename from 6_pytorch/2_CNN/densenet.ipynb rename to 6_pytorch/2_CNN/9-densenet.ipynb diff --git a/6_pytorch/2_CNN/CNN_Introduction.pptx b/6_pytorch/2_CNN/CNN_Introduction.pptx index 56767e0..4475cbf 100644 Binary files a/6_pytorch/2_CNN/CNN_Introduction.pptx and b/6_pytorch/2_CNN/CNN_Introduction.pptx differ diff --git a/6_pytorch/PyTorch_quick_intro.ipynb b/6_pytorch/PyTorch_quick_intro.ipynb index 7a5c54a..4f68185 100644 --- a/6_pytorch/PyTorch_quick_intro.ipynb +++ b/6_pytorch/PyTorch_quick_intro.ipynb @@ -41,11 +41,11 @@ { "data": { "text/plain": [ - "tensor([[3.7158e-37, 0.0000e+00, 5.7453e-44],\n", - " [0.0000e+00, nan, 4.5745e-41],\n", - " [1.3733e-14, 6.4076e+07, 2.0706e-19],\n", - " [7.3909e+22, 2.4176e-12, 1.1625e+33],\n", - " [8.9605e-01, 1.1632e+33, 5.6003e-02]])" + "tensor([[ 1.2516e-36, 0.0000e+00, 2.3822e-44],\n", + " [ 0.0000e+00, nan, 4.5743e-41],\n", + " [ 1.3733e-14, 1.8888e+31, 4.9656e+28],\n", + " [ 4.5439e+30, -4.2010e+25, 4.5743e-41],\n", + " [-4.2210e+25, 4.5743e-41, -4.2210e+25]])" ] }, "execution_count": 2, @@ -67,11 +67,11 @@ { "data": { "text/plain": [ - "tensor([[0.4157, 0.7456, 0.9620],\n", - " [0.3965, 0.8182, 0.7723],\n", - " [0.3705, 0.9292, 0.0063],\n", - " [0.4054, 0.9137, 0.9611],\n", - " [0.8307, 0.0900, 0.6887]])" + "tensor([[0.1878, 0.1306, 0.1593],\n", + " [0.2964, 0.3927, 0.7782],\n", + " [0.8448, 0.4487, 0.7916],\n", + " [0.0550, 0.7300, 0.2901],\n", + " [0.8453, 0.8734, 0.2627]])" ] }, "execution_count": 3, @@ -122,20 +122,20 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "tensor([[0.5021, 1.2500, 1.4749],\n", - " [0.6019, 0.9378, 1.7240],\n", - " [1.2752, 1.3837, 0.6832],\n", - " [1.2053, 1.4374, 1.5160],\n", - " [0.9404, 0.8743, 0.8164]])" + "tensor([[0.9549, 1.0717, 0.4005],\n", + " [0.8394, 0.7862, 0.8726],\n", + " [1.4099, 1.3137, 1.1250],\n", + " [0.4830, 0.8297, 0.5617],\n", + " [0.9343, 0.9557, 0.9178]])" ] }, - "execution_count": 5, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -173,20 +173,20 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "tensor([[1.7112, 1.2969, 0.3289],\n", - " [0.7841, 1.0128, 0.7596],\n", - " [1.1364, 1.1541, 0.8970],\n", - " [0.8831, 0.7063, 0.3158],\n", - " [1.5160, 1.3610, 0.8437]])" + "tensor([[0.9549, 1.0717, 0.4005],\n", + " [0.8394, 0.7862, 0.8726],\n", + " [1.4099, 1.3137, 1.1250],\n", + " [0.4830, 0.8297, 0.5617],\n", + " [0.9343, 0.9557, 0.9178]])" ] }, - "execution_count": 6, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -200,7 +200,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -208,23 +208,23 @@ "output_type": "stream", "text": [ "最初y\n", - "tensor([[0.0864, 0.5044, 0.5128],\n", - " [0.2054, 0.1196, 0.9517],\n", - " [0.9047, 0.4545, 0.6769],\n", - " [0.7999, 0.5236, 0.5549],\n", - " [0.1097, 0.7843, 0.1277]])\n", + "tensor([[0.7671, 0.9411, 0.2411],\n", + " [0.5430, 0.3935, 0.0944],\n", + " [0.5652, 0.8650, 0.3334],\n", + " [0.4280, 0.0997, 0.2716],\n", + " [0.0890, 0.0823, 0.6551]])\n", "第一种加法,y的结果\n", - "tensor([[0.0864, 0.5044, 0.5128],\n", - " [0.2054, 0.1196, 0.9517],\n", - " [0.9047, 0.4545, 0.6769],\n", - " [0.7999, 0.5236, 0.5549],\n", - " [0.1097, 0.7843, 0.1277]])\n", + "tensor([[0.7671, 0.9411, 0.2411],\n", + " [0.5430, 0.3935, 0.0944],\n", + " [0.5652, 0.8650, 0.3334],\n", + " [0.4280, 0.0997, 0.2716],\n", + " [0.0890, 0.0823, 0.6551]])\n", "第二种加法,y的结果\n", - "tensor([[0.5021, 1.2500, 1.4749],\n", - " [0.6019, 0.9378, 1.7240],\n", - " [1.2752, 1.3837, 0.6832],\n", - " [1.2053, 1.4374, 1.5160],\n", - " [0.9404, 0.8743, 0.8164]])\n" + "tensor([[0.9549, 1.0717, 0.4005],\n", + " [0.8394, 0.7862, 0.8726],\n", + " [1.4099, 1.3137, 1.1250],\n", + " [0.4830, 0.8297, 0.5617],\n", + " [0.9343, 0.9557, 0.9178]])\n" ] } ], @@ -250,16 +250,16 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "tensor([0.7456, 0.8182, 0.9292, 0.9137, 0.0900])" + "tensor([0.1306, 0.3927, 0.4487, 0.7300, 0.8734])" ] }, - "execution_count": 8, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -280,7 +280,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -289,7 +289,7 @@ "tensor([1., 1., 1., 1., 1.])" ] }, - "execution_count": 9, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -301,7 +301,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -310,7 +310,7 @@ "array([1., 1., 1., 1., 1.], dtype=float32)" ] }, - "execution_count": 10, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -322,7 +322,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -351,7 +351,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -359,14 +359,7 @@ "output_type": "stream", "text": [ "[2. 2. 2. 2. 2.]\n", - "\n", - " 2\n", - " 2\n", - " 2\n", - " 2\n", - " 2\n", - "[torch.DoubleTensor of size 5]\n", - "\n" + "tensor([2., 2., 2., 2., 2.], dtype=torch.float64)\n" ] } ], @@ -385,18 +378,18 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor([[0.9177, 1.9956, 2.4369],\n", - " [0.9984, 1.7561, 2.4963],\n", - " [1.6457, 2.3129, 0.6895],\n", - " [1.6107, 2.3511, 2.4770],\n", - " [1.7711, 0.9643, 1.5050]], device='cuda:0')\n" + "tensor([[1.1427, 1.2022, 0.5598],\n", + " [1.1357, 1.1790, 1.6507],\n", + " [2.2547, 1.7623, 1.9165],\n", + " [0.5381, 1.5597, 0.8518],\n", + " [1.7796, 1.8291, 1.1805]], device='cuda:0')\n" ] } ], @@ -438,7 +431,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -447,7 +440,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 18, "metadata": { "scrolled": true }, @@ -459,7 +452,7 @@ " [1., 1.]], requires_grad=True)" ] }, - "execution_count": 14, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -472,7 +465,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 19, "metadata": { "scrolled": true }, @@ -483,7 +476,7 @@ "tensor(4., grad_fn=)" ] }, - "execution_count": 15, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -495,16 +488,16 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 16, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -515,7 +508,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -524,7 +517,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -534,7 +527,7 @@ " [1., 1.]])" ] }, - "execution_count": 18, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -554,7 +547,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -564,7 +557,7 @@ " [2., 2.]])" ] }, - "execution_count": 19, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -576,7 +569,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 24, "metadata": { "scrolled": true }, @@ -588,7 +581,7 @@ " [3., 3.]])" ] }, - "execution_count": 20, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -600,7 +593,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -610,7 +603,7 @@ " [0., 0.]])" ] }, - "execution_count": 21, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -622,7 +615,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -632,7 +625,7 @@ " [1., 1.]])" ] }, - "execution_count": 22, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -651,7 +644,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -673,7 +666,7 @@ " [0.5403, 0.5403, 0.5403, 0.5403, 0.5403]])" ] }, - "execution_count": 24, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -690,7 +683,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 3. 神经网络\n", + "## 3. 神经网络 (FIXME)\n", "\n", "Autograd实现了反向传播功能,但是直接用来写深度学习的代码在很多情况下还是稍显复杂,torch.nn是专门为神经网络设计的模块化接口。nn构建于 Autograd之上,可用来定义和运行神经网络。nn.Module是nn中最重要的类,可把它看成是一个网络的封装,包含网络各层定义以及forward方法,调用forward(input)方法,可返回前向传播的结果。下面就以最早的卷积神经网络:LeNet为例,来看看如何用`nn.Module`实现。LeNet的网络结构如图2-7所示。\n", "\n", diff --git a/References.md b/References.md index fa58e5a..4dd3383 100644 --- a/References.md +++ b/References.md @@ -4,6 +4,7 @@ ## Notebook, Book, Tutorial + * [Deep Learning with PyTorch](https://pytorch.org/deep-learning-with-pytorch-thank-you) * [Machine Learning Yearning 中文版 - 《机器学习训练秘籍》](https://github.com/deeplearning-ai/machine-learning-yearning-cn) ([在线阅读](https://deeplearning-ai.github.io/machine-learning-yearning-cn/)) * [ipython-notebooks: A collection of IPython notebooks covering various topics](https://github.com/jdwittenauer/ipython-notebooks) @@ -11,6 +12,8 @@ * [AM207 2016](https://github.com/AM207/2016/tree/master) * [Python机器学习](https://ljalphabeta.gitbooks.io/python-/content/) * [scientific-python-lectures](http://nbviewer.jupyter.org/github/jrjohansson/scientific-python-lectures/tree/master/) +* [卷积神经网络中十大拍案叫绝的操作](https://www.toutiao.com/a6741309250070381070) + ## Python & IPython diff --git a/demo_code/2_logistic_regression_1.py b/demo_code/2_logistic_regression_1.py index cdbd10a..ada3360 100644 --- a/demo_code/2_logistic_regression_1.py +++ b/demo_code/2_logistic_regression_1.py @@ -38,12 +38,13 @@ def logistic_regression(x): # define loss function def binary_loss(y_pred, y): - logits = (y * y_pred.clamp(1e-12).log() + (1 - y) * (1 - y_pred).clamp(1e-12).log()).mean() + logits = (y * y_pred.clamp(1e-12).log() + \ + (1 - y) * (1 - y_pred).clamp(1e-12).log()).mean() return -logits # upgrade parameters eta = 1e-2 -n_epoch = 1000 +n_epoch = 3000 for i in range(n_epoch): y_pred = logistic_regression(x_train) diff --git a/demo_code/2_logistic_regression_2.py b/demo_code/2_logistic_regression_2.py index a045d25..0ce763f 100644 --- a/demo_code/2_logistic_regression_2.py +++ b/demo_code/2_logistic_regression_2.py @@ -10,6 +10,8 @@ from torchvision import datasets """ Use pytorch nn.Module to implement logistic regression + FIXME: too complex, remove complete tips + """ @@ -38,7 +40,7 @@ class Logstic_Regression(nn.Module): self.logstic = nn.Linear(in_dim, n_class) def forward(self, x): - out = self.logstic(x) + out = t.sigmoid(self.logstic(x)) return out diff --git a/requirements.txt b/requirements.txt index aa4300a..4178f9f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,7 +9,11 @@ # sudo apt-get install python-pip python3-pip # pip install pip -U # pip config set global.index-url 'https://mirrors.aliyun.com/pypi/simple/' -# pip config set global.index-url 'https://mirrors.ustc.edu.cn/pypi/web/simple' +# +# or write following to '~/.config/pip/pip.conf' +# [global] +# timeout = 6000 +# index-url = https://mirrors.aliyun.com/pypi/simple/ # #