From bd522fbe3f04dbaeea0a301de66447b428832e85 Mon Sep 17 00:00:00 2001 From: chenyuntc Date: Sat, 27 Jan 2018 16:11:13 +0800 Subject: [PATCH] fix error in tensor --- .../Tensor.ipynb" | 420 ++++++++++-------- 1 file changed, 247 insertions(+), 173 deletions(-) diff --git "a/chapter3-Tensor\345\222\214autograd/Tensor.ipynb" "b/chapter3-Tensor\345\222\214autograd/Tensor.ipynb" index c202db3d..c9de55c8 100644 --- "a/chapter3-Tensor\345\222\214autograd/Tensor.ipynb" +++ "b/chapter3-Tensor\345\222\214autograd/Tensor.ipynb" @@ -19,9 +19,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "# Let's begin\n", @@ -81,8 +79,8 @@ "data": { "text/plain": [ "\n", - "-2.0131e+15 4.5573e-41 1.1429e-36\n", - " 0.0000e+00 4.4842e-44 0.0000e+00\n", + " 3.9054e+11 4.5716e-41 6.8821e-37\n", + " 0.0000e+00 nan 0.0000e+00\n", "[torch.FloatTensor of size 2x3]" ] }, @@ -203,8 +201,8 @@ "data": { "text/plain": [ "(\n", - " -2.0131e+15 4.5573e-41 1.0241e-36\n", - " 0.0000e+00 4.4842e-44 0.0000e+00\n", + " 3.9054e+11 4.5716e-41 1.3050e-37\n", + " 0.0000e+00 3.9054e+11 4.5716e-41\n", " [torch.FloatTensor of size 2x3], \n", " 2\n", " 3\n", @@ -254,30 +252,8 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "\u001b[0;31mType:\u001b[0m property\n", - "\u001b[0;31mString form:\u001b[0m \n", - "\u001b[0;31mSource:\u001b[0m \n", - "\u001b[0;31m# c.shape.fget\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;34m@\u001b[0m\u001b[0mproperty\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m\u001b[0;32mdef\u001b[0m \u001b[0mshape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m\"\"\"Alias for .size()\u001b[0m\n", - "\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m Returns a torch.Size object, containing the dimensions of the tensor\u001b[0m\n", - "\u001b[0;34m \"\"\"\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "metadata": {}, + "outputs": [], "source": [ "c.shape??" ] @@ -394,8 +370,8 @@ "data": { "text/plain": [ "\n", - " 0.8020 0.9395 -2.4781\n", - " 1.3814 0.2889 3.4069\n", + " 0.1337 -0.6652 1.6900\n", + "-0.2076 -0.6162 -0.3764\n", "[torch.FloatTensor of size 2x3]" ] }, @@ -419,11 +395,11 @@ "data": { "text/plain": [ "\n", - " 1\n", - " 2\n", - " 4\n", " 3\n", " 0\n", + " 1\n", + " 4\n", + " 2\n", "[torch.LongTensor of size 5]" ] }, @@ -694,9 +670,9 @@ "data": { "text/plain": [ "\n", - " 0.0000 100.0000 2.0000\n", - " 3.0000 4.0000 5.0000\n", - " 0.0000 0.0000 0.0000\n", + " 0.0000e+00 1.0000e+02 2.0000e+00\n", + " 3.0000e+00 4.0000e+00 5.0000e+00\n", + " 1.5301e-38 0.0000e+00 4.9813e+11\n", "[torch.FloatTensor of size 3x3]" ] }, @@ -728,9 +704,9 @@ "data": { "text/plain": [ "\n", - "-0.1103 0.4096 1.5802 1.1658\n", - " 0.3915 0.5752 0.8781 -0.4837\n", - " 0.4399 0.0309 -2.2749 -1.5515\n", + "-0.2186 -0.8293 -0.1077 -1.7943\n", + " 0.1742 -0.8359 1.2692 -1.2609\n", + " 0.8734 -0.5740 0.4198 0.6129\n", "[torch.FloatTensor of size 3x4]" ] }, @@ -753,10 +729,10 @@ "data": { "text/plain": [ "\n", - "-0.1103\n", - " 0.4096\n", - " 1.5802\n", - " 1.1658\n", + "-0.2186\n", + "-0.8293\n", + "-0.1077\n", + "-1.7943\n", "[torch.FloatTensor of size 4]" ] }, @@ -778,9 +754,9 @@ "data": { "text/plain": [ "\n", - "-0.1103\n", - " 0.3915\n", - " 0.4399\n", + "-0.2186\n", + " 0.1742\n", + " 0.8734\n", "[torch.FloatTensor of size 3]" ] }, @@ -801,7 +777,7 @@ { "data": { "text/plain": [ - "1.5802396535873413" + "-0.10770409554243088" ] }, "execution_count": 29, @@ -821,7 +797,7 @@ { "data": { "text/plain": [ - "1.1657776832580566" + "-1.7942602634429932" ] }, "execution_count": 30, @@ -844,8 +820,8 @@ "data": { "text/plain": [ "\n", - "-0.1103 0.4096 1.5802 1.1658\n", - " 0.3915 0.5752 0.8781 -0.4837\n", + "-0.2186 -0.8293 -0.1077 -1.7943\n", + " 0.1742 -0.8359 1.2692 -1.2609\n", "[torch.FloatTensor of size 2x4]" ] }, @@ -867,8 +843,8 @@ "data": { "text/plain": [ "\n", - "-0.1103 0.4096\n", - " 0.3915 0.5752\n", + "-0.2186 -0.8293\n", + " 0.1742 -0.8359\n", "[torch.FloatTensor of size 2x2]" ] }, @@ -891,12 +867,12 @@ "output_type": "stream", "text": [ "\n", - "-0.1103 0.4096\n", + "-0.2186 -0.8293\n", "[torch.FloatTensor of size 1x2]\n", "\n", "\n", - "-0.1103\n", - " 0.4096\n", + "-0.2186\n", + "-0.8293\n", "[torch.FloatTensor of size 2]\n", "\n" ] @@ -916,8 +892,8 @@ "data": { "text/plain": [ "\n", - " 0 0 1 1\n", " 0 0 0 0\n", + " 0 0 1 0\n", " 0 0 0 0\n", "[torch.ByteTensor of size 3x4]" ] @@ -940,9 +916,8 @@ "data": { "text/plain": [ "\n", - " 1.5802\n", - " 1.1658\n", - "[torch.FloatTensor of size 2]" + " 1.2692\n", + "[torch.FloatTensor of size 1]" ] }, "execution_count": 35, @@ -966,8 +941,8 @@ "data": { "text/plain": [ "\n", - "-0.1103 0.4096 1.5802 1.1658\n", - " 0.3915 0.5752 0.8781 -0.4837\n", + "-0.2186 -0.8293 -0.1077 -1.7943\n", + " 0.1742 -0.8359 1.2692 -1.2609\n", "[torch.FloatTensor of size 2x4]" ] }, @@ -1328,9 +1303,7 @@ { "cell_type": "code", "execution_count": 47, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "# 设置默认tensor,注意参数是字符串\n", @@ -1346,8 +1319,8 @@ "data": { "text/plain": [ "\n", - "-6.5609e+08 3.2522e+04 -6.5609e+08\n", - " 3.2522e+04 3.2000e+01 0.0000e+00\n", + " 1.3876e+09 3.2624e+04 4.4733e+07\n", + " 0.0000e+00 3.2000e+01 0.0000e+00\n", "[torch.IntTensor of size 2x3]" ] }, @@ -1370,8 +1343,8 @@ "data": { "text/plain": [ "\n", - "-6.5609e+08 3.2522e+04 -6.5609e+08\n", - " 3.2522e+04 3.2000e+01 0.0000e+00\n", + " 1.3876e+09 3.2624e+04 4.4733e+07\n", + " 0.0000e+00 3.2000e+01 0.0000e+00\n", "[torch.FloatTensor of size 2x3]" ] }, @@ -1397,8 +1370,8 @@ "data": { "text/plain": [ "\n", - "-6.5609e+08 3.2522e+04 -6.5609e+08\n", - " 3.2522e+04 3.2000e+01 0.0000e+00\n", + " 1.3876e+09 3.2624e+04 4.4733e+07\n", + " 0.0000e+00 3.2000e+01 0.0000e+00\n", "[torch.FloatTensor of size 2x3]" ] }, @@ -1421,8 +1394,8 @@ "data": { "text/plain": [ "\n", - "-6.5609e+08 3.2522e+04 -6.5609e+08\n", - " 3.2522e+04 3.2000e+01 0.0000e+00\n", + " 1.3876e+09 3.2624e+04 1.3876e+09\n", + " 3.2624e+04 3.2000e+01 0.0000e+00\n", "[torch.IntTensor of size 2x3]" ] }, @@ -1439,26 +1412,8 @@ { "cell_type": "code", "execution_count": 52, - "metadata": { - "collapsed": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "\u001b[0;31mSignature:\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnew\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mSource:\u001b[0m \n", - " \u001b[0;32mdef\u001b[0m \u001b[0mnew\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;34m\"\"\"Constructs a new tensor of the same data type.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\n", - "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__class__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mFile:\u001b[0m /usr/local/lib/python3.5/dist-packages/torch/tensor.py\n", - "\u001b[0;31mType:\u001b[0m method\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "metadata": {}, + "outputs": [], "source": [ "# 查看函数new的源码\n", "a.new??" @@ -1467,9 +1422,7 @@ { "cell_type": "code", "execution_count": 53, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "# 恢复之前的默认设置\n", @@ -2057,7 +2010,7 @@ "data": { "text/plain": [ "array([[ 1., 1., 1.],\n", - " [ 1., 1., 1.]])" + " [ 1., 1., 1.]], dtype=float32)" ] }, "execution_count": 72, @@ -2067,7 +2020,7 @@ ], "source": [ "import numpy as np\n", - "a = np.ones([2, 3])\n", + "a = np.ones([2, 3],dtype=np.float32)\n", "a" ] }, @@ -2082,7 +2035,7 @@ "\n", " 1 1 1\n", " 1 1 1\n", - "[torch.DoubleTensor of size 2x3]" + "[torch.FloatTensor of size 2x3]" ] }, "execution_count": 73, @@ -2130,8 +2083,8 @@ "data": { "text/plain": [ "\n", - " 1 1 1\n", - " 1 1 1\n", + " 1 100 1\n", + " 1 1 1\n", "[torch.FloatTensor of size 2x3]" ] }, @@ -2153,8 +2106,8 @@ { "data": { "text/plain": [ - "array([[ 1., 1., 1.],\n", - " [ 1., 1., 1.]], dtype=float32)" + "array([[ 1., 100., 1.],\n", + " [ 1., 1., 1.]], dtype=float32)" ] }, "execution_count": 76, @@ -2167,6 +2120,130 @@ "c" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**注意**: 当numpy的数据类型和Tensor的类型不一样的时候,数据会被复制,不会共享内存。" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1., 1., 1.],\n", + " [ 1., 1., 1.]])" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.ones([2, 3])\n", + "a # 注意和上面的a的区别(dtype不是float32)" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + " 1 1 1\n", + " 1 1 1\n", + "[torch.FloatTensor of size 2x3]" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b = t.Tensor(a) # FloatTensor(double64或者float64)\n", + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + " 1 1 1\n", + " 1 1 1\n", + "[torch.DoubleTensor of size 2x3]" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "c = t.from_numpy(a) # 注意c的类型(DoubleTensor)\n", + "c" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + " 1 1 1\n", + " 1 1 1\n", + "[torch.FloatTensor of size 2x3]" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a[0, 1] = 100\n", + "b # b与a不通向内存,所以即使a改变了,b也不变" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + " 1 100 1\n", + " 1 1 1\n", + "[torch.DoubleTensor of size 2x3]" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "c # c与a共享内存" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -2188,9 +2265,8 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 82, "metadata": { - "collapsed": true, "scrolled": true }, "outputs": [], @@ -2201,7 +2277,7 @@ }, { "cell_type": "code", - "execution_count": 78, + "execution_count": 83, "metadata": { "scrolled": true }, @@ -2222,7 +2298,7 @@ "[torch.FloatTensor of size 2x3x2]" ] }, - "execution_count": 78, + "execution_count": 83, "metadata": {}, "output_type": "execute_result" } @@ -2238,7 +2314,7 @@ }, { "cell_type": "code", - "execution_count": 79, + "execution_count": 84, "metadata": {}, "outputs": [ { @@ -2257,7 +2333,7 @@ "[torch.FloatTensor of size 2x3x2]" ] }, - "execution_count": 79, + "execution_count": 84, "metadata": {}, "output_type": "execute_result" } @@ -2270,7 +2346,7 @@ }, { "cell_type": "code", - "execution_count": 80, + "execution_count": 85, "metadata": {}, "outputs": [], "source": [ @@ -2293,7 +2369,7 @@ }, { "cell_type": "code", - "execution_count": 81, + "execution_count": 86, "metadata": {}, "outputs": [ { @@ -2308,7 +2384,7 @@ "[torch.FloatStorage of size 6]" ] }, - "execution_count": 81, + "execution_count": 86, "metadata": {}, "output_type": "execute_result" } @@ -2320,7 +2396,7 @@ }, { "cell_type": "code", - "execution_count": 82, + "execution_count": 87, "metadata": {}, "outputs": [ { @@ -2335,7 +2411,7 @@ "[torch.FloatStorage of size 6]" ] }, - "execution_count": 82, + "execution_count": 87, "metadata": {}, "output_type": "execute_result" } @@ -2347,7 +2423,7 @@ }, { "cell_type": "code", - "execution_count": 83, + "execution_count": 88, "metadata": {}, "outputs": [ { @@ -2356,7 +2432,7 @@ "True" ] }, - "execution_count": 83, + "execution_count": 88, "metadata": {}, "output_type": "execute_result" } @@ -2369,7 +2445,7 @@ }, { "cell_type": "code", - "execution_count": 84, + "execution_count": 89, "metadata": {}, "outputs": [ { @@ -2381,7 +2457,7 @@ "[torch.FloatTensor of size 2x3]" ] }, - "execution_count": 84, + "execution_count": 89, "metadata": {}, "output_type": "execute_result" } @@ -2394,7 +2470,7 @@ }, { "cell_type": "code", - "execution_count": 85, + "execution_count": 90, "metadata": {}, "outputs": [ { @@ -2409,7 +2485,7 @@ "[torch.FloatStorage of size 6]" ] }, - "execution_count": 85, + "execution_count": 90, "metadata": {}, "output_type": "execute_result" } @@ -2421,16 +2497,16 @@ }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 91, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(42430248, 42430240)" + "(57667976, 57667968)" ] }, - "execution_count": 86, + "execution_count": 91, "metadata": {}, "output_type": "execute_result" } @@ -2442,7 +2518,7 @@ }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 92, "metadata": {}, "outputs": [ { @@ -2458,7 +2534,7 @@ "[torch.FloatTensor of size 6]" ] }, - "execution_count": 87, + "execution_count": 92, "metadata": {}, "output_type": "execute_result" } @@ -2470,7 +2546,7 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 93, "metadata": {}, "outputs": [ { @@ -2482,7 +2558,7 @@ "[torch.FloatTensor of size 2x3]" ] }, - "execution_count": 88, + "execution_count": 93, "metadata": {}, "output_type": "execute_result" } @@ -2495,7 +2571,7 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 94, "metadata": {}, "outputs": [ { @@ -2504,7 +2580,7 @@ "True" ] }, - "execution_count": 89, + "execution_count": 94, "metadata": {}, "output_type": "execute_result" } @@ -2516,7 +2592,7 @@ }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 95, "metadata": {}, "outputs": [ { @@ -2525,7 +2601,7 @@ "(0, 2, 0)" ] }, - "execution_count": 90, + "execution_count": 95, "metadata": {}, "output_type": "execute_result" } @@ -2536,7 +2612,7 @@ }, { "cell_type": "code", - "execution_count": 91, + "execution_count": 96, "metadata": {}, "outputs": [ { @@ -2545,7 +2621,7 @@ "True" ] }, - "execution_count": 91, + "execution_count": 96, "metadata": {}, "output_type": "execute_result" } @@ -2557,7 +2633,7 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 97, "metadata": {}, "outputs": [ { @@ -2566,7 +2642,7 @@ "((3, 1), (6, 2))" ] }, - "execution_count": 92, + "execution_count": 97, "metadata": {}, "output_type": "execute_result" } @@ -2577,7 +2653,7 @@ }, { "cell_type": "code", - "execution_count": 93, + "execution_count": 98, "metadata": {}, "outputs": [ { @@ -2586,7 +2662,7 @@ "False" ] }, - "execution_count": 93, + "execution_count": 98, "metadata": {}, "output_type": "execute_result" } @@ -2622,9 +2698,8 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 99, "metadata": { - "collapsed": true, "scrolled": true }, "outputs": [], @@ -2657,10 +2732,8 @@ }, { "cell_type": "code", - "execution_count": 96, - "metadata": { - "collapsed": true - }, + "execution_count": 100, + "metadata": {}, "outputs": [], "source": [ "def for_loop_add(x, y):\n", @@ -2672,7 +2745,7 @@ }, { "cell_type": "code", - "execution_count": 97, + "execution_count": 101, "metadata": { "scrolled": true }, @@ -2681,8 +2754,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "10 loops, best of 3: 189 µs per loop\n", - "10 loops, best of 3: 5.76 µs per loop\n" + "The slowest run took 9.47 times longer than the fastest. This could mean that an intermediate result is being cached.\n", + "431 µs ± 568 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "4.09 µs ± 2.43 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], @@ -2713,7 +2787,7 @@ }, { "cell_type": "code", - "execution_count": 98, + "execution_count": 102, "metadata": {}, "outputs": [ { @@ -2729,7 +2803,7 @@ "(199999, 199998)" ] }, - "execution_count": 98, + "execution_count": 102, "metadata": {}, "output_type": "execute_result" } @@ -2744,19 +2818,19 @@ }, { "cell_type": "code", - "execution_count": 99, + "execution_count": 103, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\n", - " 0.5813 1.0527 -0.0117\n", - " 0.8768 1.2595 0.0564\n", + " 0.1160 0.2132 0.1519\n", + "-0.3676 0.1190 -0.6283\n", "[torch.FloatTensor of size 2x3]" ] }, - "execution_count": 99, + "execution_count": 103, "metadata": {}, "output_type": "execute_result" } @@ -2768,7 +2842,7 @@ }, { "cell_type": "code", - "execution_count": 100, + "execution_count": 104, "metadata": { "scrolled": false }, @@ -2777,12 +2851,12 @@ "data": { "text/plain": [ "\n", - "0.5813463926 1.0527025461 -0.0117204413\n", - "0.8768243790 1.2595347166 0.0564190336\n", + "0.1159526780 0.2131879330 0.1518567652\n", + "-0.3676123619 0.1190160885 -0.6282560825\n", "[torch.FloatTensor of size 2x3]" ] }, - "execution_count": 100, + "execution_count": 104, "metadata": {}, "output_type": "execute_result" } @@ -2812,7 +2886,7 @@ }, { "cell_type": "code", - "execution_count": 101, + "execution_count": 105, "metadata": {}, "outputs": [], "source": [ @@ -2824,10 +2898,8 @@ }, { "cell_type": "code", - "execution_count": 102, - "metadata": { - "collapsed": true - }, + "execution_count": 106, + "metadata": {}, "outputs": [], "source": [ "# 设置随机数种子,保证在不同电脑上运行时下面的输出一致\n", @@ -2842,24 +2914,24 @@ }, { "cell_type": "code", - "execution_count": 103, + "execution_count": 107, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 103, + "execution_count": 107, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\ndlZ8hp7k5UleOTsNvAs40a/CwK+QlaTlWM2Qy2XAt5I8AHwH+G9V9d/7U1aPXyErSe2teMilqh4D\n3tTHWl7Ar5CVpPZG+rLFtXhSkCRdqEY60P0KWUlqb6S/bdGvkJWk9kY60MGvkJWktkZ6yEWS1J6B\nLkkdYaBLUkcY6JLUEQa6JHVEqmp4G0umgR8sY5VLgVF+eMao1wejX+Oo1wejX+Oo1wejX+Oo1/d3\nq2rJr6sdaqAvV5LJUX6s3ajXB6Nf46jXB6Nf46jXB6Nf46jX15ZDLpLUEQa6JHXEqAf6gbUuYAmj\nXh+Mfo2jXh+Mfo2jXh+Mfo2jXl8rIz2GLklqb9TP0CVJLY1EoCe5MsnJJI8muWGB5S9Ncluz/N4k\nW4dY26uS3JPku0keSnL9An3enuQnSY41rz8aVn1zang8yfFm+5MLLE+Sf9/swweTXD7E2rbN2TfH\nkjyd5CPz+gx9Hya5OcnpJCfmtF2S5K4kjzTvFy+y7rVNn0eSXDvE+vYn+V7zf/ilJBsWWfe8x8OA\na/x4kqk5/5dXLbLueX/uB1jfbXNqezzJsUXWHco+7KuqWtMXsA74PvBa4CXAA8Ab5/X5PeA/NdPX\nALcNsb6NwOXN9CuBv1qgvrcDX17j/fg4cOl5ll8FfBUI8Gbg3jX8//4hvetq13QfAm8DLgdOzGn7\nN8ANzfQNwCcWWO8S4LHm/eJm+uIh1fcu4KJm+hML1dfmeBhwjR8H/kWL4+C8P/eDqm/e8k8Cf7SW\n+7Cfr1E4Q98JPFpVj1XV/wM+D1w9r8/VwMFm+nbgHUkyjOKq6lRV3d9M/xR4GLgQv8/3auAvqufb\nwIYkG9egjncA36+q5dxgNhBV9U3gR/Oa5x5rB4HdC6y6C7irqn5UVT8G7gKuHEZ9VfW1qnqmmf02\nsKXf212ORfZhG21+7lftfPU1GfIbwOf6vd21MgqBvhn433Pmn+CFgflcn+Zg/gnwi0Opbo5mqGcH\ncO8Ci381yQNJvprk7w21sJ4CvpbkviR7FljeZj8PwzUs/gO01vsQ4LKqOtVM/5Dew9DnG5V9+Tv0\n/upayFLHw6B9uBkWunmRYatR2If/AHiqqh5ZZPla78NlG4VAvyAkeQXwReAjVfX0vMX30xtCeBPw\nH4DDw64PeGtVXQ68G/hQkretQQ3nleQlwHuB/7rA4lHYh89Tvb+7R/IysCR/CDwD3LpIl7U8Hj4N\nvA7YDpyiN6wxij7A+c/OR/5nar5RCPQp4FVz5rc0bQv2SXIR8AvA/xlKdb1trqcX5rdW1aH5y6vq\n6ar6WTP9FWB9kkuHVV+z3anm/TTwJXp/0s7VZj8P2ruB+6vqqfkLRmEfNp6aHYpq3k8v0GdN92WS\n3wbeA/xm80vnBVocDwNTVU9V1bmqehb4zCLbXut9eBHwj4HbFuuzlvtwpUYh0P8n8Pokr2nO4K4B\n7pzX505g9kqC9wNfX+xA7rdmnO0m4OGq+tQiff7O7Jh+kp309uswf+G8PMkrZ6fpfXB2Yl63O4F/\n2lzt8mbgJ3OGFoZl0TOitd6Hc8w91q4F7ligzxHgXUkuboYT3tW0DVySK4GPAu+tqv+7SJ82x8Mg\na5z72cz7Ftl2m5/7Qfo14HtV9cRCC9d6H67YWn8q2+TyVfSuHvk+8IdN27+id9ACvIzen+mPAt8B\nXjvE2t5K78/uB4Fjzesq4IPAB5s+HwYeovdJ/beBvz/k/ffaZtsPNHXM7sO5NQb4j80+Pg5MDLnG\nl9ML6F+Y07am+5DeL5dTwFl6Y7jX0fts5m7gEeB/AJc0fSeAz85Z93ea4/FR4J8Nsb5H6Y09zx6L\ns1d/bQK+cr7jYYg1/ufmGHuQXkhvnF9jM/+Cn/th1Ne03zJ77M3puyb7sJ8v7xSVpI4YhSEXSVIf\nGOiS1BEGuiR1hIEuSR1hoEtSRxjoktQRBrokdYSBLkkd8f8Bz/vgV2nenfEAAAAASUVORK5CYII=\n", + "image/png": "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\noDlpAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2874,14 +2946,16 @@ }, { "cell_type": "code", - "execution_count": 104, - "metadata": {}, + "execution_count": 108, + "metadata": { + "scrolled": false + }, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\nFxGJE/8PgbHcXU2xP2wAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2891,7 +2965,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "2.0185186862945557 3.03572154045105\n" + "1.9918574094772339 2.9549660682678223\n" ] } ],