From 7890235bffb16e56e469d02ff777734ddca80662 Mon Sep 17 00:00:00 2001 From: anxieuse Date: Sun, 24 Jul 2022 19:48:48 +0300 Subject: [PATCH] Clear output. --- .../22-DeepRL/CartPole-RL-Pytorch.ipynb | 272 ++---------------- 1 file changed, 22 insertions(+), 250 deletions(-) diff --git a/lessons/6-Other/22-DeepRL/CartPole-RL-Pytorch.ipynb b/lessons/6-Other/22-DeepRL/CartPole-RL-Pytorch.ipynb index 5cdf7305..f574cd45 100644 --- a/lessons/6-Other/22-DeepRL/CartPole-RL-Pytorch.ipynb +++ b/lessons/6-Other/22-DeepRL/CartPole-RL-Pytorch.ipynb @@ -17,21 +17,9 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Defaulting to user installation because normal site-packages is not writeable\n", - "Requirement already satisfied: gym in /home/leo/.local/lib/python3.10/site-packages (0.25.0)\n", - "Requirement already satisfied: gym-notices>=0.0.4 in /home/leo/.local/lib/python3.10/site-packages (from gym) (0.0.7)\n", - "Requirement already satisfied: numpy>=1.18.0 in /usr/lib/python3/dist-packages (from gym) (1.21.5)\n", - "Requirement already satisfied: cloudpickle>=1.2.0 in /home/leo/.local/lib/python3.10/site-packages (from gym) (2.1.0)\n" - ] - } - ], + "outputs": [], "source": [ "import sys\n", "!{sys.executable} -m pip install gym" @@ -49,28 +37,9 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Action space: Discrete(2)\n", - "Observation space: Box([-4.8000002e+00 -3.4028235e+38 -4.1887903e-01 -3.4028235e+38], [4.8000002e+00 3.4028235e+38 4.1887903e-01 3.4028235e+38], (4,), float32)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/leo/.local/lib/python3.10/site-packages/gym/core.py:329: DeprecationWarning: \u001b[33mWARN: Initializing wrapper in old step API which returns one bool instead of two. It is recommended to set `new_step_api=True` to use new step API. This will be the default behaviour in future.\u001b[0m\n", - " deprecation(\n", - "/home/leo/.local/lib/python3.10/site-packages/gym/wrappers/step_api_compatibility.py:39: DeprecationWarning: \u001b[33mWARN: Initializing environment in old step API which returns one bool instead of two. It is recommended to set `new_step_api=True` to use new step API. This will be the default behaviour in future.\u001b[0m\n", - " deprecation(\n" - ] - } - ], + "outputs": [], "source": [ "import gym\n", "\n", @@ -91,57 +60,9 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/leo/.local/lib/python3.10/site-packages/gym/core.py:57: DeprecationWarning: \u001b[33mWARN: You are calling render method, but you didn't specified the argument render_mode at environment initialization. To maintain backward compatibility, the environment will render in human mode.\n", - "If you want to render in human mode, initialize the environment in this way: gym.make('EnvName', render_mode='human') and don't call the render method.\n", - "See here for more information: https://www.gymlibrary.ml/content/api/\u001b[0m\n", - " deprecation(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[-0.03742469 0.21191828 -0.01393784 -0.2686444 ] -> 1.0\n", - "[-0.03318632 0.40723634 -0.01931073 -0.56569064] -> 1.0\n", - "[-0.02504159 0.21239054 -0.03062454 -0.2791534 ] -> 1.0\n", - "[-0.02079378 0.01771855 -0.03620761 0.00371545] -> 1.0\n", - "[-0.02043941 -0.17686592 -0.0361333 0.28475815] -> 1.0\n", - "[-0.02397673 -0.3714544 -0.03043814 0.56582946] -> 1.0\n", - "[-0.03140582 -0.17591895 -0.01912155 0.2637147 ] -> 1.0\n", - "[-0.0349242 0.01947064 -0.01384726 -0.03493749] -> 1.0\n", - "[-0.03453479 0.2147884 -0.01454601 -0.331957 ] -> 1.0\n", - "[-0.03023902 0.01987648 -0.02118515 -0.04389644] -> 1.0\n", - "[-0.02984149 0.21529572 -0.02206307 -0.34318748] -> 1.0\n", - "[-0.02553557 0.4107245 -0.02892683 -0.6427453 ] -> 1.0\n", - "[-0.01732108 0.21601741 -0.04178173 -0.35931018] -> 1.0\n", - "[-0.01300073 0.41170764 -0.04896794 -0.6648696 ] -> 1.0\n", - "[-0.00476658 0.2172998 -0.06226533 -0.38799822] -> 1.0\n", - "[-4.2058565e-04 4.1324776e-01 -7.0025288e-02 -6.9964474e-01] -> 1.0\n", - "[ 0.00784437 0.21916293 -0.08401819 -0.42980158] -> 1.0\n", - "[ 0.01222763 0.41536793 -0.09261422 -0.74774325] -> 1.0\n", - "[ 0.02053499 0.22163741 -0.10756908 -0.4855825 ] -> 1.0\n", - "[ 0.02496774 0.02818474 -0.11728073 -0.2286451 ] -> 1.0\n", - "[ 0.02553143 -0.16508296 -0.12185363 0.02486342] -> 1.0\n", - "[ 0.02222977 0.03155665 -0.12135637 -0.30364525] -> 1.0\n", - "[ 0.0228609 0.22818024 -0.12742928 -0.6320028 ] -> 1.0\n", - "[ 0.02742451 0.03504482 -0.14006932 -0.38201147] -> 1.0\n", - "[ 0.02812541 -0.1578393 -0.14770955 -0.13656472] -> 1.0\n", - "[ 0.02496862 0.03905562 -0.15044086 -0.47195992] -> 1.0\n", - "[ 0.02574973 0.23594654 -0.15988004 -0.80802345] -> 1.0\n", - "[ 0.03046866 0.43285596 -0.17604052 -1.1464254 ] -> 1.0\n", - "[ 0.03912578 0.24041417 -0.19896902 -0.913713 ] -> 1.0\n", - "[ 0.04393407 0.43759024 -0.21724328 -1.2617537 ] -> 1.0\n", - "Total reward: 30.0\n" - ] - } - ], + "outputs": [], "source": [ "env.reset()\n", "\n", @@ -178,7 +99,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -206,7 +127,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -238,17 +159,9 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Total reward: 35.0\n" - ] - } - ], + "outputs": [], "source": [ "s, a, p, r = run_episode()\n", "print(f\"Total reward: {np.sum(r)}\")" @@ -263,7 +176,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -295,7 +208,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -314,41 +227,9 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 -> 12.0\n", - "100 -> 117.0\n", - "200 -> 499.0\n" - ] - }, - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "alpha = 1e-4\n", "\n", @@ -377,20 +258,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/leo/.local/lib/python3.10/site-packages/gym/core.py:57: DeprecationWarning: \u001b[33mWARN: You are calling render method, but you didn't specified the argument render_mode at environment initialization. To maintain backward compatibility, the environment will render in human mode.\n", - "If you want to render in human mode, initialize the environment in this way: gym.make('EnvName', render_mode='human') and don't call the render method.\n", - "See here for more information: https://www.gymlibrary.ml/content/api/\u001b[0m\n", - " deprecation(\n" - ] - } - ], + "outputs": [], "source": [ "_ = run_episode(render=True)" ] @@ -412,7 +282,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -422,20 +292,9 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/leo/.local/lib/python3.10/site-packages/gym/core.py:329: DeprecationWarning: \u001b[33mWARN: Initializing wrapper in old step API which returns one bool instead of two. It is recommended to set `new_step_api=True` to use new step API. This will be the default behaviour in future.\u001b[0m\n", - " deprecation(\n", - "/home/leo/.local/lib/python3.10/site-packages/gym/wrappers/step_api_compatibility.py:39: DeprecationWarning: \u001b[33mWARN: Initializing environment in old step API which returns one bool instead of two. It is recommended to set `new_step_api=True` to use new step API. This will be the default behaviour in future.\u001b[0m\n", - " deprecation(\n" - ] - } - ], + "outputs": [], "source": [ "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", "env = gym.make(\"CartPole-v1\")\n", @@ -486,7 +345,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -563,96 +422,9 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Iteration: 0, Score: 31\n", - "Iteration: 1, Score: 17\n", - "Iteration: 2, Score: 11\n", - "Iteration: 3, Score: 11\n", - "Iteration: 4, Score: 13\n", - "Iteration: 5, Score: 23\n", - "Iteration: 6, Score: 13\n", - "Iteration: 7, Score: 16\n", - "Iteration: 8, Score: 17\n", - "Iteration: 9, Score: 10\n", - "Iteration: 10, Score: 34\n", - "Iteration: 11, Score: 16\n", - "Iteration: 12, Score: 17\n", - "Iteration: 13, Score: 26\n", - "Iteration: 14, Score: 15\n", - "Iteration: 15, Score: 15\n", - "Iteration: 16, Score: 16\n", - "Iteration: 17, Score: 14\n", - "Iteration: 18, Score: 29\n", - "Iteration: 19, Score: 16\n", - "Iteration: 20, Score: 19\n", - "Iteration: 21, Score: 20\n", - "Iteration: 22, Score: 20\n", - "Iteration: 23, Score: 26\n", - "Iteration: 24, Score: 10\n", - "Iteration: 25, Score: 16\n", - "Iteration: 26, Score: 39\n", - "Iteration: 27, Score: 16\n", - "Iteration: 28, Score: 36\n", - "Iteration: 29, Score: 15\n", - "Iteration: 30, Score: 9\n", - "Iteration: 31, Score: 24\n", - "Iteration: 32, Score: 11\n", - "Iteration: 33, Score: 26\n", - "Iteration: 34, Score: 12\n", - "Iteration: 35, Score: 20\n", - "Iteration: 36, Score: 14\n", - "Iteration: 37, Score: 36\n", - "Iteration: 38, Score: 19\n", - "Iteration: 39, Score: 27\n", - "Iteration: 40, Score: 27\n", - "Iteration: 41, Score: 19\n", - "Iteration: 42, Score: 14\n", - "Iteration: 43, Score: 23\n", - "Iteration: 44, Score: 14\n", - "Iteration: 45, Score: 39\n", - "Iteration: 46, Score: 25\n", - "Iteration: 47, Score: 24\n", - "Iteration: 48, Score: 62\n", - "Iteration: 49, Score: 144\n", - "Iteration: 50, Score: 60\n", - "Iteration: 51, Score: 11\n", - "Iteration: 52, Score: 21\n", - "Iteration: 53, Score: 33\n", - "Iteration: 54, Score: 30\n", - "Iteration: 55, Score: 64\n", - "Iteration: 56, Score: 30\n", - "Iteration: 57, Score: 14\n", - "Iteration: 58, Score: 50\n", - "Iteration: 59, Score: 42\n", - "Iteration: 60, Score: 15\n", - "Iteration: 61, Score: 56\n", - "Iteration: 62, Score: 24\n", - "Iteration: 63, Score: 31\n", - "Iteration: 64, Score: 60\n", - "Iteration: 65, Score: 38\n", - "Iteration: 66, Score: 43\n", - "Iteration: 67, Score: 31\n", - "Iteration: 68, Score: 68\n", - "Iteration: 69, Score: 26\n", - "Iteration: 70, Score: 110\n", - "Iteration: 71, Score: 14\n", - "Iteration: 72, Score: 57\n", - "Iteration: 73, Score: 45\n", - "Iteration: 74, Score: 17\n", - "Iteration: 75, Score: 22\n", - "Iteration: 76, Score: 71\n", - "Iteration: 77, Score: 54\n", - "Iteration: 78, Score: 54\n", - "Iteration: 79, Score: 46\n" - ] - } - ], + "outputs": [], "source": [ "\n", "actor = Actor(state_size, action_size).to(device)\n",