From 057fd9fe59ebd2cbc5fad59c0da6881f0c674a0c Mon Sep 17 00:00:00 2001 From: Benyahia Mohammed Oussama <mohammed.benyahia@etu.ec-lyon.fr> Date: Wed, 26 Feb 2025 15:26:15 +0000 Subject: [PATCH] Replace a2c_sb3_cartpole.ipynb --- a2c_sb3_cartpole.ipynb | 29108 +++++++++++++++++++++++++++++++-------- 1 file changed, 23053 insertions(+), 6055 deletions(-) diff --git a/a2c_sb3_cartpole.ipynb b/a2c_sb3_cartpole.ipynb index d86d8d9..c14c3fe 100644 --- a/a2c_sb3_cartpole.ipynb +++ b/a2c_sb3_cartpole.ipynb @@ -1,6456 +1,23454 @@ { + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "a9046086ab104ad19085b9fe91797e36": { + "model_module": "@jupyter-widgets/controls", + "model_name": "VBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [], + "layout": "IPY_MODEL_ab0f8641ef2e47b6ada23a3197b29bdc" + } + }, + "700cf055d755454e8e3a514486c945e9": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_6047961d9cbf4e90a8b342dae97ccbb7", + "placeholder": "", + "style": "IPY_MODEL_ca1f49a4b5dd41399d3f1133c367eab1", + "value": "<center> <img\nsrc=https://huggingface.co/front/assets/huggingface_logo-noborder.svg\nalt='Hugging Face'> <br> Copy a token from <a\nhref=\"https://huggingface.co/settings/tokens\" target=\"_blank\">your Hugging Face\ntokens page</a> and paste it below. <br> Immediately click login after copying\nyour token or it might be stored in plain text in this notebook file. </center>" + } + }, + "298989225cd04e4c9273d3d57c3f8577": { + "model_module": "@jupyter-widgets/controls", + "model_name": "PasswordModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "PasswordModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "PasswordView", + "continuous_update": true, + "description": "Token:", + "description_tooltip": null, + "disabled": false, + "layout": "IPY_MODEL_0f3330b587364ddb8185244b3cc8e302", + "placeholder": "", + "style": "IPY_MODEL_e2a14cac37924445890727e1bb99f5da", + "value": "" + } + }, + "8ea627d85bcb4948bc27b5d83296f967": { + "model_module": "@jupyter-widgets/controls", + "model_name": "CheckboxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "CheckboxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "CheckboxView", + "description": "Add token as git credential?", + "description_tooltip": null, + "disabled": false, + "indent": true, + "layout": "IPY_MODEL_a880a16471de4055bf3fca0f0a927131", + "style": "IPY_MODEL_b5db27274d8c4f50bfcd343813e292e6", + "value": true + } + }, + "40e3f08692c34f9e9f6ff74e7d246d93": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ButtonModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ButtonView", + "button_style": "", + "description": "Login", + "disabled": false, + "icon": "", + "layout": "IPY_MODEL_52f7c233d0284066a29dd45ac2e9ca55", + "style": "IPY_MODEL_1dd9cf2b47d64b928b346406c83bea40", + "tooltip": "" + } + }, + "522db5f67c6040538f2ba2ac24ab1546": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_781969fcfc19418d9a3a8ba92c4b9f20", + "placeholder": "", + "style": "IPY_MODEL_207341f7cd094f5ab882a733ff055742", + "value": "\n<b>Pro Tip:</b> If you don't already have one, you can create a dedicated\n'notebooks' token with 'write' access, that you can then easily reuse for all\nnotebooks. </center>" + } + }, + "ab0f8641ef2e47b6ada23a3197b29bdc": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": "center", + "align_self": null, + "border": null, + "bottom": null, + "display": "flex", + "flex": null, + "flex_flow": "column", + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "50%" + } + }, + "6047961d9cbf4e90a8b342dae97ccbb7": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ca1f49a4b5dd41399d3f1133c367eab1": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "0f3330b587364ddb8185244b3cc8e302": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e2a14cac37924445890727e1bb99f5da": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "a880a16471de4055bf3fca0f0a927131": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b5db27274d8c4f50bfcd343813e292e6": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "52f7c233d0284066a29dd45ac2e9ca55": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1dd9cf2b47d64b928b346406c83bea40": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ButtonStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "button_color": null, + "font_weight": "" + } + }, + "781969fcfc19418d9a3a8ba92c4b9f20": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "207341f7cd094f5ab882a733ff055742": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "84265be849b24979bb5977dc4c89aad7": { + "model_module": "@jupyter-widgets/controls", + "model_name": "LabelModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "LabelModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "LabelView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_40a53988f49247359d0a72f079f78da2", + "placeholder": "", + "style": "IPY_MODEL_13bf4b6de6ff4a78943d3b713a88461b", + "value": "Connecting..." + } + }, + "40a53988f49247359d0a72f079f78da2": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "13bf4b6de6ff4a78943d3b713a88461b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "c78c5ec0063b416289dce2fe89e9b0ad": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_7fd552a5e11744049800633bae0113eb", + "IPY_MODEL_ee4ec4e591294599a359719edbd8e683", + "IPY_MODEL_619f5cf36b8045728c25441e5dbcd87e" + ], + "layout": "IPY_MODEL_39cd3e39b77544e784129cf10345b7d1" + } + }, + "7fd552a5e11744049800633bae0113eb": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4c6da74c843748b9b72512619a2b8ff2", + "placeholder": "", + "style": "IPY_MODEL_c3560a282d7947b0a0fc8c8859be2b4c", + "value": "policy.optimizer.pth: 100%" + } + }, + "ee4ec4e591294599a359719edbd8e683": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_eef69609139c477f88dcf0c72f485493", + "max": 49224, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_5b56561bb7e4406dbfc1765ebf073c8d", + "value": 49224 + } + }, + "619f5cf36b8045728c25441e5dbcd87e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_283a3a4a6ad34970b1f9354cfc061fe8", + "placeholder": "", + "style": "IPY_MODEL_418ee5dd7b8b4a5c80f723c26994020c", + "value": " 49.2k/49.2k [00:00<00:00, 77.3kB/s]" + } + }, + "39cd3e39b77544e784129cf10345b7d1": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4c6da74c843748b9b72512619a2b8ff2": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c3560a282d7947b0a0fc8c8859be2b4c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "eef69609139c477f88dcf0c72f485493": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5b56561bb7e4406dbfc1765ebf073c8d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "283a3a4a6ad34970b1f9354cfc061fe8": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "418ee5dd7b8b4a5c80f723c26994020c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "adbdabe296864d4bb49cd7bf8a6eaa81": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_2ca21c3b56de4cdfbabf69e62f2c5b5d", + "IPY_MODEL_4122230c2ca94b98b392556b403ea576", + "IPY_MODEL_75aac76a1e3443d38b045f75e8229d04" + ], + "layout": "IPY_MODEL_45e2d80723ac44a88112c71c1b44d324" + } + }, + "2ca21c3b56de4cdfbabf69e62f2c5b5d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_10dd75ccb3ce49c7a9d430d427adebd8", + "placeholder": "", + "style": "IPY_MODEL_88092a58a99b430ca62a488e5f5378b5", + "value": "Upload 3 LFS files: 100%" + } + }, + "4122230c2ca94b98b392556b403ea576": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_38f181cc724a4771b977da55d73fad3a", + "max": 3, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c4e56a18ccdc42c8bd2f3837f69dec0c", + "value": 3 + } + }, + "75aac76a1e3443d38b045f75e8229d04": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0b740bf50fa643898ef910e59c3975cd", + "placeholder": "", + "style": "IPY_MODEL_543cae745d054c6ea92d37575a92b556", + "value": " 3/3 [00:00<00:00, 2.49it/s]" + } + }, + "45e2d80723ac44a88112c71c1b44d324": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "10dd75ccb3ce49c7a9d430d427adebd8": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "88092a58a99b430ca62a488e5f5378b5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "38f181cc724a4771b977da55d73fad3a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c4e56a18ccdc42c8bd2f3837f69dec0c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "0b740bf50fa643898ef910e59c3975cd": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "543cae745d054c6ea92d37575a92b556": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "af001b75d30f48c7a5a02293afa17ba5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_8a7ed8d444d14ff2bda905fba1e6f2c0", + "IPY_MODEL_b07139fd2f8b470a940d9f07afdaa0f9", + "IPY_MODEL_5c6278e79f274f2e96a1e2e323b61b17" + ], + "layout": "IPY_MODEL_3c75e898bfdb45329da491debd7804a6" + } + }, + "8a7ed8d444d14ff2bda905fba1e6f2c0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d36d8e3f912e46cbae23854960e6e43e", + "placeholder": "", + "style": "IPY_MODEL_71b3536b80c64ae59f9b32ad865d6e55", + "value": "policy.pth: 100%" + } + }, + "b07139fd2f8b470a940d9f07afdaa0f9": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_2be2284cce3b462192b40b5ce90b98a8", + "max": 47343, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_6f5334bfb2404cb89c5ce0479592a454", + "value": 47343 + } + }, + "5c6278e79f274f2e96a1e2e323b61b17": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_12d43c87ba1d484d900c33a50c398391", + "placeholder": "", + "style": "IPY_MODEL_f6b77041e8054281acf81d3cd6809d84", + "value": " 47.3k/47.3k [00:00<00:00, 65.7kB/s]" + } + }, + "3c75e898bfdb45329da491debd7804a6": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d36d8e3f912e46cbae23854960e6e43e": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "71b3536b80c64ae59f9b32ad865d6e55": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "2be2284cce3b462192b40b5ce90b98a8": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6f5334bfb2404cb89c5ce0479592a454": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "12d43c87ba1d484d900c33a50c398391": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f6b77041e8054281acf81d3cd6809d84": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "fc348c31afbf470a84acde08f7f4142c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_4112157198ea406bb57cddbcef95e55d", + "IPY_MODEL_8296fa13df80418ab2d12b4856f564c8", + "IPY_MODEL_a8937b021ecb421986877e2d852516c0" + ], + "layout": "IPY_MODEL_08c8924685c648f9aa0b78b86e1af506" + } + }, + "4112157198ea406bb57cddbcef95e55d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_452d21dd58bd4b1396ec5f7e78ebed31", + "placeholder": "", + "style": "IPY_MODEL_2e7a1e4df0e243329d7abe148a54ad27", + "value": "a2c-panda-reach.zip: 100%" + } + }, + "8296fa13df80418ab2d12b4856f564c8": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9f7e7d0bb83c4ae08bb1dc907a6c66dd", + "max": 113710, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_30208c255d674ae3b908e538406f82ee", + "value": 113710 + } + }, + "a8937b021ecb421986877e2d852516c0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_04b3bb74aa08413cb5b4225a2f21bca7", + "placeholder": "", + "style": "IPY_MODEL_96818b1f5fd546868d830b0bc1610a9c", + "value": " 114k/114k [00:00<00:00, 89.4kB/s]" + } + }, + "08c8924685c648f9aa0b78b86e1af506": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "452d21dd58bd4b1396ec5f7e78ebed31": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2e7a1e4df0e243329d7abe148a54ad27": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9f7e7d0bb83c4ae08bb1dc907a6c66dd": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "30208c255d674ae3b908e538406f82ee": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "04b3bb74aa08413cb5b4225a2f21bca7": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "96818b1f5fd546868d830b0bc1610a9c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + } + } + } + }, "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "2nCK-hBUz1ho", + "outputId": "b3226991-5b8b-49da-bc3b-14c29756d0d9" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting panda-gym==3.0.7\n", + " Downloading panda_gym-3.0.7-py3-none-any.whl.metadata (4.3 kB)\n", + "Collecting stable-baselines3\n", + " Downloading stable_baselines3-2.5.0-py3-none-any.whl.metadata (4.8 kB)\n", + "Requirement already satisfied: wandb in /usr/local/lib/python3.11/dist-packages (0.19.6)\n", + "Collecting huggingface_sb3\n", + " Downloading huggingface_sb3-3.0-py3-none-any.whl.metadata (6.3 kB)\n", + "Requirement already satisfied: gymnasium>=0.26 in /usr/local/lib/python3.11/dist-packages (from panda-gym==3.0.7) (1.0.0)\n", + "Collecting pybullet (from panda-gym==3.0.7)\n", + " Downloading pybullet-3.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (1.8 kB)\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.11/dist-packages (from panda-gym==3.0.7) (1.26.4)\n", + "Requirement already satisfied: scipy in /usr/local/lib/python3.11/dist-packages (from panda-gym==3.0.7) (1.13.1)\n", + "Requirement already satisfied: torch<3.0,>=2.3 in /usr/local/lib/python3.11/dist-packages (from stable-baselines3) (2.5.1+cu124)\n", + "Requirement already satisfied: cloudpickle in /usr/local/lib/python3.11/dist-packages (from stable-baselines3) (3.1.1)\n", + "Requirement already satisfied: pandas in /usr/local/lib/python3.11/dist-packages (from stable-baselines3) (2.2.2)\n", + "Requirement already satisfied: matplotlib in /usr/local/lib/python3.11/dist-packages (from stable-baselines3) (3.10.0)\n", + "Requirement already satisfied: click!=8.0.0,>=7.1 in /usr/local/lib/python3.11/dist-packages (from wandb) (8.1.8)\n", + "Requirement already satisfied: docker-pycreds>=0.4.0 in /usr/local/lib/python3.11/dist-packages (from wandb) (0.4.0)\n", + "Requirement already satisfied: gitpython!=3.1.29,>=1.0.0 in /usr/local/lib/python3.11/dist-packages (from wandb) (3.1.44)\n", + "Requirement already satisfied: platformdirs in /usr/local/lib/python3.11/dist-packages (from wandb) (4.3.6)\n", + "Requirement already satisfied: protobuf!=4.21.0,!=5.28.0,<6,>=3.19.0 in /usr/local/lib/python3.11/dist-packages (from wandb) (4.25.6)\n", + "Requirement already satisfied: psutil>=5.0.0 in /usr/local/lib/python3.11/dist-packages (from wandb) (5.9.5)\n", + "Requirement already satisfied: pydantic<3,>=2.6 in /usr/local/lib/python3.11/dist-packages (from wandb) (2.10.6)\n", + "Requirement already satisfied: pyyaml in /usr/local/lib/python3.11/dist-packages (from wandb) (6.0.2)\n", + "Requirement already satisfied: requests<3,>=2.0.0 in /usr/local/lib/python3.11/dist-packages (from wandb) (2.32.3)\n", + "Requirement already satisfied: sentry-sdk>=2.0.0 in /usr/local/lib/python3.11/dist-packages (from wandb) (2.22.0)\n", + "Requirement already satisfied: setproctitle in /usr/local/lib/python3.11/dist-packages (from wandb) (1.3.4)\n", + "Requirement already satisfied: setuptools in /usr/local/lib/python3.11/dist-packages (from wandb) (75.1.0)\n", + "Requirement already satisfied: typing-extensions<5,>=4.4 in /usr/local/lib/python3.11/dist-packages (from wandb) (4.12.2)\n", + "Requirement already satisfied: huggingface-hub~=0.8 in /usr/local/lib/python3.11/dist-packages (from huggingface_sb3) (0.28.1)\n", + "Requirement already satisfied: wasabi in /usr/local/lib/python3.11/dist-packages (from huggingface_sb3) (1.1.3)\n", + "Requirement already satisfied: six>=1.4.0 in /usr/local/lib/python3.11/dist-packages (from docker-pycreds>=0.4.0->wandb) (1.17.0)\n", + "Requirement already satisfied: gitdb<5,>=4.0.1 in /usr/local/lib/python3.11/dist-packages (from gitpython!=3.1.29,>=1.0.0->wandb) (4.0.12)\n", + "Requirement already satisfied: farama-notifications>=0.0.1 in /usr/local/lib/python3.11/dist-packages (from gymnasium>=0.26->panda-gym==3.0.7) (0.0.4)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.11/dist-packages (from huggingface-hub~=0.8->huggingface_sb3) (3.17.0)\n", + "Requirement already satisfied: fsspec>=2023.5.0 in /usr/local/lib/python3.11/dist-packages (from huggingface-hub~=0.8->huggingface_sb3) (2024.10.0)\n", + "Requirement already satisfied: packaging>=20.9 in /usr/local/lib/python3.11/dist-packages (from huggingface-hub~=0.8->huggingface_sb3) (24.2)\n", + "Requirement already satisfied: tqdm>=4.42.1 in /usr/local/lib/python3.11/dist-packages (from huggingface-hub~=0.8->huggingface_sb3) (4.67.1)\n", + "Requirement already satisfied: annotated-types>=0.6.0 in /usr/local/lib/python3.11/dist-packages (from pydantic<3,>=2.6->wandb) (0.7.0)\n", + "Requirement already satisfied: pydantic-core==2.27.2 in /usr/local/lib/python3.11/dist-packages (from pydantic<3,>=2.6->wandb) (2.27.2)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2.0.0->wandb) (3.4.1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2.0.0->wandb) (3.10)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2.0.0->wandb) (2.3.0)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2.0.0->wandb) (2025.1.31)\n", + "Requirement already satisfied: networkx in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (3.4.2)\n", + "Requirement already satisfied: jinja2 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (3.1.5)\n", + "Collecting nvidia-cuda-nvrtc-cu12==12.4.127 (from torch<3.0,>=2.3->stable-baselines3)\n", + " Downloading nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n", + "Collecting nvidia-cuda-runtime-cu12==12.4.127 (from torch<3.0,>=2.3->stable-baselines3)\n", + " Downloading nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n", + "Collecting nvidia-cuda-cupti-cu12==12.4.127 (from torch<3.0,>=2.3->stable-baselines3)\n", + " Downloading nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n", + "Collecting nvidia-cudnn-cu12==9.1.0.70 (from torch<3.0,>=2.3->stable-baselines3)\n", + " Downloading nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n", + "Collecting nvidia-cublas-cu12==12.4.5.8 (from torch<3.0,>=2.3->stable-baselines3)\n", + " Downloading nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n", + "Collecting nvidia-cufft-cu12==11.2.1.3 (from torch<3.0,>=2.3->stable-baselines3)\n", + " Downloading nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n", + "Collecting nvidia-curand-cu12==10.3.5.147 (from torch<3.0,>=2.3->stable-baselines3)\n", + " Downloading nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n", + "Collecting nvidia-cusolver-cu12==11.6.1.9 (from torch<3.0,>=2.3->stable-baselines3)\n", + " Downloading nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n", + "Collecting nvidia-cusparse-cu12==12.3.1.170 (from torch<3.0,>=2.3->stable-baselines3)\n", + " Downloading nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n", + "Requirement already satisfied: nvidia-nccl-cu12==2.21.5 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (2.21.5)\n", + "Requirement already satisfied: nvidia-nvtx-cu12==12.4.127 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (12.4.127)\n", + "Collecting nvidia-nvjitlink-cu12==12.4.127 (from torch<3.0,>=2.3->stable-baselines3)\n", + " Downloading nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n", + "Requirement already satisfied: triton==3.1.0 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (3.1.0)\n", + "Requirement already satisfied: sympy==1.13.1 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (1.13.1)\n", + "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.11/dist-packages (from sympy==1.13.1->torch<3.0,>=2.3->stable-baselines3) (1.3.0)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (1.3.1)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (4.56.0)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (1.4.8)\n", + "Requirement already satisfied: pillow>=8 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (11.1.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (3.2.1)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas->stable-baselines3) (2025.1)\n", + "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas->stable-baselines3) (2025.1)\n", + "Requirement already satisfied: smmap<6,>=3.0.1 in /usr/local/lib/python3.11/dist-packages (from gitdb<5,>=4.0.1->gitpython!=3.1.29,>=1.0.0->wandb) (5.0.2)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.11/dist-packages (from jinja2->torch<3.0,>=2.3->stable-baselines3) (3.0.2)\n", + "Downloading panda_gym-3.0.7-py3-none-any.whl (23 kB)\n", + "Downloading stable_baselines3-2.5.0-py3-none-any.whl (183 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m183.9/183.9 kB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading huggingface_sb3-3.0-py3-none-any.whl (9.7 kB)\n", + "Downloading nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl (363.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m363.4/363.4 MB\u001b[0m \u001b[31m3.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (13.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.8/13.8 MB\u001b[0m \u001b[31m53.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (24.6 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m24.6/24.6 MB\u001b[0m \u001b[31m42.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (883 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m883.7/883.7 kB\u001b[0m \u001b[31m24.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl (664.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m664.8/664.8 MB\u001b[0m \u001b[31m2.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl (211.5 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m211.5/211.5 MB\u001b[0m \u001b[31m4.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl (56.3 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.3/56.3 MB\u001b[0m \u001b[31m13.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl (127.9 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m127.9/127.9 MB\u001b[0m \u001b[31m7.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl (207.5 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m207.5/207.5 MB\u001b[0m \u001b[31m5.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (21.1 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.1/21.1 MB\u001b[0m \u001b[31m61.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading pybullet-3.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (103.2 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m103.2/103.2 MB\u001b[0m \u001b[31m7.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hInstalling collected packages: pybullet, nvidia-nvjitlink-cu12, nvidia-curand-cu12, nvidia-cufft-cu12, nvidia-cuda-runtime-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-cupti-cu12, nvidia-cublas-cu12, panda-gym, nvidia-cusparse-cu12, nvidia-cudnn-cu12, nvidia-cusolver-cu12, huggingface_sb3, stable-baselines3\n", + " Attempting uninstall: nvidia-nvjitlink-cu12\n", + " Found existing installation: nvidia-nvjitlink-cu12 12.5.82\n", + " Uninstalling nvidia-nvjitlink-cu12-12.5.82:\n", + " Successfully uninstalled nvidia-nvjitlink-cu12-12.5.82\n", + " Attempting uninstall: nvidia-curand-cu12\n", + " Found existing installation: nvidia-curand-cu12 10.3.6.82\n", + " Uninstalling nvidia-curand-cu12-10.3.6.82:\n", + " Successfully uninstalled nvidia-curand-cu12-10.3.6.82\n", + " Attempting uninstall: nvidia-cufft-cu12\n", + " Found existing installation: nvidia-cufft-cu12 11.2.3.61\n", + " Uninstalling nvidia-cufft-cu12-11.2.3.61:\n", + " Successfully uninstalled nvidia-cufft-cu12-11.2.3.61\n", + " Attempting uninstall: nvidia-cuda-runtime-cu12\n", + " Found existing installation: nvidia-cuda-runtime-cu12 12.5.82\n", + " Uninstalling nvidia-cuda-runtime-cu12-12.5.82:\n", + " Successfully uninstalled nvidia-cuda-runtime-cu12-12.5.82\n", + " Attempting uninstall: nvidia-cuda-nvrtc-cu12\n", + " Found existing installation: nvidia-cuda-nvrtc-cu12 12.5.82\n", + " Uninstalling nvidia-cuda-nvrtc-cu12-12.5.82:\n", + " Successfully uninstalled nvidia-cuda-nvrtc-cu12-12.5.82\n", + " Attempting uninstall: nvidia-cuda-cupti-cu12\n", + " Found existing installation: nvidia-cuda-cupti-cu12 12.5.82\n", + " Uninstalling nvidia-cuda-cupti-cu12-12.5.82:\n", + " Successfully uninstalled nvidia-cuda-cupti-cu12-12.5.82\n", + " Attempting uninstall: nvidia-cublas-cu12\n", + " Found existing installation: nvidia-cublas-cu12 12.5.3.2\n", + " Uninstalling nvidia-cublas-cu12-12.5.3.2:\n", + " Successfully uninstalled nvidia-cublas-cu12-12.5.3.2\n", + " Attempting uninstall: nvidia-cusparse-cu12\n", + " Found existing installation: nvidia-cusparse-cu12 12.5.1.3\n", + " Uninstalling nvidia-cusparse-cu12-12.5.1.3:\n", + " Successfully uninstalled nvidia-cusparse-cu12-12.5.1.3\n", + " Attempting uninstall: nvidia-cudnn-cu12\n", + " Found existing installation: nvidia-cudnn-cu12 9.3.0.75\n", + " Uninstalling nvidia-cudnn-cu12-9.3.0.75:\n", + " Successfully uninstalled nvidia-cudnn-cu12-9.3.0.75\n", + " Attempting uninstall: nvidia-cusolver-cu12\n", + " Found existing installation: nvidia-cusolver-cu12 11.6.3.83\n", + " Uninstalling nvidia-cusolver-cu12-11.6.3.83:\n", + " Successfully uninstalled nvidia-cusolver-cu12-11.6.3.83\n", + "Successfully installed huggingface_sb3-3.0 nvidia-cublas-cu12-12.4.5.8 nvidia-cuda-cupti-cu12-12.4.127 nvidia-cuda-nvrtc-cu12-12.4.127 nvidia-cuda-runtime-cu12-12.4.127 nvidia-cudnn-cu12-9.1.0.70 nvidia-cufft-cu12-11.2.1.3 nvidia-curand-cu12-10.3.5.147 nvidia-cusolver-cu12-11.6.1.9 nvidia-cusparse-cu12-12.3.1.170 nvidia-nvjitlink-cu12-12.4.127 panda-gym-3.0.7 pybullet-3.2.7 stable-baselines3-2.5.0\n", + "Requirement already satisfied: panda-gym==3.0.7 in /usr/local/lib/python3.11/dist-packages (3.0.7)\n", + "Requirement already satisfied: gymnasium>=0.26 in /usr/local/lib/python3.11/dist-packages (from panda-gym==3.0.7) (1.0.0)\n", + "Requirement already satisfied: pybullet in /usr/local/lib/python3.11/dist-packages (from panda-gym==3.0.7) (3.2.7)\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.11/dist-packages (from panda-gym==3.0.7) (1.26.4)\n", + "Requirement already satisfied: scipy in /usr/local/lib/python3.11/dist-packages (from panda-gym==3.0.7) (1.13.1)\n", + "Requirement already satisfied: cloudpickle>=1.2.0 in /usr/local/lib/python3.11/dist-packages (from gymnasium>=0.26->panda-gym==3.0.7) (3.1.1)\n", + "Requirement already satisfied: typing-extensions>=4.3.0 in /usr/local/lib/python3.11/dist-packages (from gymnasium>=0.26->panda-gym==3.0.7) (4.12.2)\n", + "Requirement already satisfied: farama-notifications>=0.0.1 in /usr/local/lib/python3.11/dist-packages (from gymnasium>=0.26->panda-gym==3.0.7) (0.0.4)\n" + ] + } + ], + "source": [ + "!pip install panda-gym==3.0.7 stable-baselines3 wandb huggingface_sb3\n", + "! pip install --upgrade panda-gym==3.0.7\n" + ] + }, + { + "cell_type": "code", + "source": [ + "!pip install wandb -qU\n", + "#0b197edd6d50d8cc0ed00564436ada87f46084fa\n", + "! wandb login --relogin" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "NiIjvtLfasLj", + "outputId": "2313253d-a77f-4ac2-e314-e537d46725d3" + }, + "execution_count": 2, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m20.8/20.8 MB\u001b[0m \u001b[31m44.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h\u001b[34m\u001b[1mwandb\u001b[0m: Logging into wandb.ai. (Learn how to deploy a W&B server locally: https://wandb.me/wandb-server)\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: You can find your API key in your browser here: https://wandb.ai/authorize\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: Paste an API key from your profile and hit enter, or press ctrl+c to quit: \n", + "\u001b[34m\u001b[1mwandb\u001b[0m: No netrc file found, creating one.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: Appending key for api.wandb.ai to your netrc file: /root/.netrc\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: W&B API key is configured. Use \u001b[1m`wandb login --relogin`\u001b[0m to force relogin\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import wandb\n", + "wandb.login()" + ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, - "id": "k-Am822Jb3rY", - "outputId": "27dae454-cdd8-4f9f-f8a2-619d2fe7400d" - }, - "outputs": [ + "id": "c2HWR0VVay1J", + "outputId": "84954610-515f-4d22-ddeb-1297a30dae77" + }, + "execution_count": 3, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: Using wandb-core as the SDK backend. Please refer to https://wandb.me/wandb-core for more information.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: Currently logged in as: \u001b[33mbenyahiamohammedoussama\u001b[0m (\u001b[33mbenyahiamohammedoussama-ecole-central-lyon\u001b[0m) to \u001b[32mhttps://api.wandb.ai\u001b[0m. Use \u001b[1m`wandb login --relogin`\u001b[0m to force relogin\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "True" + ] + }, + "metadata": {}, + "execution_count": 3 + } + ] + }, + { + "cell_type": "code", + "source": [ + "# Initialize a new run\n", + "wandb.init(project=\"panda-gym\")\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 125 + }, + "id": "aYyAj3xmay39", + "outputId": "96c2f77a-68f0-4d88-ed06-1786bcd720d5" + }, + "execution_count": 4, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<IPython.core.display.HTML object>" + ], + "text/html": [ + "Tracking run with wandb version 0.19.7" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<IPython.core.display.HTML object>" + ], + "text/html": [ + "Run data is saved locally in <code>/content/wandb/run-20250226_101509-h4i7sifx</code>" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<IPython.core.display.HTML object>" + ], + "text/html": [ + "Syncing run <strong><a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym/runs/h4i7sifx' target=\"_blank\">light-snowflake-25</a></strong> to <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym' target=\"_blank\">Weights & Biases</a> (<a href='https://wandb.me/developer-guide' target=\"_blank\">docs</a>)<br>" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<IPython.core.display.HTML object>" + ], + "text/html": [ + " View project at <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym' target=\"_blank\">https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym</a>" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<IPython.core.display.HTML object>" + ], + "text/html": [ + " View run at <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym/runs/h4i7sifx' target=\"_blank\">https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym/runs/h4i7sifx</a>" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/html": [ + "<button onClick=\"this.nextSibling.style.display='block';this.style.display='none';\">Display W&B run</button><iframe src='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym/runs/h4i7sifx?jupyter=true' style='border:none;width:100%;height:420px;display:none;'></iframe>" + ], + "text/plain": [ + "<wandb.sdk.wandb_run.Run at 0x7a55d7011e50>" + ] + }, + "metadata": {}, + "execution_count": 4 + } + ] + }, + { + "cell_type": "code", + "source": [ + "from huggingface_hub import notebook_login\n", + "\n", + "notebook_login()\n", + "#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" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 17, + "referenced_widgets": [ + "a9046086ab104ad19085b9fe91797e36", + "700cf055d755454e8e3a514486c945e9", + "298989225cd04e4c9273d3d57c3f8577", + "8ea627d85bcb4948bc27b5d83296f967", + "40e3f08692c34f9e9f6ff74e7d246d93", + "522db5f67c6040538f2ba2ac24ab1546", + "ab0f8641ef2e47b6ada23a3197b29bdc", + "6047961d9cbf4e90a8b342dae97ccbb7", + "ca1f49a4b5dd41399d3f1133c367eab1", + "0f3330b587364ddb8185244b3cc8e302", + "e2a14cac37924445890727e1bb99f5da", + "a880a16471de4055bf3fca0f0a927131", + "b5db27274d8c4f50bfcd343813e292e6", + "52f7c233d0284066a29dd45ac2e9ca55", + "1dd9cf2b47d64b928b346406c83bea40", + "781969fcfc19418d9a3a8ba92c4b9f20", + "207341f7cd094f5ab882a733ff055742", + "84265be849b24979bb5977dc4c89aad7", + "40a53988f49247359d0a72f079f78da2", + "13bf4b6de6ff4a78943d3b713a88461b" + ] + }, + "id": "ja19EsqZaWF8", + "outputId": "a8efb7e5-4c75-4d0e-d52e-2a8a55be19a3" + }, + "execution_count": 5, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "VBox(children=(HTML(value='<center> <img\\nsrc=https://huggingface.co/front/assets/huggingface_logo-noborder.sv…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "a9046086ab104ad19085b9fe91797e36" + } + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "source": [ + "import gymnasium as gym\n", + "from stable_baselines3 import A2C\n", + "from stable_baselines3.common.monitor import Monitor\n", + "from stable_baselines3.common.vec_env import DummyVecEnv\n", + "from stable_baselines3.common.evaluation import evaluate_policy\n", + "import wandb\n", + "import panda_gym\n", + "from wandb.integration.sb3 import WandbCallback\n", + "from huggingface_hub import notebook_login\n", + "from huggingface_sb3 import package_to_hub\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Configuration dictionary for the RL agent\n", + "config = {\n", + " \"policy_type\": \"MultiInputPolicy\",\n", + " \"total_timesteps\": 500000,\n", + " \"env_name\": \"PandaReachJointsDense-v3\",\n", + " \"num_episodes\": 600,\n", + "}\n", + "\n", + "# Initialize a new wandb run\n", + "run = wandb.init(\n", + " project=\"panda-gym\",\n", + " config=config,\n", + " sync_tensorboard=True, # Auto-upload\n", + " monitor_gym=True, # Auto-upload the videos of agents playing the game\n", + " save_code=True, # Save the code (optional)\n", + ")\n", + "\n", + "def make_env():\n", + "\n", + " env = gym.make(config[\"env_name\"])\n", + " env = Monitor(env) # Record stats such as returns\n", + " return env\n", + "\n", + "# Create the environment and model\n", + "env = DummyVecEnv([make_env])\n", + "model = A2C(config[\"policy_type\"], env, verbose=1, tensorboard_log=f\"runs/{run.id}\")\n", + "\n", + "# Train the model for a fixed number of episodes\n", + "episode_rewards = []\n", + "timesteps_per_episode = config[\"total_timesteps\"] // config[\"num_episodes\"]\n", + "\n", + "for episode in range(config[\"num_episodes\"]):\n", + " obs = env.reset()\n", + " total_reward = 0\n", + " done = False\n", + " while not done:\n", + " action, _states = model.predict(obs, deterministic=True)\n", + " obs, reward, done, info = env.step(action)\n", + " total_reward += reward[0]\n", + "\n", + " episode_rewards.append(total_reward)\n", + " print(f\"Episode {episode+1}/{config['num_episodes']}: Total Reward = {total_reward:.2f}\")\n", + "\n", + " # Train the model incrementally\n", + " model.learn(total_timesteps=timesteps_per_episode, reset_num_timesteps=False)\n", + "\n", + "# Save the model\n", + "model.save(\"a2c_panda_reach\")\n", + "wandb.log({\"model_saved\": True})\n", + "\n", + "# Evaluate the model\n", + "eval_env = DummyVecEnv([lambda: gym.make(\"PandaReachJointsDense-v3\")])\n", + "mean_reward, std_reward = evaluate_policy(model, eval_env, n_eval_episodes=10, deterministic=True)\n", + "wandb.log({\"mean_reward\": mean_reward, \"std_reward\": std_reward})\n", + "print(f\"Evaluation: mean_reward={mean_reward:.2f} +/- {std_reward:.2f}\")\n", + "\n", + "# Plot Total Reward per Episode\n", + "plt.figure(figsize=(10, 5))\n", + "plt.plot(episode_rewards, label=\"Episode Reward\")\n", + "plt.xlabel(\"Episode\")\n", + "plt.ylabel(\"Total Reward\")\n", + "plt.title(\"Total Reward per Episode\")\n", + "plt.legend()\n", + "plt.grid()\n", + "plt.show()\n", + "\n", + "# Upload the model to the Hugging Face Hub\n", + "package_to_hub(\n", + " model=model,\n", + " model_name=\"a2c-panda-reach\",\n", + " model_architecture=\"A2C\",\n", + " env_id=\"PandaReachJointsDense-v3\",\n", + " eval_env=eval_env,\n", + " repo_id=\"oussamab2n/a2c-panda-reach\",\n", + " commit_message=\"Optimized model upload with evaluation\"\n", + ")\n", + "\n", + "# Finish the wandb run\n", + "wandb.finish()\n", + "\n", + "print(\"Modèle entraîné sur 500 épisodes, évalué, sauvegardé et visualisé avec succès !\")\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000, + "referenced_widgets": [ + "c78c5ec0063b416289dce2fe89e9b0ad", + "7fd552a5e11744049800633bae0113eb", + "ee4ec4e591294599a359719edbd8e683", + "619f5cf36b8045728c25441e5dbcd87e", + "39cd3e39b77544e784129cf10345b7d1", + "4c6da74c843748b9b72512619a2b8ff2", + "c3560a282d7947b0a0fc8c8859be2b4c", + "eef69609139c477f88dcf0c72f485493", + "5b56561bb7e4406dbfc1765ebf073c8d", + "283a3a4a6ad34970b1f9354cfc061fe8", + "418ee5dd7b8b4a5c80f723c26994020c", + "adbdabe296864d4bb49cd7bf8a6eaa81", + "2ca21c3b56de4cdfbabf69e62f2c5b5d", + "4122230c2ca94b98b392556b403ea576", + "75aac76a1e3443d38b045f75e8229d04", + "45e2d80723ac44a88112c71c1b44d324", + "10dd75ccb3ce49c7a9d430d427adebd8", + "88092a58a99b430ca62a488e5f5378b5", + "38f181cc724a4771b977da55d73fad3a", + "c4e56a18ccdc42c8bd2f3837f69dec0c", + "0b740bf50fa643898ef910e59c3975cd", + "543cae745d054c6ea92d37575a92b556", + "af001b75d30f48c7a5a02293afa17ba5", + "8a7ed8d444d14ff2bda905fba1e6f2c0", + "b07139fd2f8b470a940d9f07afdaa0f9", + "5c6278e79f274f2e96a1e2e323b61b17", + "3c75e898bfdb45329da491debd7804a6", + "d36d8e3f912e46cbae23854960e6e43e", + "71b3536b80c64ae59f9b32ad865d6e55", + "2be2284cce3b462192b40b5ce90b98a8", + "6f5334bfb2404cb89c5ce0479592a454", + "12d43c87ba1d484d900c33a50c398391", + "f6b77041e8054281acf81d3cd6809d84", + "fc348c31afbf470a84acde08f7f4142c", + "4112157198ea406bb57cddbcef95e55d", + "8296fa13df80418ab2d12b4856f564c8", + "a8937b021ecb421986877e2d852516c0", + "08c8924685c648f9aa0b78b86e1af506", + "452d21dd58bd4b1396ec5f7e78ebed31", + "2e7a1e4df0e243329d7abe148a54ad27", + "9f7e7d0bb83c4ae08bb1dc907a6c66dd", + "30208c255d674ae3b908e538406f82ee", + "04b3bb74aa08413cb5b4225a2f21bca7", + "96818b1f5fd546868d830b0bc1610a9c" + ] + }, + "id": "CB_jCjFuLzKZ", + "outputId": "204eada6-0a9f-4ade-9b9a-2a99a412913e" + }, + "execution_count": 13, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<IPython.core.display.HTML object>" + ], + "text/html": [ + "Tracking run with wandb version 0.19.7" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<IPython.core.display.HTML object>" + ], + "text/html": [ + "Run data is saved locally in <code>/content/wandb/run-20250226_140257-aqrdlwti</code>" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<IPython.core.display.HTML object>" + ], + "text/html": [ + "Syncing run <strong><a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym/runs/aqrdlwti' target=\"_blank\">sweet-pyramid-32</a></strong> to <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym' target=\"_blank\">Weights & Biases</a> (<a href='https://wandb.me/developer-guide' target=\"_blank\">docs</a>)<br>" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<IPython.core.display.HTML object>" + ], + "text/html": [ + " View project at <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym' target=\"_blank\">https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym</a>" + ] + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<IPython.core.display.HTML object>" + ], + "text/html": [ + " View run at <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym/runs/aqrdlwti' target=\"_blank\">https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym/runs/aqrdlwti</a>" + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Using cpu device\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 1/600: Total Reward = -8.30\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 38.8 |\n", + "| ep_rew_mean | -10.3 |\n", + "| success_rate | 0.25 |\n", + "| time/ | |\n", + "| fps | 223 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 500 |\n", + "| train/ | |\n", + "| entropy_loss | -9.9 |\n", + "| explained_variance | 0.473 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 99 |\n", + "| policy_loss | -5.6 |\n", + "| std | 0.996 |\n", + "| value_loss | 0.388 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 2/600: Total Reward = -4.45\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 43.8 |\n", + "| ep_rew_mean | -11.3 |\n", + "| success_rate | 0.138 |\n", + "| time/ | |\n", + "| fps | 217 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 1335 |\n", + "| train/ | |\n", + "| entropy_loss | -9.93 |\n", + "| explained_variance | -0.162 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 266 |\n", + "| policy_loss | 2.27 |\n", + "| std | 1 |\n", + "| value_loss | 0.0702 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 3/600: Total Reward = -12.06\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 44.5 |\n", + "| ep_rew_mean | -10.5 |\n", + "| success_rate | 0.128 |\n", + "| time/ | |\n", + "| fps | 214 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 2170 |\n", + "| train/ | |\n", + "| entropy_loss | -9.96 |\n", + "| explained_variance | -3.14 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 433 |\n", + "| policy_loss | 3.12 |\n", + "| std | 1 |\n", + "| value_loss | 0.083 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 4/600: Total Reward = -9.18\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 44.4 |\n", + "| ep_rew_mean | -10.6 |\n", + "| success_rate | 0.136 |\n", + "| time/ | |\n", + "| fps | 181 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 3005 |\n", + "| train/ | |\n", + "| entropy_loss | -9.96 |\n", + "| explained_variance | -0.125 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 600 |\n", + "| policy_loss | 3.9 |\n", + "| std | 1 |\n", + "| value_loss | 0.177 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 5/600: Total Reward = -5.14\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 44.4 |\n", + "| ep_rew_mean | -10.4 |\n", + "| success_rate | 0.145 |\n", + "| time/ | |\n", + "| fps | 163 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 3840 |\n", + "| train/ | |\n", + "| entropy_loss | -9.96 |\n", + "| explained_variance | -0.149 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 767 |\n", + "| policy_loss | -3.72 |\n", + "| std | 1 |\n", + "| value_loss | 0.173 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 6/600: Total Reward = -9.19\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 45 |\n", + "| ep_rew_mean | -10.4 |\n", + "| success_rate | 0.13 |\n", + "| time/ | |\n", + "| fps | 197 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 4675 |\n", + "| train/ | |\n", + "| entropy_loss | -9.97 |\n", + "| explained_variance | -16.5 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 934 |\n", + "| policy_loss | 1.7 |\n", + "| std | 1.01 |\n", + "| value_loss | 0.0856 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 7/600: Total Reward = -6.01\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 46.2 |\n", + "| ep_rew_mean | -10.2 |\n", + "| success_rate | 0.11 |\n", + "| time/ | |\n", + "| fps | 221 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 5510 |\n", + "| train/ | |\n", + "| entropy_loss | -9.98 |\n", + "| explained_variance | -0.0124 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 1101 |\n", + "| policy_loss | -2.58 |\n", + "| std | 1.01 |\n", + "| value_loss | 0.0868 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 8/600: Total Reward = -11.52\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 46.4 |\n", + "| ep_rew_mean | -9.76 |\n", + "| success_rate | 0.11 |\n", + "| time/ | |\n", + "| fps | 231 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 6345 |\n", + "| train/ | |\n", + "| entropy_loss | -10 |\n", + "| explained_variance | -1.49 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 1268 |\n", + "| policy_loss | -1.21 |\n", + "| std | 1.01 |\n", + "| value_loss | 0.0253 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 9/600: Total Reward = -5.45\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 46.5 |\n", + "| ep_rew_mean | -9.71 |\n", + "| success_rate | 0.12 |\n", + "| time/ | |\n", + "| fps | 245 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 7180 |\n", + "| train/ | |\n", + "| entropy_loss | -10 |\n", + "| explained_variance | -12 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 1435 |\n", + "| policy_loss | -0.157 |\n", + "| std | 1.01 |\n", + "| value_loss | 0.025 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 10/600: Total Reward = -22.55\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 44 |\n", + "| ep_rew_mean | -8.76 |\n", + "| success_rate | 0.17 |\n", + "| time/ | |\n", + "| fps | 180 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 8015 |\n", + "| train/ | |\n", + "| entropy_loss | -10 |\n", + "| explained_variance | -0.479 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 1602 |\n", + "| policy_loss | -2.11 |\n", + "| std | 1.01 |\n", + "| value_loss | 0.0749 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 11/600: Total Reward = -12.20\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 43.5 |\n", + "| ep_rew_mean | -8.45 |\n", + "| success_rate | 0.19 |\n", + "| time/ | |\n", + "| fps | 232 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 8850 |\n", + "| train/ | |\n", + "| entropy_loss | -10 |\n", + "| explained_variance | 0.465 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 1769 |\n", + "| policy_loss | 3.85 |\n", + "| std | 1.01 |\n", + "| value_loss | 0.136 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 12/600: Total Reward = -12.57\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 43.1 |\n", + "| ep_rew_mean | -8.56 |\n", + "| success_rate | 0.19 |\n", + "| time/ | |\n", + "| fps | 235 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 9685 |\n", + "| train/ | |\n", + "| entropy_loss | -9.99 |\n", + "| explained_variance | -10.4 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 1936 |\n", + "| policy_loss | -0.244 |\n", + "| std | 1.01 |\n", + "| value_loss | 0.00153 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 13/600: Total Reward = -13.70\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 41.6 |\n", + "| ep_rew_mean | -8.35 |\n", + "| success_rate | 0.23 |\n", + "| time/ | |\n", + "| fps | 170 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 10520 |\n", + "| train/ | |\n", + "| entropy_loss | -9.97 |\n", + "| explained_variance | 0.699 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 2103 |\n", + "| policy_loss | -0.271 |\n", + "| std | 1.01 |\n", + "| value_loss | 0.00199 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 14/600: Total Reward = -4.09\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 42 |\n", + "| ep_rew_mean | -8.37 |\n", + "| success_rate | 0.21 |\n", + "| time/ | |\n", + "| fps | 236 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 11355 |\n", + "| train/ | |\n", + "| entropy_loss | -9.99 |\n", + "| explained_variance | 0.573 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 2270 |\n", + "| policy_loss | -1.8 |\n", + "| std | 1.01 |\n", + "| value_loss | 0.0347 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 15/600: Total Reward = -11.69\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 42.3 |\n", + "| ep_rew_mean | -8.42 |\n", + "| success_rate | 0.2 |\n", + "| time/ | |\n", + "| fps | 159 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 12190 |\n", + "| train/ | |\n", + "| entropy_loss | -10 |\n", + "| explained_variance | -0.75 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 2437 |\n", + "| policy_loss | -1.89 |\n", + "| std | 1.01 |\n", + "| value_loss | 0.0585 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 16/600: Total Reward = -8.44\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 42 |\n", + "| ep_rew_mean | -8.2 |\n", + "| success_rate | 0.22 |\n", + "| time/ | |\n", + "| fps | 175 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 13025 |\n", + "| train/ | |\n", + "| entropy_loss | -10 |\n", + "| explained_variance | -0.949 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 2604 |\n", + "| policy_loss | -0.545 |\n", + "| std | 1.01 |\n", + "| value_loss | 0.0118 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 17/600: Total Reward = -7.67\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 42.2 |\n", + "| ep_rew_mean | -8.15 |\n", + "| success_rate | 0.23 |\n", + "| time/ | |\n", + "| fps | 235 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 13860 |\n", + "| train/ | |\n", + "| entropy_loss | -9.98 |\n", + "| explained_variance | 0.997 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 2771 |\n", + "| policy_loss | 2.49 |\n", + "| std | 1.01 |\n", + "| value_loss | 0.0515 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 18/600: Total Reward = -12.78\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 41.7 |\n", + "| ep_rew_mean | -7.84 |\n", + "| success_rate | 0.26 |\n", + "| time/ | |\n", + "| fps | 231 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 14695 |\n", + "| train/ | |\n", + "| entropy_loss | -9.99 |\n", + "| explained_variance | -0.839 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 2938 |\n", + "| policy_loss | -2.51 |\n", + "| std | 1.01 |\n", + "| value_loss | 0.0825 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 19/600: Total Reward = -8.54\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 40.4 |\n", + "| ep_rew_mean | -7.62 |\n", + "| success_rate | 0.3 |\n", + "| time/ | |\n", + "| fps | 224 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 15530 |\n", + "| train/ | |\n", + "| entropy_loss | -9.99 |\n", + "| explained_variance | 0.683 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 3105 |\n", + "| policy_loss | 0.00647 |\n", + "| std | 1.01 |\n", + "| value_loss | 0.00259 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 20/600: Total Reward = -8.93\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 41.5 |\n", + "| ep_rew_mean | -7.9 |\n", + "| success_rate | 0.28 |\n", + "| time/ | |\n", + "| fps | 209 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 16365 |\n", + "| train/ | |\n", + "| entropy_loss | -9.98 |\n", + "| explained_variance | -8.86 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 3272 |\n", + "| policy_loss | -1.84 |\n", + "| std | 1.01 |\n", + "| value_loss | 0.063 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 21/600: Total Reward = -7.27\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 41.9 |\n", + "| ep_rew_mean | -8.04 |\n", + "| success_rate | 0.27 |\n", + "| time/ | |\n", + "| fps | 238 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 17200 |\n", + "| train/ | |\n", + "| entropy_loss | -9.99 |\n", + "| explained_variance | 0.192 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 3439 |\n", + "| policy_loss | 0.266 |\n", + "| std | 1.01 |\n", + "| value_loss | 0.00794 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 22/600: Total Reward = -9.20\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 41 |\n", + "| ep_rew_mean | -7.9 |\n", + "| success_rate | 0.3 |\n", + "| time/ | |\n", + "| fps | 239 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 18035 |\n", + "| train/ | |\n", + "| entropy_loss | -9.97 |\n", + "| explained_variance | -2.31 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 3606 |\n", + "| policy_loss | -0.138 |\n", + "| std | 1.01 |\n", + "| value_loss | 0.00485 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 23/600: Total Reward = -3.62\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 40.4 |\n", + "| ep_rew_mean | -7.9 |\n", + "| success_rate | 0.31 |\n", + "| time/ | |\n", + "| fps | 144 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 18870 |\n", + "| train/ | |\n", + "| entropy_loss | -10 |\n", + "| explained_variance | -657 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 3773 |\n", + "| policy_loss | -2.89 |\n", + "| std | 1.01 |\n", + "| value_loss | 0.179 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 24/600: Total Reward = -8.73\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 40.6 |\n", + "| ep_rew_mean | -7.67 |\n", + "| success_rate | 0.31 |\n", + "| time/ | |\n", + "| fps | 240 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 19705 |\n", + "| train/ | |\n", + "| entropy_loss | -9.98 |\n", + "| explained_variance | 0.536 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 3940 |\n", + "| policy_loss | -3.37 |\n", + "| std | 1.01 |\n", + "| value_loss | 0.0991 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 25/600: Total Reward = -12.19\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 40.2 |\n", + "| ep_rew_mean | -7.42 |\n", + "| success_rate | 0.33 |\n", + "| time/ | |\n", + "| fps | 240 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 20540 |\n", + "| train/ | |\n", + "| entropy_loss | -9.94 |\n", + "| explained_variance | -3.64 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 4107 |\n", + "| policy_loss | -0.102 |\n", + "| std | 1 |\n", + "| value_loss | 0.00501 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 26/600: Total Reward = -0.68\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 40.7 |\n", + "| ep_rew_mean | -7.26 |\n", + "| success_rate | 0.31 |\n", + "| time/ | |\n", + "| fps | 197 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 21375 |\n", + "| train/ | |\n", + "| entropy_loss | -9.92 |\n", + "| explained_variance | -7.71 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 4274 |\n", + "| policy_loss | -4.1 |\n", + "| std | 0.999 |\n", + "| value_loss | 0.17 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 27/600: Total Reward = -3.81\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 40 |\n", + "| ep_rew_mean | -7.08 |\n", + "| success_rate | 0.33 |\n", + "| time/ | |\n", + "| fps | 177 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 22210 |\n", + "| train/ | |\n", + "| entropy_loss | -9.91 |\n", + "| explained_variance | 0.521 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 4441 |\n", + "| policy_loss | -0.318 |\n", + "| std | 0.998 |\n", + "| value_loss | 0.0032 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 28/600: Total Reward = -3.63\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 40.8 |\n", + "| ep_rew_mean | -7.22 |\n", + "| success_rate | 0.3 |\n", + "| time/ | |\n", + "| fps | 232 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 23045 |\n", + "| train/ | |\n", + "| entropy_loss | -9.89 |\n", + "| explained_variance | -1.39 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 4608 |\n", + "| policy_loss | 2.2 |\n", + "| std | 0.994 |\n", + "| value_loss | 0.0657 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 29/600: Total Reward = -0.42\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 40.2 |\n", + "| ep_rew_mean | -7.28 |\n", + "| success_rate | 0.31 |\n", + "| time/ | |\n", + "| fps | 233 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 23880 |\n", + "| train/ | |\n", + "| entropy_loss | -9.88 |\n", + "| explained_variance | -7.95 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 4775 |\n", + "| policy_loss | -1.82 |\n", + "| std | 0.993 |\n", + "| value_loss | 0.0515 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 30/600: Total Reward = -6.81\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 39.5 |\n", + "| ep_rew_mean | -6.96 |\n", + "| success_rate | 0.33 |\n", + "| time/ | |\n", + "| fps | 127 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 24715 |\n", + "| train/ | |\n", + "| entropy_loss | -9.89 |\n", + "| explained_variance | 0.863 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 4942 |\n", + "| policy_loss | 0.265 |\n", + "| std | 0.994 |\n", + "| value_loss | 0.00245 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 31/600: Total Reward = -11.96\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 39.3 |\n", + "| ep_rew_mean | -6.89 |\n", + "| success_rate | 0.34 |\n", + "| time/ | |\n", + "| fps | 238 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 25550 |\n", + "| train/ | |\n", + "| entropy_loss | -9.87 |\n", + "| explained_variance | 0.152 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 5109 |\n", + "| policy_loss | 0.859 |\n", + "| std | 0.991 |\n", + "| value_loss | 0.0129 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 32/600: Total Reward = -1.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 39.8 |\n", + "| ep_rew_mean | -6.83 |\n", + "| success_rate | 0.31 |\n", + "| time/ | |\n", + "| fps | 222 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 26385 |\n", + "| train/ | |\n", + "| entropy_loss | -9.9 |\n", + "| explained_variance | 0.512 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 5276 |\n", + "| policy_loss | -2.22 |\n", + "| std | 0.996 |\n", + "| value_loss | 0.0743 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 33/600: Total Reward = -7.95\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 38.1 |\n", + "| ep_rew_mean | -6.14 |\n", + "| success_rate | 0.39 |\n", + "| time/ | |\n", + "| fps | 194 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 27220 |\n", + "| train/ | |\n", + "| entropy_loss | -9.85 |\n", + "| explained_variance | 0.997 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 5443 |\n", + "| policy_loss | -0.454 |\n", + "| std | 0.99 |\n", + "| value_loss | 0.00744 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 34/600: Total Reward = -8.72\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 38.9 |\n", + "| ep_rew_mean | -6.14 |\n", + "| success_rate | 0.39 |\n", + "| time/ | |\n", + "| fps | 227 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 28055 |\n", + "| train/ | |\n", + "| entropy_loss | -9.88 |\n", + "| explained_variance | -2.3 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 5610 |\n", + "| policy_loss | 0.448 |\n", + "| std | 0.993 |\n", + "| value_loss | 0.00644 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 35/600: Total Reward = -6.96\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 37.3 |\n", + "| ep_rew_mean | -5.67 |\n", + "| success_rate | 0.44 |\n", + "| time/ | |\n", + "| fps | 233 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 28890 |\n", + "| train/ | |\n", + "| entropy_loss | -9.89 |\n", + "| explained_variance | -0.185 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 5777 |\n", + "| policy_loss | -1.8 |\n", + "| std | 0.995 |\n", + "| value_loss | 0.0397 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 36/600: Total Reward = -8.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 36.7 |\n", + "| ep_rew_mean | -5.32 |\n", + "| success_rate | 0.47 |\n", + "| time/ | |\n", + "| fps | 168 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 29725 |\n", + "| train/ | |\n", + "| entropy_loss | -9.89 |\n", + "| explained_variance | 0.331 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 5944 |\n", + "| policy_loss | -0.00233 |\n", + "| std | 0.994 |\n", + "| value_loss | 0.000924 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 37/600: Total Reward = -9.06\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 36.5 |\n", + "| ep_rew_mean | -5.21 |\n", + "| success_rate | 0.45 |\n", + "| time/ | |\n", + "| fps | 219 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 30560 |\n", + "| train/ | |\n", + "| entropy_loss | -9.91 |\n", + "| explained_variance | 0.367 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 6111 |\n", + "| policy_loss | -2.74 |\n", + "| std | 0.998 |\n", + "| value_loss | 0.102 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 38/600: Total Reward = -0.85\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 35.5 |\n", + "| ep_rew_mean | -5.02 |\n", + "| success_rate | 0.43 |\n", + "| time/ | |\n", + "| fps | 228 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 31395 |\n", + "| train/ | |\n", + "| entropy_loss | -9.88 |\n", + "| explained_variance | -1.54 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 6278 |\n", + "| policy_loss | -0.46 |\n", + "| std | 0.993 |\n", + "| value_loss | 0.00275 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 39/600: Total Reward = -0.77\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 34.2 |\n", + "| ep_rew_mean | -4.6 |\n", + "| success_rate | 0.47 |\n", + "| time/ | |\n", + "| fps | 178 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 32230 |\n", + "| train/ | |\n", + "| entropy_loss | -9.88 |\n", + "| explained_variance | -103 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 6445 |\n", + "| policy_loss | -0.649 |\n", + "| std | 0.993 |\n", + "| value_loss | 0.0219 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 40/600: Total Reward = -12.44\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 33.2 |\n", + "| ep_rew_mean | -4.59 |\n", + "| success_rate | 0.48 |\n", + "| time/ | |\n", + "| fps | 237 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 33065 |\n", + "| train/ | |\n", + "| entropy_loss | -9.88 |\n", + "| explained_variance | -4.01 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 6612 |\n", + "| policy_loss | 0.486 |\n", + "| std | 0.993 |\n", + "| value_loss | 0.00241 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 41/600: Total Reward = -5.94\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 32.5 |\n", + "| ep_rew_mean | -4.39 |\n", + "| success_rate | 0.52 |\n", + "| time/ | |\n", + "| fps | 237 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 33900 |\n", + "| train/ | |\n", + "| entropy_loss | -9.86 |\n", + "| explained_variance | -0.602 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 6779 |\n", + "| policy_loss | 0.925 |\n", + "| std | 0.99 |\n", + "| value_loss | 0.0106 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 42/600: Total Reward = -7.09\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 32.9 |\n", + "| ep_rew_mean | -4.6 |\n", + "| success_rate | 0.5 |\n", + "| time/ | |\n", + "| fps | 228 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 34735 |\n", + "| train/ | |\n", + "| entropy_loss | -9.9 |\n", + "| explained_variance | 0.526 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 6946 |\n", + "| policy_loss | 0.21 |\n", + "| std | 0.996 |\n", + "| value_loss | 0.000394 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 43/600: Total Reward = -6.08\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 33.9 |\n", + "| ep_rew_mean | -4.97 |\n", + "| success_rate | 0.45 |\n", + "| time/ | |\n", + "| fps | 206 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 35570 |\n", + "| train/ | |\n", + "| entropy_loss | -9.92 |\n", + "| explained_variance | -14.4 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 7113 |\n", + "| policy_loss | -1.46 |\n", + "| std | 0.999 |\n", + "| value_loss | 0.0234 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 44/600: Total Reward = -5.09\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 36.7 |\n", + "| ep_rew_mean | -5.33 |\n", + "| success_rate | 0.38 |\n", + "| time/ | |\n", + "| fps | 153 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 36405 |\n", + "| train/ | |\n", + "| entropy_loss | -9.89 |\n", + "| explained_variance | 0.34 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 7280 |\n", + "| policy_loss | 0.0546 |\n", + "| std | 0.994 |\n", + "| value_loss | 0.00271 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 45/600: Total Reward = -5.22\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 36.7 |\n", + "| ep_rew_mean | -5.32 |\n", + "| success_rate | 0.34 |\n", + "| time/ | |\n", + "| fps | 219 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 37240 |\n", + "| train/ | |\n", + "| entropy_loss | -9.89 |\n", + "| explained_variance | 0.186 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 7447 |\n", + "| policy_loss | -3.88 |\n", + "| std | 0.994 |\n", + "| value_loss | 0.144 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 46/600: Total Reward = -7.65\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 37.2 |\n", + "| ep_rew_mean | -5.23 |\n", + "| success_rate | 0.36 |\n", + "| time/ | |\n", + "| fps | 211 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 38075 |\n", + "| train/ | |\n", + "| entropy_loss | -9.88 |\n", + "| explained_variance | 0.997 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 7614 |\n", + "| policy_loss | -1.11 |\n", + "| std | 0.992 |\n", + "| value_loss | 0.0117 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 47/600: Total Reward = -8.51\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 37.5 |\n", + "| ep_rew_mean | -5.22 |\n", + "| success_rate | 0.36 |\n", + "| time/ | |\n", + "| fps | 234 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 38910 |\n", + "| train/ | |\n", + "| entropy_loss | -9.86 |\n", + "| explained_variance | 0.519 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 7781 |\n", + "| policy_loss | 57 |\n", + "| std | 0.99 |\n", + "| value_loss | 58.3 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 48/600: Total Reward = -7.36\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 37 |\n", + "| ep_rew_mean | -5.03 |\n", + "| success_rate | 0.37 |\n", + "| time/ | |\n", + "| fps | 236 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 39745 |\n", + "| train/ | |\n", + "| entropy_loss | -9.88 |\n", + "| explained_variance | 0.875 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 7948 |\n", + "| policy_loss | 1.43 |\n", + "| std | 0.993 |\n", + "| value_loss | 0.0167 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 49/600: Total Reward = -16.26\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 38 |\n", + "| ep_rew_mean | -5.2 |\n", + "| success_rate | 0.35 |\n", + "| time/ | |\n", + "| fps | 162 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 40580 |\n", + "| train/ | |\n", + "| entropy_loss | -9.87 |\n", + "| explained_variance | 1 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 8115 |\n", + "| policy_loss | -0.126 |\n", + "| std | 0.992 |\n", + "| value_loss | 0.000681 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 50/600: Total Reward = -7.17\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 36.7 |\n", + "| ep_rew_mean | -4.95 |\n", + "| success_rate | 0.4 |\n", + "| time/ | |\n", + "| fps | 234 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 41415 |\n", + "| train/ | |\n", + "| entropy_loss | -9.86 |\n", + "| explained_variance | -1.06 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 8282 |\n", + "| policy_loss | -1.11 |\n", + "| std | 0.99 |\n", + "| value_loss | 0.0147 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 51/600: Total Reward = -4.06\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 31.4 |\n", + "| ep_rew_mean | -4.08 |\n", + "| success_rate | 0.51 |\n", + "| time/ | |\n", + "| fps | 223 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 42250 |\n", + "| train/ | |\n", + "| entropy_loss | -9.87 |\n", + "| explained_variance | -11.1 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 8449 |\n", + "| policy_loss | 0.723 |\n", + "| std | 0.992 |\n", + "| value_loss | 0.00806 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 52/600: Total Reward = -7.65\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 30.4 |\n", + "| ep_rew_mean | -3.99 |\n", + "| success_rate | 0.56 |\n", + "| time/ | |\n", + "| fps | 174 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 43085 |\n", + "| train/ | |\n", + "| entropy_loss | -9.85 |\n", + "| explained_variance | -2.12 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 8616 |\n", + "| policy_loss | -0.147 |\n", + "| std | 0.989 |\n", + "| value_loss | 0.000449 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 53/600: Total Reward = -9.85\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 28.8 |\n", + "| ep_rew_mean | -3.78 |\n", + "| success_rate | 0.61 |\n", + "| time/ | |\n", + "| fps | 230 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 43920 |\n", + "| train/ | |\n", + "| entropy_loss | -9.83 |\n", + "| explained_variance | -8.53 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 8783 |\n", + "| policy_loss | -0.556 |\n", + "| std | 0.986 |\n", + "| value_loss | 0.00337 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 54/600: Total Reward = -6.30\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 28.6 |\n", + "| ep_rew_mean | -3.65 |\n", + "| success_rate | 0.64 |\n", + "| time/ | |\n", + "| fps | 235 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 44755 |\n", + "| train/ | |\n", + "| entropy_loss | -9.81 |\n", + "| explained_variance | -1.5 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 8950 |\n", + "| policy_loss | 0.0117 |\n", + "| std | 0.984 |\n", + "| value_loss | 0.00293 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 55/600: Total Reward = -10.37\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 26.6 |\n", + "| ep_rew_mean | -3.36 |\n", + "| success_rate | 0.67 |\n", + "| time/ | |\n", + "| fps | 221 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 45590 |\n", + "| train/ | |\n", + "| entropy_loss | -9.77 |\n", + "| explained_variance | -1.68 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 9117 |\n", + "| policy_loss | 1.44 |\n", + "| std | 0.978 |\n", + "| value_loss | 0.0361 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 56/600: Total Reward = -9.23\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 26.3 |\n", + "| ep_rew_mean | -3.31 |\n", + "| success_rate | 0.68 |\n", + "| time/ | |\n", + "| fps | 179 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 46425 |\n", + "| train/ | |\n", + "| entropy_loss | -9.76 |\n", + "| explained_variance | -12.6 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 9284 |\n", + "| policy_loss | -1.32 |\n", + "| std | 0.977 |\n", + "| value_loss | 0.0275 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 57/600: Total Reward = -8.75\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 28.4 |\n", + "| ep_rew_mean | -3.78 |\n", + "| success_rate | 0.62 |\n", + "| time/ | |\n", + "| fps | 224 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 47260 |\n", + "| train/ | |\n", + "| entropy_loss | -9.8 |\n", + "| explained_variance | -2.7 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 9451 |\n", + "| policy_loss | 0.601 |\n", + "| std | 0.983 |\n", + "| value_loss | 0.00651 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 58/600: Total Reward = -11.16\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 29.5 |\n", + "| ep_rew_mean | -3.99 |\n", + "| success_rate | 0.57 |\n", + "| time/ | |\n", + "| fps | 224 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 48095 |\n", + "| train/ | |\n", + "| entropy_loss | -9.78 |\n", + "| explained_variance | 0.517 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 9618 |\n", + "| policy_loss | -1.1 |\n", + "| std | 0.98 |\n", + "| value_loss | 0.015 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 59/600: Total Reward = -4.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 31.9 |\n", + "| ep_rew_mean | -4.24 |\n", + "| success_rate | 0.54 |\n", + "| time/ | |\n", + "| fps | 171 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 48930 |\n", + "| train/ | |\n", + "| entropy_loss | -9.74 |\n", + "| explained_variance | 0.243 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 9785 |\n", + "| policy_loss | -0.871 |\n", + "| std | 0.975 |\n", + "| value_loss | 0.00997 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 60/600: Total Reward = -0.37\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 31.4 |\n", + "| ep_rew_mean | -4.13 |\n", + "| success_rate | 0.54 |\n", + "| time/ | |\n", + "| fps | 228 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 49765 |\n", + "| train/ | |\n", + "| entropy_loss | -9.73 |\n", + "| explained_variance | 0.225 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 9952 |\n", + "| policy_loss | -0.35 |\n", + "| std | 0.974 |\n", + "| value_loss | 0.00356 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 61/600: Total Reward = -3.88\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 27.1 |\n", + "| ep_rew_mean | -3.45 |\n", + "| success_rate | 0.65 |\n", + "| time/ | |\n", + "| fps | 226 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 50600 |\n", + "| train/ | |\n", + "| entropy_loss | -9.71 |\n", + "| explained_variance | -4.07 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 10119 |\n", + "| policy_loss | 0.973 |\n", + "| std | 0.971 |\n", + "| value_loss | 0.0167 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 62/600: Total Reward = -5.93\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 24.6 |\n", + "| ep_rew_mean | -3.06 |\n", + "| success_rate | 0.69 |\n", + "| time/ | |\n", + "| fps | 153 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 51435 |\n", + "| train/ | |\n", + "| entropy_loss | -9.72 |\n", + "| explained_variance | -112 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 10286 |\n", + "| policy_loss | 0.703 |\n", + "| std | 0.971 |\n", + "| value_loss | 0.00935 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 63/600: Total Reward = -0.94\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 23.7 |\n", + "| ep_rew_mean | -3.14 |\n", + "| success_rate | 0.7 |\n", + "| time/ | |\n", + "| fps | 225 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 52270 |\n", + "| train/ | |\n", + "| entropy_loss | -9.71 |\n", + "| explained_variance | 0.621 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 10453 |\n", + "| policy_loss | 1.11 |\n", + "| std | 0.971 |\n", + "| value_loss | 0.0136 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 64/600: Total Reward = -0.56\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 24 |\n", + "| ep_rew_mean | -3.15 |\n", + "| success_rate | 0.69 |\n", + "| time/ | |\n", + "| fps | 227 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 53105 |\n", + "| train/ | |\n", + "| entropy_loss | -9.73 |\n", + "| explained_variance | -147 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 10620 |\n", + "| policy_loss | -6.91 |\n", + "| std | 0.974 |\n", + "| value_loss | 0.579 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 65/600: Total Reward = -13.02\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 28.1 |\n", + "| ep_rew_mean | -3.83 |\n", + "| success_rate | 0.59 |\n", + "| time/ | |\n", + "| fps | 188 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 53940 |\n", + "| train/ | |\n", + "| entropy_loss | -9.73 |\n", + "| explained_variance | 0.142 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 10787 |\n", + "| policy_loss | 0.0339 |\n", + "| std | 0.974 |\n", + "| value_loss | 0.00341 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 66/600: Total Reward = -6.65\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 30.1 |\n", + "| ep_rew_mean | -4.17 |\n", + "| success_rate | 0.51 |\n", + "| time/ | |\n", + "| fps | 226 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 54775 |\n", + "| train/ | |\n", + "| entropy_loss | -9.72 |\n", + "| explained_variance | 0.194 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 10954 |\n", + "| policy_loss | 0.813 |\n", + "| std | 0.972 |\n", + "| value_loss | 0.00733 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 67/600: Total Reward = -7.57\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 28.2 |\n", + "| ep_rew_mean | -3.72 |\n", + "| success_rate | 0.56 |\n", + "| time/ | |\n", + "| fps | 214 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 55610 |\n", + "| train/ | |\n", + "| entropy_loss | -9.73 |\n", + "| explained_variance | -3.01 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 11121 |\n", + "| policy_loss | -2.35 |\n", + "| std | 0.973 |\n", + "| value_loss | 0.066 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 68/600: Total Reward = -6.49\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 32.2 |\n", + "| ep_rew_mean | -4.56 |\n", + "| success_rate | 0.45 |\n", + "| time/ | |\n", + "| fps | 228 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 56445 |\n", + "| train/ | |\n", + "| entropy_loss | -9.73 |\n", + "| explained_variance | 0.815 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 11288 |\n", + "| policy_loss | -0.783 |\n", + "| std | 0.974 |\n", + "| value_loss | 0.0633 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 69/600: Total Reward = -7.57\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 29.4 |\n", + "| ep_rew_mean | -4.31 |\n", + "| success_rate | 0.54 |\n", + "| time/ | |\n", + "| fps | 187 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 57280 |\n", + "| train/ | |\n", + "| entropy_loss | -9.73 |\n", + "| explained_variance | -0.832 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 11455 |\n", + "| policy_loss | 0.835 |\n", + "| std | 0.973 |\n", + "| value_loss | 0.0142 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 70/600: Total Reward = -0.34\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 26.7 |\n", + "| ep_rew_mean | -3.95 |\n", + "| success_rate | 0.62 |\n", + "| time/ | |\n", + "| fps | 234 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 58115 |\n", + "| train/ | |\n", + "| entropy_loss | -9.74 |\n", + "| explained_variance | 0.99 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 11622 |\n", + "| policy_loss | 0.801 |\n", + "| std | 0.974 |\n", + "| value_loss | 0.0175 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 71/600: Total Reward = -5.61\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 27.4 |\n", + "| ep_rew_mean | -3.83 |\n", + "| success_rate | 0.61 |\n", + "| time/ | |\n", + "| fps | 224 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 58950 |\n", + "| train/ | |\n", + "| entropy_loss | -9.73 |\n", + "| explained_variance | -14.8 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 11789 |\n", + "| policy_loss | 1.69 |\n", + "| std | 0.973 |\n", + "| value_loss | 0.0434 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 72/600: Total Reward = -8.14\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 24.5 |\n", + "| ep_rew_mean | -3.01 |\n", + "| success_rate | 0.7 |\n", + "| time/ | |\n", + "| fps | 155 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 59785 |\n", + "| train/ | |\n", + "| entropy_loss | -9.71 |\n", + "| explained_variance | 0.996 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 11956 |\n", + "| policy_loss | 0.835 |\n", + "| std | 0.971 |\n", + "| value_loss | 0.0141 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 73/600: Total Reward = -0.54\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 27.9 |\n", + "| ep_rew_mean | -3.45 |\n", + "| success_rate | 0.62 |\n", + "| time/ | |\n", + "| fps | 224 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 60620 |\n", + "| train/ | |\n", + "| entropy_loss | -9.7 |\n", + "| explained_variance | 0.465 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 12123 |\n", + "| policy_loss | -1.22 |\n", + "| std | 0.97 |\n", + "| value_loss | 0.0189 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 74/600: Total Reward = -0.13\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 30.6 |\n", + "| ep_rew_mean | -3.85 |\n", + "| success_rate | 0.57 |\n", + "| time/ | |\n", + "| fps | 219 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 61455 |\n", + "| train/ | |\n", + "| entropy_loss | -9.69 |\n", + "| explained_variance | -2.9 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 12290 |\n", + "| policy_loss | 0.824 |\n", + "| std | 0.968 |\n", + "| value_loss | 0.0122 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 75/600: Total Reward = -2.12\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 28.9 |\n", + "| ep_rew_mean | -3.57 |\n", + "| success_rate | 0.61 |\n", + "| time/ | |\n", + "| fps | 168 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 62290 |\n", + "| train/ | |\n", + "| entropy_loss | -9.69 |\n", + "| explained_variance | 0.508 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 12457 |\n", + "| policy_loss | -0.331 |\n", + "| std | 0.969 |\n", + "| value_loss | 0.00465 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 76/600: Total Reward = -1.20\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 30.1 |\n", + "| ep_rew_mean | -3.79 |\n", + "| success_rate | 0.57 |\n", + "| time/ | |\n", + "| fps | 226 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 63125 |\n", + "| train/ | |\n", + "| entropy_loss | -9.69 |\n", + "| explained_variance | -0.0705 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 12624 |\n", + "| policy_loss | -0.565 |\n", + "| std | 0.97 |\n", + "| value_loss | 0.00712 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 77/600: Total Reward = -2.60\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 24.9 |\n", + "| ep_rew_mean | -2.95 |\n", + "| success_rate | 0.67 |\n", + "| time/ | |\n", + "| fps | 229 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 63960 |\n", + "| train/ | |\n", + "| entropy_loss | -9.71 |\n", + "| explained_variance | 0.0542 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 12791 |\n", + "| policy_loss | -0.791 |\n", + "| std | 0.972 |\n", + "| value_loss | 0.0103 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 78/600: Total Reward = -1.56\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 26.3 |\n", + "| ep_rew_mean | -3.14 |\n", + "| success_rate | 0.65 |\n", + "| time/ | |\n", + "| fps | 212 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 64795 |\n", + "| train/ | |\n", + "| entropy_loss | -9.68 |\n", + "| explained_variance | 0.774 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 12958 |\n", + "| policy_loss | -0.193 |\n", + "| std | 0.969 |\n", + "| value_loss | 0.00103 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 79/600: Total Reward = -6.16\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 25.5 |\n", + "| ep_rew_mean | -2.96 |\n", + "| success_rate | 0.7 |\n", + "| time/ | |\n", + "| fps | 193 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 65630 |\n", + "| train/ | |\n", + "| entropy_loss | -9.67 |\n", + "| explained_variance | -6.94 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 13125 |\n", + "| policy_loss | -0.14 |\n", + "| std | 0.968 |\n", + "| value_loss | 0.00135 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 80/600: Total Reward = -5.65\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 24.8 |\n", + "| ep_rew_mean | -2.93 |\n", + "| success_rate | 0.75 |\n", + "| time/ | |\n", + "| fps | 221 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 66465 |\n", + "| train/ | |\n", + "| entropy_loss | -9.68 |\n", + "| explained_variance | 0.467 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 13292 |\n", + "| policy_loss | 0.508 |\n", + "| std | 0.969 |\n", + "| value_loss | 0.00341 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 81/600: Total Reward = -0.27\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 24.3 |\n", + "| ep_rew_mean | -2.76 |\n", + "| success_rate | 0.76 |\n", + "| time/ | |\n", + "| fps | 225 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 67300 |\n", + "| train/ | |\n", + "| entropy_loss | -9.69 |\n", + "| explained_variance | 0.0985 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 13459 |\n", + "| policy_loss | 28.4 |\n", + "| std | 0.969 |\n", + "| value_loss | 25.9 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 82/600: Total Reward = -6.17\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 24.8 |\n", + "| ep_rew_mean | -2.74 |\n", + "| success_rate | 0.74 |\n", + "| time/ | |\n", + "| fps | 157 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 68135 |\n", + "| train/ | |\n", + "| entropy_loss | -9.66 |\n", + "| explained_variance | -26.8 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 13626 |\n", + "| policy_loss | 0.416 |\n", + "| std | 0.966 |\n", + "| value_loss | 0.00239 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 83/600: Total Reward = -0.31\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 23.6 |\n", + "| ep_rew_mean | -2.45 |\n", + "| success_rate | 0.78 |\n", + "| time/ | |\n", + "| fps | 222 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 68970 |\n", + "| train/ | |\n", + "| entropy_loss | -9.66 |\n", + "| explained_variance | -2.01 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 13793 |\n", + "| policy_loss | -0.698 |\n", + "| std | 0.965 |\n", + "| value_loss | 0.0192 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 84/600: Total Reward = -0.13\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 23.3 |\n", + "| ep_rew_mean | -2.47 |\n", + "| success_rate | 0.82 |\n", + "| time/ | |\n", + "| fps | 221 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 69805 |\n", + "| train/ | |\n", + "| entropy_loss | -9.63 |\n", + "| explained_variance | 0.793 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 13960 |\n", + "| policy_loss | -0.269 |\n", + "| std | 0.961 |\n", + "| value_loss | 0.00125 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 85/600: Total Reward = -0.63\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 21.3 |\n", + "| ep_rew_mean | -2.2 |\n", + "| success_rate | 0.86 |\n", + "| time/ | |\n", + "| fps | 167 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 70640 |\n", + "| train/ | |\n", + "| entropy_loss | -9.6 |\n", + "| explained_variance | -1.22 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 14127 |\n", + "| policy_loss | -1.09 |\n", + "| std | 0.958 |\n", + "| value_loss | 0.0224 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 86/600: Total Reward = -0.85\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 15.3 |\n", + "| ep_rew_mean | -1.51 |\n", + "| success_rate | 0.91 |\n", + "| time/ | |\n", + "| fps | 224 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 71475 |\n", + "| train/ | |\n", + "| entropy_loss | -9.57 |\n", + "| explained_variance | -0.149 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 14294 |\n", + "| policy_loss | -2.14 |\n", + "| std | 0.954 |\n", + "| value_loss | 0.064 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 87/600: Total Reward = -0.19\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 11.4 |\n", + "| ep_rew_mean | -1.05 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 223 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 72310 |\n", + "| train/ | |\n", + "| entropy_loss | -9.53 |\n", + "| explained_variance | -1.36 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 14461 |\n", + "| policy_loss | -3.07 |\n", + "| std | 0.948 |\n", + "| value_loss | 0.141 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 88/600: Total Reward = -0.11\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.1 |\n", + "| ep_rew_mean | -0.956 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 209 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 73145 |\n", + "| train/ | |\n", + "| entropy_loss | -9.44 |\n", + "| explained_variance | -3.26 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 14628 |\n", + "| policy_loss | -1.73 |\n", + "| std | 0.937 |\n", + "| value_loss | 0.0614 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 89/600: Total Reward = -0.77\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 8.83 |\n", + "| ep_rew_mean | -0.816 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 190 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 73980 |\n", + "| train/ | |\n", + "| entropy_loss | -9.42 |\n", + "| explained_variance | -20.5 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 14795 |\n", + "| policy_loss | -2.99 |\n", + "| std | 0.934 |\n", + "| value_loss | 0.204 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 90/600: Total Reward = -0.36\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.3 |\n", + "| ep_rew_mean | -1.12 |\n", + "| success_rate | 0.95 |\n", + "| time/ | |\n", + "| fps | 227 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 74815 |\n", + "| train/ | |\n", + "| entropy_loss | -9.4 |\n", + "| explained_variance | -3.13 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 14962 |\n", + "| policy_loss | -3.65 |\n", + "| std | 0.933 |\n", + "| value_loss | 0.176 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 91/600: Total Reward = -2.03\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 11.6 |\n", + "| ep_rew_mean | -1.4 |\n", + "| success_rate | 0.92 |\n", + "| time/ | |\n", + "| fps | 213 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 75650 |\n", + "| train/ | |\n", + "| entropy_loss | -9.37 |\n", + "| explained_variance | -0.164 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 15129 |\n", + "| policy_loss | 30.2 |\n", + "| std | 0.928 |\n", + "| value_loss | 15.5 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 92/600: Total Reward = -0.12\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 8.15 |\n", + "| ep_rew_mean | -1.01 |\n", + "| success_rate | 0.97 |\n", + "| time/ | |\n", + "| fps | 152 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 76485 |\n", + "| train/ | |\n", + "| entropy_loss | -9.34 |\n", + "| explained_variance | -13.1 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 15296 |\n", + "| policy_loss | -5.69 |\n", + "| std | 0.925 |\n", + "| value_loss | 0.437 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 93/600: Total Reward = -0.52\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.71 |\n", + "| ep_rew_mean | -1.39 |\n", + "| success_rate | 0.92 |\n", + "| time/ | |\n", + "| fps | 229 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 77320 |\n", + "| train/ | |\n", + "| entropy_loss | -9.32 |\n", + "| explained_variance | 0.305 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 15463 |\n", + "| policy_loss | 39.2 |\n", + "| std | 0.922 |\n", + "| value_loss | 21 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 94/600: Total Reward = -0.65\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 12.2 |\n", + "| ep_rew_mean | -1.52 |\n", + "| success_rate | 0.9 |\n", + "| time/ | |\n", + "| fps | 220 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 78155 |\n", + "| train/ | |\n", + "| entropy_loss | -9.36 |\n", + "| explained_variance | 0.0849 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 15630 |\n", + "| policy_loss | 37.2 |\n", + "| std | 0.927 |\n", + "| value_loss | 29.9 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 95/600: Total Reward = -0.88\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 11.9 |\n", + "| ep_rew_mean | -1.52 |\n", + "| success_rate | 0.89 |\n", + "| time/ | |\n", + "| fps | 170 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 78990 |\n", + "| train/ | |\n", + "| entropy_loss | -9.32 |\n", + "| explained_variance | -190 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 15797 |\n", + "| policy_loss | -3.64 |\n", + "| std | 0.921 |\n", + "| value_loss | 0.187 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 96/600: Total Reward = -0.05\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 8.6 |\n", + "| ep_rew_mean | -0.933 |\n", + "| success_rate | 0.95 |\n", + "| time/ | |\n", + "| fps | 222 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 79825 |\n", + "| train/ | |\n", + "| entropy_loss | -9.28 |\n", + "| explained_variance | -4.48 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 15964 |\n", + "| policy_loss | 20.6 |\n", + "| std | 0.916 |\n", + "| value_loss | 11.3 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 97/600: Total Reward = -0.42\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.35 |\n", + "| ep_rew_mean | -1.1 |\n", + "| success_rate | 0.94 |\n", + "| time/ | |\n", + "| fps | 220 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 80660 |\n", + "| train/ | |\n", + "| entropy_loss | -9.25 |\n", + "| explained_variance | -0.0488 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 16131 |\n", + "| policy_loss | 38.2 |\n", + "| std | 0.912 |\n", + "| value_loss | 27.9 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 98/600: Total Reward = -0.91\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 13.1 |\n", + "| ep_rew_mean | -1.96 |\n", + "| success_rate | 0.87 |\n", + "| time/ | |\n", + "| fps | 201 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 81495 |\n", + "| train/ | |\n", + "| entropy_loss | -9.26 |\n", + "| explained_variance | -23.8 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 16298 |\n", + "| policy_loss | 2.97 |\n", + "| std | 0.914 |\n", + "| value_loss | 0.114 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 99/600: Total Reward = -1.14\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 11.5 |\n", + "| ep_rew_mean | -1.6 |\n", + "| success_rate | 0.92 |\n", + "| time/ | |\n", + "| fps | 189 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 82330 |\n", + "| train/ | |\n", + "| entropy_loss | -9.27 |\n", + "| explained_variance | -25.6 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 16465 |\n", + "| policy_loss | 1.41 |\n", + "| std | 0.915 |\n", + "| value_loss | 0.0301 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 100/600: Total Reward = -0.64\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 12.4 |\n", + "| ep_rew_mean | -1.8 |\n", + "| success_rate | 0.88 |\n", + "| time/ | |\n", + "| fps | 219 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 83165 |\n", + "| train/ | |\n", + "| entropy_loss | -9.25 |\n", + "| explained_variance | -31 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 16632 |\n", + "| policy_loss | 1.97 |\n", + "| std | 0.912 |\n", + "| value_loss | 0.0536 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 101/600: Total Reward = -0.12\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.63 |\n", + "| ep_rew_mean | -1.1 |\n", + "| success_rate | 0.95 |\n", + "| time/ | |\n", + "| fps | 218 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 84000 |\n", + "| train/ | |\n", + "| entropy_loss | -9.23 |\n", + "| explained_variance | -0.314 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 16799 |\n", + "| policy_loss | -14.1 |\n", + "| std | 0.91 |\n", + "| value_loss | 2.76 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 102/600: Total Reward = -22.38\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 14.1 |\n", + "| ep_rew_mean | -3.03 |\n", + "| success_rate | 0.83 |\n", + "| time/ | |\n", + "| fps | 157 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 84835 |\n", + "| train/ | |\n", + "| entropy_loss | -9.26 |\n", + "| explained_variance | -323 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 16966 |\n", + "| policy_loss | 3.84 |\n", + "| std | 0.915 |\n", + "| value_loss | 0.189 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 103/600: Total Reward = -21.17\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 19.2 |\n", + "| ep_rew_mean | -4.51 |\n", + "| success_rate | 0.7 |\n", + "| time/ | |\n", + "| fps | 214 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 85670 |\n", + "| train/ | |\n", + "| entropy_loss | -9.26 |\n", + "| explained_variance | -81.4 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 17133 |\n", + "| policy_loss | 11.7 |\n", + "| std | 0.914 |\n", + "| value_loss | 2.31 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 104/600: Total Reward = -0.76\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 25.4 |\n", + "| ep_rew_mean | -5.75 |\n", + "| success_rate | 0.57 |\n", + "| time/ | |\n", + "| fps | 209 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 86505 |\n", + "| train/ | |\n", + "| entropy_loss | -9.25 |\n", + "| explained_variance | -727 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 17300 |\n", + "| policy_loss | 18.1 |\n", + "| std | 0.912 |\n", + "| value_loss | 3.57 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 105/600: Total Reward = -10.08\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 27.7 |\n", + "| ep_rew_mean | -5.75 |\n", + "| success_rate | 0.52 |\n", + "| time/ | |\n", + "| fps | 143 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 87340 |\n", + "| train/ | |\n", + "| entropy_loss | -9.27 |\n", + "| explained_variance | -1.62 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 17467 |\n", + "| policy_loss | -5.18 |\n", + "| std | 0.915 |\n", + "| value_loss | 0.613 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 106/600: Total Reward = -9.03\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 31 |\n", + "| ep_rew_mean | -6.68 |\n", + "| success_rate | 0.44 |\n", + "| time/ | |\n", + "| fps | 199 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 88175 |\n", + "| train/ | |\n", + "| entropy_loss | -9.31 |\n", + "| explained_variance | -2.89 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 17634 |\n", + "| policy_loss | -2.37 |\n", + "| std | 0.92 |\n", + "| value_loss | 0.0789 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 107/600: Total Reward = -16.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 36.9 |\n", + "| ep_rew_mean | -8.13 |\n", + "| success_rate | 0.31 |\n", + "| time/ | |\n", + "| fps | 194 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 89010 |\n", + "| train/ | |\n", + "| entropy_loss | -9.3 |\n", + "| explained_variance | -4.52 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 17801 |\n", + "| policy_loss | -1.39 |\n", + "| std | 0.92 |\n", + "| value_loss | 0.0888 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 108/600: Total Reward = -15.78\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 38.5 |\n", + "| ep_rew_mean | -8.26 |\n", + "| success_rate | 0.27 |\n", + "| time/ | |\n", + "| fps | 145 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 89845 |\n", + "| train/ | |\n", + "| entropy_loss | -9.31 |\n", + "| explained_variance | -24.6 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 17968 |\n", + "| policy_loss | -3.16 |\n", + "| std | 0.92 |\n", + "| value_loss | 0.146 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 109/600: Total Reward = -5.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 39.8 |\n", + "| ep_rew_mean | -8.57 |\n", + "| success_rate | 0.23 |\n", + "| time/ | |\n", + "| fps | 212 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 90680 |\n", + "| train/ | |\n", + "| entropy_loss | -9.25 |\n", + "| explained_variance | -0.514 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 18135 |\n", + "| policy_loss | 1.27 |\n", + "| std | 0.913 |\n", + "| value_loss | 0.0225 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 110/600: Total Reward = -4.73\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 41.4 |\n", + "| ep_rew_mean | -8.5 |\n", + "| success_rate | 0.2 |\n", + "| time/ | |\n", + "| fps | 210 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 91515 |\n", + "| train/ | |\n", + "| entropy_loss | -9.27 |\n", + "| explained_variance | 0.00535 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 18302 |\n", + "| policy_loss | 1.43 |\n", + "| std | 0.915 |\n", + "| value_loss | 0.032 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 111/600: Total Reward = -17.72\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 42.1 |\n", + "| ep_rew_mean | -8.4 |\n", + "| success_rate | 0.19 |\n", + "| time/ | |\n", + "| fps | 146 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 92350 |\n", + "| train/ | |\n", + "| entropy_loss | -9.29 |\n", + "| explained_variance | -64 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 18469 |\n", + "| policy_loss | -4.4 |\n", + "| std | 0.919 |\n", + "| value_loss | 0.282 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 112/600: Total Reward = -10.09\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 39.7 |\n", + "| ep_rew_mean | -7.8 |\n", + "| success_rate | 0.25 |\n", + "| time/ | |\n", + "| fps | 209 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 93185 |\n", + "| train/ | |\n", + "| entropy_loss | -9.3 |\n", + "| explained_variance | 0.844 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 18636 |\n", + "| policy_loss | -2.51 |\n", + "| std | 0.92 |\n", + "| value_loss | 0.511 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 113/600: Total Reward = -9.46\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 39.4 |\n", + "| ep_rew_mean | -7.56 |\n", + "| success_rate | 0.27 |\n", + "| time/ | |\n", + "| fps | 203 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 94020 |\n", + "| train/ | |\n", + "| entropy_loss | -9.26 |\n", + "| explained_variance | -6.9 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 18803 |\n", + "| policy_loss | -1.71 |\n", + "| std | 0.915 |\n", + "| value_loss | 0.141 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 114/600: Total Reward = -14.84\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 38.6 |\n", + "| ep_rew_mean | -7.52 |\n", + "| success_rate | 0.29 |\n", + "| time/ | |\n", + "| fps | 138 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 94855 |\n", + "| train/ | |\n", + "| entropy_loss | -9.28 |\n", + "| explained_variance | 0.371 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 18970 |\n", + "| policy_loss | 1.7 |\n", + "| std | 0.918 |\n", + "| value_loss | 0.0702 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 115/600: Total Reward = -0.03\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 39 |\n", + "| ep_rew_mean | -7.79 |\n", + "| success_rate | 0.27 |\n", + "| time/ | |\n", + "| fps | 202 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 95690 |\n", + "| train/ | |\n", + "| entropy_loss | -9.3 |\n", + "| explained_variance | -71.7 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 19137 |\n", + "| policy_loss | 0.609 |\n", + "| std | 0.922 |\n", + "| value_loss | 0.0187 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 116/600: Total Reward = -13.73\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 39 |\n", + "| ep_rew_mean | -7.77 |\n", + "| success_rate | 0.27 |\n", + "| time/ | |\n", + "| fps | 198 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 96525 |\n", + "| train/ | |\n", + "| entropy_loss | -9.29 |\n", + "| explained_variance | 0.616 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 19304 |\n", + "| policy_loss | 0.522 |\n", + "| std | 0.92 |\n", + "| value_loss | 0.00361 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 117/600: Total Reward = -10.46\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 39.3 |\n", + "| ep_rew_mean | -7.75 |\n", + "| success_rate | 0.26 |\n", + "| time/ | |\n", + "| fps | 144 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 97360 |\n", + "| train/ | |\n", + "| entropy_loss | -9.29 |\n", + "| explained_variance | -3.86 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 19471 |\n", + "| policy_loss | 5.16 |\n", + "| std | 0.92 |\n", + "| value_loss | 0.395 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 118/600: Total Reward = -10.80\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 40.2 |\n", + "| ep_rew_mean | -7.88 |\n", + "| success_rate | 0.23 |\n", + "| time/ | |\n", + "| fps | 210 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 98195 |\n", + "| train/ | |\n", + "| entropy_loss | -9.3 |\n", + "| explained_variance | -217 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 19638 |\n", + "| policy_loss | 0.245 |\n", + "| std | 0.921 |\n", + "| value_loss | 0.00902 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 119/600: Total Reward = -10.71\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 40.6 |\n", + "| ep_rew_mean | -7.91 |\n", + "| success_rate | 0.23 |\n", + "| time/ | |\n", + "| fps | 208 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 99030 |\n", + "| train/ | |\n", + "| entropy_loss | -9.32 |\n", + "| explained_variance | -3.08 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 19805 |\n", + "| policy_loss | -6.18 |\n", + "| std | 0.924 |\n", + "| value_loss | 0.401 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 120/600: Total Reward = -1.00\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 41.1 |\n", + "| ep_rew_mean | -7.84 |\n", + "| success_rate | 0.23 |\n", + "| time/ | |\n", + "| fps | 139 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 99865 |\n", + "| train/ | |\n", + "| entropy_loss | -9.3 |\n", + "| explained_variance | 0.511 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 19972 |\n", + "| policy_loss | 22 |\n", + "| std | 0.921 |\n", + "| value_loss | 47.4 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 121/600: Total Reward = -13.90\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 40 |\n", + "| ep_rew_mean | -7.45 |\n", + "| success_rate | 0.26 |\n", + "| time/ | |\n", + "| fps | 215 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 100700 |\n", + "| train/ | |\n", + "| entropy_loss | -9.34 |\n", + "| explained_variance | 0.547 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 20139 |\n", + "| policy_loss | 3.18 |\n", + "| std | 0.925 |\n", + "| value_loss | 0.112 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 122/600: Total Reward = -9.89\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 40.3 |\n", + "| ep_rew_mean | -7.26 |\n", + "| success_rate | 0.27 |\n", + "| time/ | |\n", + "| fps | 217 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 101535 |\n", + "| train/ | |\n", + "| entropy_loss | -9.35 |\n", + "| explained_variance | -8.36 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 20306 |\n", + "| policy_loss | 4.07 |\n", + "| std | 0.927 |\n", + "| value_loss | 0.185 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 123/600: Total Reward = -4.50\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 41.1 |\n", + "| ep_rew_mean | -7.27 |\n", + "| success_rate | 0.26 |\n", + "| time/ | |\n", + "| fps | 151 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 102370 |\n", + "| train/ | |\n", + "| entropy_loss | -9.33 |\n", + "| explained_variance | -39.6 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 20473 |\n", + "| policy_loss | -1.39 |\n", + "| std | 0.924 |\n", + "| value_loss | 0.0324 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 124/600: Total Reward = -0.05\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 39.9 |\n", + "| ep_rew_mean | -6.73 |\n", + "| success_rate | 0.29 |\n", + "| time/ | |\n", + "| fps | 222 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 103205 |\n", + "| train/ | |\n", + "| entropy_loss | -9.31 |\n", + "| explained_variance | 0.054 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 20640 |\n", + "| policy_loss | 0.389 |\n", + "| std | 0.922 |\n", + "| value_loss | 0.022 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 125/600: Total Reward = -0.16\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 35.8 |\n", + "| ep_rew_mean | -5.59 |\n", + "| success_rate | 0.38 |\n", + "| time/ | |\n", + "| fps | 213 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 104040 |\n", + "| train/ | |\n", + "| entropy_loss | -9.31 |\n", + "| explained_variance | -19.9 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 20807 |\n", + "| policy_loss | -3.6 |\n", + "| std | 0.922 |\n", + "| value_loss | 0.206 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 126/600: Total Reward = -1.52\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 28.2 |\n", + "| ep_rew_mean | -4 |\n", + "| success_rate | 0.54 |\n", + "| time/ | |\n", + "| fps | 184 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 104875 |\n", + "| train/ | |\n", + "| entropy_loss | -9.32 |\n", + "| explained_variance | -24.1 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 20974 |\n", + "| policy_loss | 156 |\n", + "| std | 0.923 |\n", + "| value_loss | 332 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 127/600: Total Reward = -7.57\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 27.4 |\n", + "| ep_rew_mean | -3.74 |\n", + "| success_rate | 0.57 |\n", + "| time/ | |\n", + "| fps | 120 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 105710 |\n", + "| train/ | |\n", + "| entropy_loss | -9.28 |\n", + "| explained_variance | 0.998 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 21141 |\n", + "| policy_loss | -1.53 |\n", + "| std | 0.917 |\n", + "| value_loss | 0.0379 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 128/600: Total Reward = -6.84\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 28.8 |\n", + "| ep_rew_mean | -4.13 |\n", + "| success_rate | 0.54 |\n", + "| time/ | |\n", + "| fps | 216 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 106545 |\n", + "| train/ | |\n", + "| entropy_loss | -9.26 |\n", + "| explained_variance | 0.406 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 21308 |\n", + "| policy_loss | -0.0132 |\n", + "| std | 0.915 |\n", + "| value_loss | 0.00891 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 129/600: Total Reward = -8.64\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 29.9 |\n", + "| ep_rew_mean | -4.37 |\n", + "| success_rate | 0.53 |\n", + "| time/ | |\n", + "| fps | 141 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 107380 |\n", + "| train/ | |\n", + "| entropy_loss | -9.31 |\n", + "| explained_variance | -165 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 21475 |\n", + "| policy_loss | -4.64 |\n", + "| std | 0.922 |\n", + "| value_loss | 0.326 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 130/600: Total Reward = -0.61\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 34.4 |\n", + "| ep_rew_mean | -4.94 |\n", + "| success_rate | 0.45 |\n", + "| time/ | |\n", + "| fps | 214 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 108215 |\n", + "| train/ | |\n", + "| entropy_loss | -9.34 |\n", + "| explained_variance | -6.8 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 21642 |\n", + "| policy_loss | -1.27 |\n", + "| std | 0.926 |\n", + "| value_loss | 0.0248 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 131/600: Total Reward = -5.58\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 33.8 |\n", + "| ep_rew_mean | -5 |\n", + "| success_rate | 0.46 |\n", + "| time/ | |\n", + "| fps | 220 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 109050 |\n", + "| train/ | |\n", + "| entropy_loss | -9.35 |\n", + "| explained_variance | 0.822 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 21809 |\n", + "| policy_loss | 0.48 |\n", + "| std | 0.928 |\n", + "| value_loss | 0.00381 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 132/600: Total Reward = -0.55\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 29 |\n", + "| ep_rew_mean | -4 |\n", + "| success_rate | 0.58 |\n", + "| time/ | |\n", + "| fps | 172 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 109885 |\n", + "| train/ | |\n", + "| entropy_loss | -9.4 |\n", + "| explained_variance | -1.83 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 21976 |\n", + "| policy_loss | -2.9 |\n", + "| std | 0.933 |\n", + "| value_loss | 0.206 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 133/600: Total Reward = -4.09\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 24.4 |\n", + "| ep_rew_mean | -3.36 |\n", + "| success_rate | 0.66 |\n", + "| time/ | |\n", + "| fps | 219 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 110720 |\n", + "| train/ | |\n", + "| entropy_loss | -9.38 |\n", + "| explained_variance | -0.973 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 22143 |\n", + "| policy_loss | -1.01 |\n", + "| std | 0.93 |\n", + "| value_loss | 0.0261 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 134/600: Total Reward = -0.36\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 25.1 |\n", + "| ep_rew_mean | -3.27 |\n", + "| success_rate | 0.65 |\n", + "| time/ | |\n", + "| fps | 215 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 111555 |\n", + "| train/ | |\n", + "| entropy_loss | -9.36 |\n", + "| explained_variance | -1.43 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 22310 |\n", + "| policy_loss | -0.895 |\n", + "| std | 0.928 |\n", + "| value_loss | 0.0205 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 135/600: Total Reward = -5.93\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 26.4 |\n", + "| ep_rew_mean | -3.42 |\n", + "| success_rate | 0.61 |\n", + "| time/ | |\n", + "| fps | 181 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 112390 |\n", + "| train/ | |\n", + "| entropy_loss | -9.35 |\n", + "| explained_variance | -1.23 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 22477 |\n", + "| policy_loss | 3.9 |\n", + "| std | 0.926 |\n", + "| value_loss | 0.184 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 136/600: Total Reward = -7.18\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 29.2 |\n", + "| ep_rew_mean | -3.74 |\n", + "| success_rate | 0.56 |\n", + "| time/ | |\n", + "| fps | 208 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 113225 |\n", + "| train/ | |\n", + "| entropy_loss | -9.32 |\n", + "| explained_variance | -7.25 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 22644 |\n", + "| policy_loss | 2.34 |\n", + "| std | 0.923 |\n", + "| value_loss | 0.122 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 137/600: Total Reward = -1.11\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 29.9 |\n", + "| ep_rew_mean | -3.72 |\n", + "| success_rate | 0.56 |\n", + "| time/ | |\n", + "| fps | 223 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 114060 |\n", + "| train/ | |\n", + "| entropy_loss | -9.33 |\n", + "| explained_variance | -156 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 22811 |\n", + "| policy_loss | 0.454 |\n", + "| std | 0.923 |\n", + "| value_loss | 0.021 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 138/600: Total Reward = -4.70\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 28.4 |\n", + "| ep_rew_mean | -3.36 |\n", + "| success_rate | 0.63 |\n", + "| time/ | |\n", + "| fps | 222 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 114895 |\n", + "| train/ | |\n", + "| entropy_loss | -9.28 |\n", + "| explained_variance | -285 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 22978 |\n", + "| policy_loss | -4.06 |\n", + "| std | 0.917 |\n", + "| value_loss | 0.48 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 139/600: Total Reward = -0.32\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 27.7 |\n", + "| ep_rew_mean | -3.24 |\n", + "| success_rate | 0.66 |\n", + "| time/ | |\n", + "| fps | 161 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 115730 |\n", + "| train/ | |\n", + "| entropy_loss | -9.29 |\n", + "| explained_variance | -15 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 23145 |\n", + "| policy_loss | 3.55 |\n", + "| std | 0.918 |\n", + "| value_loss | 0.196 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 140/600: Total Reward = -1.74\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 26.2 |\n", + "| ep_rew_mean | -3.04 |\n", + "| success_rate | 0.67 |\n", + "| time/ | |\n", + "| fps | 224 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 116565 |\n", + "| train/ | |\n", + "| entropy_loss | -9.29 |\n", + "| explained_variance | -1.83 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 23312 |\n", + "| policy_loss | 119 |\n", + "| std | 0.919 |\n", + "| value_loss | 137 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 141/600: Total Reward = -0.12\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 26.3 |\n", + "| ep_rew_mean | -3.01 |\n", + "| success_rate | 0.68 |\n", + "| time/ | |\n", + "| fps | 223 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 117400 |\n", + "| train/ | |\n", + "| entropy_loss | -9.26 |\n", + "| explained_variance | -1.11 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 23479 |\n", + "| policy_loss | 0.561 |\n", + "| std | 0.915 |\n", + "| value_loss | 0.00464 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 142/600: Total Reward = -0.22\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 24.7 |\n", + "| ep_rew_mean | -2.75 |\n", + "| success_rate | 0.7 |\n", + "| time/ | |\n", + "| fps | 167 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 118235 |\n", + "| train/ | |\n", + "| entropy_loss | -9.21 |\n", + "| explained_variance | -18.4 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 23646 |\n", + "| policy_loss | 0.984 |\n", + "| std | 0.909 |\n", + "| value_loss | 0.0111 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 143/600: Total Reward = -0.25\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 25.1 |\n", + "| ep_rew_mean | -2.8 |\n", + "| success_rate | 0.72 |\n", + "| time/ | |\n", + "| fps | 229 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 119070 |\n", + "| train/ | |\n", + "| entropy_loss | -9.23 |\n", + "| explained_variance | -5.45 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 23813 |\n", + "| policy_loss | -3.3 |\n", + "| std | 0.911 |\n", + "| value_loss | 0.165 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 144/600: Total Reward = -0.17\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 27.4 |\n", + "| ep_rew_mean | -3.13 |\n", + "| success_rate | 0.65 |\n", + "| time/ | |\n", + "| fps | 229 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 119905 |\n", + "| train/ | |\n", + "| entropy_loss | -9.24 |\n", + "| explained_variance | -196 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 23980 |\n", + "| policy_loss | -3.71 |\n", + "| std | 0.912 |\n", + "| value_loss | 0.179 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 145/600: Total Reward = -9.82\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 28.4 |\n", + "| ep_rew_mean | -3.39 |\n", + "| success_rate | 0.61 |\n", + "| time/ | |\n", + "| fps | 217 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 120740 |\n", + "| train/ | |\n", + "| entropy_loss | -9.23 |\n", + "| explained_variance | 0.293 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 24147 |\n", + "| policy_loss | -0.371 |\n", + "| std | 0.912 |\n", + "| value_loss | 0.0107 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 146/600: Total Reward = -3.93\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 29.6 |\n", + "| ep_rew_mean | -3.8 |\n", + "| success_rate | 0.58 |\n", + "| time/ | |\n", + "| fps | 170 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 121575 |\n", + "| train/ | |\n", + "| entropy_loss | -9.21 |\n", + "| explained_variance | -2.33 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 24314 |\n", + "| policy_loss | 140 |\n", + "| std | 0.91 |\n", + "| value_loss | 242 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 147/600: Total Reward = -0.23\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 29.5 |\n", + "| ep_rew_mean | -3.85 |\n", + "| success_rate | 0.59 |\n", + "| time/ | |\n", + "| fps | 218 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 122410 |\n", + "| train/ | |\n", + "| entropy_loss | -9.21 |\n", + "| explained_variance | -32.9 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 24481 |\n", + "| policy_loss | -1.25 |\n", + "| std | 0.909 |\n", + "| value_loss | 0.0207 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 148/600: Total Reward = -8.44\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 28.8 |\n", + "| ep_rew_mean | -3.81 |\n", + "| success_rate | 0.62 |\n", + "| time/ | |\n", + "| fps | 217 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 123245 |\n", + "| train/ | |\n", + "| entropy_loss | -9.22 |\n", + "| explained_variance | -29.7 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 24648 |\n", + "| policy_loss | -1.45 |\n", + "| std | 0.911 |\n", + "| value_loss | 0.0323 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 149/600: Total Reward = -5.01\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 30.4 |\n", + "| ep_rew_mean | -3.93 |\n", + "| success_rate | 0.6 |\n", + "| time/ | |\n", + "| fps | 149 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 124080 |\n", + "| train/ | |\n", + "| entropy_loss | -9.19 |\n", + "| explained_variance | -46.7 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 24815 |\n", + "| policy_loss | -0.0429 |\n", + "| std | 0.908 |\n", + "| value_loss | 0.0296 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 150/600: Total Reward = -3.65\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 30.3 |\n", + "| ep_rew_mean | -3.83 |\n", + "| success_rate | 0.58 |\n", + "| time/ | |\n", + "| fps | 218 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 124915 |\n", + "| train/ | |\n", + "| entropy_loss | -9.18 |\n", + "| explained_variance | -7.55 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 24982 |\n", + "| policy_loss | 2.35 |\n", + "| std | 0.905 |\n", + "| value_loss | 0.0923 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 151/600: Total Reward = -0.45\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 30 |\n", + "| ep_rew_mean | -3.76 |\n", + "| success_rate | 0.58 |\n", + "| time/ | |\n", + "| fps | 221 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 125750 |\n", + "| train/ | |\n", + "| entropy_loss | -9.19 |\n", + "| explained_variance | 0.649 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 25149 |\n", + "| policy_loss | -0.44 |\n", + "| std | 0.906 |\n", + "| value_loss | 0.00379 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 152/600: Total Reward = -0.17\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 29.5 |\n", + "| ep_rew_mean | -3.6 |\n", + "| success_rate | 0.59 |\n", + "| time/ | |\n", + "| fps | 150 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 126585 |\n", + "| train/ | |\n", + "| entropy_loss | -9.19 |\n", + "| explained_variance | -13.1 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 25316 |\n", + "| policy_loss | 0.31 |\n", + "| std | 0.907 |\n", + "| value_loss | 0.036 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 153/600: Total Reward = -5.73\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 30.1 |\n", + "| ep_rew_mean | -3.73 |\n", + "| success_rate | 0.58 |\n", + "| time/ | |\n", + "| fps | 211 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 127420 |\n", + "| train/ | |\n", + "| entropy_loss | -9.19 |\n", + "| explained_variance | 0.611 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 25483 |\n", + "| policy_loss | -3.52 |\n", + "| std | 0.907 |\n", + "| value_loss | 0.136 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 154/600: Total Reward = -0.20\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 25.4 |\n", + "| ep_rew_mean | -3.1 |\n", + "| success_rate | 0.67 |\n", + "| time/ | |\n", + "| fps | 219 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 128255 |\n", + "| train/ | |\n", + "| entropy_loss | -9.2 |\n", + "| explained_variance | -0.636 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 25650 |\n", + "| policy_loss | -0.749 |\n", + "| std | 0.91 |\n", + "| value_loss | 0.0138 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 155/600: Total Reward = -6.30\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 26.2 |\n", + "| ep_rew_mean | -3.21 |\n", + "| success_rate | 0.66 |\n", + "| time/ | |\n", + "| fps | 170 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 129090 |\n", + "| train/ | |\n", + "| entropy_loss | -9.19 |\n", + "| explained_variance | -23 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 25817 |\n", + "| policy_loss | -1.96 |\n", + "| std | 0.907 |\n", + "| value_loss | 0.05 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 156/600: Total Reward = -0.39\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 25.6 |\n", + "| ep_rew_mean | -3.27 |\n", + "| success_rate | 0.67 |\n", + "| time/ | |\n", + "| fps | 225 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 129925 |\n", + "| train/ | |\n", + "| entropy_loss | -9.16 |\n", + "| explained_variance | -223 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 25984 |\n", + "| policy_loss | 0.92 |\n", + "| std | 0.903 |\n", + "| value_loss | 0.0542 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 157/600: Total Reward = -6.43\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 29.1 |\n", + "| ep_rew_mean | -3.8 |\n", + "| success_rate | 0.58 |\n", + "| time/ | |\n", + "| fps | 221 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 130760 |\n", + "| train/ | |\n", + "| entropy_loss | -9.2 |\n", + "| explained_variance | 0.319 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 26151 |\n", + "| policy_loss | -0.288 |\n", + "| std | 0.908 |\n", + "| value_loss | 0.00271 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 158/600: Total Reward = -5.47\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 29.1 |\n", + "| ep_rew_mean | -4.05 |\n", + "| success_rate | 0.57 |\n", + "| time/ | |\n", + "| fps | 223 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 131595 |\n", + "| train/ | |\n", + "| entropy_loss | -9.14 |\n", + "| explained_variance | -30.1 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 26318 |\n", + "| policy_loss | 0.394 |\n", + "| std | 0.9 |\n", + "| value_loss | 0.0195 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 159/600: Total Reward = -4.66\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 30.4 |\n", + "| ep_rew_mean | -4.35 |\n", + "| success_rate | 0.51 |\n", + "| time/ | |\n", + "| fps | 164 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 132430 |\n", + "| train/ | |\n", + "| entropy_loss | -9.15 |\n", + "| explained_variance | -32.4 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 26485 |\n", + "| policy_loss | -1.42 |\n", + "| std | 0.903 |\n", + "| value_loss | 0.0771 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 160/600: Total Reward = -10.42\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 28.4 |\n", + "| ep_rew_mean | -4.15 |\n", + "| success_rate | 0.55 |\n", + "| time/ | |\n", + "| fps | 212 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 133265 |\n", + "| train/ | |\n", + "| entropy_loss | -9.17 |\n", + "| explained_variance | -2.2 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 26652 |\n", + "| policy_loss | -0.983 |\n", + "| std | 0.905 |\n", + "| value_loss | 0.0579 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 161/600: Total Reward = -11.57\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 27.5 |\n", + "| ep_rew_mean | -4.11 |\n", + "| success_rate | 0.55 |\n", + "| time/ | |\n", + "| fps | 218 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 134100 |\n", + "| train/ | |\n", + "| entropy_loss | -9.15 |\n", + "| explained_variance | -17 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 26819 |\n", + "| policy_loss | 1.21 |\n", + "| std | 0.903 |\n", + "| value_loss | 0.0383 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 162/600: Total Reward = -8.97\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 32.7 |\n", + "| ep_rew_mean | -4.94 |\n", + "| success_rate | 0.43 |\n", + "| time/ | |\n", + "| fps | 149 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 134935 |\n", + "| train/ | |\n", + "| entropy_loss | -9.17 |\n", + "| explained_variance | -185 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 26986 |\n", + "| policy_loss | 2.11 |\n", + "| std | 0.905 |\n", + "| value_loss | 0.0897 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 163/600: Total Reward = -0.03\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 31.7 |\n", + "| ep_rew_mean | -4.66 |\n", + "| success_rate | 0.46 |\n", + "| time/ | |\n", + "| fps | 219 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 135770 |\n", + "| train/ | |\n", + "| entropy_loss | -9.17 |\n", + "| explained_variance | -1.72 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 27153 |\n", + "| policy_loss | -1.94 |\n", + "| std | 0.905 |\n", + "| value_loss | 0.0464 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 164/600: Total Reward = -9.47\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 34.2 |\n", + "| ep_rew_mean | -4.87 |\n", + "| success_rate | 0.41 |\n", + "| time/ | |\n", + "| fps | 204 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 136605 |\n", + "| train/ | |\n", + "| entropy_loss | -9.18 |\n", + "| explained_variance | -1.86 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 27320 |\n", + "| policy_loss | 3.43 |\n", + "| std | 0.906 |\n", + "| value_loss | 0.143 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 165/600: Total Reward = -3.94\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 33.6 |\n", + "| ep_rew_mean | -4.7 |\n", + "| success_rate | 0.42 |\n", + "| time/ | |\n", + "| fps | 133 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 137440 |\n", + "| train/ | |\n", + "| entropy_loss | -9.2 |\n", + "| explained_variance | 0.91 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 27487 |\n", + "| policy_loss | -1.86 |\n", + "| std | 0.909 |\n", + "| value_loss | 0.0335 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 166/600: Total Reward = -8.33\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 32.6 |\n", + "| ep_rew_mean | -4.28 |\n", + "| success_rate | 0.49 |\n", + "| time/ | |\n", + "| fps | 209 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 138275 |\n", + "| train/ | |\n", + "| entropy_loss | -9.21 |\n", + "| explained_variance | -110 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 27654 |\n", + "| policy_loss | -2.94 |\n", + "| std | 0.912 |\n", + "| value_loss | 0.145 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 167/600: Total Reward = -0.54\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 30.8 |\n", + "| ep_rew_mean | -3.8 |\n", + "| success_rate | 0.55 |\n", + "| time/ | |\n", + "| fps | 214 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 139110 |\n", + "| train/ | |\n", + "| entropy_loss | -9.21 |\n", + "| explained_variance | -9.12 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 27821 |\n", + "| policy_loss | 0.831 |\n", + "| std | 0.912 |\n", + "| value_loss | 0.0164 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 168/600: Total Reward = -0.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 32.9 |\n", + "| ep_rew_mean | -3.96 |\n", + "| success_rate | 0.5 |\n", + "| time/ | |\n", + "| fps | 143 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 139945 |\n", + "| train/ | |\n", + "| entropy_loss | -9.21 |\n", + "| explained_variance | -0.0492 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 27988 |\n", + "| policy_loss | -0.601 |\n", + "| std | 0.912 |\n", + "| value_loss | 0.00722 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 169/600: Total Reward = -5.09\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 34 |\n", + "| ep_rew_mean | -4.02 |\n", + "| success_rate | 0.49 |\n", + "| time/ | |\n", + "| fps | 206 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 140780 |\n", + "| train/ | |\n", + "| entropy_loss | -9.19 |\n", + "| explained_variance | -24.4 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 28155 |\n", + "| policy_loss | -0.982 |\n", + "| std | 0.909 |\n", + "| value_loss | 0.015 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 170/600: Total Reward = -7.87\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 31.7 |\n", + "| ep_rew_mean | -3.88 |\n", + "| success_rate | 0.51 |\n", + "| time/ | |\n", + "| fps | 215 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 141615 |\n", + "| train/ | |\n", + "| entropy_loss | -9.18 |\n", + "| explained_variance | 0.0474 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 28322 |\n", + "| policy_loss | 19.4 |\n", + "| std | 0.908 |\n", + "| value_loss | 31.3 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 171/600: Total Reward = -7.94\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 33.4 |\n", + "| ep_rew_mean | -4.23 |\n", + "| success_rate | 0.45 |\n", + "| time/ | |\n", + "| fps | 151 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 142450 |\n", + "| train/ | |\n", + "| entropy_loss | -9.21 |\n", + "| explained_variance | 0.521 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 28489 |\n", + "| policy_loss | 0.0945 |\n", + "| std | 0.912 |\n", + "| value_loss | 0.000956 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 172/600: Total Reward = -0.49\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 34.5 |\n", + "| ep_rew_mean | -4.6 |\n", + "| success_rate | 0.42 |\n", + "| time/ | |\n", + "| fps | 219 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 143285 |\n", + "| train/ | |\n", + "| entropy_loss | -9.25 |\n", + "| explained_variance | -0.887 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 28656 |\n", + "| policy_loss | 0.259 |\n", + "| std | 0.917 |\n", + "| value_loss | 0.00196 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 173/600: Total Reward = -5.48\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 31.9 |\n", + "| ep_rew_mean | -4.29 |\n", + "| success_rate | 0.47 |\n", + "| time/ | |\n", + "| fps | 203 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 144120 |\n", + "| train/ | |\n", + "| entropy_loss | -9.2 |\n", + "| explained_variance | -1.25 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 28823 |\n", + "| policy_loss | -0.0338 |\n", + "| std | 0.911 |\n", + "| value_loss | 0.00284 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 174/600: Total Reward = -4.49\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 33 |\n", + "| ep_rew_mean | -4.23 |\n", + "| success_rate | 0.45 |\n", + "| time/ | |\n", + "| fps | 164 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 144955 |\n", + "| train/ | |\n", + "| entropy_loss | -9.2 |\n", + "| explained_variance | -25.8 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 28990 |\n", + "| policy_loss | -0.531 |\n", + "| std | 0.91 |\n", + "| value_loss | 0.00659 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 175/600: Total Reward = -5.97\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 32.9 |\n", + "| ep_rew_mean | -4.17 |\n", + "| success_rate | 0.46 |\n", + "| time/ | |\n", + "| fps | 221 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 145790 |\n", + "| train/ | |\n", + "| entropy_loss | -9.2 |\n", + "| explained_variance | -5.56 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 29157 |\n", + "| policy_loss | -0.733 |\n", + "| std | 0.91 |\n", + "| value_loss | 0.00726 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 176/600: Total Reward = -6.69\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 31.2 |\n", + "| ep_rew_mean | -3.78 |\n", + "| success_rate | 0.49 |\n", + "| time/ | |\n", + "| fps | 221 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 146625 |\n", + "| train/ | |\n", + "| entropy_loss | -9.19 |\n", + "| explained_variance | -0.676 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 29324 |\n", + "| policy_loss | 0.691 |\n", + "| std | 0.909 |\n", + "| value_loss | 0.00542 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 177/600: Total Reward = -4.37\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 30 |\n", + "| ep_rew_mean | -3.63 |\n", + "| success_rate | 0.53 |\n", + "| time/ | |\n", + "| fps | 198 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 147460 |\n", + "| train/ | |\n", + "| entropy_loss | -9.18 |\n", + "| explained_variance | 0.752 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 29491 |\n", + "| policy_loss | 0.533 |\n", + "| std | 0.908 |\n", + "| value_loss | 0.00556 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 178/600: Total Reward = -0.09\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 28.2 |\n", + "| ep_rew_mean | -3.42 |\n", + "| success_rate | 0.59 |\n", + "| time/ | |\n", + "| fps | 175 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 148295 |\n", + "| train/ | |\n", + "| entropy_loss | -9.16 |\n", + "| explained_variance | -0.436 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 29658 |\n", + "| policy_loss | 1.04 |\n", + "| std | 0.906 |\n", + "| value_loss | 0.0126 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 179/600: Total Reward = -6.74\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 29 |\n", + "| ep_rew_mean | -3.63 |\n", + "| success_rate | 0.55 |\n", + "| time/ | |\n", + "| fps | 207 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 149130 |\n", + "| train/ | |\n", + "| entropy_loss | -9.15 |\n", + "| explained_variance | -1.37 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 29825 |\n", + "| policy_loss | 0.507 |\n", + "| std | 0.904 |\n", + "| value_loss | 0.00912 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 180/600: Total Reward = -0.80\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 28.7 |\n", + "| ep_rew_mean | -3.52 |\n", + "| success_rate | 0.58 |\n", + "| time/ | |\n", + "| fps | 160 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 149965 |\n", + "| train/ | |\n", + "| entropy_loss | -9.13 |\n", + "| explained_variance | -0.169 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 29992 |\n", + "| policy_loss | 0.41 |\n", + "| std | 0.901 |\n", + "| value_loss | 0.00248 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 181/600: Total Reward = -6.43\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 30.7 |\n", + "| ep_rew_mean | -3.8 |\n", + "| success_rate | 0.55 |\n", + "| time/ | |\n", + "| fps | 170 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 150800 |\n", + "| train/ | |\n", + "| entropy_loss | -9.12 |\n", + "| explained_variance | 0.993 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 30159 |\n", + "| policy_loss | -0.0252 |\n", + "| std | 0.901 |\n", + "| value_loss | 0.0135 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 182/600: Total Reward = -7.46\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 30.5 |\n", + "| ep_rew_mean | -3.83 |\n", + "| success_rate | 0.54 |\n", + "| time/ | |\n", + "| fps | 214 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 151635 |\n", + "| train/ | |\n", + "| entropy_loss | -9.11 |\n", + "| explained_variance | -16.7 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 30326 |\n", + "| policy_loss | -1.08 |\n", + "| std | 0.899 |\n", + "| value_loss | 0.0222 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 183/600: Total Reward = -5.67\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 30 |\n", + "| ep_rew_mean | -3.66 |\n", + "| success_rate | 0.55 |\n", + "| time/ | |\n", + "| fps | 203 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 152470 |\n", + "| train/ | |\n", + "| entropy_loss | -9.16 |\n", + "| explained_variance | 0.257 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 30493 |\n", + "| policy_loss | -0.514 |\n", + "| std | 0.905 |\n", + "| value_loss | 0.00442 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 184/600: Total Reward = -2.11\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 31.4 |\n", + "| ep_rew_mean | -3.87 |\n", + "| success_rate | 0.5 |\n", + "| time/ | |\n", + "| fps | 158 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 153305 |\n", + "| train/ | |\n", + "| entropy_loss | -9.14 |\n", + "| explained_variance | -122 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 30660 |\n", + "| policy_loss | -1.05 |\n", + "| std | 0.904 |\n", + "| value_loss | 0.0233 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 185/600: Total Reward = -0.91\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 30.9 |\n", + "| ep_rew_mean | -3.71 |\n", + "| success_rate | 0.52 |\n", + "| time/ | |\n", + "| fps | 152 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 154140 |\n", + "| train/ | |\n", + "| entropy_loss | -9.16 |\n", + "| explained_variance | 0.943 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 30827 |\n", + "| policy_loss | -0.321 |\n", + "| std | 0.908 |\n", + "| value_loss | 0.00713 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 186/600: Total Reward = -1.05\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 32 |\n", + "| ep_rew_mean | -3.82 |\n", + "| success_rate | 0.5 |\n", + "| time/ | |\n", + "| fps | 193 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 154975 |\n", + "| train/ | |\n", + "| entropy_loss | -9.15 |\n", + "| explained_variance | -13.4 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 30994 |\n", + "| policy_loss | 0.985 |\n", + "| std | 0.907 |\n", + "| value_loss | 0.0176 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 187/600: Total Reward = -1.71\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 29.8 |\n", + "| ep_rew_mean | -3.52 |\n", + "| success_rate | 0.58 |\n", + "| time/ | |\n", + "| fps | 167 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 155810 |\n", + "| train/ | |\n", + "| entropy_loss | -9.19 |\n", + "| explained_variance | 0.218 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 31161 |\n", + "| policy_loss | 0.242 |\n", + "| std | 0.911 |\n", + "| value_loss | 0.00146 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 188/600: Total Reward = -8.53\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 28.4 |\n", + "| ep_rew_mean | -3.39 |\n", + "| success_rate | 0.59 |\n", + "| time/ | |\n", + "| fps | 209 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 156645 |\n", + "| train/ | |\n", + "| entropy_loss | -9.2 |\n", + "| explained_variance | -2.6 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 31328 |\n", + "| policy_loss | -1.3 |\n", + "| std | 0.913 |\n", + "| value_loss | 0.019 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 189/600: Total Reward = -0.19\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 25.1 |\n", + "| ep_rew_mean | -2.97 |\n", + "| success_rate | 0.66 |\n", + "| time/ | |\n", + "| fps | 216 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 157480 |\n", + "| train/ | |\n", + "| entropy_loss | -9.2 |\n", + "| explained_variance | -6.81 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 31495 |\n", + "| policy_loss | 0.956 |\n", + "| std | 0.914 |\n", + "| value_loss | 0.0172 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 190/600: Total Reward = -0.82\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 26.1 |\n", + "| ep_rew_mean | -3.07 |\n", + "| success_rate | 0.66 |\n", + "| time/ | |\n", + "| fps | 147 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 158315 |\n", + "| train/ | |\n", + "| entropy_loss | -9.19 |\n", + "| explained_variance | -5.06 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 31662 |\n", + "| policy_loss | 1.43 |\n", + "| std | 0.912 |\n", + "| value_loss | 0.029 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 191/600: Total Reward = -0.42\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 26.2 |\n", + "| ep_rew_mean | -3.17 |\n", + "| success_rate | 0.67 |\n", + "| time/ | |\n", + "| fps | 207 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 159150 |\n", + "| train/ | |\n", + "| entropy_loss | -9.17 |\n", + "| explained_variance | 0.105 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 31829 |\n", + "| policy_loss | -0.962 |\n", + "| std | 0.908 |\n", + "| value_loss | 0.0161 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 192/600: Total Reward = -3.29\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 26 |\n", + "| ep_rew_mean | -3.57 |\n", + "| success_rate | 0.67 |\n", + "| time/ | |\n", + "| fps | 215 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 159985 |\n", + "| train/ | |\n", + "| entropy_loss | -9.2 |\n", + "| explained_variance | 0.715 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 31996 |\n", + "| policy_loss | 2 |\n", + "| std | 0.912 |\n", + "| value_loss | 0.0532 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 193/600: Total Reward = -0.25\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 22.6 |\n", + "| ep_rew_mean | -3.14 |\n", + "| success_rate | 0.71 |\n", + "| time/ | |\n", + "| fps | 133 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 160820 |\n", + "| train/ | |\n", + "| entropy_loss | -9.17 |\n", + "| explained_variance | 0.0889 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 32163 |\n", + "| policy_loss | -5.43 |\n", + "| std | 0.907 |\n", + "| value_loss | 0.34 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 194/600: Total Reward = -0.89\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 21.9 |\n", + "| ep_rew_mean | -2.79 |\n", + "| success_rate | 0.71 |\n", + "| time/ | |\n", + "| fps | 204 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 161655 |\n", + "| train/ | |\n", + "| entropy_loss | -9.23 |\n", + "| explained_variance | -1.19 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 32330 |\n", + "| policy_loss | -0.728 |\n", + "| std | 0.915 |\n", + "| value_loss | 0.0132 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 195/600: Total Reward = -5.12\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 21.6 |\n", + "| ep_rew_mean | -2.29 |\n", + "| success_rate | 0.74 |\n", + "| time/ | |\n", + "| fps | 212 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 162490 |\n", + "| train/ | |\n", + "| entropy_loss | -9.21 |\n", + "| explained_variance | -0.883 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 32497 |\n", + "| policy_loss | -1.26 |\n", + "| std | 0.913 |\n", + "| value_loss | 0.0244 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 196/600: Total Reward = -7.71\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 23.7 |\n", + "| ep_rew_mean | -2.51 |\n", + "| success_rate | 0.69 |\n", + "| time/ | |\n", + "| fps | 143 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 163325 |\n", + "| train/ | |\n", + "| entropy_loss | -9.23 |\n", + "| explained_variance | -1.13 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 32664 |\n", + "| policy_loss | 0.423 |\n", + "| std | 0.914 |\n", + "| value_loss | 0.00275 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 197/600: Total Reward = -2.45\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 27.7 |\n", + "| ep_rew_mean | -3.06 |\n", + "| success_rate | 0.6 |\n", + "| time/ | |\n", + "| fps | 208 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 164160 |\n", + "| train/ | |\n", + "| entropy_loss | -9.22 |\n", + "| explained_variance | -1.64 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 32831 |\n", + "| policy_loss | -0.102 |\n", + "| std | 0.913 |\n", + "| value_loss | 0.000892 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 198/600: Total Reward = -0.22\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 27.9 |\n", + "| ep_rew_mean | -3.19 |\n", + "| success_rate | 0.59 |\n", + "| time/ | |\n", + "| fps | 211 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 164995 |\n", + "| train/ | |\n", + "| entropy_loss | -9.21 |\n", + "| explained_variance | -7.11 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 32998 |\n", + "| policy_loss | -0.192 |\n", + "| std | 0.911 |\n", + "| value_loss | 0.00255 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 199/600: Total Reward = -0.80\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 26.9 |\n", + "| ep_rew_mean | -3.11 |\n", + "| success_rate | 0.6 |\n", + "| time/ | |\n", + "| fps | 158 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 165830 |\n", + "| train/ | |\n", + "| entropy_loss | -9.23 |\n", + "| explained_variance | -3.37 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 33165 |\n", + "| policy_loss | -0.2 |\n", + "| std | 0.914 |\n", + "| value_loss | 0.00918 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 200/600: Total Reward = -4.66\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 20.4 |\n", + "| ep_rew_mean | -2.25 |\n", + "| success_rate | 0.75 |\n", + "| time/ | |\n", + "| fps | 198 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 166665 |\n", + "| train/ | |\n", + "| entropy_loss | -9.24 |\n", + "| explained_variance | -2.04 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 33332 |\n", + "| policy_loss | -0.322 |\n", + "| std | 0.914 |\n", + "| value_loss | 0.00257 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 201/600: Total Reward = -6.81\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 21.1 |\n", + "| ep_rew_mean | -2.33 |\n", + "| success_rate | 0.74 |\n", + "| time/ | |\n", + "| fps | 187 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 167500 |\n", + "| train/ | |\n", + "| entropy_loss | -9.23 |\n", + "| explained_variance | 0.986 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 33499 |\n", + "| policy_loss | 0.575 |\n", + "| std | 0.913 |\n", + "| value_loss | 0.0189 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 202/600: Total Reward = -3.75\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 20.6 |\n", + "| ep_rew_mean | -2.26 |\n", + "| success_rate | 0.72 |\n", + "| time/ | |\n", + "| fps | 154 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 168335 |\n", + "| train/ | |\n", + "| entropy_loss | -9.22 |\n", + "| explained_variance | 0.952 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 33666 |\n", + "| policy_loss | 0.714 |\n", + "| std | 0.911 |\n", + "| value_loss | 0.0098 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 203/600: Total Reward = -0.11\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 24.4 |\n", + "| ep_rew_mean | -2.62 |\n", + "| success_rate | 0.67 |\n", + "| time/ | |\n", + "| fps | 196 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 169170 |\n", + "| train/ | |\n", + "| entropy_loss | -9.22 |\n", + "| explained_variance | -1.15 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 33833 |\n", + "| policy_loss | 0.0607 |\n", + "| std | 0.912 |\n", + "| value_loss | 0.00175 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 204/600: Total Reward = -6.29\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 24.6 |\n", + "| ep_rew_mean | -2.56 |\n", + "| success_rate | 0.7 |\n", + "| time/ | |\n", + "| fps | 204 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 170005 |\n", + "| train/ | |\n", + "| entropy_loss | -9.21 |\n", + "| explained_variance | -3.51 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 34000 |\n", + "| policy_loss | 0.171 |\n", + "| std | 0.91 |\n", + "| value_loss | 0.00235 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 205/600: Total Reward = -1.71\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 24.3 |\n", + "| ep_rew_mean | -2.43 |\n", + "| success_rate | 0.76 |\n", + "| time/ | |\n", + "| fps | 155 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 170840 |\n", + "| train/ | |\n", + "| entropy_loss | -9.17 |\n", + "| explained_variance | -22.2 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 34167 |\n", + "| policy_loss | 0.67 |\n", + "| std | 0.905 |\n", + "| value_loss | 0.00704 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 206/600: Total Reward = -0.18\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 20.4 |\n", + "| ep_rew_mean | -2 |\n", + "| success_rate | 0.83 |\n", + "| time/ | |\n", + "| fps | 200 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 171675 |\n", + "| train/ | |\n", + "| entropy_loss | -9.15 |\n", + "| explained_variance | -5.58 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 34334 |\n", + "| policy_loss | -0.165 |\n", + "| std | 0.902 |\n", + "| value_loss | 0.00268 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 207/600: Total Reward = -0.40\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 19.1 |\n", + "| ep_rew_mean | -1.79 |\n", + "| success_rate | 0.85 |\n", + "| time/ | |\n", + "| fps | 155 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 172510 |\n", + "| train/ | |\n", + "| entropy_loss | -9.12 |\n", + "| explained_variance | -2.41 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 34501 |\n", + "| policy_loss | -0.146 |\n", + "| std | 0.899 |\n", + "| value_loss | 0.00391 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 208/600: Total Reward = -0.65\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 19 |\n", + "| ep_rew_mean | -1.81 |\n", + "| success_rate | 0.85 |\n", + "| time/ | |\n", + "| fps | 145 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 173345 |\n", + "| train/ | |\n", + "| entropy_loss | -9.1 |\n", + "| explained_variance | 0.374 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 34668 |\n", + "| policy_loss | 13.3 |\n", + "| std | 0.898 |\n", + "| value_loss | 4.35 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 209/600: Total Reward = -0.48\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 14.1 |\n", + "| ep_rew_mean | -1.28 |\n", + "| success_rate | 0.97 |\n", + "| time/ | |\n", + "| fps | 203 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 174180 |\n", + "| train/ | |\n", + "| entropy_loss | -9.08 |\n", + "| explained_variance | -1.16 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 34835 |\n", + "| policy_loss | -1.22 |\n", + "| std | 0.894 |\n", + "| value_loss | 0.0206 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 210/600: Total Reward = -0.93\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 15.1 |\n", + "| ep_rew_mean | -1.34 |\n", + "| success_rate | 0.93 |\n", + "| time/ | |\n", + "| fps | 197 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 175015 |\n", + "| train/ | |\n", + "| entropy_loss | -9.08 |\n", + "| explained_variance | 0.668 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 35002 |\n", + "| policy_loss | 25.6 |\n", + "| std | 0.895 |\n", + "| value_loss | 7.78 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 211/600: Total Reward = -5.91\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 11.7 |\n", + "| ep_rew_mean | -1.04 |\n", + "| success_rate | 0.97 |\n", + "| time/ | |\n", + "| fps | 147 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 175850 |\n", + "| train/ | |\n", + "| entropy_loss | -9.08 |\n", + "| explained_variance | -0.525 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 35169 |\n", + "| policy_loss | -0.53 |\n", + "| std | 0.893 |\n", + "| value_loss | 0.0172 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 212/600: Total Reward = -0.94\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 11.4 |\n", + "| ep_rew_mean | -1.11 |\n", + "| success_rate | 0.93 |\n", + "| time/ | |\n", + "| fps | 203 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 176685 |\n", + "| train/ | |\n", + "| entropy_loss | -9.06 |\n", + "| explained_variance | -5.3 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 35336 |\n", + "| policy_loss | -2.93 |\n", + "| std | 0.891 |\n", + "| value_loss | 0.103 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 213/600: Total Reward = -0.78\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 12.1 |\n", + "| ep_rew_mean | -1.12 |\n", + "| success_rate | 0.92 |\n", + "| time/ | |\n", + "| fps | 201 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 177520 |\n", + "| train/ | |\n", + "| entropy_loss | -9.1 |\n", + "| explained_variance | -30.6 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 35503 |\n", + "| policy_loss | 1.19 |\n", + "| std | 0.896 |\n", + "| value_loss | 0.0404 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 214/600: Total Reward = -0.28\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 15.5 |\n", + "| ep_rew_mean | -1.67 |\n", + "| success_rate | 0.82 |\n", + "| time/ | |\n", + "| fps | 155 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 178355 |\n", + "| train/ | |\n", + "| entropy_loss | -9.1 |\n", + "| explained_variance | -1.47 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 35670 |\n", + "| policy_loss | 0.116 |\n", + "| std | 0.896 |\n", + "| value_loss | 0.00293 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 215/600: Total Reward = -6.69\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 21.6 |\n", + "| ep_rew_mean | -2.62 |\n", + "| success_rate | 0.69 |\n", + "| time/ | |\n", + "| fps | 204 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 179190 |\n", + "| train/ | |\n", + "| entropy_loss | -9.02 |\n", + "| explained_variance | -61.5 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 35837 |\n", + "| policy_loss | -2.72 |\n", + "| std | 0.885 |\n", + "| value_loss | 0.244 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 216/600: Total Reward = -1.50\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 23.9 |\n", + "| ep_rew_mean | -2.94 |\n", + "| success_rate | 0.65 |\n", + "| time/ | |\n", + "| fps | 187 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 180025 |\n", + "| train/ | |\n", + "| entropy_loss | -9 |\n", + "| explained_variance | -0.788 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 36004 |\n", + "| policy_loss | -4.95 |\n", + "| std | 0.883 |\n", + "| value_loss | 0.366 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 217/600: Total Reward = -6.21\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 28 |\n", + "| ep_rew_mean | -3.39 |\n", + "| success_rate | 0.58 |\n", + "| time/ | |\n", + "| fps | 103 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 180860 |\n", + "| train/ | |\n", + "| entropy_loss | -8.99 |\n", + "| explained_variance | 0.762 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 36171 |\n", + "| policy_loss | 1.48 |\n", + "| std | 0.882 |\n", + "| value_loss | 0.0365 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 218/600: Total Reward = -0.10\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 19.5 |\n", + "| ep_rew_mean | -2.06 |\n", + "| success_rate | 0.78 |\n", + "| time/ | |\n", + "| fps | 185 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 181695 |\n", + "| train/ | |\n", + "| entropy_loss | -9.02 |\n", + "| explained_variance | -0.553 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 36338 |\n", + "| policy_loss | -0.95 |\n", + "| std | 0.884 |\n", + "| value_loss | 0.011 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 219/600: Total Reward = -2.48\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10 |\n", + "| ep_rew_mean | -0.886 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 187 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 182530 |\n", + "| train/ | |\n", + "| entropy_loss | -8.99 |\n", + "| explained_variance | -0.422 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 36505 |\n", + "| policy_loss | 0.301 |\n", + "| std | 0.882 |\n", + "| value_loss | 0.00999 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 220/600: Total Reward = -1.54\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 11.1 |\n", + "| ep_rew_mean | -0.964 |\n", + "| success_rate | 0.97 |\n", + "| time/ | |\n", + "| fps | 116 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 183365 |\n", + "| train/ | |\n", + "| entropy_loss | -8.97 |\n", + "| explained_variance | -0.815 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 36672 |\n", + "| policy_loss | -0.32 |\n", + "| std | 0.878 |\n", + "| value_loss | 0.00754 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 221/600: Total Reward = -2.05\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 8.31 |\n", + "| ep_rew_mean | -0.706 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 193 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 184200 |\n", + "| train/ | |\n", + "| entropy_loss | -8.93 |\n", + "| explained_variance | -0.773 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 36839 |\n", + "| policy_loss | -0.766 |\n", + "| std | 0.874 |\n", + "| value_loss | 0.0114 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 222/600: Total Reward = -1.11\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 8.38 |\n", + "| ep_rew_mean | -0.704 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 179 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 185035 |\n", + "| train/ | |\n", + "| entropy_loss | -8.91 |\n", + "| explained_variance | -0.0423 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 37006 |\n", + "| policy_loss | 3.96 |\n", + "| std | 0.872 |\n", + "| value_loss | 0.205 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 223/600: Total Reward = -6.93\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 8.74 |\n", + "| ep_rew_mean | -0.774 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 127 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 185870 |\n", + "| train/ | |\n", + "| entropy_loss | -8.92 |\n", + "| explained_variance | 0.631 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 37173 |\n", + "| policy_loss | 18.8 |\n", + "| std | 0.873 |\n", + "| value_loss | 5.73 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 224/600: Total Reward = -0.48\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.3 |\n", + "| ep_rew_mean | -0.934 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 192 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 186705 |\n", + "| train/ | |\n", + "| entropy_loss | -8.89 |\n", + "| explained_variance | -3.52 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 37340 |\n", + "| policy_loss | -1.82 |\n", + "| std | 0.87 |\n", + "| value_loss | 0.0568 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 225/600: Total Reward = -0.79\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 7.46 |\n", + "| ep_rew_mean | -0.642 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 185 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 187540 |\n", + "| train/ | |\n", + "| entropy_loss | -8.88 |\n", + "| explained_variance | -4.44 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 37507 |\n", + "| policy_loss | -6.81 |\n", + "| std | 0.867 |\n", + "| value_loss | 0.506 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 226/600: Total Reward = -1.12\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.86 |\n", + "| ep_rew_mean | -0.488 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 138 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 188375 |\n", + "| train/ | |\n", + "| entropy_loss | -8.81 |\n", + "| explained_variance | -1.85 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 37674 |\n", + "| policy_loss | -0.846 |\n", + "| std | 0.86 |\n", + "| value_loss | 0.0386 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 227/600: Total Reward = -0.42\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 6.11 |\n", + "| ep_rew_mean | -0.511 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 190 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 189210 |\n", + "| train/ | |\n", + "| entropy_loss | -8.82 |\n", + "| explained_variance | -1.58 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 37841 |\n", + "| policy_loss | -1.86 |\n", + "| std | 0.861 |\n", + "| value_loss | 0.0434 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 228/600: Total Reward = -0.70\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 8.29 |\n", + "| ep_rew_mean | -0.697 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 182 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 190045 |\n", + "| train/ | |\n", + "| entropy_loss | -8.81 |\n", + "| explained_variance | -30.3 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 38008 |\n", + "| policy_loss | -5.1 |\n", + "| std | 0.861 |\n", + "| value_loss | 0.516 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 229/600: Total Reward = -0.20\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.6 |\n", + "| ep_rew_mean | -0.449 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 144 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 190880 |\n", + "| train/ | |\n", + "| entropy_loss | -8.81 |\n", + "| explained_variance | 0.568 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 38175 |\n", + "| policy_loss | -0.317 |\n", + "| std | 0.861 |\n", + "| value_loss | 0.0281 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 230/600: Total Reward = -0.43\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.15 |\n", + "| ep_rew_mean | -0.449 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 188 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 191715 |\n", + "| train/ | |\n", + "| entropy_loss | -8.78 |\n", + "| explained_variance | 0.99 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 38342 |\n", + "| policy_loss | 2.54 |\n", + "| std | 0.857 |\n", + "| value_loss | 0.0869 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 231/600: Total Reward = -0.12\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.98 |\n", + "| ep_rew_mean | -0.404 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 146 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 192550 |\n", + "| train/ | |\n", + "| entropy_loss | -8.76 |\n", + "| explained_variance | 0.21 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 38509 |\n", + "| policy_loss | -1.08 |\n", + "| std | 0.854 |\n", + "| value_loss | 0.0193 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 232/600: Total Reward = -0.50\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.76 |\n", + "| ep_rew_mean | -0.491 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 182 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 193385 |\n", + "| train/ | |\n", + "| entropy_loss | -8.76 |\n", + "| explained_variance | -1.11 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 38676 |\n", + "| policy_loss | 0.435 |\n", + "| std | 0.854 |\n", + "| value_loss | 0.0292 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 233/600: Total Reward = -0.23\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.3 |\n", + "| ep_rew_mean | -0.449 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 185 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 194220 |\n", + "| train/ | |\n", + "| entropy_loss | -8.7 |\n", + "| explained_variance | 0.0392 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 38843 |\n", + "| policy_loss | 1.2 |\n", + "| std | 0.847 |\n", + "| value_loss | 0.0312 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 234/600: Total Reward = -0.14\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.44 |\n", + "| ep_rew_mean | -0.467 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 132 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 195055 |\n", + "| train/ | |\n", + "| entropy_loss | -8.66 |\n", + "| explained_variance | 0.893 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 39010 |\n", + "| policy_loss | -0.816 |\n", + "| std | 0.841 |\n", + "| value_loss | 0.0264 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 235/600: Total Reward = -0.65\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.98 |\n", + "| ep_rew_mean | -0.409 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 184 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 195890 |\n", + "| train/ | |\n", + "| entropy_loss | -8.63 |\n", + "| explained_variance | -0.695 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 39177 |\n", + "| policy_loss | 1.33 |\n", + "| std | 0.838 |\n", + "| value_loss | 0.0371 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 236/600: Total Reward = -0.63\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 6.19 |\n", + "| ep_rew_mean | -0.537 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 171 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 196725 |\n", + "| train/ | |\n", + "| entropy_loss | -8.59 |\n", + "| explained_variance | -1.72 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 39344 |\n", + "| policy_loss | -1.76 |\n", + "| std | 0.835 |\n", + "| value_loss | 0.0591 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 237/600: Total Reward = -0.28\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.17 |\n", + "| ep_rew_mean | -0.436 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 115 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 197560 |\n", + "| train/ | |\n", + "| entropy_loss | -8.56 |\n", + "| explained_variance | 0.976 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 39511 |\n", + "| policy_loss | 0.653 |\n", + "| std | 0.83 |\n", + "| value_loss | 0.00584 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 238/600: Total Reward = -0.10\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 6.35 |\n", + "| ep_rew_mean | -0.539 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 178 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 198395 |\n", + "| train/ | |\n", + "| entropy_loss | -8.53 |\n", + "| explained_variance | 0.193 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 39678 |\n", + "| policy_loss | 0.89 |\n", + "| std | 0.827 |\n", + "| value_loss | 0.0406 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 239/600: Total Reward = -0.43\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 8.32 |\n", + "| ep_rew_mean | -0.706 |\n", + "| success_rate | 0.97 |\n", + "| time/ | |\n", + "| fps | 183 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 199230 |\n", + "| train/ | |\n", + "| entropy_loss | -8.56 |\n", + "| explained_variance | -2.36 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 39845 |\n", + "| policy_loss | 0.779 |\n", + "| std | 0.831 |\n", + "| value_loss | 0.0213 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 240/600: Total Reward = -0.84\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.29 |\n", + "| ep_rew_mean | -0.448 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 129 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 200065 |\n", + "| train/ | |\n", + "| entropy_loss | -8.58 |\n", + "| explained_variance | 0.524 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 40012 |\n", + "| policy_loss | 1.72 |\n", + "| std | 0.833 |\n", + "| value_loss | 0.0653 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 241/600: Total Reward = -0.40\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.48 |\n", + "| ep_rew_mean | -0.463 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 179 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 200900 |\n", + "| train/ | |\n", + "| entropy_loss | -8.6 |\n", + "| explained_variance | 0.992 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 40179 |\n", + "| policy_loss | 3.08 |\n", + "| std | 0.836 |\n", + "| value_loss | 0.0946 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 242/600: Total Reward = -0.26\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.12 |\n", + "| ep_rew_mean | -0.441 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 176 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 201735 |\n", + "| train/ | |\n", + "| entropy_loss | -8.59 |\n", + "| explained_variance | -1.18 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 40346 |\n", + "| policy_loss | -0.844 |\n", + "| std | 0.836 |\n", + "| value_loss | 0.0323 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 243/600: Total Reward = -0.03\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.99 |\n", + "| ep_rew_mean | -0.411 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 144 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 202570 |\n", + "| train/ | |\n", + "| entropy_loss | -8.62 |\n", + "| explained_variance | 0.904 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 40513 |\n", + "| policy_loss | 0.779 |\n", + "| std | 0.838 |\n", + "| value_loss | 0.0117 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 244/600: Total Reward = -0.13\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.26 |\n", + "| ep_rew_mean | -0.349 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 182 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 203405 |\n", + "| train/ | |\n", + "| entropy_loss | -8.64 |\n", + "| explained_variance | -0.423 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 40680 |\n", + "| policy_loss | 2.78 |\n", + "| std | 0.841 |\n", + "| value_loss | 0.209 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 245/600: Total Reward = -0.11\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.19 |\n", + "| ep_rew_mean | -0.462 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 170 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 204240 |\n", + "| train/ | |\n", + "| entropy_loss | -8.61 |\n", + "| explained_variance | 0.492 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 40847 |\n", + "| policy_loss | 1.46 |\n", + "| std | 0.838 |\n", + "| value_loss | 0.038 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 246/600: Total Reward = -0.66\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.66 |\n", + "| ep_rew_mean | -0.487 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 161 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 205075 |\n", + "| train/ | |\n", + "| entropy_loss | -8.61 |\n", + "| explained_variance | 0.502 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 41014 |\n", + "| policy_loss | 3.12 |\n", + "| std | 0.836 |\n", + "| value_loss | 0.262 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 247/600: Total Reward = -0.78\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.41 |\n", + "| ep_rew_mean | -0.359 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 181 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 205910 |\n", + "| train/ | |\n", + "| entropy_loss | -8.59 |\n", + "| explained_variance | 0.237 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 41181 |\n", + "| policy_loss | -1.45 |\n", + "| std | 0.833 |\n", + "| value_loss | 0.0288 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 248/600: Total Reward = -0.58\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.07 |\n", + "| ep_rew_mean | -0.335 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 141 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 206745 |\n", + "| train/ | |\n", + "| entropy_loss | -8.56 |\n", + "| explained_variance | 0.931 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 41348 |\n", + "| policy_loss | -0.0757 |\n", + "| std | 0.831 |\n", + "| value_loss | 0.002 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 249/600: Total Reward = -0.50\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.72 |\n", + "| ep_rew_mean | -0.389 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 181 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 207580 |\n", + "| train/ | |\n", + "| entropy_loss | -8.58 |\n", + "| explained_variance | 0.937 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 41515 |\n", + "| policy_loss | -0.357 |\n", + "| std | 0.833 |\n", + "| value_loss | 0.00565 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 250/600: Total Reward = -0.13\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.18 |\n", + "| ep_rew_mean | -0.335 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 180 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 208415 |\n", + "| train/ | |\n", + "| entropy_loss | -8.52 |\n", + "| explained_variance | -2.82 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 41682 |\n", + "| policy_loss | 0.889 |\n", + "| std | 0.826 |\n", + "| value_loss | 0.0212 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 251/600: Total Reward = -0.12\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.06 |\n", + "| ep_rew_mean | -0.327 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 123 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 209250 |\n", + "| train/ | |\n", + "| entropy_loss | -8.49 |\n", + "| explained_variance | 0.543 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 41849 |\n", + "| policy_loss | -1.31 |\n", + "| std | 0.821 |\n", + "| value_loss | 0.0259 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 252/600: Total Reward = -0.23\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.67 |\n", + "| ep_rew_mean | -0.397 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 186 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 210085 |\n", + "| train/ | |\n", + "| entropy_loss | -8.5 |\n", + "| explained_variance | -0.409 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 42016 |\n", + "| policy_loss | -3.29 |\n", + "| std | 0.822 |\n", + "| value_loss | 0.144 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 253/600: Total Reward = -0.65\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.65 |\n", + "| ep_rew_mean | -0.384 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 180 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 210920 |\n", + "| train/ | |\n", + "| entropy_loss | -8.48 |\n", + "| explained_variance | 0.409 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 42183 |\n", + "| policy_loss | 0.402 |\n", + "| std | 0.82 |\n", + "| value_loss | 0.015 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 254/600: Total Reward = -0.19\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.59 |\n", + "| ep_rew_mean | -0.383 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 114 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 211755 |\n", + "| train/ | |\n", + "| entropy_loss | -8.44 |\n", + "| explained_variance | 0.837 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 42350 |\n", + "| policy_loss | -0.213 |\n", + "| std | 0.815 |\n", + "| value_loss | 0.00144 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 255/600: Total Reward = -0.26\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.97 |\n", + "| ep_rew_mean | -0.322 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 180 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 212590 |\n", + "| train/ | |\n", + "| entropy_loss | -8.45 |\n", + "| explained_variance | -0.752 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 42517 |\n", + "| policy_loss | -0.47 |\n", + "| std | 0.816 |\n", + "| value_loss | 0.0137 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 256/600: Total Reward = -0.54\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4 |\n", + "| ep_rew_mean | -0.313 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 182 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 213425 |\n", + "| train/ | |\n", + "| entropy_loss | -8.42 |\n", + "| explained_variance | 0.854 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 42684 |\n", + "| policy_loss | 0.233 |\n", + "| std | 0.812 |\n", + "| value_loss | 0.00342 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 257/600: Total Reward = -0.32\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.62 |\n", + "| ep_rew_mean | -0.286 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 109 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 214260 |\n", + "| train/ | |\n", + "| entropy_loss | -8.37 |\n", + "| explained_variance | 0.905 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 42851 |\n", + "| policy_loss | 0.138 |\n", + "| std | 0.806 |\n", + "| value_loss | 0.00118 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 258/600: Total Reward = -0.47\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.18 |\n", + "| ep_rew_mean | -0.328 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 183 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 215095 |\n", + "| train/ | |\n", + "| entropy_loss | -8.38 |\n", + "| explained_variance | 0.949 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 43018 |\n", + "| policy_loss | -0.629 |\n", + "| std | 0.808 |\n", + "| value_loss | 0.00566 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 259/600: Total Reward = -0.34\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.12 |\n", + "| ep_rew_mean | -0.341 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 178 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 215930 |\n", + "| train/ | |\n", + "| entropy_loss | -8.34 |\n", + "| explained_variance | 0.904 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 43185 |\n", + "| policy_loss | -0.398 |\n", + "| std | 0.804 |\n", + "| value_loss | 0.00793 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 260/600: Total Reward = -0.42\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.56 |\n", + "| ep_rew_mean | -0.292 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 139 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 216765 |\n", + "| train/ | |\n", + "| entropy_loss | -8.27 |\n", + "| explained_variance | 0.964 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 43352 |\n", + "| policy_loss | 0.192 |\n", + "| std | 0.797 |\n", + "| value_loss | 0.0019 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 261/600: Total Reward = -0.21\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.99 |\n", + "| ep_rew_mean | -0.327 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 181 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 217600 |\n", + "| train/ | |\n", + "| entropy_loss | -8.29 |\n", + "| explained_variance | -4.46 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 43519 |\n", + "| policy_loss | -7.2 |\n", + "| std | 0.798 |\n", + "| value_loss | 0.734 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 262/600: Total Reward = -0.16\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.49 |\n", + "| ep_rew_mean | -0.278 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 146 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 218435 |\n", + "| train/ | |\n", + "| entropy_loss | -8.26 |\n", + "| explained_variance | 0.463 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 43686 |\n", + "| policy_loss | -0.784 |\n", + "| std | 0.795 |\n", + "| value_loss | 0.0102 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 263/600: Total Reward = -0.11\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.72 |\n", + "| ep_rew_mean | -0.289 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 174 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 219270 |\n", + "| train/ | |\n", + "| entropy_loss | -8.31 |\n", + "| explained_variance | 0.962 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 43853 |\n", + "| policy_loss | -0.765 |\n", + "| std | 0.801 |\n", + "| value_loss | 0.011 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 264/600: Total Reward = -0.65\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.37 |\n", + "| ep_rew_mean | -0.358 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 177 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 220105 |\n", + "| train/ | |\n", + "| entropy_loss | -8.28 |\n", + "| explained_variance | 0.897 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 44020 |\n", + "| policy_loss | 1.15 |\n", + "| std | 0.799 |\n", + "| value_loss | 0.0225 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 265/600: Total Reward = -0.40\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.11 |\n", + "| ep_rew_mean | -0.32 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 117 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 220940 |\n", + "| train/ | |\n", + "| entropy_loss | -8.28 |\n", + "| explained_variance | 0.227 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 44187 |\n", + "| policy_loss | -0.049 |\n", + "| std | 0.798 |\n", + "| value_loss | 0.0119 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 266/600: Total Reward = -0.48\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.81 |\n", + "| ep_rew_mean | -0.395 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 165 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 221775 |\n", + "| train/ | |\n", + "| entropy_loss | -8.3 |\n", + "| explained_variance | 0.578 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 44354 |\n", + "| policy_loss | 2.15 |\n", + "| std | 0.801 |\n", + "| value_loss | 0.0702 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 267/600: Total Reward = -0.34\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.5 |\n", + "| ep_rew_mean | -0.361 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 175 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 222610 |\n", + "| train/ | |\n", + "| entropy_loss | -8.31 |\n", + "| explained_variance | 0.345 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 44521 |\n", + "| policy_loss | -0.437 |\n", + "| std | 0.802 |\n", + "| value_loss | 0.0483 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 268/600: Total Reward = -0.48\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.96 |\n", + "| ep_rew_mean | -0.322 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 110 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 223445 |\n", + "| train/ | |\n", + "| entropy_loss | -8.3 |\n", + "| explained_variance | 0.916 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 44688 |\n", + "| policy_loss | -0.694 |\n", + "| std | 0.801 |\n", + "| value_loss | 0.00848 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 269/600: Total Reward = -0.12\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.26 |\n", + "| ep_rew_mean | -0.341 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 173 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 224280 |\n", + "| train/ | |\n", + "| entropy_loss | -8.27 |\n", + "| explained_variance | 0.988 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 44855 |\n", + "| policy_loss | 0.0128 |\n", + "| std | 0.799 |\n", + "| value_loss | 0.000261 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 270/600: Total Reward = -0.21\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.37 |\n", + "| ep_rew_mean | -0.368 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 168 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 225115 |\n", + "| train/ | |\n", + "| entropy_loss | -8.25 |\n", + "| explained_variance | 0.51 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 45022 |\n", + "| policy_loss | 0.065 |\n", + "| std | 0.798 |\n", + "| value_loss | 0.00276 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 271/600: Total Reward = -0.72\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.06 |\n", + "| ep_rew_mean | -0.328 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 152 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 225950 |\n", + "| train/ | |\n", + "| entropy_loss | -8.24 |\n", + "| explained_variance | 0.941 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 45189 |\n", + "| policy_loss | 0.162 |\n", + "| std | 0.796 |\n", + "| value_loss | 0.00142 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 272/600: Total Reward = -0.28\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.75 |\n", + "| ep_rew_mean | -0.311 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 173 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 226785 |\n", + "| train/ | |\n", + "| entropy_loss | -8.27 |\n", + "| explained_variance | 0.865 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 45356 |\n", + "| policy_loss | 0.498 |\n", + "| std | 0.8 |\n", + "| value_loss | 0.00475 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 273/600: Total Reward = -0.26\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.9 |\n", + "| ep_rew_mean | -0.314 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 129 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 227620 |\n", + "| train/ | |\n", + "| entropy_loss | -8.29 |\n", + "| explained_variance | 0.944 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 45523 |\n", + "| policy_loss | -0.13 |\n", + "| std | 0.802 |\n", + "| value_loss | 0.00123 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 274/600: Total Reward = -0.38\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.11 |\n", + "| ep_rew_mean | -0.411 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 169 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 228455 |\n", + "| train/ | |\n", + "| entropy_loss | -8.26 |\n", + "| explained_variance | 0.922 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 45690 |\n", + "| policy_loss | -0.35 |\n", + "| std | 0.8 |\n", + "| value_loss | 0.00269 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 275/600: Total Reward = -0.14\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.9 |\n", + "| ep_rew_mean | -0.412 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 168 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 229290 |\n", + "| train/ | |\n", + "| entropy_loss | -8.24 |\n", + "| explained_variance | 0.972 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 45857 |\n", + "| policy_loss | 0.132 |\n", + "| std | 0.798 |\n", + "| value_loss | 0.00173 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 276/600: Total Reward = -0.10\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.14 |\n", + "| ep_rew_mean | -0.339 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 107 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 230125 |\n", + "| train/ | |\n", + "| entropy_loss | -8.22 |\n", + "| explained_variance | 0.849 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 46024 |\n", + "| policy_loss | -0.299 |\n", + "| std | 0.795 |\n", + "| value_loss | 0.0095 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 277/600: Total Reward = -0.40\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.92 |\n", + "| ep_rew_mean | -0.309 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 171 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 230960 |\n", + "| train/ | |\n", + "| entropy_loss | -8.23 |\n", + "| explained_variance | -0.362 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 46191 |\n", + "| policy_loss | -0.0236 |\n", + "| std | 0.796 |\n", + "| value_loss | 0.00693 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 278/600: Total Reward = -0.28\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.31 |\n", + "| ep_rew_mean | -0.347 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 171 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 231795 |\n", + "| train/ | |\n", + "| entropy_loss | -8.23 |\n", + "| explained_variance | 0.857 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 46358 |\n", + "| policy_loss | 0.034 |\n", + "| std | 0.797 |\n", + "| value_loss | 0.00192 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 279/600: Total Reward = -0.14\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.32 |\n", + "| ep_rew_mean | -0.358 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 120 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 232630 |\n", + "| train/ | |\n", + "| entropy_loss | -8.23 |\n", + "| explained_variance | -0.422 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 46525 |\n", + "| policy_loss | 1.29 |\n", + "| std | 0.798 |\n", + "| value_loss | 0.0457 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 280/600: Total Reward = -0.11\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.89 |\n", + "| ep_rew_mean | -0.307 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 165 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 233465 |\n", + "| train/ | |\n", + "| entropy_loss | -8.19 |\n", + "| explained_variance | -1.4 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 46692 |\n", + "| policy_loss | 1.94 |\n", + "| std | 0.794 |\n", + "| value_loss | 0.0631 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 281/600: Total Reward = -0.09\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.1 |\n", + "| ep_rew_mean | -0.334 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 155 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 234300 |\n", + "| train/ | |\n", + "| entropy_loss | -8.2 |\n", + "| explained_variance | 0.831 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 46859 |\n", + "| policy_loss | 0.317 |\n", + "| std | 0.796 |\n", + "| value_loss | 0.00502 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 282/600: Total Reward = -0.13\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.1 |\n", + "| ep_rew_mean | -0.403 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 163 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 235135 |\n", + "| train/ | |\n", + "| entropy_loss | -8.18 |\n", + "| explained_variance | 0.979 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 47026 |\n", + "| policy_loss | 0.261 |\n", + "| std | 0.793 |\n", + "| value_loss | 0.00226 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 283/600: Total Reward = -0.59\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.15 |\n", + "| ep_rew_mean | -0.348 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 166 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 235970 |\n", + "| train/ | |\n", + "| entropy_loss | -8.15 |\n", + "| explained_variance | 0.453 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 47193 |\n", + "| policy_loss | 0.801 |\n", + "| std | 0.79 |\n", + "| value_loss | 0.0121 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 284/600: Total Reward = -0.27\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.78 |\n", + "| ep_rew_mean | -0.309 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 131 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 236805 |\n", + "| train/ | |\n", + "| entropy_loss | -8.13 |\n", + "| explained_variance | 0.815 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 47360 |\n", + "| policy_loss | 0.136 |\n", + "| std | 0.788 |\n", + "| value_loss | 0.00228 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 285/600: Total Reward = -0.13\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4 |\n", + "| ep_rew_mean | -0.329 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 174 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 237640 |\n", + "| train/ | |\n", + "| entropy_loss | -8.14 |\n", + "| explained_variance | 0.934 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 47527 |\n", + "| policy_loss | -0.34 |\n", + "| std | 0.789 |\n", + "| value_loss | 0.00223 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 286/600: Total Reward = -0.37\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.62 |\n", + "| ep_rew_mean | -0.298 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 171 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 238475 |\n", + "| train/ | |\n", + "| entropy_loss | -8.11 |\n", + "| explained_variance | 0.999 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 47694 |\n", + "| policy_loss | -0.0206 |\n", + "| std | 0.786 |\n", + "| value_loss | 1.32e-05 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 287/600: Total Reward = -0.09\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.76 |\n", + "| ep_rew_mean | -0.305 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 103 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 239310 |\n", + "| train/ | |\n", + "| entropy_loss | -8.08 |\n", + "| explained_variance | 0.906 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 47861 |\n", + "| policy_loss | -0.327 |\n", + "| std | 0.782 |\n", + "| value_loss | 0.00773 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 288/600: Total Reward = -0.83\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.27 |\n", + "| ep_rew_mean | -0.354 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 169 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 240145 |\n", + "| train/ | |\n", + "| entropy_loss | -8.09 |\n", + "| explained_variance | 0.735 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 48028 |\n", + "| policy_loss | -0.576 |\n", + "| std | 0.783 |\n", + "| value_loss | 0.00896 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 289/600: Total Reward = -0.32\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.67 |\n", + "| ep_rew_mean | -0.307 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 150 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 240980 |\n", + "| train/ | |\n", + "| entropy_loss | -8.03 |\n", + "| explained_variance | 0.781 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 48195 |\n", + "| policy_loss | -0.748 |\n", + "| std | 0.777 |\n", + "| value_loss | 0.0128 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 290/600: Total Reward = -0.56\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.97 |\n", + "| ep_rew_mean | -0.324 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 147 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 241815 |\n", + "| train/ | |\n", + "| entropy_loss | -8.03 |\n", + "| explained_variance | 0.99 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 48362 |\n", + "| policy_loss | 0.142 |\n", + "| std | 0.778 |\n", + "| value_loss | 0.000477 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 291/600: Total Reward = -0.29\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4 |\n", + "| ep_rew_mean | -0.33 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 171 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 242650 |\n", + "| train/ | |\n", + "| entropy_loss | -8.02 |\n", + "| explained_variance | 0.885 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 48529 |\n", + "| policy_loss | 0.947 |\n", + "| std | 0.778 |\n", + "| value_loss | 0.0106 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 292/600: Total Reward = -0.43\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.81 |\n", + "| ep_rew_mean | -0.305 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 121 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 243485 |\n", + "| train/ | |\n", + "| entropy_loss | -8 |\n", + "| explained_variance | 0.962 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 48696 |\n", + "| policy_loss | -0.233 |\n", + "| std | 0.777 |\n", + "| value_loss | 0.0016 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 293/600: Total Reward = -0.39\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.94 |\n", + "| ep_rew_mean | -0.329 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 173 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 244320 |\n", + "| train/ | |\n", + "| entropy_loss | -8.01 |\n", + "| explained_variance | 0.662 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 48863 |\n", + "| policy_loss | -0.376 |\n", + "| std | 0.779 |\n", + "| value_loss | 0.00556 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 294/600: Total Reward = -0.12\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.87 |\n", + "| ep_rew_mean | -0.3 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 171 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 245155 |\n", + "| train/ | |\n", + "| entropy_loss | -8.01 |\n", + "| explained_variance | 0.974 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 49030 |\n", + "| policy_loss | -0.175 |\n", + "| std | 0.779 |\n", + "| value_loss | 0.00198 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 295/600: Total Reward = -0.15\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.98 |\n", + "| ep_rew_mean | -0.327 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 100 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 245990 |\n", + "| train/ | |\n", + "| entropy_loss | -8.03 |\n", + "| explained_variance | 0.577 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 49197 |\n", + "| policy_loss | -0.161 |\n", + "| std | 0.781 |\n", + "| value_loss | 0.00259 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 296/600: Total Reward = -1.01\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.83 |\n", + "| ep_rew_mean | -0.296 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 171 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 246825 |\n", + "| train/ | |\n", + "| entropy_loss | -8.04 |\n", + "| explained_variance | 0.834 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 49364 |\n", + "| policy_loss | -0.0213 |\n", + "| std | 0.783 |\n", + "| value_loss | 0.00218 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 297/600: Total Reward = -0.43\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.79 |\n", + "| ep_rew_mean | -0.305 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 142 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 247660 |\n", + "| train/ | |\n", + "| entropy_loss | -8.03 |\n", + "| explained_variance | 0.85 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 49531 |\n", + "| policy_loss | -0.581 |\n", + "| std | 0.781 |\n", + "| value_loss | 0.00537 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 298/600: Total Reward = -0.42\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.79 |\n", + "| ep_rew_mean | -0.294 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 166 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 248495 |\n", + "| train/ | |\n", + "| entropy_loss | -8.02 |\n", + "| explained_variance | 0.848 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 49698 |\n", + "| policy_loss | -0.289 |\n", + "| std | 0.782 |\n", + "| value_loss | 0.00214 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 299/600: Total Reward = -0.17\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.42 |\n", + "| ep_rew_mean | -0.261 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 171 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 249330 |\n", + "| train/ | |\n", + "| entropy_loss | -8 |\n", + "| explained_variance | 0.592 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 49865 |\n", + "| policy_loss | 0.287 |\n", + "| std | 0.779 |\n", + "| value_loss | 0.00604 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 300/600: Total Reward = -0.24\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.73 |\n", + "| ep_rew_mean | -0.303 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 101 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 250165 |\n", + "| train/ | |\n", + "| entropy_loss | -8.05 |\n", + "| explained_variance | 0.451 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 50032 |\n", + "| policy_loss | -1.02 |\n", + "| std | 0.784 |\n", + "| value_loss | 0.0244 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 301/600: Total Reward = -0.25\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.68 |\n", + "| ep_rew_mean | -0.3 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 163 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 251000 |\n", + "| train/ | |\n", + "| entropy_loss | -8.07 |\n", + "| explained_variance | 0.758 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 50199 |\n", + "| policy_loss | -0.582 |\n", + "| std | 0.787 |\n", + "| value_loss | 0.00691 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 302/600: Total Reward = -0.10\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.49 |\n", + "| ep_rew_mean | -0.282 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 159 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 251835 |\n", + "| train/ | |\n", + "| entropy_loss | -8.04 |\n", + "| explained_variance | 0.972 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 50366 |\n", + "| policy_loss | 0.548 |\n", + "| std | 0.783 |\n", + "| value_loss | 0.00463 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 303/600: Total Reward = -0.11\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.49 |\n", + "| ep_rew_mean | -0.362 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 121 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 252670 |\n", + "| train/ | |\n", + "| entropy_loss | -7.98 |\n", + "| explained_variance | 0.61 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 50533 |\n", + "| policy_loss | 0.126 |\n", + "| std | 0.778 |\n", + "| value_loss | 0.00163 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 304/600: Total Reward = -0.16\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.78 |\n", + "| ep_rew_mean | -0.313 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 159 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 253505 |\n", + "| train/ | |\n", + "| entropy_loss | -7.96 |\n", + "| explained_variance | 0.977 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 50700 |\n", + "| policy_loss | -0.367 |\n", + "| std | 0.776 |\n", + "| value_loss | 0.0043 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 305/600: Total Reward = -0.33\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.19 |\n", + "| ep_rew_mean | -0.338 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 113 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 254340 |\n", + "| train/ | |\n", + "| entropy_loss | -7.93 |\n", + "| explained_variance | 0.52 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 50867 |\n", + "| policy_loss | 0.867 |\n", + "| std | 0.772 |\n", + "| value_loss | 0.0199 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 306/600: Total Reward = -0.33\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.14 |\n", + "| ep_rew_mean | -0.347 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 161 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 255175 |\n", + "| train/ | |\n", + "| entropy_loss | -7.92 |\n", + "| explained_variance | 0.873 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 51034 |\n", + "| policy_loss | -0.0862 |\n", + "| std | 0.771 |\n", + "| value_loss | 0.0012 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 307/600: Total Reward = -0.55\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.08 |\n", + "| ep_rew_mean | -0.331 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 166 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 256010 |\n", + "| train/ | |\n", + "| entropy_loss | -7.91 |\n", + "| explained_variance | 0.83 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 51201 |\n", + "| policy_loss | -0.842 |\n", + "| std | 0.772 |\n", + "| value_loss | 0.0136 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 308/600: Total Reward = -0.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.1 |\n", + "| ep_rew_mean | -0.337 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 115 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 256845 |\n", + "| train/ | |\n", + "| entropy_loss | -7.92 |\n", + "| explained_variance | -0.238 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 51368 |\n", + "| policy_loss | -1.06 |\n", + "| std | 0.774 |\n", + "| value_loss | 0.0275 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 309/600: Total Reward = -0.55\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.53 |\n", + "| ep_rew_mean | -0.276 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 159 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 257680 |\n", + "| train/ | |\n", + "| entropy_loss | -7.88 |\n", + "| explained_variance | 0.998 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 51535 |\n", + "| policy_loss | 0.0767 |\n", + "| std | 0.768 |\n", + "| value_loss | 0.000135 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 310/600: Total Reward = -0.33\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.75 |\n", + "| ep_rew_mean | -0.302 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 125 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 258515 |\n", + "| train/ | |\n", + "| entropy_loss | -7.91 |\n", + "| explained_variance | 0.96 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 51702 |\n", + "| policy_loss | -0.332 |\n", + "| std | 0.772 |\n", + "| value_loss | 0.00177 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 311/600: Total Reward = -0.14\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.68 |\n", + "| ep_rew_mean | -0.297 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 153 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 259350 |\n", + "| train/ | |\n", + "| entropy_loss | -7.91 |\n", + "| explained_variance | 0.977 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 51869 |\n", + "| policy_loss | 0.335 |\n", + "| std | 0.771 |\n", + "| value_loss | 0.00231 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 312/600: Total Reward = -0.31\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.59 |\n", + "| ep_rew_mean | -0.278 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 156 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 260185 |\n", + "| train/ | |\n", + "| entropy_loss | -7.9 |\n", + "| explained_variance | -0.321 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 52036 |\n", + "| policy_loss | -0.727 |\n", + "| std | 0.771 |\n", + "| value_loss | 0.0209 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 313/600: Total Reward = -0.35\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.55 |\n", + "| ep_rew_mean | -0.366 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 104 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 261020 |\n", + "| train/ | |\n", + "| entropy_loss | -7.89 |\n", + "| explained_variance | 0.935 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 52203 |\n", + "| policy_loss | 0.273 |\n", + "| std | 0.769 |\n", + "| value_loss | 0.00618 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 314/600: Total Reward = -0.15\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.29 |\n", + "| ep_rew_mean | -0.355 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 158 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 261855 |\n", + "| train/ | |\n", + "| entropy_loss | -7.84 |\n", + "| explained_variance | 0.829 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 52370 |\n", + "| policy_loss | 0.387 |\n", + "| std | 0.764 |\n", + "| value_loss | 0.0132 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 315/600: Total Reward = -0.20\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.85 |\n", + "| ep_rew_mean | -0.313 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 129 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 262690 |\n", + "| train/ | |\n", + "| entropy_loss | -7.8 |\n", + "| explained_variance | 0.889 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 52537 |\n", + "| policy_loss | 0.414 |\n", + "| std | 0.76 |\n", + "| value_loss | 0.00744 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 316/600: Total Reward = -0.11\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.47 |\n", + "| ep_rew_mean | -0.369 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 167 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 263525 |\n", + "| train/ | |\n", + "| entropy_loss | -7.79 |\n", + "| explained_variance | 0.999 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 52704 |\n", + "| policy_loss | -0.175 |\n", + "| std | 0.759 |\n", + "| value_loss | 0.000755 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 317/600: Total Reward = -0.27\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.99 |\n", + "| ep_rew_mean | -0.397 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 163 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 264360 |\n", + "| train/ | |\n", + "| entropy_loss | -7.77 |\n", + "| explained_variance | 0.302 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 52871 |\n", + "| policy_loss | -1.09 |\n", + "| std | 0.755 |\n", + "| value_loss | 0.0198 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 318/600: Total Reward = -0.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.32 |\n", + "| ep_rew_mean | -0.345 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 99 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 265195 |\n", + "| train/ | |\n", + "| entropy_loss | -7.76 |\n", + "| explained_variance | 0.984 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 53038 |\n", + "| policy_loss | 0.475 |\n", + "| std | 0.755 |\n", + "| value_loss | 0.00258 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 319/600: Total Reward = -0.03\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.94 |\n", + "| ep_rew_mean | -0.316 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 156 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 266030 |\n", + "| train/ | |\n", + "| entropy_loss | -7.76 |\n", + "| explained_variance | 0.273 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 53205 |\n", + "| policy_loss | 0.548 |\n", + "| std | 0.755 |\n", + "| value_loss | 0.0082 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 320/600: Total Reward = -0.29\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.36 |\n", + "| ep_rew_mean | -0.362 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 138 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 266865 |\n", + "| train/ | |\n", + "| entropy_loss | -7.75 |\n", + "| explained_variance | -0.104 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 53372 |\n", + "| policy_loss | 0.37 |\n", + "| std | 0.755 |\n", + "| value_loss | 0.0116 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 321/600: Total Reward = -0.65\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.05 |\n", + "| ep_rew_mean | -0.326 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 160 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 267700 |\n", + "| train/ | |\n", + "| entropy_loss | -7.74 |\n", + "| explained_variance | 0.78 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 53539 |\n", + "| policy_loss | -1.33 |\n", + "| std | 0.754 |\n", + "| value_loss | 0.0152 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 322/600: Total Reward = -0.12\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.08 |\n", + "| ep_rew_mean | -0.335 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 154 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 268535 |\n", + "| train/ | |\n", + "| entropy_loss | -7.71 |\n", + "| explained_variance | 0.929 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 53706 |\n", + "| policy_loss | -0.119 |\n", + "| std | 0.75 |\n", + "| value_loss | 0.000786 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 323/600: Total Reward = -0.52\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.09 |\n", + "| ep_rew_mean | -0.336 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 94 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 269370 |\n", + "| train/ | |\n", + "| entropy_loss | -7.72 |\n", + "| explained_variance | 0.995 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 53873 |\n", + "| policy_loss | -0.0493 |\n", + "| std | 0.752 |\n", + "| value_loss | 0.000374 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 324/600: Total Reward = -0.28\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.26 |\n", + "| ep_rew_mean | -0.353 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 156 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 270205 |\n", + "| train/ | |\n", + "| entropy_loss | -7.65 |\n", + "| explained_variance | 0.818 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 54040 |\n", + "| policy_loss | -0.435 |\n", + "| std | 0.745 |\n", + "| value_loss | 0.00407 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 325/600: Total Reward = -0.10\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.72 |\n", + "| ep_rew_mean | -0.314 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 126 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 271040 |\n", + "| train/ | |\n", + "| entropy_loss | -7.62 |\n", + "| explained_variance | 0.133 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 54207 |\n", + "| policy_loss | -1.29 |\n", + "| std | 0.742 |\n", + "| value_loss | 0.035 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 326/600: Total Reward = -0.12\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.16 |\n", + "| ep_rew_mean | -0.351 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 161 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 271875 |\n", + "| train/ | |\n", + "| entropy_loss | -7.63 |\n", + "| explained_variance | 0.995 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 54374 |\n", + "| policy_loss | 0.311 |\n", + "| std | 0.743 |\n", + "| value_loss | 0.00186 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 327/600: Total Reward = -0.21\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.6 |\n", + "| ep_rew_mean | -0.286 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 155 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 272710 |\n", + "| train/ | |\n", + "| entropy_loss | -7.61 |\n", + "| explained_variance | 0.842 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 54541 |\n", + "| policy_loss | -0.347 |\n", + "| std | 0.742 |\n", + "| value_loss | 0.00215 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 328/600: Total Reward = -0.03\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.86 |\n", + "| ep_rew_mean | -0.319 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 96 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 273545 |\n", + "| train/ | |\n", + "| entropy_loss | -7.6 |\n", + "| explained_variance | 0.999 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 54708 |\n", + "| policy_loss | 0.275 |\n", + "| std | 0.739 |\n", + "| value_loss | 0.00136 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 329/600: Total Reward = -0.64\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.64 |\n", + "| ep_rew_mean | -0.291 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 154 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 274380 |\n", + "| train/ | |\n", + "| entropy_loss | -7.55 |\n", + "| explained_variance | 0.996 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 54875 |\n", + "| policy_loss | 0.00573 |\n", + "| std | 0.735 |\n", + "| value_loss | 9.15e-05 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 330/600: Total Reward = -0.41\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.74 |\n", + "| ep_rew_mean | -0.37 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 120 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 275215 |\n", + "| train/ | |\n", + "| entropy_loss | -7.53 |\n", + "| explained_variance | -0.266 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 55042 |\n", + "| policy_loss | -0.517 |\n", + "| std | 0.732 |\n", + "| value_loss | 0.0492 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 331/600: Total Reward = -0.68\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.92 |\n", + "| ep_rew_mean | -0.321 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 158 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 276050 |\n", + "| train/ | |\n", + "| entropy_loss | -7.52 |\n", + "| explained_variance | 0.838 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 55209 |\n", + "| policy_loss | -0.0426 |\n", + "| std | 0.731 |\n", + "| value_loss | 0.0015 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 332/600: Total Reward = -0.56\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.41 |\n", + "| ep_rew_mean | -0.271 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 145 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 276885 |\n", + "| train/ | |\n", + "| entropy_loss | -7.49 |\n", + "| explained_variance | 0.996 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 55376 |\n", + "| policy_loss | 0.0259 |\n", + "| std | 0.728 |\n", + "| value_loss | 6.44e-05 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 333/600: Total Reward = -0.11\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.96 |\n", + "| ep_rew_mean | -0.302 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 101 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 277720 |\n", + "| train/ | |\n", + "| entropy_loss | -7.49 |\n", + "| explained_variance | 0.876 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 55543 |\n", + "| policy_loss | -0.289 |\n", + "| std | 0.728 |\n", + "| value_loss | 0.00203 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 334/600: Total Reward = -0.16\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.82 |\n", + "| ep_rew_mean | -0.308 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 150 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 278555 |\n", + "| train/ | |\n", + "| entropy_loss | -7.47 |\n", + "| explained_variance | 0.149 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 55710 |\n", + "| policy_loss | -0.174 |\n", + "| std | 0.725 |\n", + "| value_loss | 0.0118 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 335/600: Total Reward = -0.14\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.16 |\n", + "| ep_rew_mean | -0.331 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 96 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 279390 |\n", + "| train/ | |\n", + "| entropy_loss | -7.47 |\n", + "| explained_variance | 0.778 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 55877 |\n", + "| policy_loss | 0.398 |\n", + "| std | 0.726 |\n", + "| value_loss | 0.00438 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 336/600: Total Reward = -0.27\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.23 |\n", + "| ep_rew_mean | -0.339 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 154 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 280225 |\n", + "| train/ | |\n", + "| entropy_loss | -7.44 |\n", + "| explained_variance | 0.687 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 56044 |\n", + "| policy_loss | -0.138 |\n", + "| std | 0.723 |\n", + "| value_loss | 0.0141 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 337/600: Total Reward = -0.57\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.2 |\n", + "| ep_rew_mean | -0.337 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 151 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 281060 |\n", + "| train/ | |\n", + "| entropy_loss | -7.42 |\n", + "| explained_variance | 0.743 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 56211 |\n", + "| policy_loss | -0.217 |\n", + "| std | 0.719 |\n", + "| value_loss | 0.00135 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 338/600: Total Reward = -0.16\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.66 |\n", + "| ep_rew_mean | -0.298 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 121 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 281895 |\n", + "| train/ | |\n", + "| entropy_loss | -7.38 |\n", + "| explained_variance | 0.83 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 56378 |\n", + "| policy_loss | -0.06 |\n", + "| std | 0.715 |\n", + "| value_loss | 0.00335 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 339/600: Total Reward = -0.41\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.09 |\n", + "| ep_rew_mean | -0.336 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 152 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 282730 |\n", + "| train/ | |\n", + "| entropy_loss | -7.34 |\n", + "| explained_variance | 0.754 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 56545 |\n", + "| policy_loss | -0.116 |\n", + "| std | 0.71 |\n", + "| value_loss | 0.00333 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 340/600: Total Reward = -0.32\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.76 |\n", + "| ep_rew_mean | -0.295 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 91 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 283565 |\n", + "| train/ | |\n", + "| entropy_loss | -7.31 |\n", + "| explained_variance | 0.94 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 56712 |\n", + "| policy_loss | 1 |\n", + "| std | 0.707 |\n", + "| value_loss | 0.0265 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 341/600: Total Reward = -0.03\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.28 |\n", + "| ep_rew_mean | -0.352 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 150 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 284400 |\n", + "| train/ | |\n", + "| entropy_loss | -7.27 |\n", + "| explained_variance | 0.913 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 56879 |\n", + "| policy_loss | -0.7 |\n", + "| std | 0.703 |\n", + "| value_loss | 0.00735 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 342/600: Total Reward = -4.01\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.82 |\n", + "| ep_rew_mean | -0.312 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 118 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 285235 |\n", + "| train/ | |\n", + "| entropy_loss | -7.26 |\n", + "| explained_variance | 0.932 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 57046 |\n", + "| policy_loss | 0.247 |\n", + "| std | 0.703 |\n", + "| value_loss | 0.00241 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 343/600: Total Reward = -0.12\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.81 |\n", + "| ep_rew_mean | -0.306 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 147 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 286070 |\n", + "| train/ | |\n", + "| entropy_loss | -7.26 |\n", + "| explained_variance | 0.858 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 57213 |\n", + "| policy_loss | -0.306 |\n", + "| std | 0.705 |\n", + "| value_loss | 0.00562 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 344/600: Total Reward = -0.54\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.79 |\n", + "| ep_rew_mean | -0.312 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 151 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 286905 |\n", + "| train/ | |\n", + "| entropy_loss | -7.24 |\n", + "| explained_variance | 0.98 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 57380 |\n", + "| policy_loss | -0.244 |\n", + "| std | 0.702 |\n", + "| value_loss | 0.00104 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 345/600: Total Reward = -0.15\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.68 |\n", + "| ep_rew_mean | -0.302 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 105 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 287740 |\n", + "| train/ | |\n", + "| entropy_loss | -7.21 |\n", + "| explained_variance | 0.963 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 57547 |\n", + "| policy_loss | -0.113 |\n", + "| std | 0.7 |\n", + "| value_loss | 0.000849 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 346/600: Total Reward = -0.17\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.98 |\n", + "| ep_rew_mean | -0.329 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 150 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 288575 |\n", + "| train/ | |\n", + "| entropy_loss | -7.2 |\n", + "| explained_variance | 0.79 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 57714 |\n", + "| policy_loss | 0.969 |\n", + "| std | 0.699 |\n", + "| value_loss | 0.0186 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 347/600: Total Reward = -0.14\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.9 |\n", + "| ep_rew_mean | -0.403 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 93 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 289410 |\n", + "| train/ | |\n", + "| entropy_loss | -7.19 |\n", + "| explained_variance | 0.226 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 57881 |\n", + "| policy_loss | 1.94 |\n", + "| std | 0.699 |\n", + "| value_loss | 0.0913 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 348/600: Total Reward = -0.63\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.05 |\n", + "| ep_rew_mean | -0.398 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 141 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 290245 |\n", + "| train/ | |\n", + "| entropy_loss | -7.21 |\n", + "| explained_variance | -0.041 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 58048 |\n", + "| policy_loss | 3.06 |\n", + "| std | 0.701 |\n", + "| value_loss | 0.192 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 349/600: Total Reward = -0.53\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.14 |\n", + "| ep_rew_mean | -0.422 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 136 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 291080 |\n", + "| train/ | |\n", + "| entropy_loss | -7.18 |\n", + "| explained_variance | 0.353 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 58215 |\n", + "| policy_loss | -1.94 |\n", + "| std | 0.699 |\n", + "| value_loss | 0.0869 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 350/600: Total Reward = -0.60\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.42 |\n", + "| ep_rew_mean | -0.355 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 147 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 291915 |\n", + "| train/ | |\n", + "| entropy_loss | -7.14 |\n", + "| explained_variance | 0.989 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 58382 |\n", + "| policy_loss | -0.235 |\n", + "| std | 0.694 |\n", + "| value_loss | 0.000922 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 351/600: Total Reward = -0.32\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.76 |\n", + "| ep_rew_mean | -0.38 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 153 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 292750 |\n", + "| train/ | |\n", + "| entropy_loss | -7.11 |\n", + "| explained_variance | 0.465 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 58549 |\n", + "| policy_loss | -0.152 |\n", + "| std | 0.691 |\n", + "| value_loss | 0.00388 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 352/600: Total Reward = -0.63\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.62 |\n", + "| ep_rew_mean | -0.472 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 88 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 293585 |\n", + "| train/ | |\n", + "| entropy_loss | -7.12 |\n", + "| explained_variance | 0.116 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 58716 |\n", + "| policy_loss | 3.93 |\n", + "| std | 0.691 |\n", + "| value_loss | 0.635 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 353/600: Total Reward = -0.03\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.13 |\n", + "| ep_rew_mean | -0.415 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 138 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 294420 |\n", + "| train/ | |\n", + "| entropy_loss | -7.12 |\n", + "| explained_variance | 0.97 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 58883 |\n", + "| policy_loss | -0.141 |\n", + "| std | 0.69 |\n", + "| value_loss | 0.000917 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 354/600: Total Reward = -0.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.3 |\n", + "| ep_rew_mean | -0.337 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 114 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 295255 |\n", + "| train/ | |\n", + "| entropy_loss | -7.11 |\n", + "| explained_variance | 0.248 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 59050 |\n", + "| policy_loss | -0.335 |\n", + "| std | 0.689 |\n", + "| value_loss | 0.00308 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 355/600: Total Reward = -0.35\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.67 |\n", + "| ep_rew_mean | -0.288 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 155 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 296090 |\n", + "| train/ | |\n", + "| entropy_loss | -7.09 |\n", + "| explained_variance | 0.768 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 59217 |\n", + "| policy_loss | 0.0985 |\n", + "| std | 0.687 |\n", + "| value_loss | 0.00177 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 356/600: Total Reward = -0.17\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.86 |\n", + "| ep_rew_mean | -0.32 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 150 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 296925 |\n", + "| train/ | |\n", + "| entropy_loss | -7.09 |\n", + "| explained_variance | 0.978 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 59384 |\n", + "| policy_loss | 0.166 |\n", + "| std | 0.687 |\n", + "| value_loss | 0.00177 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 357/600: Total Reward = -0.37\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.31 |\n", + "| ep_rew_mean | -0.265 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 99 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 297760 |\n", + "| train/ | |\n", + "| entropy_loss | -7.09 |\n", + "| explained_variance | 0.8 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 59551 |\n", + "| policy_loss | 0.575 |\n", + "| std | 0.688 |\n", + "| value_loss | 0.00648 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 358/600: Total Reward = -0.75\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.46 |\n", + "| ep_rew_mean | -0.271 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 142 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 298595 |\n", + "| train/ | |\n", + "| entropy_loss | -7.07 |\n", + "| explained_variance | -0.111 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 59718 |\n", + "| policy_loss | 0.372 |\n", + "| std | 0.686 |\n", + "| value_loss | 0.00538 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 359/600: Total Reward = -0.21\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.91 |\n", + "| ep_rew_mean | -0.319 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 94 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 299430 |\n", + "| train/ | |\n", + "| entropy_loss | -7.06 |\n", + "| explained_variance | 0.942 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 59885 |\n", + "| policy_loss | -0.0626 |\n", + "| std | 0.685 |\n", + "| value_loss | 0.000195 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 360/600: Total Reward = -0.37\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.17 |\n", + "| ep_rew_mean | -0.34 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 148 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 300265 |\n", + "| train/ | |\n", + "| entropy_loss | -7.04 |\n", + "| explained_variance | 0.883 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 60052 |\n", + "| policy_loss | -0.353 |\n", + "| std | 0.683 |\n", + "| value_loss | 0.00595 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 361/600: Total Reward = -0.47\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.49 |\n", + "| ep_rew_mean | -0.373 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 133 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 301100 |\n", + "| train/ | |\n", + "| entropy_loss | -7.01 |\n", + "| explained_variance | 0.894 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 60219 |\n", + "| policy_loss | -0.667 |\n", + "| std | 0.681 |\n", + "| value_loss | 0.0108 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 362/600: Total Reward = -0.37\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.77 |\n", + "| ep_rew_mean | -0.309 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 154 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 301935 |\n", + "| train/ | |\n", + "| entropy_loss | -7.02 |\n", + "| explained_variance | 0.91 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 60386 |\n", + "| policy_loss | 0.681 |\n", + "| std | 0.683 |\n", + "| value_loss | 0.00821 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 363/600: Total Reward = -0.16\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.77 |\n", + "| ep_rew_mean | -0.308 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 145 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 302770 |\n", + "| train/ | |\n", + "| entropy_loss | -7.04 |\n", + "| explained_variance | -0.0864 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 60553 |\n", + "| policy_loss | 0.962 |\n", + "| std | 0.685 |\n", + "| value_loss | 0.0182 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 364/600: Total Reward = -0.20\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.46 |\n", + "| ep_rew_mean | -0.287 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 94 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 303605 |\n", + "| train/ | |\n", + "| entropy_loss | -7.02 |\n", + "| explained_variance | 0.978 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 60720 |\n", + "| policy_loss | 0.00779 |\n", + "| std | 0.683 |\n", + "| value_loss | 0.000364 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 365/600: Total Reward = -0.40\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.71 |\n", + "| ep_rew_mean | -0.287 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 145 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 304440 |\n", + "| train/ | |\n", + "| entropy_loss | -7.03 |\n", + "| explained_variance | 0.499 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 60887 |\n", + "| policy_loss | -0.87 |\n", + "| std | 0.685 |\n", + "| value_loss | 0.0322 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 366/600: Total Reward = -0.66\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.89 |\n", + "| ep_rew_mean | -0.315 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 102 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 305275 |\n", + "| train/ | |\n", + "| entropy_loss | -7.04 |\n", + "| explained_variance | 0.99 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 61054 |\n", + "| policy_loss | 0.0711 |\n", + "| std | 0.684 |\n", + "| value_loss | 0.0006 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 367/600: Total Reward = -0.19\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.82 |\n", + "| ep_rew_mean | -0.301 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 149 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 306110 |\n", + "| train/ | |\n", + "| entropy_loss | -7.03 |\n", + "| explained_variance | 0.864 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 61221 |\n", + "| policy_loss | 0.968 |\n", + "| std | 0.683 |\n", + "| value_loss | 0.0183 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 368/600: Total Reward = -0.29\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.78 |\n", + "| ep_rew_mean | -0.301 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 147 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 306945 |\n", + "| train/ | |\n", + "| entropy_loss | -7 |\n", + "| explained_variance | -0.253 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 61388 |\n", + "| policy_loss | 0.0826 |\n", + "| std | 0.681 |\n", + "| value_loss | 0.00118 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 369/600: Total Reward = -0.33\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.63 |\n", + "| ep_rew_mean | -0.301 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 109 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 307780 |\n", + "| train/ | |\n", + "| entropy_loss | -6.97 |\n", + "| explained_variance | 0.943 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 61555 |\n", + "| policy_loss | -0.149 |\n", + "| std | 0.679 |\n", + "| value_loss | 0.00142 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 370/600: Total Reward = -0.75\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.47 |\n", + "| ep_rew_mean | -0.277 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 141 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 308615 |\n", + "| train/ | |\n", + "| entropy_loss | -6.95 |\n", + "| explained_variance | 0.857 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 61722 |\n", + "| policy_loss | 0.0173 |\n", + "| std | 0.676 |\n", + "| value_loss | 0.00115 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 371/600: Total Reward = -0.39\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.83 |\n", + "| ep_rew_mean | -0.304 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 89 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 309450 |\n", + "| train/ | |\n", + "| entropy_loss | -6.96 |\n", + "| explained_variance | 0.877 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 61889 |\n", + "| policy_loss | 0.543 |\n", + "| std | 0.676 |\n", + "| value_loss | 0.00691 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 372/600: Total Reward = -0.11\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.89 |\n", + "| ep_rew_mean | -0.319 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 149 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 310285 |\n", + "| train/ | |\n", + "| entropy_loss | -6.96 |\n", + "| explained_variance | 0.988 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 62056 |\n", + "| policy_loss | -0.523 |\n", + "| std | 0.677 |\n", + "| value_loss | 0.00923 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 373/600: Total Reward = -0.45\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.58 |\n", + "| ep_rew_mean | -0.389 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 129 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 311120 |\n", + "| train/ | |\n", + "| entropy_loss | -6.94 |\n", + "| explained_variance | 0.432 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 62223 |\n", + "| policy_loss | 1.12 |\n", + "| std | 0.676 |\n", + "| value_loss | 0.0293 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 374/600: Total Reward = -0.13\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.05 |\n", + "| ep_rew_mean | -0.317 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 155 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 311955 |\n", + "| train/ | |\n", + "| entropy_loss | -6.93 |\n", + "| explained_variance | 0.747 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 62390 |\n", + "| policy_loss | 0.197 |\n", + "| std | 0.675 |\n", + "| value_loss | 0.00178 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 375/600: Total Reward = -0.10\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.36 |\n", + "| ep_rew_mean | -0.269 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 145 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 312790 |\n", + "| train/ | |\n", + "| entropy_loss | -6.95 |\n", + "| explained_variance | 0.324 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 62557 |\n", + "| policy_loss | 0.634 |\n", + "| std | 0.678 |\n", + "| value_loss | 0.0161 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 376/600: Total Reward = -0.20\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.92 |\n", + "| ep_rew_mean | -0.314 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 90 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 313625 |\n", + "| train/ | |\n", + "| entropy_loss | -6.95 |\n", + "| explained_variance | 0.251 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 62724 |\n", + "| policy_loss | -0.203 |\n", + "| std | 0.679 |\n", + "| value_loss | 0.0033 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 377/600: Total Reward = -0.63\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.86 |\n", + "| ep_rew_mean | -0.308 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 146 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 314460 |\n", + "| train/ | |\n", + "| entropy_loss | -6.97 |\n", + "| explained_variance | 0.983 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 62891 |\n", + "| policy_loss | 0.0749 |\n", + "| std | 0.681 |\n", + "| value_loss | 0.000229 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 378/600: Total Reward = -0.15\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.3 |\n", + "| ep_rew_mean | -0.332 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 92 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 315295 |\n", + "| train/ | |\n", + "| entropy_loss | -6.94 |\n", + "| explained_variance | 0.945 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 63058 |\n", + "| policy_loss | 0.133 |\n", + "| std | 0.678 |\n", + "| value_loss | 0.00073 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 379/600: Total Reward = -0.44\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.3 |\n", + "| ep_rew_mean | -0.345 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 144 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 316130 |\n", + "| train/ | |\n", + "| entropy_loss | -6.9 |\n", + "| explained_variance | 0.933 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 63225 |\n", + "| policy_loss | -0.209 |\n", + "| std | 0.674 |\n", + "| value_loss | 0.00246 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 380/600: Total Reward = -0.59\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.3 |\n", + "| ep_rew_mean | -0.351 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 136 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 316965 |\n", + "| train/ | |\n", + "| entropy_loss | -6.87 |\n", + "| explained_variance | 0.982 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 63392 |\n", + "| policy_loss | 0.54 |\n", + "| std | 0.671 |\n", + "| value_loss | 0.00579 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 381/600: Total Reward = -0.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.23 |\n", + "| ep_rew_mean | -0.339 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 137 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 317800 |\n", + "| train/ | |\n", + "| entropy_loss | -6.91 |\n", + "| explained_variance | 0.138 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 63559 |\n", + "| policy_loss | 0.605 |\n", + "| std | 0.675 |\n", + "| value_loss | 0.00984 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 382/600: Total Reward = -0.10\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.8 |\n", + "| ep_rew_mean | -0.299 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 145 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 318635 |\n", + "| train/ | |\n", + "| entropy_loss | -6.91 |\n", + "| explained_variance | 0.955 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 63726 |\n", + "| policy_loss | 0.436 |\n", + "| std | 0.674 |\n", + "| value_loss | 0.00526 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 383/600: Total Reward = -0.09\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.91 |\n", + "| ep_rew_mean | -0.316 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 85 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 319470 |\n", + "| train/ | |\n", + "| entropy_loss | -6.9 |\n", + "| explained_variance | 0.962 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 63893 |\n", + "| policy_loss | 0.155 |\n", + "| std | 0.674 |\n", + "| value_loss | 0.00134 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 384/600: Total Reward = -0.36\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.46 |\n", + "| ep_rew_mean | -0.465 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 148 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 320305 |\n", + "| train/ | |\n", + "| entropy_loss | -6.9 |\n", + "| explained_variance | -0.555 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 64060 |\n", + "| policy_loss | 2.33 |\n", + "| std | 0.674 |\n", + "| value_loss | 0.161 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 385/600: Total Reward = -0.13\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.72 |\n", + "| ep_rew_mean | -0.455 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 99 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 321140 |\n", + "| train/ | |\n", + "| entropy_loss | -6.94 |\n", + "| explained_variance | -0.446 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 64227 |\n", + "| policy_loss | -0.962 |\n", + "| std | 0.679 |\n", + "| value_loss | 0.0226 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 386/600: Total Reward = -0.05\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.11 |\n", + "| ep_rew_mean | -0.329 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 141 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 321975 |\n", + "| train/ | |\n", + "| entropy_loss | -6.95 |\n", + "| explained_variance | 0.188 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 64394 |\n", + "| policy_loss | 0.337 |\n", + "| std | 0.68 |\n", + "| value_loss | 0.0108 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 387/600: Total Reward = -0.60\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.66 |\n", + "| ep_rew_mean | -0.393 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 145 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 322810 |\n", + "| train/ | |\n", + "| entropy_loss | -6.94 |\n", + "| explained_variance | -0.774 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 64561 |\n", + "| policy_loss | 0.387 |\n", + "| std | 0.678 |\n", + "| value_loss | 0.00816 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 388/600: Total Reward = -0.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.12 |\n", + "| ep_rew_mean | -0.42 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 124 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 323645 |\n", + "| train/ | |\n", + "| entropy_loss | -6.92 |\n", + "| explained_variance | 0.947 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 64728 |\n", + "| policy_loss | -0.254 |\n", + "| std | 0.676 |\n", + "| value_loss | 0.00283 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 389/600: Total Reward = -0.30\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.43 |\n", + "| ep_rew_mean | -0.351 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 150 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 324480 |\n", + "| train/ | |\n", + "| entropy_loss | -6.95 |\n", + "| explained_variance | 0.773 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 64895 |\n", + "| policy_loss | 0.486 |\n", + "| std | 0.678 |\n", + "| value_loss | 0.0126 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 390/600: Total Reward = -0.34\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.03 |\n", + "| ep_rew_mean | -0.335 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 87 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 325315 |\n", + "| train/ | |\n", + "| entropy_loss | -6.96 |\n", + "| explained_variance | 0.858 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 65062 |\n", + "| policy_loss | -0.468 |\n", + "| std | 0.68 |\n", + "| value_loss | 0.00527 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 391/600: Total Reward = -0.19\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.21 |\n", + "| ep_rew_mean | -0.334 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 139 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 326150 |\n", + "| train/ | |\n", + "| entropy_loss | -6.94 |\n", + "| explained_variance | 0.596 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 65229 |\n", + "| policy_loss | 0.138 |\n", + "| std | 0.679 |\n", + "| value_loss | 0.0025 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 392/600: Total Reward = -0.22\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.07 |\n", + "| ep_rew_mean | -0.313 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 94 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 326985 |\n", + "| train/ | |\n", + "| entropy_loss | -6.93 |\n", + "| explained_variance | 0.816 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 65396 |\n", + "| policy_loss | 0.266 |\n", + "| std | 0.678 |\n", + "| value_loss | 0.00524 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 393/600: Total Reward = -0.23\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.69 |\n", + "| ep_rew_mean | -0.279 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 138 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 327820 |\n", + "| train/ | |\n", + "| entropy_loss | -6.93 |\n", + "| explained_variance | 0.925 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 65563 |\n", + "| policy_loss | -0.165 |\n", + "| std | 0.678 |\n", + "| value_loss | 0.00237 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 394/600: Total Reward = -0.40\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.91 |\n", + "| ep_rew_mean | -0.313 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 132 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 328655 |\n", + "| train/ | |\n", + "| entropy_loss | -6.93 |\n", + "| explained_variance | 0.984 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 65730 |\n", + "| policy_loss | -0.129 |\n", + "| std | 0.677 |\n", + "| value_loss | 0.00095 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 395/600: Total Reward = -0.43\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.9 |\n", + "| ep_rew_mean | -0.319 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 67 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 7 |\n", + "| total_timesteps | 329490 |\n", + "| train/ | |\n", + "| entropy_loss | -6.92 |\n", + "| explained_variance | 0.884 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 65897 |\n", + "| policy_loss | 0.473 |\n", + "| std | 0.676 |\n", + "| value_loss | 0.00597 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 396/600: Total Reward = -0.34\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.66 |\n", + "| ep_rew_mean | -0.291 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 84 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 330325 |\n", + "| train/ | |\n", + "| entropy_loss | -6.89 |\n", + "| explained_variance | 0.976 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 66064 |\n", + "| policy_loss | 0.166 |\n", + "| std | 0.673 |\n", + "| value_loss | 0.000944 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 397/600: Total Reward = -0.56\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.73 |\n", + "| ep_rew_mean | -0.29 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 131 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 331160 |\n", + "| train/ | |\n", + "| entropy_loss | -6.87 |\n", + "| explained_variance | 0.98 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 66231 |\n", + "| policy_loss | 0.172 |\n", + "| std | 0.67 |\n", + "| value_loss | 0.00132 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 398/600: Total Reward = -0.42\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.12 |\n", + "| ep_rew_mean | -0.324 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 108 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 331995 |\n", + "| train/ | |\n", + "| entropy_loss | -6.88 |\n", + "| explained_variance | 0.699 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 66398 |\n", + "| policy_loss | -0.255 |\n", + "| std | 0.672 |\n", + "| value_loss | 0.00258 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 399/600: Total Reward = -0.35\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.87 |\n", + "| ep_rew_mean | -0.307 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 142 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 332830 |\n", + "| train/ | |\n", + "| entropy_loss | -6.88 |\n", + "| explained_variance | 0.842 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 66565 |\n", + "| policy_loss | 0.0753 |\n", + "| std | 0.67 |\n", + "| value_loss | 0.00117 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 400/600: Total Reward = -0.31\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.84 |\n", + "| ep_rew_mean | -0.311 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 135 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 333665 |\n", + "| train/ | |\n", + "| entropy_loss | -6.82 |\n", + "| explained_variance | 0.751 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 66732 |\n", + "| policy_loss | -0.0103 |\n", + "| std | 0.665 |\n", + "| value_loss | 0.00488 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 401/600: Total Reward = -0.07\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.82 |\n", + "| ep_rew_mean | -0.306 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 114 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 334500 |\n", + "| train/ | |\n", + "| entropy_loss | -6.82 |\n", + "| explained_variance | 0.699 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 66899 |\n", + "| policy_loss | 0.388 |\n", + "| std | 0.666 |\n", + "| value_loss | 0.00593 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 402/600: Total Reward = -0.25\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.65 |\n", + "| ep_rew_mean | -0.298 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 132 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 335335 |\n", + "| train/ | |\n", + "| entropy_loss | -6.79 |\n", + "| explained_variance | 0.894 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 67066 |\n", + "| policy_loss | 0.448 |\n", + "| std | 0.662 |\n", + "| value_loss | 0.00662 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 403/600: Total Reward = -0.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.97 |\n", + "| ep_rew_mean | -0.339 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 86 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 336170 |\n", + "| train/ | |\n", + "| entropy_loss | -6.79 |\n", + "| explained_variance | 0.966 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 67233 |\n", + "| policy_loss | -0.2 |\n", + "| std | 0.663 |\n", + "| value_loss | 0.000921 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 404/600: Total Reward = -0.64\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.11 |\n", + "| ep_rew_mean | -0.329 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 137 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 337005 |\n", + "| train/ | |\n", + "| entropy_loss | -6.76 |\n", + "| explained_variance | 0.855 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 67400 |\n", + "| policy_loss | 0.697 |\n", + "| std | 0.66 |\n", + "| value_loss | 0.0101 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 405/600: Total Reward = -0.87\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.04 |\n", + "| ep_rew_mean | -0.325 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 86 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 337840 |\n", + "| train/ | |\n", + "| entropy_loss | -6.75 |\n", + "| explained_variance | 0.833 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 67567 |\n", + "| policy_loss | -0.317 |\n", + "| std | 0.66 |\n", + "| value_loss | 0.00458 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 406/600: Total Reward = -0.61\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.05 |\n", + "| ep_rew_mean | -0.329 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 135 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 338675 |\n", + "| train/ | |\n", + "| entropy_loss | -6.72 |\n", + "| explained_variance | 0.979 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 67734 |\n", + "| policy_loss | 0.399 |\n", + "| std | 0.657 |\n", + "| value_loss | 0.0035 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 407/600: Total Reward = -0.32\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.76 |\n", + "| ep_rew_mean | -0.303 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 111 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 339510 |\n", + "| train/ | |\n", + "| entropy_loss | -6.74 |\n", + "| explained_variance | 0.994 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 67901 |\n", + "| policy_loss | 0.315 |\n", + "| std | 0.658 |\n", + "| value_loss | 0.00248 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 408/600: Total Reward = -0.13\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.96 |\n", + "| ep_rew_mean | -0.32 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 143 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 340345 |\n", + "| train/ | |\n", + "| entropy_loss | -6.7 |\n", + "| explained_variance | 0.686 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 68068 |\n", + "| policy_loss | 0.423 |\n", + "| std | 0.655 |\n", + "| value_loss | 0.0103 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 409/600: Total Reward = -0.72\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.07 |\n", + "| ep_rew_mean | -0.332 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 135 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 341180 |\n", + "| train/ | |\n", + "| entropy_loss | -6.67 |\n", + "| explained_variance | 0.948 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 68235 |\n", + "| policy_loss | 0.323 |\n", + "| std | 0.652 |\n", + "| value_loss | 0.00532 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 410/600: Total Reward = -0.16\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.17 |\n", + "| ep_rew_mean | -0.328 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 100 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 342015 |\n", + "| train/ | |\n", + "| entropy_loss | -6.67 |\n", + "| explained_variance | 0.949 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 68402 |\n", + "| policy_loss | 0.0739 |\n", + "| std | 0.651 |\n", + "| value_loss | 0.000284 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 411/600: Total Reward = -0.29\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.55 |\n", + "| ep_rew_mean | -0.283 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 132 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 342850 |\n", + "| train/ | |\n", + "| entropy_loss | -6.66 |\n", + "| explained_variance | 0.958 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 68569 |\n", + "| policy_loss | -0.0214 |\n", + "| std | 0.651 |\n", + "| value_loss | 0.00108 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 412/600: Total Reward = -0.10\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.57 |\n", + "| ep_rew_mean | -0.385 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 82 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 343685 |\n", + "| train/ | |\n", + "| entropy_loss | -6.62 |\n", + "| explained_variance | 0.886 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 68736 |\n", + "| policy_loss | -0.209 |\n", + "| std | 0.647 |\n", + "| value_loss | 0.00253 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 413/600: Total Reward = -0.20\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.6 |\n", + "| ep_rew_mean | -0.284 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 136 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 344520 |\n", + "| train/ | |\n", + "| entropy_loss | -6.57 |\n", + "| explained_variance | 0.933 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 68903 |\n", + "| policy_loss | 0.0325 |\n", + "| std | 0.644 |\n", + "| value_loss | 0.000586 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 414/600: Total Reward = -0.24\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.05 |\n", + "| ep_rew_mean | -0.326 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 85 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 345355 |\n", + "| train/ | |\n", + "| entropy_loss | -6.57 |\n", + "| explained_variance | 0.654 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 69070 |\n", + "| policy_loss | -0.126 |\n", + "| std | 0.644 |\n", + "| value_loss | 0.0016 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 415/600: Total Reward = -0.34\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.55 |\n", + "| ep_rew_mean | -0.286 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 136 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 346190 |\n", + "| train/ | |\n", + "| entropy_loss | -6.55 |\n", + "| explained_variance | 0.968 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 69237 |\n", + "| policy_loss | 0.283 |\n", + "| std | 0.642 |\n", + "| value_loss | 0.00172 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 416/600: Total Reward = -0.27\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.69 |\n", + "| ep_rew_mean | -0.296 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 103 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 347025 |\n", + "| train/ | |\n", + "| entropy_loss | -6.51 |\n", + "| explained_variance | 0.962 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 69404 |\n", + "| policy_loss | 0.049 |\n", + "| std | 0.639 |\n", + "| value_loss | 0.00227 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 417/600: Total Reward = -0.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.05 |\n", + "| ep_rew_mean | -0.32 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 143 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 347860 |\n", + "| train/ | |\n", + "| entropy_loss | -6.52 |\n", + "| explained_variance | 0.892 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 69571 |\n", + "| policy_loss | 0.246 |\n", + "| std | 0.64 |\n", + "| value_loss | 0.00958 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 418/600: Total Reward = -0.47\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.54 |\n", + "| ep_rew_mean | -0.351 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 136 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 348695 |\n", + "| train/ | |\n", + "| entropy_loss | -6.51 |\n", + "| explained_variance | -0.18 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 69738 |\n", + "| policy_loss | -1.38 |\n", + "| std | 0.638 |\n", + "| value_loss | 0.0554 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 419/600: Total Reward = -0.16\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.86 |\n", + "| ep_rew_mean | -0.308 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 112 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 349530 |\n", + "| train/ | |\n", + "| entropy_loss | -6.51 |\n", + "| explained_variance | 0.999 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 69905 |\n", + "| policy_loss | 0.101 |\n", + "| std | 0.637 |\n", + "| value_loss | 0.000245 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 420/600: Total Reward = -0.13\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.71 |\n", + "| ep_rew_mean | -0.286 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 139 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 350365 |\n", + "| train/ | |\n", + "| entropy_loss | -6.5 |\n", + "| explained_variance | -0.475 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 70072 |\n", + "| policy_loss | -0.611 |\n", + "| std | 0.637 |\n", + "| value_loss | 0.0413 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 421/600: Total Reward = -0.41\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.42 |\n", + "| ep_rew_mean | -0.276 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 80 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 351200 |\n", + "| train/ | |\n", + "| entropy_loss | -6.48 |\n", + "| explained_variance | 0.836 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 70239 |\n", + "| policy_loss | -0.23 |\n", + "| std | 0.636 |\n", + "| value_loss | 0.00232 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 422/600: Total Reward = -0.64\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.04 |\n", + "| ep_rew_mean | -0.324 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 137 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 352035 |\n", + "| train/ | |\n", + "| entropy_loss | -6.47 |\n", + "| explained_variance | 0.979 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 70406 |\n", + "| policy_loss | -0.117 |\n", + "| std | 0.636 |\n", + "| value_loss | 0.00089 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 423/600: Total Reward = -0.70\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.89 |\n", + "| ep_rew_mean | -0.295 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 81 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 352870 |\n", + "| train/ | |\n", + "| entropy_loss | -6.46 |\n", + "| explained_variance | 0.881 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 70573 |\n", + "| policy_loss | -0.0739 |\n", + "| std | 0.633 |\n", + "| value_loss | 0.00098 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 424/600: Total Reward = -0.25\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.03 |\n", + "| ep_rew_mean | -0.323 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 132 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 353705 |\n", + "| train/ | |\n", + "| entropy_loss | -6.43 |\n", + "| explained_variance | 0.983 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 70740 |\n", + "| policy_loss | -0.095 |\n", + "| std | 0.631 |\n", + "| value_loss | 0.000518 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 425/600: Total Reward = -1.03\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.89 |\n", + "| ep_rew_mean | -0.315 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 86 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 354540 |\n", + "| train/ | |\n", + "| entropy_loss | -6.44 |\n", + "| explained_variance | 0.528 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 70907 |\n", + "| policy_loss | -0.747 |\n", + "| std | 0.632 |\n", + "| value_loss | 0.0215 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 426/600: Total Reward = -0.12\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.96 |\n", + "| ep_rew_mean | -0.325 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 133 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 355375 |\n", + "| train/ | |\n", + "| entropy_loss | -6.42 |\n", + "| explained_variance | 0.987 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 71074 |\n", + "| policy_loss | -0.231 |\n", + "| std | 0.631 |\n", + "| value_loss | 0.00136 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 427/600: Total Reward = -0.45\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.72 |\n", + "| ep_rew_mean | -0.295 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 112 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 356210 |\n", + "| train/ | |\n", + "| entropy_loss | -6.38 |\n", + "| explained_variance | 0.996 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 71241 |\n", + "| policy_loss | -0.11 |\n", + "| std | 0.627 |\n", + "| value_loss | 0.000295 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 428/600: Total Reward = -0.21\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.8 |\n", + "| ep_rew_mean | -0.304 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 140 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 357045 |\n", + "| train/ | |\n", + "| entropy_loss | -6.35 |\n", + "| explained_variance | -0.314 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 71408 |\n", + "| policy_loss | -0.275 |\n", + "| std | 0.625 |\n", + "| value_loss | 0.0126 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 429/600: Total Reward = -0.19\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.84 |\n", + "| ep_rew_mean | -0.317 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 135 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 357880 |\n", + "| train/ | |\n", + "| entropy_loss | -6.29 |\n", + "| explained_variance | 0.99 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 71575 |\n", + "| policy_loss | 0.27 |\n", + "| std | 0.619 |\n", + "| value_loss | 0.00176 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 430/600: Total Reward = -0.23\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.46 |\n", + "| ep_rew_mean | -0.374 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 105 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 358715 |\n", + "| train/ | |\n", + "| entropy_loss | -6.31 |\n", + "| explained_variance | 0.94 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 71742 |\n", + "| policy_loss | 0.128 |\n", + "| std | 0.621 |\n", + "| value_loss | 0.00311 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 431/600: Total Reward = -0.35\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.81 |\n", + "| ep_rew_mean | -0.315 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 134 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 359550 |\n", + "| train/ | |\n", + "| entropy_loss | -6.31 |\n", + "| explained_variance | 0.932 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 71909 |\n", + "| policy_loss | 0.485 |\n", + "| std | 0.621 |\n", + "| value_loss | 0.00711 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 432/600: Total Reward = -0.15\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.82 |\n", + "| ep_rew_mean | -0.309 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 79 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 360385 |\n", + "| train/ | |\n", + "| entropy_loss | -6.27 |\n", + "| explained_variance | 0.923 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 72076 |\n", + "| policy_loss | 0.224 |\n", + "| std | 0.617 |\n", + "| value_loss | 0.00297 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 433/600: Total Reward = -0.11\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.73 |\n", + "| ep_rew_mean | -0.299 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 129 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 361220 |\n", + "| train/ | |\n", + "| entropy_loss | -6.28 |\n", + "| explained_variance | 0.763 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 72243 |\n", + "| policy_loss | -0.206 |\n", + "| std | 0.619 |\n", + "| value_loss | 0.00127 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 434/600: Total Reward = -0.07\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.77 |\n", + "| ep_rew_mean | -0.298 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 79 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 362055 |\n", + "| train/ | |\n", + "| entropy_loss | -6.27 |\n", + "| explained_variance | 0.988 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 72410 |\n", + "| policy_loss | -0.36 |\n", + "| std | 0.618 |\n", + "| value_loss | 0.00439 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 435/600: Total Reward = -0.37\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.1 |\n", + "| ep_rew_mean | -0.339 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 124 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 362890 |\n", + "| train/ | |\n", + "| entropy_loss | -6.29 |\n", + "| explained_variance | 0.526 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 72577 |\n", + "| policy_loss | -0.112 |\n", + "| std | 0.62 |\n", + "| value_loss | 0.00698 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 436/600: Total Reward = -0.15\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.64 |\n", + "| ep_rew_mean | -0.3 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 81 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 363725 |\n", + "| train/ | |\n", + "| entropy_loss | -6.3 |\n", + "| explained_variance | 0.967 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 72744 |\n", + "| policy_loss | 0.462 |\n", + "| std | 0.62 |\n", + "| value_loss | 0.0121 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 437/600: Total Reward = -0.30\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.25 |\n", + "| ep_rew_mean | -0.438 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 132 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 364560 |\n", + "| train/ | |\n", + "| entropy_loss | -6.25 |\n", + "| explained_variance | 0.965 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 72911 |\n", + "| policy_loss | 0.0682 |\n", + "| std | 0.617 |\n", + "| value_loss | 0.00111 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 438/600: Total Reward = -0.17\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.86 |\n", + "| ep_rew_mean | -0.306 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 91 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 365395 |\n", + "| train/ | |\n", + "| entropy_loss | -6.25 |\n", + "| explained_variance | 0.601 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 73078 |\n", + "| policy_loss | -0.559 |\n", + "| std | 0.617 |\n", + "| value_loss | 0.00845 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 439/600: Total Reward = -0.13\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.87 |\n", + "| ep_rew_mean | -0.336 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 135 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 366230 |\n", + "| train/ | |\n", + "| entropy_loss | -6.29 |\n", + "| explained_variance | 0.986 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 73245 |\n", + "| policy_loss | 0.476 |\n", + "| std | 0.62 |\n", + "| value_loss | 0.00799 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 440/600: Total Reward = -0.24\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.6 |\n", + "| ep_rew_mean | -0.389 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 116 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 367065 |\n", + "| train/ | |\n", + "| entropy_loss | -6.27 |\n", + "| explained_variance | 0.552 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 73412 |\n", + "| policy_loss | 0.0433 |\n", + "| std | 0.618 |\n", + "| value_loss | 0.00165 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 441/600: Total Reward = -0.33\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.63 |\n", + "| ep_rew_mean | -0.368 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 130 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 367900 |\n", + "| train/ | |\n", + "| entropy_loss | -6.29 |\n", + "| explained_variance | 0.222 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 73579 |\n", + "| policy_loss | -0.941 |\n", + "| std | 0.619 |\n", + "| value_loss | 0.0356 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 442/600: Total Reward = -0.60\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.05 |\n", + "| ep_rew_mean | -0.33 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 123 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 368735 |\n", + "| train/ | |\n", + "| entropy_loss | -6.29 |\n", + "| explained_variance | 0.789 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 73746 |\n", + "| policy_loss | 0.099 |\n", + "| std | 0.618 |\n", + "| value_loss | 0.00123 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 443/600: Total Reward = -0.28\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.95 |\n", + "| ep_rew_mean | -0.32 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 115 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 369570 |\n", + "| train/ | |\n", + "| entropy_loss | -6.28 |\n", + "| explained_variance | 0.702 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 73913 |\n", + "| policy_loss | -0.399 |\n", + "| std | 0.617 |\n", + "| value_loss | 0.00932 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 444/600: Total Reward = -0.02\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.29 |\n", + "| ep_rew_mean | -0.348 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 124 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 370405 |\n", + "| train/ | |\n", + "| entropy_loss | -6.29 |\n", + "| explained_variance | 0.965 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 74080 |\n", + "| policy_loss | -0.402 |\n", + "| std | 0.619 |\n", + "| value_loss | 0.00599 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 445/600: Total Reward = -0.12\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.51 |\n", + "| ep_rew_mean | -0.287 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 106 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 371240 |\n", + "| train/ | |\n", + "| entropy_loss | -6.3 |\n", + "| explained_variance | 0.903 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 74247 |\n", + "| policy_loss | -0.473 |\n", + "| std | 0.619 |\n", + "| value_loss | 0.00389 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 446/600: Total Reward = -0.46\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.93 |\n", + "| ep_rew_mean | -0.312 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 123 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 372075 |\n", + "| train/ | |\n", + "| entropy_loss | -6.28 |\n", + "| explained_variance | 0.849 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 74414 |\n", + "| policy_loss | 0.642 |\n", + "| std | 0.617 |\n", + "| value_loss | 0.00972 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 447/600: Total Reward = -0.59\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.37 |\n", + "| ep_rew_mean | -0.276 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 93 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 372910 |\n", + "| train/ | |\n", + "| entropy_loss | -6.28 |\n", + "| explained_variance | 0.975 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 74581 |\n", + "| policy_loss | 0.0328 |\n", + "| std | 0.618 |\n", + "| value_loss | 0.00117 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 448/600: Total Reward = -0.38\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.72 |\n", + "| ep_rew_mean | -0.307 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 125 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 373745 |\n", + "| train/ | |\n", + "| entropy_loss | -6.29 |\n", + "| explained_variance | 0.996 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 74748 |\n", + "| policy_loss | -0.238 |\n", + "| std | 0.618 |\n", + "| value_loss | 0.00211 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 449/600: Total Reward = -0.23\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.96 |\n", + "| ep_rew_mean | -0.331 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 86 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 374580 |\n", + "| train/ | |\n", + "| entropy_loss | -6.28 |\n", + "| explained_variance | 0.988 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 74915 |\n", + "| policy_loss | -0.0917 |\n", + "| std | 0.618 |\n", + "| value_loss | 0.000394 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 450/600: Total Reward = -0.12\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.5 |\n", + "| ep_rew_mean | -0.399 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 120 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 375415 |\n", + "| train/ | |\n", + "| entropy_loss | -6.27 |\n", + "| explained_variance | 0.977 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 75082 |\n", + "| policy_loss | 0.136 |\n", + "| std | 0.617 |\n", + "| value_loss | 0.000604 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 451/600: Total Reward = -0.08\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.99 |\n", + "| ep_rew_mean | -0.329 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 78 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 376250 |\n", + "| train/ | |\n", + "| entropy_loss | -6.25 |\n", + "| explained_variance | 0.987 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 75249 |\n", + "| policy_loss | 0.162 |\n", + "| std | 0.616 |\n", + "| value_loss | 0.000942 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 452/600: Total Reward = -0.20\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.98 |\n", + "| ep_rew_mean | -0.343 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 123 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 377085 |\n", + "| train/ | |\n", + "| entropy_loss | -6.26 |\n", + "| explained_variance | 0.962 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 75416 |\n", + "| policy_loss | 0.216 |\n", + "| std | 0.616 |\n", + "| value_loss | 0.00184 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 453/600: Total Reward = -0.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.99 |\n", + "| ep_rew_mean | -0.334 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 78 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 377920 |\n", + "| train/ | |\n", + "| entropy_loss | -6.29 |\n", + "| explained_variance | 0.943 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 75583 |\n", + "| policy_loss | 0.56 |\n", + "| std | 0.618 |\n", + "| value_loss | 0.0135 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 454/600: Total Reward = -0.19\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.29 |\n", + "| ep_rew_mean | -0.345 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 125 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 378755 |\n", + "| train/ | |\n", + "| entropy_loss | -6.26 |\n", + "| explained_variance | 0.989 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 75750 |\n", + "| policy_loss | 0.415 |\n", + "| std | 0.615 |\n", + "| value_loss | 0.00759 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 455/600: Total Reward = -0.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.27 |\n", + "| ep_rew_mean | -0.342 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 77 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 379590 |\n", + "| train/ | |\n", + "| entropy_loss | -6.22 |\n", + "| explained_variance | 0.987 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 75917 |\n", + "| policy_loss | -1.06 |\n", + "| std | 0.611 |\n", + "| value_loss | 0.0222 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 456/600: Total Reward = -0.27\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.96 |\n", + "| ep_rew_mean | -0.317 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 130 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 380425 |\n", + "| train/ | |\n", + "| entropy_loss | -6.23 |\n", + "| explained_variance | -0.0219 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 76084 |\n", + "| policy_loss | -0.933 |\n", + "| std | 0.614 |\n", + "| value_loss | 0.0565 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 457/600: Total Reward = -0.81\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4 |\n", + "| ep_rew_mean | -0.33 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 77 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 381260 |\n", + "| train/ | |\n", + "| entropy_loss | -6.22 |\n", + "| explained_variance | 0.985 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 76251 |\n", + "| policy_loss | 0.102 |\n", + "| std | 0.612 |\n", + "| value_loss | 0.00187 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 458/600: Total Reward = -0.12\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.6 |\n", + "| ep_rew_mean | -0.279 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 126 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 382095 |\n", + "| train/ | |\n", + "| entropy_loss | -6.21 |\n", + "| explained_variance | 0.903 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 76418 |\n", + "| policy_loss | -0.396 |\n", + "| std | 0.613 |\n", + "| value_loss | 0.0055 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 459/600: Total Reward = -0.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.95 |\n", + "| ep_rew_mean | -0.314 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 75 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 382930 |\n", + "| train/ | |\n", + "| entropy_loss | -6.17 |\n", + "| explained_variance | 0.253 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 76585 |\n", + "| policy_loss | -0.343 |\n", + "| std | 0.61 |\n", + "| value_loss | 0.0118 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 460/600: Total Reward = -0.22\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.14 |\n", + "| ep_rew_mean | -0.336 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 115 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 383765 |\n", + "| train/ | |\n", + "| entropy_loss | -6.18 |\n", + "| explained_variance | 0.908 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 76752 |\n", + "| policy_loss | -0.0353 |\n", + "| std | 0.611 |\n", + "| value_loss | 0.000821 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 461/600: Total Reward = -0.15\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.22 |\n", + "| ep_rew_mean | -0.339 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 61 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 8 |\n", + "| total_timesteps | 384600 |\n", + "| train/ | |\n", + "| entropy_loss | -6.2 |\n", + "| explained_variance | 0.201 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 76919 |\n", + "| policy_loss | 0.334 |\n", + "| std | 0.613 |\n", + "| value_loss | 0.00566 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 462/600: Total Reward = -0.32\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4 |\n", + "| ep_rew_mean | -0.319 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 95 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 385435 |\n", + "| train/ | |\n", + "| entropy_loss | -6.17 |\n", + "| explained_variance | 0.944 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 77086 |\n", + "| policy_loss | 0.105 |\n", + "| std | 0.61 |\n", + "| value_loss | 0.000706 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 463/600: Total Reward = -0.23\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.38 |\n", + "| ep_rew_mean | -0.347 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 126 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 386270 |\n", + "| train/ | |\n", + "| entropy_loss | -6.16 |\n", + "| explained_variance | 0.776 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 77253 |\n", + "| policy_loss | 0.508 |\n", + "| std | 0.61 |\n", + "| value_loss | 0.00696 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 464/600: Total Reward = -0.34\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.93 |\n", + "| ep_rew_mean | -0.316 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 90 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 387105 |\n", + "| train/ | |\n", + "| entropy_loss | -6.15 |\n", + "| explained_variance | 0.953 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 77420 |\n", + "| policy_loss | -0.544 |\n", + "| std | 0.608 |\n", + "| value_loss | 0.00598 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 465/600: Total Reward = -0.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.46 |\n", + "| ep_rew_mean | -0.367 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 118 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 387940 |\n", + "| train/ | |\n", + "| entropy_loss | -6.13 |\n", + "| explained_variance | 0.934 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 77587 |\n", + "| policy_loss | 0.511 |\n", + "| std | 0.606 |\n", + "| value_loss | 0.0118 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 466/600: Total Reward = -0.29\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.39 |\n", + "| ep_rew_mean | -0.477 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 82 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 388775 |\n", + "| train/ | |\n", + "| entropy_loss | -6.11 |\n", + "| explained_variance | 0.839 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 77754 |\n", + "| policy_loss | -0.432 |\n", + "| std | 0.604 |\n", + "| value_loss | 0.00884 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 467/600: Total Reward = -0.25\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.03 |\n", + "| ep_rew_mean | -0.354 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 114 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 389610 |\n", + "| train/ | |\n", + "| entropy_loss | -6.09 |\n", + "| explained_variance | -0.0693 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 77921 |\n", + "| policy_loss | 2.16 |\n", + "| std | 0.603 |\n", + "| value_loss | 0.165 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 468/600: Total Reward = -0.03\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.78 |\n", + "| ep_rew_mean | -0.4 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 73 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 390445 |\n", + "| train/ | |\n", + "| entropy_loss | -6.11 |\n", + "| explained_variance | 0.974 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 78088 |\n", + "| policy_loss | 0.0607 |\n", + "| std | 0.606 |\n", + "| value_loss | 0.000318 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, { "output_type": "stream", "name": "stdout", "text": [ - "Requirement already satisfied: wandb in /usr/local/lib/python3.11/dist-packages (0.19.6)\n", - "Requirement already satisfied: tensorboard in /usr/local/lib/python3.11/dist-packages (2.18.0)\n", - "Requirement already satisfied: click!=8.0.0,>=7.1 in /usr/local/lib/python3.11/dist-packages (from wandb) (8.1.8)\n", - "Requirement already satisfied: docker-pycreds>=0.4.0 in /usr/local/lib/python3.11/dist-packages (from wandb) (0.4.0)\n", - "Requirement already satisfied: gitpython!=3.1.29,>=1.0.0 in /usr/local/lib/python3.11/dist-packages (from wandb) (3.1.44)\n", - "Requirement already satisfied: platformdirs in /usr/local/lib/python3.11/dist-packages (from wandb) (4.3.6)\n", - "Requirement already satisfied: protobuf!=4.21.0,!=5.28.0,<6,>=3.19.0 in /usr/local/lib/python3.11/dist-packages (from wandb) (4.25.6)\n", - "Requirement already satisfied: psutil>=5.0.0 in /usr/local/lib/python3.11/dist-packages (from wandb) (5.9.5)\n", - "Requirement already satisfied: pydantic<3,>=2.6 in /usr/local/lib/python3.11/dist-packages (from wandb) (2.10.6)\n", - "Requirement already satisfied: pyyaml in /usr/local/lib/python3.11/dist-packages (from wandb) (6.0.2)\n", - "Requirement already satisfied: requests<3,>=2.0.0 in /usr/local/lib/python3.11/dist-packages (from wandb) (2.32.3)\n", - "Requirement already satisfied: sentry-sdk>=2.0.0 in /usr/local/lib/python3.11/dist-packages (from wandb) (2.22.0)\n", - "Requirement already satisfied: setproctitle in /usr/local/lib/python3.11/dist-packages (from wandb) (1.3.4)\n", - "Requirement already satisfied: setuptools in /usr/local/lib/python3.11/dist-packages (from wandb) (75.1.0)\n", - "Requirement already satisfied: typing-extensions<5,>=4.4 in /usr/local/lib/python3.11/dist-packages (from wandb) (4.12.2)\n", - "Requirement already satisfied: absl-py>=0.4 in /usr/local/lib/python3.11/dist-packages (from tensorboard) (1.4.0)\n", - "Requirement already satisfied: grpcio>=1.48.2 in /usr/local/lib/python3.11/dist-packages (from tensorboard) (1.70.0)\n", - "Requirement already satisfied: markdown>=2.6.8 in /usr/local/lib/python3.11/dist-packages (from tensorboard) (3.7)\n", - "Requirement already satisfied: numpy>=1.12.0 in /usr/local/lib/python3.11/dist-packages (from tensorboard) (1.26.4)\n", - "Requirement already satisfied: packaging in /usr/local/lib/python3.11/dist-packages (from tensorboard) (24.2)\n", - "Requirement already satisfied: six>1.9 in /usr/local/lib/python3.11/dist-packages (from tensorboard) (1.17.0)\n", - "Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /usr/local/lib/python3.11/dist-packages (from tensorboard) (0.7.2)\n", - "Requirement already satisfied: werkzeug>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from tensorboard) (3.1.3)\n", - "Requirement already satisfied: gitdb<5,>=4.0.1 in /usr/local/lib/python3.11/dist-packages (from gitpython!=3.1.29,>=1.0.0->wandb) (4.0.12)\n", - "Requirement already satisfied: annotated-types>=0.6.0 in /usr/local/lib/python3.11/dist-packages (from pydantic<3,>=2.6->wandb) (0.7.0)\n", - "Requirement already satisfied: pydantic-core==2.27.2 in /usr/local/lib/python3.11/dist-packages (from pydantic<3,>=2.6->wandb) (2.27.2)\n", - "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2.0.0->wandb) (3.4.1)\n", - "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2.0.0->wandb) (3.10)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2.0.0->wandb) (2.3.0)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2.0.0->wandb) (2025.1.31)\n", - "Requirement already satisfied: MarkupSafe>=2.1.1 in /usr/local/lib/python3.11/dist-packages (from werkzeug>=1.0.1->tensorboard) (3.0.2)\n", - "Requirement already satisfied: smmap<6,>=3.0.1 in /usr/local/lib/python3.11/dist-packages (from gitdb<5,>=4.0.1->gitpython!=3.1.29,>=1.0.0->wandb) (5.0.2)\n", - "Collecting stable-baselines3\n", - " Downloading stable_baselines3-2.5.0-py3-none-any.whl.metadata (4.8 kB)\n", - "Requirement already satisfied: gymnasium<1.1.0,>=0.29.1 in /usr/local/lib/python3.11/dist-packages (from stable-baselines3) (1.0.0)\n", - "Requirement already satisfied: numpy<3.0,>=1.20 in /usr/local/lib/python3.11/dist-packages (from stable-baselines3) (1.26.4)\n", - "Requirement already satisfied: torch<3.0,>=2.3 in /usr/local/lib/python3.11/dist-packages (from stable-baselines3) (2.5.1+cu124)\n", - "Requirement already satisfied: cloudpickle in /usr/local/lib/python3.11/dist-packages (from stable-baselines3) (3.1.1)\n", - "Requirement already satisfied: pandas in /usr/local/lib/python3.11/dist-packages (from stable-baselines3) (2.2.2)\n", - "Requirement already satisfied: matplotlib in /usr/local/lib/python3.11/dist-packages (from stable-baselines3) (3.10.0)\n", - "Requirement already satisfied: typing-extensions>=4.3.0 in /usr/local/lib/python3.11/dist-packages (from gymnasium<1.1.0,>=0.29.1->stable-baselines3) (4.12.2)\n", - "Requirement already satisfied: farama-notifications>=0.0.1 in /usr/local/lib/python3.11/dist-packages (from gymnasium<1.1.0,>=0.29.1->stable-baselines3) (0.0.4)\n", - "Requirement already satisfied: filelock in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (3.17.0)\n", - "Requirement already satisfied: networkx in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (3.4.2)\n", - "Requirement already satisfied: jinja2 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (3.1.5)\n", - "Requirement already satisfied: fsspec in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (2024.10.0)\n", - "Collecting nvidia-cuda-nvrtc-cu12==12.4.127 (from torch<3.0,>=2.3->stable-baselines3)\n", - " Downloading nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n", - "Collecting nvidia-cuda-runtime-cu12==12.4.127 (from torch<3.0,>=2.3->stable-baselines3)\n", - " Downloading nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n", - "Collecting nvidia-cuda-cupti-cu12==12.4.127 (from torch<3.0,>=2.3->stable-baselines3)\n", - " Downloading nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n", - "Collecting nvidia-cudnn-cu12==9.1.0.70 (from torch<3.0,>=2.3->stable-baselines3)\n", - " Downloading nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n", - "Collecting nvidia-cublas-cu12==12.4.5.8 (from torch<3.0,>=2.3->stable-baselines3)\n", - " Downloading nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n", - "Collecting nvidia-cufft-cu12==11.2.1.3 (from torch<3.0,>=2.3->stable-baselines3)\n", - " Downloading nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n", - "Collecting nvidia-curand-cu12==10.3.5.147 (from torch<3.0,>=2.3->stable-baselines3)\n", - " Downloading nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n", - "Collecting nvidia-cusolver-cu12==11.6.1.9 (from torch<3.0,>=2.3->stable-baselines3)\n", - " Downloading nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n", - "Collecting nvidia-cusparse-cu12==12.3.1.170 (from torch<3.0,>=2.3->stable-baselines3)\n", - " Downloading nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n", - "Requirement already satisfied: nvidia-nccl-cu12==2.21.5 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (2.21.5)\n", - "Requirement already satisfied: nvidia-nvtx-cu12==12.4.127 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (12.4.127)\n", - "Collecting nvidia-nvjitlink-cu12==12.4.127 (from torch<3.0,>=2.3->stable-baselines3)\n", - " Downloading nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n", - "Requirement already satisfied: triton==3.1.0 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (3.1.0)\n", - "Requirement already satisfied: sympy==1.13.1 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (1.13.1)\n", - "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.11/dist-packages (from sympy==1.13.1->torch<3.0,>=2.3->stable-baselines3) (1.3.0)\n", - "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (1.3.1)\n", - "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (4.56.0)\n", - "Requirement already satisfied: kiwisolver>=1.3.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (1.4.8)\n", - "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (24.2)\n", - "Requirement already satisfied: pillow>=8 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (11.1.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (3.2.1)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (2.8.2)\n", - "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas->stable-baselines3) (2025.1)\n", - "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas->stable-baselines3) (2025.1)\n", - "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.11/dist-packages (from python-dateutil>=2.7->matplotlib->stable-baselines3) (1.17.0)\n", - "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.11/dist-packages (from jinja2->torch<3.0,>=2.3->stable-baselines3) (3.0.2)\n", - "Downloading stable_baselines3-2.5.0-py3-none-any.whl (183 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m183.9/183.9 kB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl (363.4 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m363.4/363.4 MB\u001b[0m \u001b[31m3.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (13.8 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.8/13.8 MB\u001b[0m \u001b[31m90.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (24.6 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m24.6/24.6 MB\u001b[0m \u001b[31m72.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (883 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m883.7/883.7 kB\u001b[0m \u001b[31m42.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl (664.8 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m664.8/664.8 MB\u001b[0m \u001b[31m2.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl (211.5 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m211.5/211.5 MB\u001b[0m \u001b[31m5.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl (56.3 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.3/56.3 MB\u001b[0m \u001b[31m8.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl (127.9 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m127.9/127.9 MB\u001b[0m \u001b[31m8.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl (207.5 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m207.5/207.5 MB\u001b[0m \u001b[31m6.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (21.1 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.1/21.1 MB\u001b[0m \u001b[31m48.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hInstalling collected packages: nvidia-nvjitlink-cu12, nvidia-curand-cu12, nvidia-cufft-cu12, nvidia-cuda-runtime-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-cupti-cu12, nvidia-cublas-cu12, nvidia-cusparse-cu12, nvidia-cudnn-cu12, nvidia-cusolver-cu12, stable-baselines3\n", - " Attempting uninstall: nvidia-nvjitlink-cu12\n", - " Found existing installation: nvidia-nvjitlink-cu12 12.5.82\n", - " Uninstalling nvidia-nvjitlink-cu12-12.5.82:\n", - " Successfully uninstalled nvidia-nvjitlink-cu12-12.5.82\n", - " Attempting uninstall: nvidia-curand-cu12\n", - " Found existing installation: nvidia-curand-cu12 10.3.6.82\n", - " Uninstalling nvidia-curand-cu12-10.3.6.82:\n", - " Successfully uninstalled nvidia-curand-cu12-10.3.6.82\n", - " Attempting uninstall: nvidia-cufft-cu12\n", - " Found existing installation: nvidia-cufft-cu12 11.2.3.61\n", - " Uninstalling nvidia-cufft-cu12-11.2.3.61:\n", - " Successfully uninstalled nvidia-cufft-cu12-11.2.3.61\n", - " Attempting uninstall: nvidia-cuda-runtime-cu12\n", - " Found existing installation: nvidia-cuda-runtime-cu12 12.5.82\n", - " Uninstalling nvidia-cuda-runtime-cu12-12.5.82:\n", - " Successfully uninstalled nvidia-cuda-runtime-cu12-12.5.82\n", - " Attempting uninstall: nvidia-cuda-nvrtc-cu12\n", - " Found existing installation: nvidia-cuda-nvrtc-cu12 12.5.82\n", - " Uninstalling nvidia-cuda-nvrtc-cu12-12.5.82:\n", - " Successfully uninstalled nvidia-cuda-nvrtc-cu12-12.5.82\n", - " Attempting uninstall: nvidia-cuda-cupti-cu12\n", - " Found existing installation: nvidia-cuda-cupti-cu12 12.5.82\n", - " Uninstalling nvidia-cuda-cupti-cu12-12.5.82:\n", - " Successfully uninstalled nvidia-cuda-cupti-cu12-12.5.82\n", - " Attempting uninstall: nvidia-cublas-cu12\n", - " Found existing installation: nvidia-cublas-cu12 12.5.3.2\n", - " Uninstalling nvidia-cublas-cu12-12.5.3.2:\n", - " Successfully uninstalled nvidia-cublas-cu12-12.5.3.2\n", - " Attempting uninstall: nvidia-cusparse-cu12\n", - " Found existing installation: nvidia-cusparse-cu12 12.5.1.3\n", - " Uninstalling nvidia-cusparse-cu12-12.5.1.3:\n", - " Successfully uninstalled nvidia-cusparse-cu12-12.5.1.3\n", - " Attempting uninstall: nvidia-cudnn-cu12\n", - " Found existing installation: nvidia-cudnn-cu12 9.3.0.75\n", - " Uninstalling nvidia-cudnn-cu12-9.3.0.75:\n", - " Successfully uninstalled nvidia-cudnn-cu12-9.3.0.75\n", - " Attempting uninstall: nvidia-cusolver-cu12\n", - " Found existing installation: nvidia-cusolver-cu12 11.6.3.83\n", - " Uninstalling nvidia-cusolver-cu12-11.6.3.83:\n", - " Successfully uninstalled nvidia-cusolver-cu12-11.6.3.83\n", - "Successfully installed nvidia-cublas-cu12-12.4.5.8 nvidia-cuda-cupti-cu12-12.4.127 nvidia-cuda-nvrtc-cu12-12.4.127 nvidia-cuda-runtime-cu12-12.4.127 nvidia-cudnn-cu12-9.1.0.70 nvidia-cufft-cu12-11.2.1.3 nvidia-curand-cu12-10.3.5.147 nvidia-cusolver-cu12-11.6.1.9 nvidia-cusparse-cu12-12.3.1.170 nvidia-nvjitlink-cu12-12.4.127 stable-baselines3-2.5.0\n", - "Requirement already satisfied: wandb in /usr/local/lib/python3.11/dist-packages (0.19.6)\n", - "Requirement already satisfied: tensorboard in /usr/local/lib/python3.11/dist-packages (2.18.0)\n", - "Requirement already satisfied: stable-baselines3 in /usr/local/lib/python3.11/dist-packages (2.5.0)\n", - "Requirement already satisfied: gymnasium in /usr/local/lib/python3.11/dist-packages (1.0.0)\n", - "Collecting shimmy\n", - " Downloading Shimmy-2.0.0-py3-none-any.whl.metadata (3.5 kB)\n", - "Requirement already satisfied: click!=8.0.0,>=7.1 in /usr/local/lib/python3.11/dist-packages (from wandb) (8.1.8)\n", - "Requirement already satisfied: docker-pycreds>=0.4.0 in /usr/local/lib/python3.11/dist-packages (from wandb) (0.4.0)\n", - "Requirement already satisfied: gitpython!=3.1.29,>=1.0.0 in /usr/local/lib/python3.11/dist-packages (from wandb) (3.1.44)\n", - "Requirement already satisfied: platformdirs in /usr/local/lib/python3.11/dist-packages (from wandb) (4.3.6)\n", - "Requirement already satisfied: protobuf!=4.21.0,!=5.28.0,<6,>=3.19.0 in /usr/local/lib/python3.11/dist-packages (from wandb) (4.25.6)\n", - "Requirement already satisfied: psutil>=5.0.0 in /usr/local/lib/python3.11/dist-packages (from wandb) (5.9.5)\n", - "Requirement already satisfied: pydantic<3,>=2.6 in /usr/local/lib/python3.11/dist-packages (from wandb) (2.10.6)\n", - "Requirement already satisfied: pyyaml in /usr/local/lib/python3.11/dist-packages (from wandb) (6.0.2)\n", - "Requirement already satisfied: requests<3,>=2.0.0 in /usr/local/lib/python3.11/dist-packages (from wandb) (2.32.3)\n", - "Requirement already satisfied: sentry-sdk>=2.0.0 in /usr/local/lib/python3.11/dist-packages (from wandb) (2.22.0)\n", - "Requirement already satisfied: setproctitle in /usr/local/lib/python3.11/dist-packages (from wandb) (1.3.4)\n", - "Requirement already satisfied: setuptools in /usr/local/lib/python3.11/dist-packages (from wandb) (75.1.0)\n", - "Requirement already satisfied: typing-extensions<5,>=4.4 in /usr/local/lib/python3.11/dist-packages (from wandb) (4.12.2)\n", - "Requirement already satisfied: absl-py>=0.4 in /usr/local/lib/python3.11/dist-packages (from tensorboard) (1.4.0)\n", - "Requirement already satisfied: grpcio>=1.48.2 in /usr/local/lib/python3.11/dist-packages (from tensorboard) (1.70.0)\n", - "Requirement already satisfied: markdown>=2.6.8 in /usr/local/lib/python3.11/dist-packages (from tensorboard) (3.7)\n", - "Requirement already satisfied: numpy>=1.12.0 in /usr/local/lib/python3.11/dist-packages (from tensorboard) (1.26.4)\n", - "Requirement already satisfied: packaging in /usr/local/lib/python3.11/dist-packages (from tensorboard) (24.2)\n", - "Requirement already satisfied: six>1.9 in /usr/local/lib/python3.11/dist-packages (from tensorboard) (1.17.0)\n", - "Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /usr/local/lib/python3.11/dist-packages (from tensorboard) (0.7.2)\n", - "Requirement already satisfied: werkzeug>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from tensorboard) (3.1.3)\n", - "Requirement already satisfied: torch<3.0,>=2.3 in /usr/local/lib/python3.11/dist-packages (from stable-baselines3) (2.5.1+cu124)\n", - "Requirement already satisfied: cloudpickle in /usr/local/lib/python3.11/dist-packages (from stable-baselines3) (3.1.1)\n", - "Requirement already satisfied: pandas in /usr/local/lib/python3.11/dist-packages (from stable-baselines3) (2.2.2)\n", - "Requirement already satisfied: matplotlib in /usr/local/lib/python3.11/dist-packages (from stable-baselines3) (3.10.0)\n", - "Requirement already satisfied: farama-notifications>=0.0.1 in /usr/local/lib/python3.11/dist-packages (from gymnasium) (0.0.4)\n", - "Requirement already satisfied: gitdb<5,>=4.0.1 in /usr/local/lib/python3.11/dist-packages (from gitpython!=3.1.29,>=1.0.0->wandb) (4.0.12)\n", - "Requirement already satisfied: annotated-types>=0.6.0 in /usr/local/lib/python3.11/dist-packages (from pydantic<3,>=2.6->wandb) (0.7.0)\n", - "Requirement already satisfied: pydantic-core==2.27.2 in /usr/local/lib/python3.11/dist-packages (from pydantic<3,>=2.6->wandb) (2.27.2)\n", - "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2.0.0->wandb) (3.4.1)\n", - "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2.0.0->wandb) (3.10)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2.0.0->wandb) (2.3.0)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2.0.0->wandb) (2025.1.31)\n", - "Requirement already satisfied: filelock in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (3.17.0)\n", - "Requirement already satisfied: networkx in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (3.4.2)\n", - "Requirement already satisfied: jinja2 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (3.1.5)\n", - "Requirement already satisfied: fsspec in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (2024.10.0)\n", - "Requirement already satisfied: nvidia-cuda-nvrtc-cu12==12.4.127 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (12.4.127)\n", - "Requirement already satisfied: nvidia-cuda-runtime-cu12==12.4.127 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (12.4.127)\n", - "Requirement already satisfied: nvidia-cuda-cupti-cu12==12.4.127 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (12.4.127)\n", - "Requirement already satisfied: nvidia-cudnn-cu12==9.1.0.70 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (9.1.0.70)\n", - "Requirement already satisfied: nvidia-cublas-cu12==12.4.5.8 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (12.4.5.8)\n", - "Requirement already satisfied: nvidia-cufft-cu12==11.2.1.3 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (11.2.1.3)\n", - "Requirement already satisfied: nvidia-curand-cu12==10.3.5.147 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (10.3.5.147)\n", - "Requirement already satisfied: nvidia-cusolver-cu12==11.6.1.9 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (11.6.1.9)\n", - "Requirement already satisfied: nvidia-cusparse-cu12==12.3.1.170 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (12.3.1.170)\n", - "Requirement already satisfied: nvidia-nccl-cu12==2.21.5 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (2.21.5)\n", - "Requirement already satisfied: nvidia-nvtx-cu12==12.4.127 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (12.4.127)\n", - "Requirement already satisfied: nvidia-nvjitlink-cu12==12.4.127 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (12.4.127)\n", - "Requirement already satisfied: triton==3.1.0 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (3.1.0)\n", - "Requirement already satisfied: sympy==1.13.1 in /usr/local/lib/python3.11/dist-packages (from torch<3.0,>=2.3->stable-baselines3) (1.13.1)\n", - "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.11/dist-packages (from sympy==1.13.1->torch<3.0,>=2.3->stable-baselines3) (1.3.0)\n", - "Requirement already satisfied: MarkupSafe>=2.1.1 in /usr/local/lib/python3.11/dist-packages (from werkzeug>=1.0.1->tensorboard) (3.0.2)\n", - "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (1.3.1)\n", - "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (4.56.0)\n", - "Requirement already satisfied: kiwisolver>=1.3.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (1.4.8)\n", - "Requirement already satisfied: pillow>=8 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (11.1.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (3.2.1)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.11/dist-packages (from matplotlib->stable-baselines3) (2.8.2)\n", - "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas->stable-baselines3) (2025.1)\n", - "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas->stable-baselines3) (2025.1)\n", - "Requirement already satisfied: smmap<6,>=3.0.1 in /usr/local/lib/python3.11/dist-packages (from gitdb<5,>=4.0.1->gitpython!=3.1.29,>=1.0.0->wandb) (5.0.2)\n", - "Downloading Shimmy-2.0.0-py3-none-any.whl (30 kB)\n", - "Installing collected packages: shimmy\n", - "Successfully installed shimmy-2.0.0\n", - "Collecting huggingface_sb3\n", - " Downloading huggingface_sb3-3.0-py3-none-any.whl.metadata (6.3 kB)\n", - "Requirement already satisfied: huggingface-hub~=0.8 in /usr/local/lib/python3.11/dist-packages (from huggingface_sb3) (0.28.1)\n", - "Requirement already satisfied: pyyaml~=6.0 in /usr/local/lib/python3.11/dist-packages (from huggingface_sb3) (6.0.2)\n", - "Requirement already satisfied: wasabi in /usr/local/lib/python3.11/dist-packages (from huggingface_sb3) (1.1.3)\n", - "Requirement already satisfied: numpy in /usr/local/lib/python3.11/dist-packages (from huggingface_sb3) (1.26.4)\n", - "Requirement already satisfied: cloudpickle>=1.6 in /usr/local/lib/python3.11/dist-packages (from huggingface_sb3) (3.1.1)\n", - "Requirement already satisfied: filelock in /usr/local/lib/python3.11/dist-packages (from huggingface-hub~=0.8->huggingface_sb3) (3.17.0)\n", - "Requirement already satisfied: fsspec>=2023.5.0 in /usr/local/lib/python3.11/dist-packages (from huggingface-hub~=0.8->huggingface_sb3) (2024.10.0)\n", - "Requirement already satisfied: packaging>=20.9 in /usr/local/lib/python3.11/dist-packages (from huggingface-hub~=0.8->huggingface_sb3) (24.2)\n", - "Requirement already satisfied: requests in /usr/local/lib/python3.11/dist-packages (from huggingface-hub~=0.8->huggingface_sb3) (2.32.3)\n", - "Requirement already satisfied: tqdm>=4.42.1 in /usr/local/lib/python3.11/dist-packages (from huggingface-hub~=0.8->huggingface_sb3) (4.67.1)\n", - "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.11/dist-packages (from huggingface-hub~=0.8->huggingface_sb3) (4.12.2)\n", - "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests->huggingface-hub~=0.8->huggingface_sb3) (3.4.1)\n", - "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests->huggingface-hub~=0.8->huggingface_sb3) (3.10)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests->huggingface-hub~=0.8->huggingface_sb3) (2.3.0)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests->huggingface-hub~=0.8->huggingface_sb3) (2025.1.31)\n", - "Downloading huggingface_sb3-3.0-py3-none-any.whl (9.7 kB)\n", - "Installing collected packages: huggingface_sb3\n", - "Successfully installed huggingface_sb3-3.0\n" + "Episode 469/600: Total Reward = -0.23\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.72 |\n", + "| ep_rew_mean | -0.389 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 119 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 391280 |\n", + "| train/ | |\n", + "| entropy_loss | -6.1 |\n", + "| explained_variance | 0.989 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 78255 |\n", + "| policy_loss | 0.169 |\n", + "| std | 0.604 |\n", + "| value_loss | 0.000894 |\n", + "------------------------------------\n" ] - } - ], - "source": [ - "! pip install wandb tensorboard\n", - "! pip install stable-baselines3\n", - "! pip install wandb tensorboard stable-baselines3 gymnasium shimmy\n", - "! pip install huggingface_sb3" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "-rkwVtpujKtz" - }, - "source": [ - "### Get familiar with Stable-Baselines3" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 17, - "referenced_widgets": [ - "a52deb23470f4f9d9acfe28e69f47fb5", - "c7294d001a9c44aca712bba2e7141b35", - "659607dd3c294904913ccb88a2ecfea5", - "ec4b7fdf9f344b5eb5aabfe00395ddea", - "4064541754324b308f9e02565edc7fc2", - "cc92a18e333e454eaf4d2b27ccad782b", - "136b0ee69b6a4012a1c4a92ea45a352e", - "02dcba9d3e194f79890227e180c37474", - "6376dea1e82f4c159ea5062c1b3b14ef", - "1a6532f14ca74a479f01155019a2a30f", - "3f9f02c927bb4e0c9e0002703189fbfa", - "c8a5fea9ebed4821821592ae85b0af71", - "439ac621f2cb4c0d91749ee09729453b", - "f116aadb2ef94eb8aa8a6b43c7b4fb5d", - "4f814644155549caa91d2d81d9333740", - "3675a21548ee4857b98b3bc0a9c206f3", - "463f22dcd9da484f98795b42c7406fb4", - "632684e2f5e648f3ad8eb6f65acbdd6b", - "b5bc5fcb6fea4586839b5dc6e43ce0f9", - "decc3d18711a459badab9c4def213303" - ] - }, - "id": "dWr7eVP7x5r5", - "outputId": "fb6dd84c-a12f-4d1e-b1fc-a3f694704037" - }, - "outputs": [ + }, { - "output_type": "display_data", - "data": { - "text/plain": [ - "VBox(children=(HTML(value='<center> <img\\nsrc=https://huggingface.co/front/assets/huggingface_logo-noborder.sv…" - ], - "application/vnd.jupyter.widget-view+json": { - "version_major": 2, - "version_minor": 0, - "model_id": "a52deb23470f4f9d9acfe28e69f47fb5" - } - }, - "metadata": {} - } - ], - "source": [ - "from huggingface_hub import notebook_login\n", - "#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\n", - "notebook_login()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 373 + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 470/600: Total Reward = -0.36\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.71 |\n", + "| ep_rew_mean | -0.285 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 74 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 392115 |\n", + "| train/ | |\n", + "| entropy_loss | -6.11 |\n", + "| explained_variance | 0.81 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 78422 |\n", + "| policy_loss | 0.815 |\n", + "| std | 0.606 |\n", + "| value_loss | 0.0179 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 471/600: Total Reward = -0.71\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.65 |\n", + "| ep_rew_mean | -0.296 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 127 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 392950 |\n", + "| train/ | |\n", + "| entropy_loss | -6.07 |\n", + "| explained_variance | 0.888 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 78589 |\n", + "| policy_loss | 0.253 |\n", + "| std | 0.602 |\n", + "| value_loss | 0.0038 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "id": "OEMHjcAijHgB", - "outputId": "ada91d96-a577-4ebb-a68d-1ee792c71599" - }, - "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "Using cpu device\n", + "Episode 472/600: Total Reward = -0.38\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 24.3 |\n", - "| ep_rew_mean | 24.3 |\n", + "| ep_len_mean | 3.58 |\n", + "| ep_rew_mean | -0.282 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 420 |\n", + "| fps | 75 |\n", "| iterations | 100 |\n", - "| time_elapsed | 1 |\n", - "| total_timesteps | 500 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 393785 |\n", "| train/ | |\n", - "| entropy_loss | -0.653 |\n", - "| explained_variance | -0.722 |\n", + "| entropy_loss | -6.06 |\n", + "| explained_variance | 0.737 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 99 |\n", - "| policy_loss | 2.18 |\n", - "| value_loss | 17.5 |\n", - "------------------------------------\n", + "| n_updates | 78756 |\n", + "| policy_loss | 0.548 |\n", + "| std | 0.602 |\n", + "| value_loss | 0.0127 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 473/600: Total Reward = -0.30\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 24 |\n", - "| ep_rew_mean | 24 |\n", + "| ep_len_mean | 3.47 |\n", + "| ep_rew_mean | -0.262 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 454 |\n", - "| iterations | 200 |\n", - "| time_elapsed | 2 |\n", - "| total_timesteps | 1000 |\n", + "| fps | 127 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 394620 |\n", "| train/ | |\n", - "| entropy_loss | -0.619 |\n", - "| explained_variance | -0.0863 |\n", + "| entropy_loss | -6.04 |\n", + "| explained_variance | 0.955 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 199 |\n", - "| policy_loss | 1.87 |\n", - "| value_loss | 8.7 |\n", + "| n_updates | 78923 |\n", + "| policy_loss | -0.109 |\n", + "| std | 0.6 |\n", + "| value_loss | 0.00212 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 474/600: Total Reward = -1.19\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.97 |\n", + "| ep_rew_mean | -0.32 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 74 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 395455 |\n", + "| train/ | |\n", + "| entropy_loss | -6.01 |\n", + "| explained_variance | 0.984 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 79090 |\n", + "| policy_loss | 0.104 |\n", + "| std | 0.598 |\n", + "| value_loss | 0.000562 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 475/600: Total Reward = -0.45\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 22.2 |\n", - "| ep_rew_mean | 22.2 |\n", + "| ep_len_mean | 4.1 |\n", + "| ep_rew_mean | -0.34 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 457 |\n", - "| iterations | 300 |\n", + "| fps | 131 |\n", + "| iterations | 100 |\n", "| time_elapsed | 3 |\n", - "| total_timesteps | 1500 |\n", + "| total_timesteps | 396290 |\n", "| train/ | |\n", - "| entropy_loss | -0.63 |\n", - "| explained_variance | -0.139 |\n", + "| entropy_loss | -5.99 |\n", + "| explained_variance | 0.504 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 299 |\n", - "| policy_loss | 1.65 |\n", - "| value_loss | 7.89 |\n", + "| n_updates | 79257 |\n", + "| policy_loss | -0.614 |\n", + "| std | 0.596 |\n", + "| value_loss | 0.0092 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 476/600: Total Reward = -0.33\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.12 |\n", + "| ep_rew_mean | -0.342 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 74 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 397125 |\n", + "| train/ | |\n", + "| entropy_loss | -6.01 |\n", + "| explained_variance | 0.696 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 79424 |\n", + "| policy_loss | -0.382 |\n", + "| std | 0.598 |\n", + "| value_loss | 0.00792 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 477/600: Total Reward = -0.35\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 22.7 |\n", - "| ep_rew_mean | 22.7 |\n", + "| ep_len_mean | 4.02 |\n", + "| ep_rew_mean | -0.325 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 474 |\n", - "| iterations | 400 |\n", + "| fps | 122 |\n", + "| iterations | 100 |\n", "| time_elapsed | 4 |\n", - "| total_timesteps | 2000 |\n", + "| total_timesteps | 397960 |\n", "| train/ | |\n", - "| entropy_loss | -0.672 |\n", - "| explained_variance | 0.0291 |\n", + "| entropy_loss | -5.99 |\n", + "| explained_variance | 0.921 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 399 |\n", - "| policy_loss | 1.41 |\n", - "| value_loss | 6.71 |\n", - "------------------------------------\n", + "| n_updates | 79591 |\n", + "| policy_loss | -0.296 |\n", + "| std | 0.596 |\n", + "| value_loss | 0.00324 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 478/600: Total Reward = -0.15\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 23.7 |\n", - "| ep_rew_mean | 23.7 |\n", + "| ep_len_mean | 3.6 |\n", + "| ep_rew_mean | -0.276 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 489 |\n", - "| iterations | 500 |\n", - "| time_elapsed | 5 |\n", - "| total_timesteps | 2500 |\n", + "| fps | 72 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 398795 |\n", "| train/ | |\n", - "| entropy_loss | -0.508 |\n", - "| explained_variance | 0.0956 |\n", + "| entropy_loss | -5.96 |\n", + "| explained_variance | 0.99 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 499 |\n", - "| policy_loss | 2.08 |\n", - "| value_loss | 6.14 |\n", + "| n_updates | 79758 |\n", + "| policy_loss | -0.257 |\n", + "| std | 0.592 |\n", + "| value_loss | 0.00125 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 479/600: Total Reward = -0.44\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.81 |\n", + "| ep_rew_mean | -0.306 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 122 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 399630 |\n", + "| train/ | |\n", + "| entropy_loss | -5.96 |\n", + "| explained_variance | 0.786 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 79925 |\n", + "| policy_loss | -0.259 |\n", + "| std | 0.592 |\n", + "| value_loss | 0.00329 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 480/600: Total Reward = -0.25\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 26.6 |\n", - "| ep_rew_mean | 26.6 |\n", + "| ep_len_mean | 3.33 |\n", + "| ep_rew_mean | -0.263 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 501 |\n", - "| iterations | 600 |\n", - "| time_elapsed | 5 |\n", - "| total_timesteps | 3000 |\n", + "| fps | 76 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 400465 |\n", "| train/ | |\n", - "| entropy_loss | -0.662 |\n", - "| explained_variance | -0.00099 |\n", + "| entropy_loss | -5.95 |\n", + "| explained_variance | 0.989 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 599 |\n", - "| policy_loss | 1.13 |\n", - "| value_loss | 5.36 |\n", + "| n_updates | 80092 |\n", + "| policy_loss | -0.0605 |\n", + "| std | 0.591 |\n", + "| value_loss | 0.000203 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 481/600: Total Reward = -0.21\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.26 |\n", + "| ep_rew_mean | -0.338 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 125 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 401300 |\n", + "| train/ | |\n", + "| entropy_loss | -5.9 |\n", + "| explained_variance | 0.97 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 80259 |\n", + "| policy_loss | -0.295 |\n", + "| std | 0.588 |\n", + "| value_loss | 0.00301 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 482/600: Total Reward = -0.05\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 28.1 |\n", - "| ep_rew_mean | 28.1 |\n", + "| ep_len_mean | 4.26 |\n", + "| ep_rew_mean | -0.351 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 509 |\n", - "| iterations | 700 |\n", + "| fps | 78 |\n", + "| iterations | 100 |\n", "| time_elapsed | 6 |\n", - "| total_timesteps | 3500 |\n", + "| total_timesteps | 402135 |\n", "| train/ | |\n", - "| entropy_loss | -0.627 |\n", - "| explained_variance | 0.024 |\n", + "| entropy_loss | -5.9 |\n", + "| explained_variance | 0.844 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 699 |\n", - "| policy_loss | -10.7 |\n", - "| value_loss | 642 |\n", + "| n_updates | 80426 |\n", + "| policy_loss | -0.185 |\n", + "| std | 0.589 |\n", + "| value_loss | 0.000988 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 483/600: Total Reward = -0.34\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.23 |\n", + "| ep_rew_mean | -0.354 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 126 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 402970 |\n", + "| train/ | |\n", + "| entropy_loss | -5.93 |\n", + "| explained_variance | 0.54 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 80593 |\n", + "| policy_loss | 0.166 |\n", + "| std | 0.592 |\n", + "| value_loss | 0.00156 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 484/600: Total Reward = -0.27\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 30 |\n", - "| ep_rew_mean | 30 |\n", + "| ep_len_mean | 3.87 |\n", + "| ep_rew_mean | -0.321 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 516 |\n", - "| iterations | 800 |\n", - "| time_elapsed | 7 |\n", - "| total_timesteps | 4000 |\n", + "| fps | 87 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 403805 |\n", "| train/ | |\n", - "| entropy_loss | -0.663 |\n", - "| explained_variance | 0.00948 |\n", + "| entropy_loss | -5.93 |\n", + "| explained_variance | 0.983 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 799 |\n", - "| policy_loss | 1.05 |\n", - "| value_loss | 4.53 |\n", + "| n_updates | 80760 |\n", + "| policy_loss | -0.169 |\n", + "| std | 0.593 |\n", + "| value_loss | 0.00128 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 485/600: Total Reward = -0.11\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.83 |\n", + "| ep_rew_mean | -0.318 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 129 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 404640 |\n", + "| train/ | |\n", + "| entropy_loss | -5.95 |\n", + "| explained_variance | 0.94 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 80927 |\n", + "| policy_loss | -0.00603 |\n", + "| std | 0.595 |\n", + "| value_loss | 0.000731 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 486/600: Total Reward = -0.17\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 33.5 |\n", - "| ep_rew_mean | 33.5 |\n", + "| ep_len_mean | 3.9 |\n", + "| ep_rew_mean | -0.322 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 519 |\n", - "| iterations | 900 |\n", - "| time_elapsed | 8 |\n", - "| total_timesteps | 4500 |\n", - "| train/ | |\n", - "| entropy_loss | -0.648 |\n", - "| explained_variance | -0.00115 |\n", - "| learning_rate | 0.0007 |\n", - "| n_updates | 899 |\n", - "| policy_loss | 0.79 |\n", - "| value_loss | 4.03 |\n", - "------------------------------------\n", - "-------------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 36.1 |\n", - "| ep_rew_mean | 36.1 |\n", - "| time/ | |\n", - "| fps | 521 |\n", - "| iterations | 1000 |\n", - "| time_elapsed | 9 |\n", - "| total_timesteps | 5000 |\n", - "| train/ | |\n", - "| entropy_loss | -0.623 |\n", - "| explained_variance | -0.000646 |\n", - "| learning_rate | 0.0007 |\n", - "| n_updates | 999 |\n", - "| policy_loss | 0.915 |\n", - "| value_loss | 3.6 |\n", - "-------------------------------------\n", + "| fps | 87 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 405475 |\n", + "| train/ | |\n", + "| entropy_loss | -6 |\n", + "| explained_variance | 0.971 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 81094 |\n", + "| policy_loss | -0.0625 |\n", + "| std | 0.598 |\n", + "| value_loss | 0.000517 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 487/600: Total Reward = -0.30\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 39.5 |\n", - "| ep_rew_mean | 39.5 |\n", + "| ep_len_mean | 4.97 |\n", + "| ep_rew_mean | -0.406 |\n", + "| success_rate | 0.98 |\n", "| time/ | |\n", - "| fps | 526 |\n", - "| iterations | 1100 |\n", - "| time_elapsed | 10 |\n", - "| total_timesteps | 5500 |\n", + "| fps | 121 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 406310 |\n", "| train/ | |\n", - "| entropy_loss | -0.555 |\n", - "| explained_variance | 0.00192 |\n", + "| entropy_loss | -6.05 |\n", + "| explained_variance | 0.785 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 1099 |\n", - "| policy_loss | 0.82 |\n", - "| value_loss | 3.08 |\n", - "------------------------------------\n", + "| n_updates | 81261 |\n", + "| policy_loss | 0.111 |\n", + "| std | 0.602 |\n", + "| value_loss | 0.0034 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 488/600: Total Reward = -0.39\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 43.3 |\n", - "| ep_rew_mean | 43.3 |\n", + "| ep_len_mean | 4.12 |\n", + "| ep_rew_mean | -0.339 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 530 |\n", - "| iterations | 1200 |\n", - "| time_elapsed | 11 |\n", - "| total_timesteps | 6000 |\n", + "| fps | 96 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 407145 |\n", "| train/ | |\n", - "| entropy_loss | -0.479 |\n", - "| explained_variance | 0.000166 |\n", + "| entropy_loss | -6.06 |\n", + "| explained_variance | 0.86 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 1199 |\n", - "| policy_loss | 1.29 |\n", - "| value_loss | 2.62 |\n", - "------------------------------------\n", + "| n_updates | 81428 |\n", + "| policy_loss | -0.779 |\n", + "| std | 0.602 |\n", + "| value_loss | 0.0267 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 489/600: Total Reward = -0.33\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 49.3 |\n", - "| ep_rew_mean | 49.3 |\n", + "| ep_len_mean | 4.12 |\n", + "| ep_rew_mean | -0.325 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 530 |\n", - "| iterations | 1300 |\n", - "| time_elapsed | 12 |\n", - "| total_timesteps | 6500 |\n", + "| fps | 116 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 407980 |\n", "| train/ | |\n", - "| entropy_loss | -0.533 |\n", - "| explained_variance | 0.00133 |\n", + "| entropy_loss | -6 |\n", + "| explained_variance | 0.968 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 1299 |\n", - "| policy_loss | 0.644 |\n", - "| value_loss | 2.19 |\n", - "------------------------------------\n", - "-------------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 52.9 |\n", - "| ep_rew_mean | 52.9 |\n", - "| time/ | |\n", - "| fps | 533 |\n", - "| iterations | 1400 |\n", - "| time_elapsed | 13 |\n", - "| total_timesteps | 7000 |\n", - "| train/ | |\n", - "| entropy_loss | -0.479 |\n", - "| explained_variance | -0.000509 |\n", - "| learning_rate | 0.0007 |\n", - "| n_updates | 1399 |\n", - "| policy_loss | 0.566 |\n", - "| value_loss | 1.82 |\n", - "-------------------------------------\n", + "| n_updates | 81595 |\n", + "| policy_loss | -0.255 |\n", + "| std | 0.598 |\n", + "| value_loss | 0.00208 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 490/600: Total Reward = -0.38\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 57 |\n", - "| ep_rew_mean | 57 |\n", + "| ep_len_mean | 3.31 |\n", + "| ep_rew_mean | -0.262 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 536 |\n", - "| iterations | 1500 |\n", - "| time_elapsed | 13 |\n", - "| total_timesteps | 7500 |\n", + "| fps | 107 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 408815 |\n", "| train/ | |\n", - "| entropy_loss | -0.561 |\n", - "| explained_variance | 4.95e-06 |\n", + "| entropy_loss | -6 |\n", + "| explained_variance | 0.975 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 1499 |\n", - "| policy_loss | 0.387 |\n", - "| value_loss | 1.46 |\n", - "------------------------------------\n", - "-------------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 60.7 |\n", - "| ep_rew_mean | 60.7 |\n", - "| time/ | |\n", - "| fps | 538 |\n", - "| iterations | 1600 |\n", - "| time_elapsed | 14 |\n", - "| total_timesteps | 8000 |\n", - "| train/ | |\n", - "| entropy_loss | -0.376 |\n", - "| explained_variance | -6.74e-05 |\n", - "| learning_rate | 0.0007 |\n", - "| n_updates | 1599 |\n", - "| policy_loss | 0.585 |\n", - "| value_loss | 1.13 |\n", - "-------------------------------------\n", + "| n_updates | 81762 |\n", + "| policy_loss | 0.301 |\n", + "| std | 0.598 |\n", + "| value_loss | 0.00473 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 491/600: Total Reward = -0.10\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 65.3 |\n", - "| ep_rew_mean | 65.3 |\n", + "| ep_len_mean | 3.54 |\n", + "| ep_rew_mean | -0.285 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 541 |\n", - "| iterations | 1700 |\n", - "| time_elapsed | 15 |\n", - "| total_timesteps | 8500 |\n", + "| fps | 124 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 409650 |\n", "| train/ | |\n", - "| entropy_loss | -0.268 |\n", - "| explained_variance | 1.09e-05 |\n", + "| entropy_loss | -5.97 |\n", + "| explained_variance | 0.969 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 1699 |\n", - "| policy_loss | 0.103 |\n", - "| value_loss | 0.85 |\n", - "------------------------------------\n", + "| n_updates | 81929 |\n", + "| policy_loss | 0.355 |\n", + "| std | 0.597 |\n", + "| value_loss | 0.00462 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 492/600: Total Reward = -0.08\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 68.6 |\n", - "| ep_rew_mean | 68.6 |\n", + "| ep_len_mean | 3.79 |\n", + "| ep_rew_mean | -0.315 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 543 |\n", - "| iterations | 1800 |\n", - "| time_elapsed | 16 |\n", - "| total_timesteps | 9000 |\n", + "| fps | 125 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 410485 |\n", "| train/ | |\n", - "| entropy_loss | -0.474 |\n", - "| explained_variance | 0.000158 |\n", + "| entropy_loss | -5.98 |\n", + "| explained_variance | 0.98 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 1799 |\n", - "| policy_loss | 0.164 |\n", - "| value_loss | 0.603 |\n", - "------------------------------------\n", + "| n_updates | 82096 |\n", + "| policy_loss | 0.145 |\n", + "| std | 0.597 |\n", + "| value_loss | 0.00152 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 493/600: Total Reward = -0.51\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 72.6 |\n", - "| ep_rew_mean | 72.6 |\n", + "| ep_len_mean | 4.52 |\n", + "| ep_rew_mean | -0.384 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 545 |\n", - "| iterations | 1900 |\n", - "| time_elapsed | 17 |\n", - "| total_timesteps | 9500 |\n", + "| fps | 109 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 411320 |\n", "| train/ | |\n", - "| entropy_loss | -0.486 |\n", - "| explained_variance | 4.12e-05 |\n", + "| entropy_loss | -5.95 |\n", + "| explained_variance | 0.974 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 1899 |\n", - "| policy_loss | 0.291 |\n", - "| value_loss | 0.398 |\n", - "------------------------------------\n", - "-------------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 76.6 |\n", - "| ep_rew_mean | 76.6 |\n", - "| time/ | |\n", - "| fps | 547 |\n", - "| iterations | 2000 |\n", - "| time_elapsed | 18 |\n", - "| total_timesteps | 10000 |\n", - "| train/ | |\n", - "| entropy_loss | -0.351 |\n", - "| explained_variance | -0.000275 |\n", - "| learning_rate | 0.0007 |\n", - "| n_updates | 1999 |\n", - "| policy_loss | 0.4 |\n", - "| value_loss | 0.236 |\n", - "-------------------------------------\n" + "| n_updates | 82263 |\n", + "| policy_loss | 0.314 |\n", + "| std | 0.596 |\n", + "| value_loss | 0.0022 |\n", + "------------------------------------\n" ] }, { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOx9d9wcVdX/d3afkl4IKZTQmwECGASC9Bapr9JUioioP3mDCAgCKmBBQKToq4ANAakKWBCl1wAJIF16KGmkh/Q8bff+/pidmVvOuWV2Nw/E+X4+yTM7c8uZO7ece9qNhBACBQoUKFCgQIECayhKvU1AgQIFChQoUKBAM1EwOwUKFChQoECBNRoFs1OgQIECBQoUWKNRMDsFChQoUKBAgTUaBbNToECBAgUKFFijUTA7BQoUKFCgQIE1GgWzU6BAgQIFChRYo1EwOwUKFChQoECBNRoFs1OgQIECBQoUWKNRMDsFCqwmPProo4iiCI8++mhvk/KRQBRF+MEPftDbZPQKrr/+ekRRhPfff3+11vvf3OYF/rtRMDsF1mhEUeT1z4cBueiii/C3v/2t6TQnC2Hyr6WlBeuttx6+/OUvY9asWU2vv4CKhEnl/t122229TeLHDjvttBOiKMI111xDPn/22WdxyimnYOutt0b//v2xwQYb4Oijj8Zbb73FlvnXv/4VBx54INZee220tbVh3XXXxdFHH42HH364Wa9R4GOElt4moECBZuLGG29Ufv/xj3/EAw88YNz/xCc+4SzroosuwpFHHonPfvazjSSRxY9+9CNsvPHG6OjowJQpU3D99dfjiSeewH/+8x/06dNntdBQIMOpp56KT33qU8b98ePHB5d1/PHH4wtf+ALa29sbQdrHCm+//TaeffZZbLTRRrj55ptx8sknG2l++tOf4sknn8RRRx2FsWPHYs6cOfjVr36FT37yk5gyZQq22WabNK0QAl/5yldw/fXXY4cddsAZZ5yBUaNGYfbs2fjrX/+KfffdF08++SR23XXX1fmaBT5iKJidAms0jjvuOOX3lClT8MADDxj3P4o48MADseOOOwIAvvrVr2LttdfGT3/6U9x11104+uije5k6N1asWIH+/fv3Nhle8KF19913x5FHHtmQ+srlMsrlckPK+rjhpptuwogRI3D55ZfjyCOPxPvvv4+NNtpISXPGGWfglltuQVtbW3rv85//PLbddltccskluOmmm9L7l19+Oa6//nqcdtppuOKKKxBFUfrse9/7Hm688Ua0tBRL3X87CjVWgf96rFixAt/+9rcxevRotLe3Y8stt8Rll10GIUSaJooirFixAjfccEOqvvjyl78MAJg2bRr+93//F1tuuSX69u2LYcOG4aijjmq4Pcbuu+8OAHjnnXeU+2+88QaOPPJIrLXWWujTpw923HFH3HXXXenzxYsXo1wu4//+7//SewsWLECpVMKwYcOU9zz55JMxatSo9PekSZNw1FFHYYMNNkB7eztGjx6N008/HatWrVJo+PKXv4wBAwbgnXfewUEHHYSBAwfi2GOPBQB0dnbi9NNPx/DhwzFw4EAcdthhmDlzptc7JyqkP/3pT/jud7+LUaNGoX///jjssMMwY8YMI/3TTz+Nz3zmMxg8eDD69euHPffcE08++aSS5gc/+AGiKMJrr72GY445BkOHDsVuu+3mRY8LURThlFNOwc0334wtt9wSffr0wbhx4/D4448r6SibnX//+9+YMGEC1l57bfTt2xcbb7wxvvKVryj5fPoqENbms2bNwle+8hWMHDkS7e3t2HrrrfGHP/yhIe1B4ZZbbsGRRx6JQw45BIMHD8Ytt9xipNl1110VRgcANt98c2y99dZ4/fXX03urVq3CxRdfjK222gqXXXaZwugkOP7447HTTjs1/kUKfKxQsLsF/qshhMBhhx2GRx55BCeddBK233573HfffTjrrLMwa9YsXHnllQBiddhXv/pV7LTTTvj6178OANh0000BxPYFTz31FL7whS9g/fXXx/vvv49rrrkGe+21F1577TX069evIbQmC+PQoUPTe6+++io+/elPY7311sM555yD/v37489//jM++9nP4s4778TnPvc5DBkyBNtssw0ef/xxnHrqqQCAJ554AlEUYdGiRXjttdew9dZbA4iZm4SpAoDbb78dK1euxMknn4xhw4bhmWeewS9/+UvMnDkTt99+u0JfT08PJkyYgN122w2XXXZZ+t5f/epXcdNNN+GYY47BrrvuiocffhgHH3xw0Lv/5Cc/QRRFOPvsszFv3jz8/Oc/x3777YcXX3wRffv2BQA8/PDDOPDAAzFu3DhccMEFKJVKuO6667DPPvtg0qRJxoJ31FFHYfPNN8dFF11kMAsUli1bhgULFhj3hw0bpiyyjz32GP70pz/h1FNPRXt7O66++mp85jOfwTPPPKOoX2TMmzcPBxxwAIYPH45zzjkHQ4YMwfvvv4+//OUvaRrfvgr4t/ncuXOxyy67pEza8OHDcc899+Ckk07C0qVLcdpppznbJQRPP/00pk6diuuuuw5tbW04/PDDcfPNN+O73/2uM68QAnPnzk37KhD340WLFuG00077r5WUFfCEKFDgvwgTJ04Ucrf/29/+JgCICy+8UEl35JFHiiiKxNSpU9N7/fv3FyeccIJR5sqVK417kydPFgDEH//4x/TeI488IgCIRx55xErjddddJwCIBx98UMyfP1/MmDFD3HHHHWL48OGivb1dzJgxI0277777im233VZ0dHSk96rVqth1113F5ptvrrz3yJEj099nnHGG2GOPPcSIESPENddcI4QQYuHChSKKIvGLX/zC+m4XX3yxiKJITJs2Lb13wgknCADinHPOUdK++OKLAoD43//9X+X+McccIwCICy64wNoWSZutt956YunSpen9P//5zwJASmu1WhWbb765mDBhgqhWqwr9G2+8sdh///3TexdccIEAIL74xS9a69Zp4P7Nnj07TZvc+/e//53emzZtmujTp4/43Oc+l95LvvF7770nhBDir3/9qwAgnn32WZYO374a0uYnnXSSWGeddcSCBQuUtF/4whfE4MGDye9fD0455RQxevTo9Bvdf//9AoB44YUXnHlvvPFGAUBce+216b1f/OIXAoD461//2lA6C6x5KNRYBf6r8a9//QvlcjmVeCT49re/DSEE7rnnHmcZiWQBALq7u7Fw4UJsttlmGDJkCJ5//vnctO23334YPnw4Ro8ejSOPPBL9+/fHXXfdhfXXXx8AsGjRIjz88MM4+uijU6nDggULsHDhQkyYMAFvv/126r21++67Y+7cuXjzzTcBxBKcPfbYA7vvvjsmTZoEIN4lCyEUyY78bitWrMCCBQuw6667QgiBF154waBZNzb917/+BQBG+4ZKDL70pS9h4MCB6e8jjzwS66yzTlr+iy++iLfffhvHHHMMFi5cmLbFihUrsO++++Lxxx9HtVpVyvzGN74RRMP555+PBx54wPi31lprKenGjx+PcePGpb832GAD/M///A/uu+8+VCoVsuwhQ4YAAO6++250d3eTaXz7qm+bCyFw55134tBDD4UQIm2zBQsWYMKECViyZEld/VdHT08P/vSnP+Hzn/98KgnbZ599MGLECNx8883WvG+88QYmTpyI8ePH44QTTkjvL126FACUvlGgAIVCjVXgvxrTpk3Duuuua0yWiXfWtGnTnGUkdgPXXXcdZs2apahElixZkpu2q666CltssQWWLFmCP/zhD3j88ccV752pU6dCCIHzzjsP5513HlnGvHnzsN5666UMzKRJk7D++uvjhRdewIUXXojhw4fjsssuS58NGjQI2223XZp/+vTpOP/883HXXXfhww8/VMrW362lpSVlxBJMmzYNpVIpVfkl2HLLLYPaYvPNN1d+R1GEzTbbLFXtvf322wCgLIQ6lixZoqgAN9544yAatt12W+y3337BtALAFltsgZUrV2L+/PmKTVSCPffcE0cccQR++MMf4sorr8Ree+2Fz372szjmmGPSb+7bV33bfP78+Vi8eDF++9vf4re//S35LvPmzWPfc9GiRejq6kp/9+3bF4MHD2bT33///Zg/fz522mknTJ06Nb2/995749Zbb8VPf/pTlErm/nvOnDk4+OCDMXjwYNxxxx2KumrQoEEAYhVjgQI2FMxOgQJ14pvf/Cauu+46nHbaaRg/fjwGDx6MKIrwhS98wZAmhGCnnXZKvbE++9nPYrfddsMxxxyDN998EwMGDEjLPvPMMzFhwgSyjM022wwAsO6662LjjTfG448/jo022ghCCIwfPx7Dhw/Ht771LUybNg2TJk3Crrvumi44lUoF+++/PxYtWoSzzz4bW221Ffr3749Zs2bhy1/+svFu7e3t5GK1OpDQ8rOf/Qzbb789mWbAgAHKb1lq1duIogh33HEHpkyZgn/84x+477778JWvfAWXX345pkyZYtDeCCRtdtxxx7FM4tixY9n8hx9+OB577LH09wknnIDrr7+eTZ9IbzhPwsceewx77723cm/JkiU48MADsXjxYkyaNAnrrruu8nyrrbYCALzyyiurLSREgY8nCmanwH81NtxwQzz44INYtmyZsmN+44030ucJKE8PALjjjjtwwgkn4PLLL0/vdXR0YPHixQ2js1wu4+KLL8bee++NX/3qVzjnnHOwySabAABaW1u9JA677747Hn/8cWy88cbYfvvtMXDgQGy33XYYPHgw7r33Xjz//PP44Q9/mKZ/5ZVX8NZbb+GGG27Al770pfT+Aw884E33hhtuiGq1infeeUeRLCTqNF8kkpsEQghMnTo1XYwTKcagQYO82qKZ0GkFgLfeegv9+vXD8OHDrXl32WUX7LLLLvjJT36CW265Bcceeyxuu+02fPWrX/Xuq75tnnhqVSqVXG12+eWXK9I+nRGRsWLFCvz973/H5z//edJ9/9RTT8XNN9+sMDsdHR049NBD8dZbb+HBBx/EmDFjjHy77bYbhg4diltvvRXf/e53CyPlAiwKm50C/9U46KCDUKlU8Ktf/Uq5f+WVVyKKIhx44IHpvf79+5MMTLlcNrx5fvnLX7L2GXmx1157YaeddsLPf/5zdHR0YMSIEdhrr73wm9/8BrNnzzbSz58/X/m9++674/3338ef/vSnVK1VKpWw66674oorrkB3d7dir5MsHPK7CSHwi1/8wpvmpP1kt3cA+PnPf+5dBhAHg5RVFXfccQdmz56dlj9u3DhsuummuOyyy7B8+XIjv94WzcTkyZMVW5cZM2bg73//Ow444AB2Mf7www+NPpRIqDo7OwH491XfNi+XyzjiiCNw55134j//+Y9Bk6vNxo0bh/322y/9RzEjCf76179ixYoVmDhxIo488kjj3yGHHII777wzfddKpYLPf/7zmDx5Mm6//XY2cGO/fv1w9tln4/XXX8fZZ59NetXddNNNeOaZZ6zvUmDNRyHZKfBfjUMPPRR77703vve97+H999/Hdttth/vvvx9///vfcdpppyl2D+PGjcODDz6IK664IlUL7bzzzjjkkENw4403YvDgwRgzZgwmT56MBx98EMOGDWs4vWeddRaOOuooXH/99fjGN76Bq666Crvtthu23XZbfO1rX8Mmm2yCuXPnYvLkyZg5cyZeeumlNG/CyLz55pu46KKL0vt77LEH7rnnHrS3tysRgrfaaitsuummOPPMMzFr1iwMGjQId955p2G7Y8P222+PL37xi7j66quxZMkS7LrrrnjooYcUmw0frLXWWthtt91w4oknYu7cufj5z3+OzTbbDF/72tcAxEzb73//exx44IHYeuutceKJJ2K99dbDrFmz8Mgjj2DQoEH4xz/+EVSnjkmTJqGjo8O4P3bsWEXds80222DChAmK6zkARWqm44YbbsDVV1+Nz33uc9h0002xbNky/O53v8OgQYNw0EEHAfDvqyFtfskll+CRRx7BzjvvjK997WsYM2YMFi1ahOeffx4PPvggFi1aVFebJbj55psxbNgwNorxYYcdht/97nf45z//icMPPxzf/va3cdddd+HQQw/FokWLlCCCgBos9KyzzsKrr76Kyy+/HI888giOPPJIjBo1CnPmzMHf/vY3PPPMM3jqqaca8h4FPsboBQ+wAgV6DbrruRBCLFu2TJx++uli3XXXFa2trWLzzTcXP/vZzxQXZiGEeOONN8Qee+wh+vbtKwCkbugffvihOPHEE8Xaa68tBgwYICZMmCDeeOMNseGGGyqu6qGu55QbcqVSEZtuuqnYdNNNRU9PjxBCiHfeeUd86UtfEqNGjRKtra1ivfXWE4cccoi44447jPwjRowQAMTcuXPTe0888YQAIHbffXcj/WuvvSb2228/MWDAALH22muLr33ta+Kll14SAMR1112XpjvhhBNE//79yfdZtWqVOPXUU8WwYcNE//79xaGHHipmzJgR5Hp+6623inPPPVeMGDFC9O3bVxx88MGK63uCF154QRx++OFi2LBhor29XWy44Ybi6KOPFg899FCaJnE9nz9/vrVunQbun/wOAMTEiRPFTTfdJDbffHPR3t4udthhB+Ob667nzz//vPjiF78oNthgA9He3i5GjBghDjnkEMWFXQj/vhrS5nPnzhUTJ04Uo0ePFq2trWLUqFFi3333Fb/97W+92seFuXPnipaWFnH88cezaVauXCn69euXuufvueee1jancMcdd4gDDjhArLXWWqKlpUWss8464vOf/7x49NFHG/IeBT7eiITwiKZVoECBAr2ARx99FHvvvTduv/32hh3V0ExEUYSJEycaqqYCBQr0LgqbnQIFChQoUKDAGo2C2SlQoECBAgUKrNEomJ0CBQoUKFCgwBqNwmanQIECBQoUKLBGo5DsFChQoECBAgXWaBTMToECBQoUKFBgjUYRVBDxGTEffPABBg4cyB4JUKBAgQIFChT4aEEIgWXLlmHddde1ns1XMDsAPvjgA4wePbq3yShQoECBAgUK5MCMGTOw/vrrs88LZgdID9WbMWMGBg0a1MvUFChQoECBAgV8sHTpUowePVo5HJdCwewgO8160KBBBbNToECBAgUKfMzgMkEpDJQLFChQoECBAms0CmanQIECBQoUKLBGo2B2ChQoUKBAgQJrNApmp0CBAgUKFCiwRqNgdgoU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giAIgiAKGhJ2CIIgCIIoaEjYIQiCIAiioCFhJ0IefvhhDBkyBGVlZWhpacEbb7wRd5XyildeeQXnnHMOmpqaYBgGnnnmGe68aZq47bbb0NjYiPLycrS1teHjjz/m0uzatQsLFy5EVVUVampqcPnll2P//v05/BXJZ9myZZg0aRIqKytRV1eHefPmYcuWLVyagwcPYvHixejbty969+6N+fPnY8eOHVyabdu2Ye7cuaioqEBdXR1uvPFGdHR05PKnJJrly5fj+OOPt4Kqtba24vnnn7fOUxtHwz333APDMLB06VLrGLV1ONxxxx0wDIP7GzVqlHU+Ue1sEpGwcuVKs6SkxHzsscfMDz74wPzGN75h1tTUmDt27Ii7annDc889Z37nO98xf/7zn5sAzFWrVnHn77nnHrO6utp85plnzHfeecf8yle+Yg4dOtT88ssvrTSzZ882x48fb77++uvmf/3Xf5nDhg0zL7jgghz/kmQza9Ys8/HHHzfff/99c9OmTeZZZ51lDho0yNy/f7+V5sorrzQHDhxorl271nzrrbfMKVOmmCeffLJ1vqOjwxw7dqzZ1tZmvv322+Zzzz1n9uvXz7z55pvj+EmJ5D/+4z/MZ5991vzv//5vc8uWLea3v/1ts7i42Hz//fdN06Q2joI33njDHDJkiHn88ceb1157rXWc2jocbr/9dnPMmDHm9u3brb8//vGP1vkktTMJOxExefJkc/Hixdb3o0ePmk1NTeayZctirFX+Yhd2Ojs7zYaGBvPv/u7vrGO7d+82S0tLzZ/85CemaZrmhx9+aAIw33zzTSvN888/bxqGYf7P//xPzuqeb+zcudMEYK5bt840za52LS4uNp9++mkrzebNm00A5vr1603T7BJMU6mU2d7ebqVZvny5WVVVZR46dCi3PyCP6NOnj/mjH/2I2jgC9u3bZw4fPtxcs2aNedppp1nCDrV1eNx+++3m+PHjheeS1s5kxoqAw4cPY+PGjWhra7OOpVIptLW1Yf369THWrHDYunUr2tvbuTaurq5GS0uL1cbr169HTU0NJk6caKVpa2tDKpXChg0bcl7nfGHPnj0AgNraWgDAxo0bceTIEa6tR40ahUGDBnFtPW7cONTX11tpZs2ahb179+KDDz7IYe3zg6NHj2LlypU4cOAAWltbqY0jYPHixZg7dy7XpgD157D5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", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import gymnasium as gym\n", - "from stable_baselines3 import A2C\n", - "from stable_baselines3.common.env_util import make_vec_env\n", - "import numpy as np\n", - "\n", - "# Créer un environnement vectorisé\n", - "vec_env = make_vec_env(\"CartPole-v1\", n_envs=1)\n", - "\n", - "# Initialiser le modèle A2C avec la politique MLP\n", - "model = A2C(\"MlpPolicy\", vec_env, verbose=1)\n", - "\n", - "# Entraîner le modèle\n", - "model.learn(total_timesteps=10000)\n", - "\n", - "# Sauvegarder le modèle\n", - "model.save(\"a2c_cartpole\")\n", - "\n", - "# Charger le modèle après l'entraînement\n", - "del model # Supprimer le modèle pour simuler l'enregistrement et le rechargement\n", - "model = A2C.load(\"a2c_cartpole\")\n", - "\n", - "# Réinitialiser l'environnement\n", - "obs = vec_env.reset()\n", - "\n", - "# Variables pour suivre les récompenses et les épisodes\n", - "episode_rewards = [] # Récompenses totales par épisode\n", - "current_rewards = [0] * vec_env.num_envs # Suivre les récompenses de chaque environnement\n", - "num_episodes = 0 # Compter le nombre d'épisodes terminés\n", - "\n", - "# Liste pour stocker les images pour la vidéo\n", - "frames = []\n", - "\n", - "# Exécuter le modèle et capturer des images pour la vidéo\n", - "while num_episodes < 500:\n", - " action, _states = model.predict(obs)\n", - " obs, rewards, dones, info = vec_env.step(action)\n", - " # Mettre à jour les récompenses et vérifier la fin de l'épisode\n", - " for i in range(vec_env.num_envs):\n", - " current_rewards[i] += rewards[i]\n", - "\n", - " if dones[i]:\n", - " episode_rewards.append(current_rewards[i])\n", - " current_rewards[i] = 0 # Réinitialiser pour le prochain épisode\n", - " num_episodes += 1\n", - "\n", - "\n", - "# Fermer l'environnement après l'évaluation\n", - "vec_env.close()\n", - "\n", - "\n", - "# Afficher\n", - "import matplotlib.pyplot as plt\n", - "plt.plot(episode_rewards)\n", - "plt.xlabel(\"Episode\")\n", - "plt.ylabel(\"Total Reward\")\n", - "plt.title(\"Total Reward per Episode - A2C\")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "CZOZmiAwyqNE" - }, - "source": [ - "upload the model\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 489, - "referenced_widgets": [ - "b30ea1ecb76544e4a4b4b6171e71b728", - "f4987c77de034d6a9a5fbe63f5db9b9e", - "bdbb3e03cdda455ca313b37212800dbb", - "e3e212292e2649f1969c4c31647cb680", - "dced652d1bd14be7ba2b65eae579fba5", - "adc0827744e1479b8833205a44c83e1b", - "9564480530bc447da27e15749428bdfd", - "9286d4d05f354073a56ccab0f3fd0bba", - "852bd4183a5c4e2b9308a8f2d0f7191d", - "297db692b2d749979115c2468eb4fb00", - "fad8b1c404724e4dbd05c747b1bcd5de", - "b515add3f25544cbb2b14b79b2e2770a", - "82fedcb1de0c4311bdab0a773473de38", - "0ed8dfb35a3842bf8be3ae505eeba5d1", - "aef7b10c8f44483c825b7fd9a847f089", - "87403f7d79a64dce87b5b099fc68d0b5", - "16e142d0ae6f4e9b83fcf24b79b9a858", - "8d88faf5346647fcb45737d57d628f41", - "a46532aef6c042b884586a337658727c", - "e43e0ac1d310408b914dddfaee691f9a", - "ecf4c9e4c7cd4ba698a5e8c4aa8b3071", - "253114895704438e802214336c28eaf2", - "b9f0d24741ba48308545746354105fc3", - "31324087708d4cfca89d7a16e3362a6d", - "10bbdba263394d43937799fb02a5308e", - "8f7df43c9c924ec59695450fa933699f", - "db5981fe348443ee9ea1e17a3c86aa34", - "ac6c299386344084ae368388e69f247a", - "87f804cec1814961a3f20d731cf1cb4b", - "dd70225db29144e4908328ba805f4771", - "cfd430b93720484583e1bfa3c6ea944a", - "b93f82c0226747c5a4cf124d92c4a359", - "f824d4ff15ec435f94fd0ffd1950064a", - "71ccd1edcb2149f4a5d79b047db05407", - "c753780ac4be491cb5868d0c65495055", - "8ab12f359394454ea92d8810ff7a3f21", - "8ab306238dc74406928f03c2b665c889", - "d2bc8e91840d498eaaec6040b4fb6356", - "1749d9f40d0348d7ae4709fc273c9121", - "6d42ee9f0e6e4195a8bae8981d14bfea", - "b35b335258a641fb8c52e2d68afdea95", - "f4c0efc7782e41e5966d2ae9eba94a6a", - "64b05aba20224e9caebc639dc6dd7c8f", - "37169f3a5e7048efb2b8dce9dbba1a3c", - "de7f77f12aa0470ab36a5afecd9f14fc", - "1ee3d947c1844b138e29a138801a5e00", - "ad10bcfa05b64376905c996ecc1d455d", - "4e4f9c3ec0644222b01f71e9a768da09", - "c0b5a4535a3b4ca2b0e7c86e1b3ab5ec", - "53e05aff6c98440e852b7d426197edb1", - "666bb151dce54bec81944df29f2a8a3b", - "3d9b748f2b5d460cbba3332dd1ee43b7", - "360923166a664f24971d958a204eb04c", - "331d5ea6d2a743c2a9bea658cda2e80a", - "e8db5be66c3342dc8817b3990fd4fd12", - "290118356e7444249cf0ea7a6bfe37f6", - "bf2f7a273e7a479b8e97cf5dedcaddb8", - "e77629a2b480411692154ed4200c12b4", - "b2c8bbf1f1024fe59e602e89b3908d1d" - ] - }, - "id": "QoXoWAXjyvbM", - "outputId": "b360fad3-510a-4624-923b-e2b8f18e92ca" - }, - "outputs": [ - { - "name": "stdout", "output_type": "stream", + "name": "stderr", "text": [ - "\u001b[38;5;4mℹ This function will save, evaluate, generate a video of your agent,\n", - "create a model card and push everything to the hub. It might take up to 1min.\n", - "This is a work in progress: if you encounter a bug, please open an issue.\u001b[0m\n", - "Saving video to C:\\Users\\BYCInfo\\AppData\\Local\\Temp\\tmpee8exbb8\\-step-0-to-step-1000.mp4\n", - "MoviePy - Building video C:\\Users\\BYCInfo\\AppData\\Local\\Temp\\tmpee8exbb8\\-step-0-to-step-1000.mp4.\n", - "MoviePy - Writing video C:\\Users\\BYCInfo\\AppData\\Local\\Temp\\tmpee8exbb8\\-step-0-to-step-1000.mp4\n", - "\n" + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" ] }, { - "name": "stderr", "output_type": "stream", + "name": "stdout", "text": [ - " \r" + "Episode 494/600: Total Reward = -0.02\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.76 |\n", + "| ep_rew_mean | -0.299 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 125 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 412155 |\n", + "| train/ | |\n", + "| entropy_loss | -5.94 |\n", + "| explained_variance | 0.994 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 82430 |\n", + "| policy_loss | 0.285 |\n", + "| std | 0.596 |\n", + "| value_loss | 0.00307 |\n", + "------------------------------------\n" ] }, { - "name": "stdout", "output_type": "stream", + "name": "stderr", "text": [ - "MoviePy - Done !\n", - "MoviePy - video ready C:\\Users\\BYCInfo\\AppData\\Local\\Temp\\tmpee8exbb8\\-step-0-to-step-1000.mp4\n", - "\u001b[38;5;1m✘ 'DummyVecEnv' object has no attribute 'video_recorder'\u001b[0m\n", - "\u001b[38;5;1m✘ We are unable to generate a replay of your agent, the package_to_hub\n", - "process continues\u001b[0m\n", - "\u001b[38;5;1m✘ Please open an issue at\n", - "https://github.com/huggingface/huggingface_sb3/issues\u001b[0m\n", - "\u001b[38;5;4mℹ Pushing repo oussamab2n/a2c-cartpole to the Hugging Face Hub\u001b[0m\n" + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" ] }, { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "290118356e7444249cf0ea7a6bfe37f6", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "a2c-cartpole.zip: 0%| | 0.00/101k [00:00<?, ?B/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "bf2f7a273e7a479b8e97cf5dedcaddb8", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "policy.optimizer.pth: 0%| | 0.00/43.4k [00:00<?, ?B/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "e77629a2b480411692154ed4200c12b4", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Upload 3 LFS files: 0%| | 0/3 [00:00<?, ?it/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 495/600: Total Reward = -0.11\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.76 |\n", + "| ep_rew_mean | -0.304 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 90 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 412990 |\n", + "| train/ | |\n", + "| entropy_loss | -5.92 |\n", + "| explained_variance | -0.572 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 82597 |\n", + "| policy_loss | -0.635 |\n", + "| std | 0.595 |\n", + "| value_loss | 0.035 |\n", + "------------------------------------\n" + ] }, { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "b2c8bbf1f1024fe59e602e89b3908d1d", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "policy.pth: 0%| | 0.00/41.1k [00:00<?, ?B/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "\u001b[38;5;4mℹ Your model is pushed to the Hub. You can view your model here:\n", - "https://huggingface.co/oussamab2n/a2c-cartpole/tree/main/\u001b[0m\n", - "Model successfully uploaded to Hugging Face Hub!\n" - ] - } - ], - "source": [ - "import gymnasium as gym\n", - "from stable_baselines3 import A2C\n", - "from stable_baselines3.common.monitor import Monitor\n", - "from huggingface_sb3 import package_to_hub\n", - "\n", - "# Load your trained model\n", - "model = A2C.load(\"a2c_cartpole\")\n", - "\n", - "# Create an evaluation environment with render_mode=\"rgb_array\" and wrap it with Monitor\n", - "eval_env = gym.make(\"CartPole-v1\", render_mode=\"rgb_array\")\n", - "eval_env = Monitor(eval_env)\n", - "\n", - "# Define your Hugging Face repository name\n", - "repo_id = \"oussamab2n/a2c-cartpole\"\n", - "\n", - "# Upload model to Hugging Face\n", - "package_to_hub(\n", - " model=model,\n", - " model_name=\"a2c-cartpole\",\n", - " model_architecture=\"A2C\",\n", - " env_id=\"CartPole-v1\",\n", - " eval_env=eval_env,\n", - " repo_id=repo_id,\n", - " commit_message=\"Upload trained A2C model on CartPole-v1\"\n", - ")\n", - "\n", - "print(\"Model successfully uploaded to Hugging Face Hub!\")\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "xko_YulD3c-o" - }, - "source": [ - "evaluation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "referenced_widgets": [ - "b5d5c5d5cb464200b7c955c40cab6b01" + "Episode 496/600: Total Reward = -0.09\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.08 |\n", + "| ep_rew_mean | -0.35 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 125 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 413825 |\n", + "| train/ | |\n", + "| entropy_loss | -5.96 |\n", + "| explained_variance | 0.982 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 82764 |\n", + "| policy_loss | 0.125 |\n", + "| std | 0.599 |\n", + "| value_loss | 0.000995 |\n", + "------------------------------------\n" ] }, - "id": "21hr5rXB3bFD", - "outputId": "e8758121-92ff-42d5-8e52-5f62ba053c4f" - }, - "outputs": [ { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "b5d5c5d5cb464200b7c955c40cab6b01", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "a2c-cartpole.zip: 0%| | 0.00/101k [00:00<?, ?B/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Episode 1: Total Reward = 500.0\n", - "Episode 2: Total Reward = 500.0\n", - "Episode 3: Total Reward = 500.0\n", - "Episode 4: Total Reward = 500.0\n", - "Episode 5: Total Reward = 500.0\n", - "Episode 6: Total Reward = 500.0\n", - "Episode 7: Total Reward = 500.0\n", - "Episode 8: Total Reward = 500.0\n", - "Episode 9: Total Reward = 500.0\n", - "Episode 10: Total Reward = 500.0\n", - "Episode 11: Total Reward = 500.0\n", - "Episode 12: Total Reward = 500.0\n", - "Episode 13: Total Reward = 500.0\n", - "Episode 14: Total Reward = 500.0\n", - "Episode 15: Total Reward = 500.0\n", - "Episode 16: Total Reward = 500.0\n", - "Episode 17: Total Reward = 500.0\n", - "Episode 18: Total Reward = 500.0\n", - "Episode 19: Total Reward = 500.0\n", - "Episode 20: Total Reward = 500.0\n", - "Episode 21: Total Reward = 500.0\n", - "Episode 22: Total Reward = 500.0\n", - "Episode 23: Total Reward = 500.0\n", - "Episode 24: Total Reward = 500.0\n", - "Episode 25: Total Reward = 500.0\n", - "Episode 26: Total Reward = 500.0\n", - "Episode 27: Total Reward = 500.0\n", - "Episode 28: Total Reward = 500.0\n", - "Episode 29: Total Reward = 500.0\n", - "Episode 30: Total Reward = 500.0\n", - "Episode 31: Total Reward = 500.0\n", - "Episode 32: Total Reward = 500.0\n", - "Episode 33: Total Reward = 500.0\n", - "Episode 34: Total Reward = 500.0\n", - "Episode 35: Total Reward = 500.0\n", - "Episode 36: Total Reward = 500.0\n", - "Episode 37: Total Reward = 500.0\n", - "Episode 38: Total Reward = 500.0\n", - "Episode 39: Total Reward = 500.0\n", - "Episode 40: Total Reward = 500.0\n", - "Episode 41: Total Reward = 500.0\n", - "Episode 42: Total Reward = 500.0\n", - "Episode 43: Total Reward = 500.0\n", - "Episode 44: Total Reward = 500.0\n", - "Episode 45: Total Reward = 500.0\n", - "Episode 46: Total Reward = 500.0\n", - "Episode 47: Total Reward = 500.0\n", - "Episode 48: Total Reward = 500.0\n", - "Episode 49: Total Reward = 500.0\n", - "Episode 50: Total Reward = 500.0\n", - "Episode 51: Total Reward = 500.0\n", - "Episode 52: Total Reward = 500.0\n", - "Episode 53: Total Reward = 500.0\n", - "Episode 54: Total Reward = 500.0\n", - "Episode 55: Total Reward = 500.0\n", - "Episode 56: Total Reward = 500.0\n", - "Episode 57: Total Reward = 500.0\n", - "Episode 58: Total Reward = 500.0\n", - "Episode 59: Total Reward = 500.0\n", - "Episode 60: Total Reward = 500.0\n", - "Episode 61: Total Reward = 500.0\n", - "Episode 62: Total Reward = 500.0\n", - "Episode 63: Total Reward = 500.0\n", - "Episode 64: Total Reward = 500.0\n", - "Episode 65: Total Reward = 500.0\n", - "Episode 66: Total Reward = 500.0\n", - "Episode 67: Total Reward = 500.0\n", - "Episode 68: Total Reward = 500.0\n", - "Episode 69: Total Reward = 500.0\n", - "Episode 70: Total Reward = 500.0\n", - "Episode 71: Total Reward = 500.0\n", - "Episode 72: Total Reward = 500.0\n", - "Episode 73: Total Reward = 500.0\n", - "Episode 74: Total Reward = 500.0\n", - "Episode 75: Total Reward = 500.0\n", - "Episode 76: Total Reward = 500.0\n", - "Episode 77: Total Reward = 500.0\n", - "Episode 78: Total Reward = 500.0\n", - "Episode 79: Total Reward = 500.0\n", - "Episode 80: Total Reward = 500.0\n", - "Episode 81: Total Reward = 500.0\n", - "Episode 82: Total Reward = 500.0\n", - "Episode 83: Total Reward = 500.0\n", - "Episode 84: Total Reward = 500.0\n", - "Episode 85: Total Reward = 500.0\n", - "Episode 86: Total Reward = 500.0\n", - "Episode 87: Total Reward = 500.0\n", - "Episode 88: Total Reward = 500.0\n", - "Episode 89: Total Reward = 500.0\n", - "Episode 90: Total Reward = 500.0\n", - "Episode 91: Total Reward = 500.0\n", - "Episode 92: Total Reward = 500.0\n", - "Episode 93: Total Reward = 500.0\n", - "Episode 94: Total Reward = 500.0\n", - "Episode 95: Total Reward = 500.0\n", - "Episode 96: Total Reward = 500.0\n", - "Episode 97: Total Reward = 500.0\n", - "Episode 98: Total Reward = 500.0\n", - "Episode 99: Total Reward = 500.0\n", - "Episode 100: Total Reward = 500.0\n" + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" ] }, { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAHWCAYAAAB9mLjgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABPc0lEQVR4nO39eVzU9f7//9+HAdkEEQRxQSP3XdMizK3EtWNHbfloWGiWJ9NyyRbrlHpOipVaJyvNeqdWlqWWmamFuZdbLmVupbmlIJoiKoosz+8f/phfE2rzmoAZ5Xa9XOZymOdrezyHxyW5n9cyNmOMEQAAAADAZT6eLgAAAAAArjYEKQAAAACwiCAFAAAAABYRpAAAAADAIoIUAAAAAFhEkAIAAAAAiwhSAAAAAGARQQoAAAAALCJIAQAAAIBFBCkAKKVWrFghm82mFStWeLoUr2Cz2TR69GhPl1HiZsyYIZvNpv3795focUvr5w3g2kGQAoASZLPZXHq5Em7GjRun+fPnF3vNBX9oF7x8fX1VpUoV9e3bV4cPHy7243uT/fv3O30Wdrtd1apVU48ePbR169ZiP35B+L3ca/bs2cVeAwDgIl9PFwAApcn777/v9P69995TSkpKofF69er95b7GjRunu+66S927dy/KEi/rP//5j2JjY3X+/HmtW7dOM2bM0Jo1a/TTTz8pICCgRGrwFr1791bXrl2Vl5ennTt3asqUKVq8eLHWrVunpk2bFvvxH3vsMd14442FxuPj4y3v67777lOvXr3k7+9fFKUBQKlBkAKAEtSnTx+n9+vWrVNKSkqhcW/UpUsXtWjRQpL04IMPqkKFCnrxxRe1YMEC3XPPPR6u7q+dPXtWwcHBRbKvG264wel3dsstt+iOO+7QlClT9NZbb/2tfbtSZ+vWrXXXXXf9reMUsNvtstvtRbIvAChNuLQPALzM2bNn9fjjjysmJkb+/v6qU6eOJkyYIGOMYx2bzaazZ89q5syZjsu6+vbtK0k6cOCAHnnkEdWpU0eBgYGKiIjQ3XffXeT3wLRu3VqStHfvXqfxXbt26a677lJ4eLgCAgLUokULLViwwLE8IyNDdrtdr732mmPs+PHj8vHxUUREhNM8Bw4cqOjoaMf71atX6+6771a1atXk7++vmJgYDRs2TOfOnXOqoW/fvipbtqz27t2rrl27KiQkRImJiZKk7OxsDRs2TJGRkQoJCdEdd9yh33777W99Frfddpskad++fY6x9evXq3PnzipXrpyCgoLUtm1bffvtt07bjR49WjabTTt27NC9996r8uXLq1WrVn+rlgI2m02DBw/WrFmzVKdOHQUEBKh58+ZatWqV03qXukfq+++/V6dOnVShQgUFBgYqNjZWDzzwgNN2rvSpZO3zPnz4sB544AFVrFhR/v7+atCggd59990i+TwAoKhxRgoAvIgxRnfccYeWL1+u/v37q2nTpvrqq6/0xBNP6PDhw3rllVckXbxE8MEHH9RNN92kAQMGSJJq1KghSdq4caO+++479erVS1WrVtX+/fs1ZcoUtWvXTjt27FBQUFCR1Frwh3f58uUdY9u3b9ctt9yiKlWq6Omnn1ZwcLA++eQTde/eXfPmzVOPHj0UFhamhg0batWqVXrsscckSWvWrJHNZtOJEye0Y8cONWjQQNLF4FQQ2CRpzpw5ysrK0sCBAxUREaENGzZo8uTJ+u233zRnzhyn+nJzc9WpUye1atVKEyZMcMz7wQcf1AcffKB7771XLVu21LJly3T77bf/rc+iIExGRERIkpYtW6YuXbqoefPmGjVqlHx8fDR9+nTddtttWr16tW666San7e+++27VqlVL48aNKxRELuX06dM6fvx4ofGIiAjZbDbH+5UrV+rjjz/WY489Jn9/f7355pvq3LmzNmzYoIYNG15y3+np6erYsaMiIyP19NNPKywsTPv379enn37qWMfVPpVc/7yPHj2qm2++2REAIyMjtXjxYvXv31+ZmZkaOnToX34uAFCiDADAYwYNGmT++J/i+fPnG0nmhRdecFrvrrvuMjabzezZs8cxFhwcbJKSkgrtMysrq9DY2rVrjSTz3nvvOcaWL19uJJnly5dfscbp06cbSWbp0qXm2LFj5tChQ2bu3LkmMjLS+Pv7m0OHDjnWbd++vWnUqJE5f/68Yyw/P9+0bNnS1KpVy2neFStWdLwfPny4adOmjYmKijJTpkwxxhjz+++/G5vNZv73v/9dcW7JycnGZrOZAwcOOMaSkpKMJPP00087rbt161YjyTzyyCNO4/fee6+RZEaNGnXFz2Lfvn1GkhkzZow5duyYSUtLMytWrDDNmjUzksy8efNMfn6+qVWrlunUqZPJz893qj02NtZ06NDBMTZq1CgjyfTu3fuKxy1Q8Du73Cs1NdWxbsHY999/7xg7cOCACQgIMD169HCMFfx+9+3bZ4wx5rPPPjOSzMaNGy9bh6t9auXz7t+/v6lUqZI5fvy407q9evUy5cqVu+TvHgA8iUv7AMCLLFq0SHa73XGmpsDjjz8uY4wWL178l/sIDAx0/JyTk6Pff/9dNWvWVFhYmDZv3ux2bQkJCYqMjFRMTIzuuusuBQcHa8GCBapataok6cSJE1q2bJnuuecexxmT48eP6/fff1enTp30yy+/OJ7y17p1ax09elS7d++WdPHMU5s2bdS6dWutXr1a0sWzVMYYpzNSf5zb2bNndfz4cbVs2VLGGG3ZsqVQzQMHDnR6v2jRIkkq9PlaPdsxatQoRUZGKjo6Wu3atdPevXv14osvqmfPntq6dat++eUX3Xvvvfr9998dn8PZs2fVvn17rVq1Svn5+U77e/jhhy0d//nnn1dKSkqhV3h4uNN68fHxat68ueN9tWrV9M9//lNfffWV8vLyLrnvsLAwSdLChQuVk5NzyXVc7VNXP29jjObNm6du3brJGOP4zI4fP65OnTrp1KlTf6t3AaA4cGkfAHiRAwcOqHLlygoJCXEaL3iK34EDB/5yH+fOnVNycrKmT5+uw4cPO10qdurUKbdre+ONN1S7dm2dOnVK7777rlatWuX0pLc9e/bIGKPnnntOzz333CX3kZ6eripVqjjC0erVq1W1alVt2bJFL7zwgiIjIzVhwgTHstDQUDVp0sSx/cGDB/X8889rwYIFOnnypNO+/zw3X19fR8grcODAAfn4+DgugyxQp04dS5/FgAEDdPfdd8vHx0dhYWFq0KCB47P45ZdfJElJSUmX3f7UqVNOl0TGxsZaOn6jRo2UkJDwl+vVqlWr0Fjt2rWVlZWlY8eOOd1/VqBt27a68847NWbMGL3yyitq166dunfvrnvvvdcxR1f71NXP+9ixY8rIyNC0adM0bdq0S84lPT39L+cLACWJIAUA15hHH31U06dP19ChQxUfH69y5crJZrOpV69ehc6EWHHTTTc5ntrXvXt3tWrVSvfee692796tsmXLOvY9YsQIderU6ZL7qFmzpiSpcuXKio2N1apVq3TdddfJGKP4+HhFRkZqyJAhOnDggFavXq2WLVvKx+fixRN5eXnq0KGDTpw4oaeeekp169ZVcHCwDh8+rL59+xaam7+/v2PbolarVq3LBpmCOl5++eXLPgq9bNmyTu//eKbN02w2m+bOnat169bpiy++0FdffaUHHnhAEydO1Lp16wrVXhQKPrM+ffpcNoA2bty4yI8LAH8HQQoAvEj16tW1dOlSnT592un/7d+1a5djeYE/PlTgj+bOnaukpCRNnDjRMXb+/HllZGQUWZ12u13Jycm69dZb9frrr+vpp5/W9ddfL0ny8/Nz6WxJ69attWrVKsXGxqpp06YKCQlRkyZNVK5cOS1ZskSbN2/WmDFjHOtv27ZNP//8s2bOnKn777/fMZ6SkuJy3dWrV1d+fr727t3rdFak4BLDolBw9iU0NNSlz6E4FZwd+6Off/5ZQUFBioyMvOK2N998s26++WaNHTtWH374oRITEzV79mw9+OCDLvepq593wRP98vLyPP6ZAYCruEcKALxIwZe8vv76607jr7zyimw2m7p06eIYCw4OvmQ4stvthZ78Nnny5MveE+Oudu3a6aabbtKrr76q8+fPKyoqSu3atdNbb72l1NTUQusfO3bM6X3r1q21f/9+ffzxx45L/Xx8fNSyZUtNmjRJOTk5TvdHFXzX0R/nZozR//73P5drLvj8/vjodUl69dVXXd7HX2nevLlq1KihCRMm6MyZM4WW//lzKE5r1651urfo0KFD+vzzz9WxY8fLfnfUyZMnC/VPwZm17OxsSa73qauft91u15133ql58+bpp59+KlRTSX5mAOAqzkgBgBfp1q2bbr31Vj377LPav3+/mjRpoq+//lqff/65hg4d6nSvSfPmzbV06VJNmjTJcalcXFyc/vGPf+j9999XuXLlVL9+fa1du1ZLly51PJq7KD3xxBO6++67NWPGDD388MN644031KpVKzVq1EgPPfSQrr/+eh09elRr167Vb7/9ph9++MGxbUFI2r17t8aNG+cYb9OmjRYvXix/f3/deOONjvG6deuqRo0aGjFihA4fPqzQ0FDNmzev0L1SV9K0aVP17t1bb775pk6dOqWWLVvqm2++0Z49e4rg07jIx8dH77zzjrp06aIGDRqoX79+qlKlig4fPqzly5crNDRUX3zxxd86xurVq3X+/PlC440bN3a6BK5hw4bq1KmT0+PPJTmd6fuzmTNn6s0331SPHj1Uo0YNnT59Wm+//bZCQ0PVtWtXSa73qZXPe/z48Vq+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nj3rWPfbb7+Vj4+P6tSpo3LlyqlSpUpav369Y3lubq42bdrkeP/HhzLUrFnT6RUTE+PynMqWLashQ4ZoxIgRMsaoWbNmysvLU3p6eqH9FjyV0GazqXXr1vr888+1fft2tWrVSo0bN1Z2drbeeusttWjRwnG2bevWrcrPz9fEiRN18803q3bt2jpy5Mhf1lW3bt1Cc969e7cyMjJcnpu7CFIAAAC4qvTsefER5386waKqVYv30efSxUvX0tLSnF7Hjx93WmfOnDl699139fPPP2vUqFHasGGD0wMi/uj555/X559/rj179mj79u1auHChI3QlJiYqICBASUlJ+umnn7R8+XI9+uijuu+++1SxYkVJ0pAhQzR+/HjNnz9fu3bt0iOPPOIUIkJCQjRixAgNGzZMM2fO1N69e7V582ZNnjxZM2fOtDT3f/3rX/r55581b9481a5dW4mJibr//vv16aefat++fdqwYYOSk5P15ZdfOrZp166dPvroIzVt2lRly5aVj4+P2rRpo1mzZqlt27aO9WJjY5WTk6PJkyfr119/1fvvv6+pU6f+ZU116tRR586d9a9//Uvr16/Xpk2b9OCDDyowMNDS3NxBkAIAAMBVp2dPaf9+afly6cMPL/7vvn3FG6IkacmSJapUqZLTq1WrVk7rjBkzRrNnz1bjxo313nvv6aOPPlL9+vUvub8yZcpo5MiRaty4sdq0aSO73a7Zs2dLuvj48a+++konTpzQjTfeqLvuukvt27fX66+/7tj+8ccf13333aekpCTFx8crJCREPXr0cDrGf//7Xz333HNKTk5WvXr11LlzZ3355ZeKjY21NPfw8HDdf//9Gj16tPLz8zV9+nTdf//9evzxx1WnTh11795dGzduVLVq1RzbtG3bVnl5eWrXrp1jrF27doXGGjVqpIkTJ+rFF19Uw4YNNWvWLCUnJ7tU1/Tp01W5cmW1bdtWPXv21IABAxQVFWVpbu6wGXOpq0tLl8zMTJUrV06nTp1SaGhosR8vJydHixYtUteuXeXn51fsx8O1gb6BO+gbuIvegTtc7Zvz589r3759io2NVUBAQAlWWPxsNps+++wzde/e3dOlXDXy8/OVmZmp0NDQEvty3Sv1oKvZgDNSAAAAAGARQQoAAAAALOLx5wAAAEAR4a6Z0oMzUgAAAABgEUEKAAAAHsHZG3hK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md69e3tqSk4IUiVs8uTJplq1aqZMmTLmpptuMuvWrfN0SfAiki75mj59umOdc+fOmUceecSUL1/eBAUFmR49epjU1FTPFQ2v9OcgRd/gcr744gvTsGFD4+/vb+rWrWumTZvmtDw/P98899xzpmLFisbf39+0b9/e7N6920PVwhtkZmaaIUOGmGrVqpmAgABz/fXXm2effdZkZ2c71qFvYIwxy5cvv+TfNUlJScYY1/rk999/N7179zZly5Y1oaGhpl+/fub06dMemE1hNmP+8DXUAAAAAIC/xD1SAAAAAGARQQoAAAAALCJIAQAAAIBFBCkAAAAAsIggBQAAAAAWEaQAAAAAwCKCFAAAAABYRJACAAAAAIsIUgCAa97+/ftls9m0devWYjtG37591b1792LbPwDAuxCkAABer2/fvrLZbIVenTt3dmn7mJgYpaamqmHDhsVcKQCgtPD1dAEAALiic+fOmj59utOYv7+/S9va7XZFR0cXR1kAgFKKM1IAgKuCv7+/oqOjnV7ly5eXJNlsNk2ZMkVdunRRYGCgrr/+es2dO9ex7Z8v7Tt58qQSExMVGRmpwMBA1apVyymkbdu2TbfddpsCAwMVERGhAQMG6MyZM47leXl5Gj58uMLCwhQREaEnn3xSxhinevPz85WcnKzY2FgFBgaqSZMmTjUBAK5uBCkAwDXhueee05133qkffvhBiYmJ6tWrl3bu3HnZdXfs2KHFixdr586dmjJliipUqCBJOnv2rDp16qTy5ctr48aNmjNnjpYuXarBgwc7tp84caJmzJihd999V2vWrNGJEyf02WefOR0jOTlZ7733nqZOnart27dr2LBh6tOnj1auXFl8HwIAoMTYzJ//LzQAALxM37599cEHHyggIMBp/JlnntEzzzwjm82mhx9+WFOmTHEsu/nmm3XDDTfozTff1P79+xUbG6stW7aoadOmuuOOO1ShQgW9++67hY719ttv66mnntKhQ4cUHBwsSVq0aJG6deumI0eOqGLFiqpcubKGDRumJ554QpKUm5ur2NhYNW/eXPPnz1d2drbCw8O1dOlSxcfHO/b94IMPKisrSx9++GFxfEwAgBLEPVIAgKvCrbfe6hSUJCk8PNzx8x8DS8H7yz2lb+DAgbrzzju1efNmdezYUd27d1fLli0lSTt37lSTJk0cIUqSbrnlFuXn52v37t0KCAhQamqq4uLiHMt9fX3VokULx+V9e/bsUVZWljp06OB03AsXLqhZs2bWJw8A8DoEKQDAVSE4OFg1a9Yskn116dJFBw4c0KJFi5SSkqL27dtr0KBBmjBhQpHsv+B+qi+//FJVqlRxWubqAzIAAN6Ne6QAANeEdevWFXpfr169y64fGRmppKQkffDBB3r11Vc1bdo0SVK9evX0ww8/6OzZs451v/32W/n4+KhOnToqV66cKlWqpPXr1zuW5+bmatOmTY739evXl7+/vw4ePKiaNWs6vWJiYopqygAAD+KMFADgqpCdna20tDSnMV9fX8dDIubMmaMWLVqoVatWmjVrljZs2KD/+7//u+S+nn/+eTVv3lwNGjRQdna2Fi5c6AhdiYmJGjVqlJKSkjR69GgdO3ZMjz76qO677z5VrFhRkjRkyBCNHz9etWrVUt26dTVp0iRlZGQ49h8SEqIRI0Zo2LBhys/PV6tWrXTq1Cl9++23Cg0NVVJSUjF8QgCAkkSQAgBcFZYsWaJKlSo5jdWpU0e7du2SJI0ZM0azZ8/WI488okqVKumjjz5S/fr1L7mvMmXKaOTIkdq/f78CAwPVunVrzZ49W5IUFBSkr776SkOGDNGNN96ooKAg3XnnnZo0aZJj+8cff1ypqalKSkqSj4+PHnjgAfXo0UOnTp1yrPPf//5XkZGRSk5O1q+//qqwsDDdcMMNeuaZZ4r6owEAeABP7QMAXPVsNps+++wzde/e3dOlAABKCe6RAgAAAACLCFIAAAAAYBH3SAEArnpcpQ4AKGmckQIAAAAAiwhSAAAAAGARQQoAAAAALCJIAQAAAIBFBCkAAAAAsIggBQAAAAAWEaQAAAAAwCKCFAAAAABY9P8BI1SCWApsWIEAAAAASUVORK5CYII=", - "text/plain": [ - "<Figure size 1000x500 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 497/600: Total Reward = -0.02\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.91 |\n", + "| ep_rew_mean | -0.319 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 81 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 414660 |\n", + "| train/ | |\n", + "| entropy_loss | -5.97 |\n", + "| explained_variance | 0.971 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 82931 |\n", + "| policy_loss | -0.0435 |\n", + "| std | 0.599 |\n", + "| value_loss | 0.000421 |\n", + "------------------------------------\n" + ] }, { - "name": "stdout", "output_type": "stream", + "name": "stderr", "text": [ - "\n", - "Evaluation Completed!\n", - "Number of Perfect Episodes (Reward == 500): 100 / 100\n" + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" ] - } - ], - "source": [ - "import gymnasium as gym\n", - "from stable_baselines3 import A2C\n", - "from stable_baselines3.common.monitor import Monitor\n", - "from huggingface_sb3 import load_from_hub\n", - "import matplotlib.pyplot as plt\n", - "\n", - "# Define your Hugging Face repository and model file\n", - "repo_id = \"oussamab2n/a2c-cartpole\"\n", - "filename = \"a2c-cartpole.zip\"\n", - "\n", - "# Load model from Hugging Face Hub\n", - "model_path = load_from_hub(repo_id=repo_id, filename=filename)\n", - "model = A2C.load(model_path)\n", - "\n", - "# Create evaluation environment\n", - "eval_env = gym.make(\"CartPole-v1\", render_mode=None)\n", - "eval_env = Monitor(eval_env)\n", - "\n", - "# Initialize tracking variables\n", - "num_episodes = 100\n", - "perfect_episodes = 0\n", - "episode_rewards = [] # List to store the reward of each episode\n", - "\n", - "# Run evaluation for 100 episodes\n", - "for episode in range(num_episodes):\n", - " obs, _ = eval_env.reset() # Reset at the start of each episode\n", - " done = False\n", - " total_reward = 0\n", - "\n", - " while not done:\n", - " action, _ = model.predict(obs, deterministic=True)\n", - " obs, reward, terminated, truncated, _ = eval_env.step(action) # Gymnasium returns terminated & truncated\n", - " done = terminated or truncated # Handle both termination and truncation cases\n", - " total_reward += reward\n", - "\n", - " # Store the total reward for each episode\n", - " episode_rewards.append(total_reward)\n", - "\n", - " # Check if the episode reached a total reward of 500\n", - " if total_reward == 500:\n", - " perfect_episodes += 1\n", - "\n", - " print(f\"Episode {episode+1}: Total Reward = {total_reward}\")\n", - "\n", - "# Plot the total reward for each episode\n", - "plt.figure(figsize=(10, 5))\n", - "plt.plot(range(1, num_episodes + 1), episode_rewards, marker=\"o\", linestyle=\"-\", color=\"b\", label=\"Episode Reward\")\n", - "plt.xlabel(\"Episode\")\n", - "plt.ylabel(\"Total Reward\")\n", - "plt.title(\"Total Reward Per Episode\")\n", - "plt.legend()\n", - "plt.grid()\n", - "plt.show()\n", - "\n", - "# Final results\n", - "print(\"\\nEvaluation Completed!\")\n", - "print(f\"Number of Perfect Episodes (Reward == 500): {perfect_episodes} / {num_episodes}\")\n", - "\n", - "# Close the environment\n", - "eval_env.close()\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "SxieP2wTkr67" - }, - "source": [ - "### Get familiar with Weights & Biases\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" }, - "id": "RKDOi7DWvBQE", - "outputId": "ca02cbe6-bd40-4f7c-cdb5-67d2543ae872" - }, - "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m20.8/20.8 MB\u001b[0m \u001b[31m78.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25h\u001b[34m\u001b[1mwandb\u001b[0m: Logging into wandb.ai. (Learn how to deploy a W&B server locally: https://wandb.me/wandb-server)\n", - "\u001b[34m\u001b[1mwandb\u001b[0m: You can find your API key in your browser here: https://wandb.ai/authorize\n", - "\u001b[34m\u001b[1mwandb\u001b[0m: Paste an API key from your profile and hit enter, or press ctrl+c to quit: \n", - "\u001b[34m\u001b[1mwandb\u001b[0m: No netrc file found, creating one.\n", - "\u001b[34m\u001b[1mwandb\u001b[0m: Appending key for api.wandb.ai to your netrc file: /root/.netrc\n", - "\u001b[34m\u001b[1mwandb\u001b[0m: W&B API key is configured. Use \u001b[1m`wandb login --relogin`\u001b[0m to force relogin\n" + "Episode 498/600: Total Reward = -0.29\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.48 |\n", + "| ep_rew_mean | -0.377 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 122 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 415495 |\n", + "| train/ | |\n", + "| entropy_loss | -6.03 |\n", + "| explained_variance | 0.991 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 83098 |\n", + "| policy_loss | -0.134 |\n", + "| std | 0.603 |\n", + "| value_loss | 0.00114 |\n", + "------------------------------------\n" ] - } - ], - "source": [ - "! pip install wandb -qU\n", - "#0b197edd6d50d8cc0ed00564436ada87f46084fa\n", - "! wandb login --relogin\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" }, - "id": "uRSvh1iYzQUH", - "outputId": "33790305-1d03-432b-9b07-b1332c659f2a" - }, - "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ - "\u001b[34m\u001b[1mwandb\u001b[0m: Using wandb-core as the SDK backend. Please refer to https://wandb.me/wandb-core for more information.\n", - "\u001b[34m\u001b[1mwandb\u001b[0m: Currently logged in as: \u001b[33mbenyahiamohammedoussama\u001b[0m (\u001b[33mbenyahiamohammedoussama-ecole-central-lyon\u001b[0m) to \u001b[32mhttps://api.wandb.ai\u001b[0m. Use \u001b[1m`wandb login --relogin`\u001b[0m to force relogin\n" + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" ] }, { - "output_type": "execute_result", - "data": { - "text/plain": [ - "True" - ] - }, - "metadata": {}, - "execution_count": 4 - } - ], - "source": [ - "import wandb\n", - "\n", - "wandb.login()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 125 - }, - "id": "DrrkjdbszeGM", - "outputId": "75e6a500-66ae-4db0-fb46-bc5aee836327" - }, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": [ - "<IPython.core.display.HTML object>" - ], - "text/html": [ - "Tracking run with wandb version 0.19.7" - ] - }, - "metadata": {} + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 499/600: Total Reward = -0.19\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.84 |\n", + "| ep_rew_mean | -0.32 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 76 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 416330 |\n", + "| train/ | |\n", + "| entropy_loss | -6.04 |\n", + "| explained_variance | 0.903 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 83265 |\n", + "| policy_loss | 0.243 |\n", + "| std | 0.605 |\n", + "| value_loss | 0.00298 |\n", + "------------------------------------\n" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": [ - "<IPython.core.display.HTML object>" - ], - "text/html": [ - "Run data is saved locally in <code>/content/wandb/run-20250222_124637-5aqhfh3z</code>" - ] - }, - "metadata": {} + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": [ - "<IPython.core.display.HTML object>" - ], - "text/html": [ - "Syncing run <strong><a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/wb_sb3/runs/5aqhfh3z' target=\"_blank\">distinctive-wave-6</a></strong> to <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/wb_sb3' target=\"_blank\">Weights & Biases</a> (<a href='https://wandb.me/developer-guide' target=\"_blank\">docs</a>)<br>" - ] - }, - "metadata": {} + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 500/600: Total Reward = -0.12\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.8 |\n", + "| ep_rew_mean | -0.294 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 106 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 417165 |\n", + "| train/ | |\n", + "| entropy_loss | -6.06 |\n", + "| explained_variance | 0.918 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 83432 |\n", + "| policy_loss | 0.301 |\n", + "| std | 0.606 |\n", + "| value_loss | 0.0026 |\n", + "------------------------------------\n" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": [ - "<IPython.core.display.HTML object>" - ], - "text/html": [ - " View project at <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/wb_sb3' target=\"_blank\">https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/wb_sb3</a>" - ] - }, - "metadata": {} + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": [ - "<IPython.core.display.HTML object>" - ], - "text/html": [ - " View run at <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/wb_sb3/runs/5aqhfh3z' target=\"_blank\">https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/wb_sb3/runs/5aqhfh3z</a>" - ] - }, - "metadata": {} + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 501/600: Total Reward = -0.13\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.08 |\n", + "| ep_rew_mean | -0.331 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 77 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 418000 |\n", + "| train/ | |\n", + "| entropy_loss | -6.05 |\n", + "| explained_variance | 0.452 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 83599 |\n", + "| policy_loss | -0.525 |\n", + "| std | 0.604 |\n", + "| value_loss | 0.0271 |\n", + "------------------------------------\n" + ] }, { - "output_type": "execute_result", - "data": { - "text/html": [ - "<button onClick=\"this.nextSibling.style.display='block';this.style.display='none';\">Display W&B run</button><iframe src='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/wb_sb3/runs/5aqhfh3z?jupyter=true' style='border:none;width:100%;height:420px;display:none;'></iframe>" - ], - "text/plain": [ - "<wandb.sdk.wandb_run.Run at 0x7c057798c4d0>" - ] - }, - "metadata": {}, - "execution_count": 5 - } - ], - "source": [ - "# Initialize a new run\n", - "wandb.init(project=\"wb_sb3\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 1000 + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "id": "s6edpedP0dor", - "outputId": "47300af2-3b08-4a47-8a18-ea5175a78c56" - }, - "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "Using cpu device\n", + "Episode 502/600: Total Reward = -0.42\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 58.2 |\n", - "| ep_rew_mean | 58.2 |\n", + "| ep_len_mean | 4.16 |\n", + "| ep_rew_mean | -0.345 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 554 |\n", + "| fps | 124 |\n", "| iterations | 100 |\n", - "| time_elapsed | 0 |\n", - "| total_timesteps | 500 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 418835 |\n", "| train/ | |\n", - "| entropy_loss | -0.544 |\n", - "| explained_variance | -0.208 |\n", + "| entropy_loss | -6.02 |\n", + "| explained_variance | 0.964 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 99 |\n", - "| policy_loss | 1.11 |\n", - "| value_loss | 10.2 |\n", - "------------------------------------\n", + "| n_updates | 83766 |\n", + "| policy_loss | -0.0578 |\n", + "| std | 0.603 |\n", + "| value_loss | 0.000854 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 503/600: Total Reward = -0.11\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 58.7 |\n", - "| ep_rew_mean | 58.7 |\n", + "| ep_len_mean | 3.76 |\n", + "| ep_rew_mean | -0.308 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 553 |\n", - "| iterations | 200 |\n", - "| time_elapsed | 1 |\n", - "| total_timesteps | 1000 |\n", + "| fps | 77 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 419670 |\n", "| train/ | |\n", - "| entropy_loss | -0.493 |\n", - "| explained_variance | -0.311 |\n", + "| entropy_loss | -5.98 |\n", + "| explained_variance | 0.125 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 199 |\n", - "| policy_loss | 1.79 |\n", - "| value_loss | 8.13 |\n", - "------------------------------------\n", + "| n_updates | 83933 |\n", + "| policy_loss | -0.247 |\n", + "| std | 0.6 |\n", + "| value_loss | 0.00757 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 504/600: Total Reward = -0.62\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 53.3 |\n", - "| ep_rew_mean | 53.3 |\n", + "| ep_len_mean | 3.78 |\n", + "| ep_rew_mean | -0.304 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 553 |\n", - "| iterations | 300 |\n", - "| time_elapsed | 2 |\n", - "| total_timesteps | 1500 |\n", + "| fps | 125 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 420505 |\n", "| train/ | |\n", - "| entropy_loss | -0.572 |\n", - "| explained_variance | 0.00166 |\n", + "| entropy_loss | -6.01 |\n", + "| explained_variance | 0.993 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 299 |\n", - "| policy_loss | 1.24 |\n", - "| value_loss | 5.54 |\n", + "| n_updates | 84100 |\n", + "| policy_loss | 0.44 |\n", + "| std | 0.602 |\n", + "| value_loss | 0.00688 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 505/600: Total Reward = -0.27\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.48 |\n", + "| ep_rew_mean | -0.285 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 87 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 421340 |\n", + "| train/ | |\n", + "| entropy_loss | -6.04 |\n", + "| explained_variance | 0.936 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 84267 |\n", + "| policy_loss | 0.117 |\n", + "| std | 0.606 |\n", + "| value_loss | 0.00194 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 506/600: Total Reward = -0.35\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 56.3 |\n", - "| ep_rew_mean | 56.3 |\n", + "| ep_len_mean | 3.99 |\n", + "| ep_rew_mean | -0.314 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 555 |\n", - "| iterations | 400 |\n", + "| fps | 125 |\n", + "| iterations | 100 |\n", "| time_elapsed | 3 |\n", - "| total_timesteps | 2000 |\n", + "| total_timesteps | 422175 |\n", "| train/ | |\n", - "| entropy_loss | -0.629 |\n", - "| explained_variance | -0.00653 |\n", + "| entropy_loss | -6.05 |\n", + "| explained_variance | 0.956 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 399 |\n", - "| policy_loss | 0.855 |\n", - "| value_loss | 5.41 |\n", - "------------------------------------\n", + "| n_updates | 84434 |\n", + "| policy_loss | 0.474 |\n", + "| std | 0.606 |\n", + "| value_loss | 0.00556 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 507/600: Total Reward = -0.41\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 58 |\n", - "| ep_rew_mean | 58 |\n", + "| ep_len_mean | 3.74 |\n", + "| ep_rew_mean | -0.307 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 557 |\n", - "| iterations | 500 |\n", + "| fps | 103 |\n", + "| iterations | 100 |\n", "| time_elapsed | 4 |\n", - "| total_timesteps | 2500 |\n", + "| total_timesteps | 423010 |\n", "| train/ | |\n", - "| entropy_loss | -0.343 |\n", - "| explained_variance | 0.00255 |\n", + "| entropy_loss | -6.04 |\n", + "| explained_variance | 0.915 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 499 |\n", - "| policy_loss | 0.0657 |\n", - "| value_loss | 382 |\n", - "------------------------------------\n", + "| n_updates | 84601 |\n", + "| policy_loss | -0.515 |\n", + "| std | 0.606 |\n", + "| value_loss | 0.00687 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 508/600: Total Reward = -0.16\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 63.6 |\n", - "| ep_rew_mean | 63.6 |\n", + "| ep_len_mean | 3.62 |\n", + "| ep_rew_mean | -0.291 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 543 |\n", - "| iterations | 600 |\n", - "| time_elapsed | 5 |\n", - "| total_timesteps | 3000 |\n", + "| fps | 129 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 423845 |\n", "| train/ | |\n", - "| entropy_loss | -0.382 |\n", - "| explained_variance | 0.00138 |\n", + "| entropy_loss | -6.02 |\n", + "| explained_variance | 0.931 |\n", "| learning_rate | 0.0007 |\n", - "| n_updates | 599 |\n", - "| policy_loss | 0.461 |\n", - "| value_loss | 256 |\n", - "------------------------------------\n", + "| n_updates | 84768 |\n", + "| policy_loss | 0.248 |\n", + "| std | 0.604 |\n", + "| value_loss | 0.00308 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 509/600: Total Reward = -0.38\n", + "Logging to runs/aqrdlwti/A2C_0\n", "------------------------------------\n", "| rollout/ | |\n", - "| ep_len_mean | 64.6 |\n", - "| ep_rew_mean | 64.6 |\n", + "| ep_len_mean | 4.05 |\n", + "| ep_rew_mean | -0.329 |\n", + "| success_rate | 1 |\n", "| time/ | |\n", - "| fps | 530 |\n", - "| iterations | 700 |\n", - "| time_elapsed | 6 |\n", - "| total_timesteps | 3500 |\n", - "| train/ | |\n", - "| entropy_loss | -0.51 |\n", - "| explained_variance | 0.00348 |\n", - "| learning_rate | 0.0007 |\n", - "| n_updates | 699 |\n", - "| policy_loss | 0.722 |\n", - "| value_loss | 3.78 |\n", - "------------------------------------\n", - "-------------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 67.8 |\n", - "| ep_rew_mean | 67.8 |\n", - "| time/ | |\n", - "| fps | 512 |\n", - "| iterations | 800 |\n", - "| time_elapsed | 7 |\n", - "| total_timesteps | 4000 |\n", - "| train/ | |\n", - "| entropy_loss | -0.409 |\n", - "| explained_variance | -0.000384 |\n", - "| learning_rate | 0.0007 |\n", - "| n_updates | 799 |\n", - "| policy_loss | 1.49 |\n", - "| value_loss | 3.25 |\n", - "-------------------------------------\n", - "------------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 72.2 |\n", - "| ep_rew_mean | 72.2 |\n", - "| time/ | |\n", - "| fps | 495 |\n", - "| iterations | 900 |\n", - "| time_elapsed | 9 |\n", - "| total_timesteps | 4500 |\n", - "| train/ | |\n", - "| entropy_loss | -0.463 |\n", - "| explained_variance | -0.00283 |\n", - "| learning_rate | 0.0007 |\n", - "| n_updates | 899 |\n", - "| policy_loss | 0.622 |\n", - "| value_loss | 2.78 |\n", - "------------------------------------\n", - "------------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 75.9 |\n", - "| ep_rew_mean | 75.9 |\n", - "| time/ | |\n", - "| fps | 501 |\n", - "| iterations | 1000 |\n", - "| time_elapsed | 9 |\n", - "| total_timesteps | 5000 |\n", - "| train/ | |\n", - "| entropy_loss | -0.306 |\n", - "| explained_variance | 0.00123 |\n", - "| learning_rate | 0.0007 |\n", - "| n_updates | 999 |\n", - "| policy_loss | 0.944 |\n", - "| value_loss | 2.34 |\n", - "------------------------------------\n", - "-------------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 82.3 |\n", - "| ep_rew_mean | 82.3 |\n", - "| time/ | |\n", - "| fps | 505 |\n", - "| iterations | 1100 |\n", - "| time_elapsed | 10 |\n", - "| total_timesteps | 5500 |\n", - "| train/ | |\n", - "| entropy_loss | -0.447 |\n", - "| explained_variance | -0.000973 |\n", - "| learning_rate | 0.0007 |\n", - "| n_updates | 1099 |\n", - "| policy_loss | 0.402 |\n", - "| value_loss | 1.91 |\n", - "-------------------------------------\n", - "-------------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 88.6 |\n", - "| ep_rew_mean | 88.6 |\n", - "| time/ | |\n", - "| fps | 510 |\n", - "| iterations | 1200 |\n", - "| time_elapsed | 11 |\n", - "| total_timesteps | 6000 |\n", - "| train/ | |\n", - "| entropy_loss | -0.557 |\n", - "| explained_variance | -5.52e-05 |\n", - "| learning_rate | 0.0007 |\n", - "| n_updates | 1199 |\n", - "| policy_loss | 0.328 |\n", - "| value_loss | 1.52 |\n", - "-------------------------------------\n", - "-------------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 94.6 |\n", - "| ep_rew_mean | 94.6 |\n", - "| time/ | |\n", - "| fps | 514 |\n", - "| iterations | 1300 |\n", - "| time_elapsed | 12 |\n", - "| total_timesteps | 6500 |\n", - "| train/ | |\n", - "| entropy_loss | -0.471 |\n", - "| explained_variance | -0.000189 |\n", - "| learning_rate | 0.0007 |\n", - "| n_updates | 1299 |\n", - "| policy_loss | 0.475 |\n", - "| value_loss | 1.17 |\n", - "-------------------------------------\n", - "------------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 99.8 |\n", - "| ep_rew_mean | 99.8 |\n", - "| time/ | |\n", - "| fps | 517 |\n", - "| iterations | 1400 |\n", - "| time_elapsed | 13 |\n", - "| total_timesteps | 7000 |\n", - "| train/ | |\n", - "| entropy_loss | -0.512 |\n", - "| explained_variance | 0.000282 |\n", - "| learning_rate | 0.0007 |\n", - "| n_updates | 1399 |\n", - "| policy_loss | 0.422 |\n", - "| value_loss | 0.883 |\n", - "------------------------------------\n", - "-------------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 101 |\n", - "| ep_rew_mean | 101 |\n", - "| time/ | |\n", - "| fps | 520 |\n", - "| iterations | 1500 |\n", - "| time_elapsed | 14 |\n", - "| total_timesteps | 7500 |\n", - "| train/ | |\n", - "| entropy_loss | -0.574 |\n", - "| explained_variance | -1.93e-05 |\n", - "| learning_rate | 0.0007 |\n", - "| n_updates | 1499 |\n", - "| policy_loss | 0.33 |\n", - "| value_loss | 0.632 |\n", - "-------------------------------------\n", - "-------------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 104 |\n", - "| ep_rew_mean | 104 |\n", - "| time/ | |\n", - "| fps | 522 |\n", - "| iterations | 1600 |\n", - "| time_elapsed | 15 |\n", - "| total_timesteps | 8000 |\n", - "| train/ | |\n", - "| entropy_loss | -0.38 |\n", - "| explained_variance | -0.000158 |\n", - "| learning_rate | 0.0007 |\n", - "| n_updates | 1599 |\n", - "| policy_loss | 0.321 |\n", - "| value_loss | 0.42 |\n", - "-------------------------------------\n", - "-------------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 113 |\n", - "| ep_rew_mean | 113 |\n", - "| time/ | |\n", - "| fps | 523 |\n", - "| iterations | 1700 |\n", - "| time_elapsed | 16 |\n", - "| total_timesteps | 8500 |\n", - "| train/ | |\n", - "| entropy_loss | -0.472 |\n", - "| explained_variance | -2.01e-05 |\n", - "| learning_rate | 0.0007 |\n", - "| n_updates | 1699 |\n", - "| policy_loss | 0.135 |\n", - "| value_loss | 0.253 |\n", - "-------------------------------------\n", - "-------------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 117 |\n", - "| ep_rew_mean | 117 |\n", - "| time/ | |\n", - "| fps | 526 |\n", - "| iterations | 1800 |\n", - "| time_elapsed | 17 |\n", - "| total_timesteps | 9000 |\n", - "| train/ | |\n", - "| entropy_loss | -0.465 |\n", - "| explained_variance | -0.000141 |\n", - "| learning_rate | 0.0007 |\n", - "| n_updates | 1799 |\n", - "| policy_loss | 0.159 |\n", - "| value_loss | 0.133 |\n", - "-------------------------------------\n", - "------------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 118 |\n", - "| ep_rew_mean | 118 |\n", - "| time/ | |\n", - "| fps | 529 |\n", - "| iterations | 1900 |\n", - "| time_elapsed | 17 |\n", - "| total_timesteps | 9500 |\n", - "| train/ | |\n", - "| entropy_loss | -0.54 |\n", - "| explained_variance | 4.63e-05 |\n", - "| learning_rate | 0.0007 |\n", - "| n_updates | 1899 |\n", - "| policy_loss | 0.108 |\n", - "| value_loss | 0.0489 |\n", - "------------------------------------\n", - "-------------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 122 |\n", - "| ep_rew_mean | 122 |\n", - "| time/ | |\n", - "| fps | 531 |\n", - "| iterations | 2000 |\n", - "| time_elapsed | 18 |\n", - "| total_timesteps | 10000 |\n", - "| train/ | |\n", - "| entropy_loss | -0.439 |\n", - "| explained_variance | -2.03e-06 |\n", - "| learning_rate | 0.0007 |\n", - "| n_updates | 1999 |\n", - "| policy_loss | 0.0152 |\n", - "| value_loss | 0.00595 |\n", - "-------------------------------------\n", - "Model saved successfully!\n" + "| fps | 133 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 424680 |\n", + "| train/ | |\n", + "| entropy_loss | -6.03 |\n", + "| explained_variance | 0.904 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 84935 |\n", + "| policy_loss | -0.0218 |\n", + "| std | 0.606 |\n", + "| value_loss | 0.00205 |\n", + "------------------------------------\n" ] }, { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAHWCAYAAAB9mLjgAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzsfWeYHMW19js7u1rlLKEMAoTIOUiCReJaRgZMEhlswDZwCQYEGIN9bQM2F4yNsbCN+XDCNpiMwGAvRgIkJEBEIXISQSgnpFXeMNPfj1JNnz59qrq6p2d3xe33efbZ6VRVXV3hnHrPOZXzPM9DhgwZMmTIkCFDhgwZMmRwRlVbFyBDhgwZMmTIkCFDhgwZtjZkilSGDBkyZMiQIUOGDBkyxESmSGXIkCFDhgwZMmTIkCFDTGSKVIYMGTJkyJAhQ4YMGTLERKZIZciQIUOGDBkyZMiQIUNMZIpUhgwZMmTIkCFDhgwZMsREpkhlyJAhQ4YMGTJkyJAhQ0xkilSGDBkyZMiQIUOGDBkyxESmSGXIkCFDhgwZMmTIkCFDTGSKVIYMGb40mDFjBnK5HGbMmNHWRWkXyOVyuPbaa9u6GG2Cv/71r8jlcvjss89aNd/WqvNK5fN/sc2MGzcO48aNa7P8/y/WeYYMXxZkilSGDBnKQi6Xc/pzUW5uuOEGPProoxUvsxay9V91dTUGDx6Ms88+G4sWLap4/hmC0Aqw6e++++5r6yJmqDA+++wzaxv4+c9/3tZFLAv19fWZspQhw5cQ1W1dgAwZMmzduOuuuwLHf//73zFt2rTQ+V122SUyrRtuuAEnnngijjvuuDSLaMRPf/pTDB8+HJs3b8aLL76Iv/71r3juuefw9ttvo2PHjq1Shgw+LrnkEhxwwAGh86NHj46d1je/+U2ceuqpqK2tTaNo/2ewadMmVFe3nWhw2mmn4cgjjwyd32effdqgNOmhvr4et912m6hMtXWdZ8iQITmynpshQ4ay8I1vfCNw/OKLL2LatGmh8+0RRxxxBPbff38AwDnnnIO+ffvipptuwmOPPYaTTz65jUsXjQ0bNqBLly5tXQwnuJS1rq4OJ554Yir55fN55PP5VNL6sqNYLKKpqQkdO3Zs8wWEfffdd6sYO9JEW9d5hgwZkiMz7cuQIUPFsWHDBlxxxRUYOnQoamtrMXLkSNx8883wPK90Ty6Xw4YNG/C3v/2tZM5z9tlnAwDmz5+PCy+8ECNHjkSnTp3Qp08fnHTSSan7v9TV1QEAPv7448D5999/HyeeeCJ69+6Njh07Yv/998djjz1Wur5mzRrk83n85je/KZ1buXIlqqqq0KdPn8B7XnDBBRgwYEDpeNasWTjppJMwbNgw1NbWYujQobjsssuwadOmQBnOPvtsdO3aFR9//DGOPPJIdOvWDWeccQYAoLGxEZdddhn69euHbt264ZhjjsHChQud3lmb1d1///344Q9/iAEDBqBLly445phjsGDBgtD9L730Er72ta+hR48e6Ny5M8aOHYvnn38+cM+1116LXC6Hd999F6effjp69eqFQw45xKk8Ucjlcvjud7+Lf/zjHxg5ciQ6duyI/fbbDzNnzgzcJ/lIvfrqq5gwYQL69u2LTp06Yfjw4fj2t78deM6lrQLx6nzRokX49re/jW222Qa1tbXYbbfd8Je//MXpfV3zOfvss7HddtuFzutvQUHrcLfddkNtbS3+85//lK5R1kQ/P2/ePJx99tno2bMnevTogW9961vYuHFjIN1NmzbhkksuQd++fUtlXbRoUao+QF//+tex/fbbi9dGjx5dWhgBgDvvvBP/9V//hf79+6O2tha77rorbr/99sg8TP51kg+mS/89++yzcdtttwEImkJrSPXz+uuv44gjjkD37t3RtWtXfOUrX8GLL74olvP555/H5Zdfjn79+qFLly44/vjjsWLFisj3zJAhQ/nIGKkMGTJUFJ7n4ZhjjsH06dPxne98B3vvvTeefPJJXHnllVi0aBF+/etfA1Amgueccw4OPPBAnHfeeQCAHXbYAQDwyiuv4IUXXsCpp56KIUOG4LPPPsPtt9+OcePG4d1330Xnzp1TKasWnHr16lU698477+Dggw/G4MGDcfXVV6NLly544IEHcNxxx+Hhhx/G8ccfj549e2L33XfHzJkzcckllwAAnnvuOeRyOXzxxRd49913sdtuuwFQgpdW2ADgwQcfxMaNG3HBBRegT58+ePnll/Hb3/4WCxcuxIMPPhgoX0tLCyZMmIBDDjkEN998c+m9zznnHNx99904/fTTMWbMGDzzzDM46qijYr37//7v/yKXy+Gqq67C8uXLMXnyZIwfPx5z585Fp06dAADPPPMMjjjiCOy333645pprUFVVVRJWZ82ahQMPPDCQ5kknnYQRI0bghhtuCCkiEtatW4eVK1eGzvfp0ycgeD777LO4//77cckll6C2tha///3v8bWvfQ0vv/wydt99dzHt5cuX4/DDD0e/fv1w9dVXo2fPnvjss88wZcqU0j2ubRVwr/Nly5Zh1KhRJeWlX79+eOKJJ/Cd73wHa9euxaRJk6x1ksa3lfDMM8/ggQcewHe/+1307dtXVMIoTj75ZAwfPhw33ngj5syZgz/96U/o378/brrpptI9Z599Nh544AF885vfxKhRo/Dss8/GLuvGjRvFNtCzZ09UV1fjlFNOwZlnnolXXnklYAY6f/58vPjii/jlL39ZOnf77bdjt912wzHHHIPq6mo8/vjjuPDCC1EsFnHRRRfFKpcJLv33v//7v7F48WLR5FnCO++8g7q6OnTv3h3f//73UVNTgzvuuAPjxo3Ds88+i4MOOihw/8UXX4xevXrhmmuuwWeffYbJkyfju9/9Lu6///5U3jFDhgwWeBkyZMiQIi666CKPDi2PPvqoB8C7/vrrA/edeOKJXi6X8+bNm1c616VLF++ss84Kpblx48bQudmzZ3sAvL///e+lc9OnT/cAeNOnT7eW8c477/QAeE899ZS3YsUKb8GCBd5DDz3k9evXz6utrfUWLFhQuvcrX/mKt8cee3ibN28unSsWi96YMWO8ESNGBN57m222KR1ffvnl3qGHHur179/fu/322z3P87xVq1Z5uVzOu/XWW63vduONN3q5XM6bP39+6dxZZ53lAfCuvvrqwL1z5871AHgXXnhh4Pzpp5/uAfCuueYaa13oOhs8eLC3du3a0vkHHnjAA1Aqa7FY9EaMGOFNmDDBKxaLgfIPHz7c++pXv1o6d80113gAvNNOO82aNy+D6W/JkiWle/W5V199tXRu/vz5XseOHb3jjz++dE5/408//dTzPM975JFHPADeK6+8YiyHa1uNU+ff+c53vIEDB3orV64M3Hvqqad6PXr0EL+/Rpx8zjrrLG/bbbcNpaG/BQUAr6qqynvnnXdC9/N09fPf/va3A/cdf/zxXp8+fUrHr732mgfAmzRpUuC+s88+26kdfvrpp9Y2MHv2bM/zPK+hocGrra31rrjiisDzv/jFL0J9RqrbCRMmeNtvv33g3NixY72xY8eWjnnb0ZDGF9f+y8dFCl4/xx13nNehQwfv448/Lp1bvHix161bN+/QQw8NlXP8+PGBPnnZZZd5+XzeW7NmjZhfhgwZ0kNm2pchQ4aKor6+Hvl8vsTUaFxxxRXwPA9PPPFEZBqaEQGA5uZmrFq1CjvuuCN69uyJOXPmJC7b+PHj0a9fPwwdOhQnnngiunTpgsceewxDhgwBAHzxxRd45plncPLJJ5fYkpUrV2LVqlWYMGECPvroo1KUv7q6OixbtgwffPABAMU8HXrooairq8OsWbMAKJbK87wAI0XfbcOGDVi5ciXGjBkDz/Pw+uuvh8p8wQUXBI7r6+sBIFS/UUwHx5lnnolu3bqVjk888UQMHDiwlP7cuXPx0Ucf4fTTT8eqVatKdbFhwwZ85StfwcyZM1EsFgNpnn/++bHK8JOf/ATTpk0L/fXu3Ttw3+jRo7HffvuVjocNG4Zjjz0WTz75JAqFgph2z549AQD/+te/0NzcLN7j2lZd69zzPDz88MM4+uij4Xleqc5WrlyJCRMmoKGhwdp+0/q2EsaOHYtdd93V+X7+Levq6rBq1SqsXbsWAEqmgRdeeGHgvosvvjhWuc477zyxDeiydu/eHUcccQQeeOCBAMt5//33Y9SoURg2bFjpHO1bDQ0NWLlyJcaOHYtPPvkEDQ0NscplQtz+G4VCoYCpU6fiuOOOC5gwDhw4EKeffjqee+65Up1rnHfeeQHGtq6uDoVCAfPnz0/wRhkyZIiDzLQvQ4YMFcX8+fMxaNCggJAO+FH8XCb7TZs24cYbb8Sdd96JRYsWBQSocgSi2267DTvttBMaGhrwl7/8BTNnzgxEeZs3bx48z8OPf/xj/PjHPxbTWL58OQYPHlxSjmbNmoUhQ4bg9ddfx/XXX49+/frh5ptvLl3r3r079tprr9Lzn3/+OX7yk5/gsccew+rVqwNp83errq4uKXka8+fPR1VVVckMUmPkyJGx6mLEiBGB41wuhx133LFk7vjRRx8BAM466yxjGg0NDQGzyOHDh8cqwx577IHx48fHLisA7LTTTti4cSNWrFgR8EHTGDt2LE444QRcd911+PWvf41x48bhuOOOw+mnn1765q5t1bXOV6xYgTVr1uAPf/gD/vCHP4jvsnz5cuN7pvVtJcT9NlRBAXzz19WrV6N79+6lsvJ0d9xxx1j5jBgxIrINnHLKKXj00Ucxe/ZsjBkzBh9//DFee+01TJ48OXDf888/j2uuuQazZ88O+XM1NDSgR48escomIU7/dcGKFSuwceNG8RvvsssuKBaLWLBgQclUGLB/mwwZMlQWmSKVIUOGdo+LL74Yd955JyZNmoTRo0ejR48eyOVyOPXUU0MsSBwceOCBJef04447DocccghOP/10fPDBB+jatWsp7e9973uYMGGCmIYWFAcNGoThw4dj5syZ2G677eB5HkaPHo1+/frh0ksvxfz58zFr1iyMGTMGVVXKGKBQKOCrX/0qvvjiC1x11VXYeeed0aVLFyxatAhnn3126N1qa2tLz7Y2dFl++ctfYu+99xbv6dq1a+CYrta3NXK5HB566CG8+OKLePzxx/Hkk0/i29/+Nn71q1/hxRdfDJU9Deg6+8Y3vmFUQPfcc89U8uIBJTRMDF3cb2OKgOg5+L6ljaOPPhqdO3fGAw88gDFjxuCBBx5AVVUVTjrppNI9H3/8Mb7yla9g5513xi233IKhQ4eiQ4cOqK+vx69//WvruOFal3H7b6XQnr5Nhgz/15ApUhkyZKgott12Wzz11FNYt25dYKX//fffL13XMAkwDz30EM466yz86le/Kp3bvHkz1qxZk1o58/k8brzxRhx22GH43e9+h6uvvrpkWlNTU+PElNTV1WHmzJkYPnw49t57b3Tr1g177bUXevTogf/85z+YM2cOrrvuutL9b731Fj788EP87W9/w5lnnlk6P23aNOdyb7vttigWi/j4448Dq9jaxNAVmnHS8DwP8+bNKwn6mhXp3r27U11UErysAPDhhx+ic+fO6Nevn/XZUaNGYdSoUfjf//1f3HPPPTjjjDNw33334ZxzznFuq651riPtFQqFRHUW59v26tVL7A+tZd6ly/rpp58GGMN58+alnleXLl3w9a9/HQ8++CBuueUW3H///airq8OgQYNK9zz++ONobGzEY489FmBspk+fHpm+ZnR4ffK6jNN/TWMbR79+/dC5c2fxG7///vuoqqrC0KFDndLKkCFD5ZH5SGXIkKGiOPLII1EoFPC73/0ucP7Xv/41crkcjjjiiNK5Ll26iMJgPp8Pra7+9re/Na62J8W4ceNw4IEHYvLkydi8eTP69++PcePG4Y477sCSJUtC9/MQw3V1dfjss89Kgh0AVFVVYcyYMbjlllvQ3Nwc8I/SK8n03TzPw6233upcZl1/NPQ6gJCZUxT+/ve/Y926daXjhx56CEuWLCmlv99++2GHHXbAzTffjPXr14eeb81wy7Nnzw74Fi1YsAD//Oc/cfjhhxtX51evXh1qQ5pZa2xsBODeVl3rPJ/P44QTTsDDDz+Mt99+O1SmqDqL82132GEHNDQ04M033yydW7JkCR555BFrHmlBM7a///3vA+d/+9vfViS/U045BYsXL8af/vQnvPHGGzjllFMC16W+1dDQgDvvvDMybb1oQEPqFwqFkHlmnP6r91CLWvzJ5/M4/PDD8c9//jMQfn3ZsmW45557cMghh6B79+6R75AhQ4bWQcZIZciQoaI4+uijcdhhh+F//ud/8Nlnn2GvvfbC1KlT8c9//hOTJk0K+H/st99+eOqpp3DLLbeUTOUOOuggfP3rX8ddd92FHj16YNddd8Xs2bPx1FNPoU+fPqmX98orr8RJJ52Ev/71rzj//PNx22234ZBDDsEee+yBc889F9tvvz2WLVuG2bNnY+HChXjjjTdKz2ol6YMPPsANN9xQOn/ooYfiiSeeQG1tbSBk884774wddtgB3/ve97Bo0SJ0794dDz/8cCzfhr333hunnXYafv/736OhoQFjxozB008/HZsJ6N27Nw455BB861vfwrJlyzB58mTsuOOOOPfccwEohfBPf/oTjjjiCOy222741re+hcGDB2PRokWYPn06unfvjscffzxWnhyzZs3C5s2bQ+f33HPPgAnc7rvvjgkTJgTCnwMIsH0cf/vb3/D73/8exx9/PHbYYQesW7cOf/zjH9G9e3cceeSRANzbapw6//nPf47p06fjoIMOwrnnnotdd90VX3zxBebMmYOnnnoKX3zxhbHMcfI59dRTcdVVV+H444/HJZdcgo0bN+L222/HTjvtVFZAFlfst99+OOGEEzB58mSsWrWqFP78ww8/BODOyMyZMwd333136PwOO+yA0aNHl471Xmrf+973SgorxeGHH44OHTrg6KOPxn//939j/fr1+OMf/4j+/fuLiyIUu+22G0aNGoUf/OAH+OKLL9C7d2/cd999aGlpCdwXp//q4CiXXHIJJkyYgHw+j1NPPVXM//rrr8e0adNwyCGH4MILL0R1dTXuuOMONDY24he/+IW17BkyZGhltGqMwAwZMnzpIYX5XbdunXfZZZd5gwYN8mpqarwRI0Z4v/zlLwMhez3P895//33v0EMP9Tp16uQBKIVCX716tfetb33L69u3r9e1a1dvwoQJ3vvvv+9tu+22gXDpccOfS6GwC4WCt8MOO3g77LCD19LS4nme53388cfemWee6Q0YMMCrqanxBg8e7H3961/3HnroodDz/fv39wB4y5YtK5177rnnPABeXV1d6P53333XGz9+vNe1a1evb9++3rnnnuu98cYbHgDvzjvvLN131llneV26dBHfZ9OmTd4ll1zi9enTx+vSpYt39NFHewsWLIgV/vzee+/1fvCDH3j9+/f3OnXq5B111FGB8M0ar7/+ujdx4kSvT58+Xm1trbftttt6J598svf000+X7tEhs1esWGHNm5fB9EffAYB30UUXeXfffbc3YsQIr7a21ttnn31C35yHsJ4zZ4532mmnecOGDfNqa2u9/v37e1//+tcDYdQ9z72txqnzZcuWeRdddJE3dOhQr6amxhswYID3la98xfvDH/4QWTdx8pk6daq3++67ex06dPBGjhzp3X333cbw5xdddJGYH0/X9C2lEOEbNmzwLrroIq93795e165dveOOO8774IMPPADez3/+c+t7RoU/l7ZFOOOMM0rhvyU89thj3p577ul17NjR22677bybbrrJ+8tf/hIqNw9/7nmqz48fP96rra31ttlmG++HP/yhN23atND44tp/W1pavIsvvtjr16+fl8vlAt9E+pZz5szxJkyY4HXt2tXr3Lmzd9hhh3kvvPBC4B7TOOY6DmbIkKF85Dwv80bMkCFDhv+rmDFjBg477DA8+OCDOPHEE9u6OJHI5XK46KKLQuZ3Gdon5s6di3322Qd33303zjjjjLYuToYMGTKkisxHKkOGDBkyZMhQNjZt2hQ6N3nyZFRVVeHQQw9tgxJlyJAhQ2WR+UhlyJAhQ4YMGcrGL37xC7z22ms47LDDUF1djSeeeAJPPPEEzjvvvCzSXIYMGb6UyBSpDBkyZMiQIUPZGDNmDKZNm4af/exnWL9+PYYNG4Zrr70W//M//9PWRcuQIUOGiiDzkcqQIUOGDBkyZMiQIUOGmMh8pDJkyJAhQ4YMGTJkyJAhJjJFKkOGDBkyZMiQIUOGDBliIvORAlAsFrF48WJ069bNedPADBkyZMiQIUOGDBkyfPngeR7WrVuHQYMGoarKzDtlihSAxYsXZxGFMmTIkCFDhgwZMmTIUMKCBQsw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FBcXG7/85S+NHTt2WLb785//bPTq1csoLCw0evbsaTz//POJ71atWmUAMN5++21j8ODBRmFhofHqq69yj9etWzfjqaeeMrZv327E4/GU78m5ffTRR0afPn2MwsJCY+DAgcaSJUsS27D1Y9GiRcbQoUONZs2aGc2bNzf69+9vzJs3L/H9e++9Z/Tu3dsoKCgwunXrZjzxxBOWY27cuNH4xS9+YRQVFRmHHXaY8eabbxrdunUznn766cQ227dvN66++mqjbdu2RvPmzY1hw4YZixYtsr2uvOdQ4559+w4ahYV1BmAYL75oGPX1mS6RJuwcPHjQ+OCDD4yDBw9muiiaLEHXGY0qYaszdrYBS0ZDjQ3DwE033YT3338fn3/+OQ4//HDH3yxatAgA0LFjRwBAeXk5lixZgk2bNiW2mTJlCkpKStC7d2/fy7x3L9CsmdxfixYAJQ6lYBjm6uAtWgAlJXkoK2uJkpI82/1JqoxCnn32WTz55JN44okn8M0332DkyJE455xz8MMPPwAAvvrqKwDAp59+ipqamoQL5a5du3DFFVfgiy++wJw5c9CjRw9UVFR4ckVcunQpvvzyS0tCkIkTJ+KNN97ASy+9hG+//Ra33norLrvsMkyfPh0AMGTIEEybNg2AWX9mzpyJli1bJpTM6dOno3PnzujevTsAc4bjkUceweLFi/HBBx/g559/xpVXXplSlrvvvhuPP/44li9fjr59++LOO+/E9OnT8a9//QuTJ0/GtGnTsGDBAsdz+vHHH/HOO+/gww8/xMcff4yFCxfihhtuSHz/1ltv4YEHHsCjjz6K5cuX47HHHsP999+P119/PaU848ePx/LlyzFy5Eil68py55134sknn8S8efPQrl07jB492tb3d9y4cSgrK8O8efMwf/583H333YmZofnz5+PCCy/ExRdfjCVLlmDChAm4//778dprryV+f+WVV2Lt2rWYOnUq3nvvPbzwwguWZxMAfvnLX2LTpk2YNGkS5s+fj/79++OMM84INE5LY1JZCXTvHsOBA6biev31wGGHmZ9rNBqNRqNRJC1mnQ3XX3+90aJFC2PatGlGTU1N4m/v3r2GYRjGjz/+aDz88MPG119/baxatcr417/+ZRxxxBHG4MGDE/uor683jj32WGPEiBHGokWLjI8//tho166dcc8990iXQ0WR2r3bXmEK+m/3bvVrzCoOnTp1Mh599FHLNieeeKJxww03GIaRVEQWLlwo3G88HjeaN29ufPjhh4nPIKFIRaNRo2nTpkZhYaEBwMjLyzPee+89wzAMY//+/UaTJk2ML7/80vK7q6++2rjkkksMwzCMf//730aLFi2M+vp6Y9GiRUZpaakxfvx446677jIMwzD++7//27j00kttyzBv3jwDQELBIqrNBx98kNhm165dRkFBgfHOO+8kPtu6datRXFzsqEhFo1Fj3bp1ic8mTZpk5OXlGTU1NYZhGMaRRx5p/O1vf7P87pFHHjHKy8sNw0he/2eeecb2OIRu3boZBQUFRtOmTS1/M2bMsJzb22+/nXIe//jHPwzDSK0fzZs3N1577TXu8S699FJj+PDhls/uvPNOo3fv3oZhGMaKFSsMAMZXX32V+H758uUGgIQiNXPmTKOkpMTYv3+/ZT9HHnmk8ac//Yl7XK1I+cM//2mq4EBDijIeiZjfazQ8wjZTrAk/us5oVAlbnZFVpDIaI/Xiiy8CMBfdpXn11Vdx5ZVXoqCgAJ9++imeeeYZ7NmzB126dMH555+P++67L7FtNBrFRx99hOuvvx7l5eVo2rQprrjiCsu6U37SpAmwe7fctjNmABUVzttVVQGnndaA2tpalJSU2C5ASuXBcEVtbS3Wr1+PU0891fL5qaeeisWLFwt/u3HjRtx3332YNm0aNm3ahHg8jr1792LNmjVKZRg2bBhefPFF7NmzB08//TRisRjOP/98AKaas3fvXgwfPtzym4MHDyayLw4aNAi7du3CwoUL8eWXX2LIkCEYOnRoIsZq+vTpuPPOOxO/nT9/PiZMmIDFixdj+/bticx2a9assSiWJ5xwQuL1ypUrcfDgQQwcODDxWevWrdGzZ0/H8+vatSs6d+6ceF9eXo6GhgasWLECzZs3x8qVK3H11VfjmmuuSWxTX1+PFi1aWPZDl0fEHXfcgfPPPx/NmjVL1Bv6+KQM7HnQMXM0t912G/77v/8bf/3rX3HmmWfil7/8ZSIWcfny5RgzZoxl+1NPPRXPPPMM4vE4li9fjlgshgEDBiS+79WrF1q2bJl4v3jxYuzevRtt2rSx7Gffvn1YuXKl1Dlr1InHgfHjcShW0xqDaRjmelK33AKMGWPNJqrRaDQajcaejBpSBpuBgaFLly4Jly4R3bp1Q1VVlV/FEhKJAJJx/BgxAigrM937eKcaiZjfjxhhvo7HzX2HcW2XK664Alu3bsWzzz6Lbt26obCwEOXl5crZDJs2bZpwu3vllVfQr18/vPzyy7j66qux+5CF+p///CfFGCgsLAQAtGzZEv369cO0adMwe/ZsDB8+HIMHD8ZFF12E77//Hj/88AOGDBkCANizZw9GjhyJkSNH4q233kK7du2wZs0ajBw5MqXcsskZvEDO789//rPFSAOQktZbtjxt27bFEUccITTAVZgwYQIuvfRS/Oc//8GkSZPw4IMP4u2338Z5553ned+AeQ06duyYcM+koQ0ujb/MnGm6EdthGMDateZ2zLyWRqPRaDQaG0I4ZM8dolHg2WfN12wiPvL+mWfSNwNcUlKCTp06YdasWZbPZ82alVBnSLxSPB5P2ebmm29GRUUFjjnmGBQWFmLLli2eypOXl4d7770X9913H/bt24fevXujsLAQa9asQffu3S1/Xbp0SfxuyJAhmDp1KmbMmIGhQ4eidevWOProo/Hoo4+iY8eOOOqoowAA3333HbZu3YrHH38cgwYNQq9evVLidXgceeSRyM/Px9y5cxOfbd++Hd9//73jb9esWYP169cn3s+ZMwd5eXno2bMnOnTogE6dOuGnn35KOT+Z+EC3zJkzJ/GanMfRRx9tu/1RRx2FW2+9FZMnT8bYsWPx6quvAgCOPvpobt056qijEI1G0atXL9TX12P+/PmJ71esWIEdO3Yk3vfv3x8bNmxALBZLuQZt27b16Yw1LDU1/m6n0Wg0Go1GG1KBM3Ys8N57ACOwoKzM/Hzs2PSW584778Tvfvc7/OMf/8CKFStw9913Y9GiRYnFUtu3b4/i4mJ8/PHH2LhxY2KR5B49euCvf/0rli9fjrlz52LcuHEoLi72XJ5f/vKXiEajeP7559G8eXPccccduPXWW/H6669j5cqVWLBgAf74xz9akjEMHToUn3zyCWKxGHr16pX47K233kqoUYDpZldQUIA//vGP+Omnn/Dvf/8bjzzyiGOZmjVrhquvvhp33nknPv/8cyxduhRXXnmllOJTVFSEK664AosXL8bMmTNx880348ILL0RpaSkA4KGHHsLEiRPx3HPP4fvvv8eSJUvw6quv4qmnnlK9dADMJCAbN27Ehg0bEn9sys6HH34Yn332WeI82rZty100ed++fbjp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", - "text/plain": [ - "<Figure size 1000x500 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, { - "data": { - "text/html": [], - "text/plain": [ - "<IPython.core.display.HTML object>" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 510/600: Total Reward = -0.21\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.08 |\n", + "| ep_rew_mean | -0.321 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 129 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 425515 |\n", + "| train/ | |\n", + "| entropy_loss | -5.94 |\n", + "| explained_variance | 0.975 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 85102 |\n", + "| policy_loss | -0.26 |\n", + "| std | 0.599 |\n", + "| value_loss | 0.0025 |\n", + "------------------------------------\n" + ] }, { - "data": { - "text/html": [ - "<br> <style><br> .wandb-row {<br> display: flex;<br> flex-direction: row;<br> flex-wrap: wrap;<br> justify-content: flex-start;<br> width: 100%;<br> }<br> .wandb-col {<br> display: flex;<br> flex-direction: column;<br> flex-basis: 100%;<br> flex: 1;<br> padding: 10px;<br> }<br> </style><br><div class=\"wandb-row\"><div class=\"wandb-col\"><h3>Run history:</h3><br/><table class=\"wandb\"><tr><td>episode</td><td>▁▁▁▂▂▂▃▃▃▃▄▄▄▄▄▅▅▅▅▅▅▅▅▅▆▆▆▆▆▆▇▇▇▇▇▇▇▇██</td></tr><tr><td>total_reward</td><td>█▅█▇█▆▆██▃█▄▇▅▂▃▆▅█▆▅▃▄▂▆▂▃██▁▆█▆▆██▄█▂▁</td></tr></table><br/></div><div class=\"wandb-col\"><h3>Run summary:</h3><br/><table class=\"wandb\"><tr><td>episode</td><td>500</td></tr><tr><td>total_reward</td><td>414</td></tr></table><br/></div></div>" - ], - "text/plain": [ - "<IPython.core.display.HTML object>" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, { - "data": { - "text/html": [ - " View run <strong style=\"color:#cdcd00\">major-oath-3</strong> at: <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/wb_sb3/runs/h0conaa8' target=\"_blank\">https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/wb_sb3/runs/h0conaa8</a><br> View project at: <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/wb_sb3' target=\"_blank\">https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/wb_sb3</a><br>Synced 5 W&B file(s), 1 media file(s), 0 artifact file(s) and 0 other file(s)" - ], - "text/plain": [ - "<IPython.core.display.HTML object>" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 511/600: Total Reward = -0.09\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.69 |\n", + "| ep_rew_mean | -0.297 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 128 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 426350 |\n", + "| train/ | |\n", + "| entropy_loss | -5.9 |\n", + "| explained_variance | 0.0287 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 85269 |\n", + "| policy_loss | 0.41 |\n", + "| std | 0.595 |\n", + "| value_loss | 0.00898 |\n", + "------------------------------------\n" + ] }, { - "data": { - "text/html": [ - "Find logs at: <code>./wandb/run-20250210_220810-h0conaa8/logs</code>" - ], - "text/plain": [ - "<IPython.core.display.HTML object>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import gymnasium as gym\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from stable_baselines3 import A2C\n", - "from stable_baselines3.common.monitor import Monitor\n", - "from stable_baselines3.common.vec_env import DummyVecEnv\n", - "import wandb\n", - "\n", - "# Initialize W&B for experiment tracking\n", - "wandb.init(project=\"wb_sb3\", config={\"learning_rate\": 0.001, \"total_timesteps\": 100000}, sync_tensorboard=True)\n", - "\n", - "# Create and wrap the CartPole environment\n", - "env = gym.make(\"CartPole-v1\")\n", - "env = Monitor(env)\n", - "env = DummyVecEnv([lambda: env])\n", - "\n", - "# Initialize the A2C model\n", - "model = A2C(\"MlpPolicy\", env, verbose=1)\n", - "\n", - "# Train the model\n", - "model.learn(total_timesteps=100000)\n", - "\n", - "# Save the trained model\n", - "model.save(\"a2c_cartpole_WB\")\n", - "print(\"Model saved successfully!\")\n", - "\n", - "num_episodes = 500 # Number of learn episodes\n", - "episode_rewards = []\n", - "\n", - "for episode in range(num_episodes):\n", - " obs = env.reset()\n", - " done = False\n", - " total_reward = 0\n", - "\n", - " while not done:\n", - " action, _states = model.predict(obs)\n", - " obs, reward, done, info = env.step(action)\n", - "\n", - " total_reward += reward[0]\n", - " done = done[0]\n", - "\n", - " episode_rewards.append(total_reward)\n", - "\n", - "# Log the total rewards of each episode to WB\n", - "for i, reward in enumerate(episode_rewards):\n", - " wandb.log({\"episode\": i + 1, \"total_reward\": reward})\n", - "\n", - "# Plot the episode rewards\n", - "plt.figure(figsize=(10, 5))\n", - "plt.plot(range(1, num_episodes + 1), episode_rewards, marker=\"o\", linestyle=\"-\", color=\"b\", label=\"Total Reward per Episode\")\n", - "plt.xlabel(\"Episode\")\n", - "plt.ylabel(\"Total Reward\")\n", - "plt.title(\"Total Reward per Episode during Evaluation\")\n", - "plt.legend()\n", - "plt.grid(True)\n", - "plt.savefig(\"episode_rewards_plot.png\") # Save the plot as an image\n", - "plt.show()\n", - "\n", - "# Log the plot to WB\n", - "wandb.log({\"Episode Rewards Plot\": wandb.Image(\"episode_rewards_plot.png\")})\n", - "\n", - "# Close the environment\n", - "env.close()\n", - "\n", - "# Finish WB run\n", - "wandb.finish()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Dd80KFQO6ncb" - }, - "source": [ - "upload" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 489, - "referenced_widgets": [ - "105a958acd644ed2bcab9791de217aed", - "b5ddd303cc494ecd865fab744c7c7017", - "477c8ee0c2d94a5f9113b04e7e564aae", - "22963ccded02458d8047644dea108c0f", - "9cd838bc92c144108ad7fb2717dfa058", - "8bf9caee159f4f03b4b9be6500f7118a", - "5dfdcec102ef454893d2337010e465b7", - "d2b3dfcf04a44fb692b800cf0bb7f802", - "a0fffd5ee818454da360030f6e1466ae", - "5a73da851a4443208a79bfadb025bec4", - "10f2c206b3b6403f871d78f6f665c937", - "f48bd46317b54ebc9d55eee77b4eb165", - "dac9eb72052f448fbb17389d3acfbbfb", - "a7098ce07385468ba0b61a39601155ca", - "03743e7926594213aaa8a4ea7f149e47", - "e097d0070f30469abbd542994e74bf81", - "451f1b9792f64fa68eb0f68c0aefbc0d", - "ba48466f16a44983b96b20123c966be9", - "a6d98acbf717475dbfd80407d9256f5d", - "57b8419adedf4abe8d950d18057aa7e5", - "4916f07bcd1c47339946d15b1b44285b", - "1c9b00b0286f45a1a38ad992723d0efa", - "3a3f1bb3be714c71bc71a7db8fc31189", - "28e092db03774e4db332da6f1f0d3dd6", - "b899e2f587a34972ae41853ae62236fe", - "23f1b8afdbbf4dc3a3ddaaae094a287a", - "aa6c1072bcd94715a93b9c0f598981a5", - "e64bd642eab44cffa9d8c8e3a64103e7", - "053eca19faa24c35833c132c1af7b94c", - "536343b057e64933a62fe9aac074da24", - "333eaf4f77744246b98456a844fcca2d", - "7595680d757448eab257e813cbf506b1", - "b99ab3e32f10455398319b8c3e99ed18", - "d996b268e9c24f85a73ca1017f8cc5fa", - "cdca8fecc2cc412282c4f41ba141017d", - "508ba1fe83a24b83a6b26626ff71f22f", - "c135ded2efad4a0d8bddea2e51bc6459", - "9b4427af69fd454eb54eaf678465ceee", - "406df9e39d29497dab95d0890ebc006f", - "da0b9ac258dd482fa342021ceb684aa7", - "cd24c5adf102474493f9b7642a65dd57", - "8711ae2fa5174670afb295d8c788d2ac", - "f183c2895da7440a80edc87f5a130fee", - "8eecebc2ee5a42978670c9f2b0e5f592", - "d7cfb3fea4444e6ca69e7bdb4f86d40d", - "c8df02b3721d4a97b6c6336e896ff179", - "c48c8dc4a77f4dfaa2adede6518d373c", - "ea68977e2bc642358854ed2313d4c9bc", - "13f76670252d4fcbaf43c831b8fe1ee7", - "f22b7b1e400a4ed98dc754b073a9a40a", - "19a6e413bee74cc083c01d1b5d8dfee6", - "0c6aaba7ffb04fe2a5babdcb5c3e955d", - "b6d13ee968fa4473baecb877b8f302f8", - "7b3c7a0ac0424cb7af4f7e1dfbdc513b", - "79a31c28dd1e4bb8b2e2252b5fd1a940" - ] - }, - "id": "8OIhM8GAm8gT", - "outputId": "5e91e213-44a8-41dc-c203-44f3c2358283" - }, - "outputs": [ + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 512/600: Total Reward = -0.36\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.94 |\n", + "| ep_rew_mean | -0.308 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 126 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 427185 |\n", + "| train/ | |\n", + "| entropy_loss | -5.89 |\n", + "| explained_variance | 0.802 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 85436 |\n", + "| policy_loss | -0.217 |\n", + "| std | 0.593 |\n", + "| value_loss | 0.00354 |\n", + "------------------------------------\n" + ] + }, { - "name": "stdout", "output_type": "stream", + "name": "stderr", "text": [ - "\u001b[38;5;4mℹ This function will save, evaluate, generate a video of your agent,\n", - "create a model card and push everything to the hub. It might take up to 1min.\n", - "This is a work in progress: if you encounter a bug, please open an issue.\u001b[0m\n", - "Saving video to /tmp/tmprujl5nt1/-step-0-to-step-1000.mp4\n", - "Moviepy - Building video /tmp/tmprujl5nt1/-step-0-to-step-1000.mp4.\n", - "Moviepy - Writing video /tmp/tmprujl5nt1/-step-0-to-step-1000.mp4\n", - "\n" + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" ] }, { - "name": "stderr", "output_type": "stream", - "text": [] + "name": "stdout", + "text": [ + "Episode 513/600: Total Reward = -0.42\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.58 |\n", + "| ep_rew_mean | -0.375 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 120 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 428020 |\n", + "| train/ | |\n", + "| entropy_loss | -5.91 |\n", + "| explained_variance | 0.832 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 85603 |\n", + "| policy_loss | -0.0776 |\n", + "| std | 0.594 |\n", + "| value_loss | 0.00141 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, { + "output_type": "stream", "name": "stdout", + "text": [ + "Episode 514/600: Total Reward = -0.03\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.65 |\n", + "| ep_rew_mean | -0.296 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 108 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 428855 |\n", + "| train/ | |\n", + "| entropy_loss | -5.92 |\n", + "| explained_variance | 0.964 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 85770 |\n", + "| policy_loss | 0.158 |\n", + "| std | 0.595 |\n", + "| value_loss | 0.00132 |\n", + "------------------------------------\n" + ] + }, + { "output_type": "stream", + "name": "stderr", "text": [ - "Moviepy - Done !\n", - "Moviepy - video ready /tmp/tmprujl5nt1/-step-0-to-step-1000.mp4\n", - "\u001b[38;5;1m✘ 'DummyVecEnv' object has no attribute 'video_recorder'\u001b[0m\n", - "\u001b[38;5;1m✘ We are unable to generate a replay of your agent, the package_to_hub\n", - "process continues\u001b[0m\n", - "\u001b[38;5;1m✘ Please open an issue at\n", - "https://github.com/huggingface/huggingface_sb3/issues\u001b[0m\n", - "\u001b[38;5;4mℹ Pushing repo oussamab2n/a2c-cartpole-wb to the Hugging Face Hub\u001b[0m\n" + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" ] }, { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "105a958acd644ed2bcab9791de217aed", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "policy.pth: 0%| | 0.00/41.1k [00:00<?, ?B/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 515/600: Total Reward = -0.17\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.79 |\n", + "| ep_rew_mean | -0.305 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 127 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 429690 |\n", + "| train/ | |\n", + "| entropy_loss | -5.93 |\n", + "| explained_variance | 0.997 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 85937 |\n", + "| policy_loss | 0.19 |\n", + "| std | 0.596 |\n", + "| value_loss | 0.00169 |\n", + "------------------------------------\n" + ] }, { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "f48bd46317b54ebc9d55eee77b4eb165", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "policy.optimizer.pth: 0%| | 0.00/43.4k [00:00<?, ?B/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "3a3f1bb3be714c71bc71a7db8fc31189", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "pytorch_variables.pth: 0%| | 0.00/864 [00:00<?, ?B/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 516/600: Total Reward = -0.50\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.96 |\n", + "| ep_rew_mean | -0.323 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 80 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 430525 |\n", + "| train/ | |\n", + "| entropy_loss | -5.92 |\n", + "| explained_variance | 0.216 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 86104 |\n", + "| policy_loss | -0.124 |\n", + "| std | 0.596 |\n", + "| value_loss | 0.00559 |\n", + "------------------------------------\n" + ] }, { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "d996b268e9c24f85a73ca1017f8cc5fa", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Upload 4 LFS files: 0%| | 0/4 [00:00<?, ?it/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "d7cfb3fea4444e6ca69e7bdb4f86d40d", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "a2c-cartpole-wb.zip: 0%| | 0.00/101k [00:00<?, ?B/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 517/600: Total Reward = -0.29\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.94 |\n", + "| ep_rew_mean | -0.321 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 122 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 431360 |\n", + "| train/ | |\n", + "| entropy_loss | -5.87 |\n", + "| explained_variance | 0.624 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 86271 |\n", + "| policy_loss | -0.381 |\n", + "| std | 0.592 |\n", + "| value_loss | 0.0108 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, { + "output_type": "stream", "name": "stdout", + "text": [ + "Episode 518/600: Total Reward = -0.11\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.88 |\n", + "| ep_rew_mean | -0.319 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 73 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 432195 |\n", + "| train/ | |\n", + "| entropy_loss | -5.83 |\n", + "| explained_variance | 0.871 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 86438 |\n", + "| policy_loss | 0.59 |\n", + "| std | 0.588 |\n", + "| value_loss | 0.0148 |\n", + "------------------------------------\n" + ] + }, + { "output_type": "stream", + "name": "stderr", "text": [ - "\u001b[38;5;4mℹ Your model is pushed to the Hub. You can view your model here:\n", - "https://huggingface.co/oussamab2n/a2c-cartpole-wb/tree/main/\u001b[0m\n", - "✅ Model successfully uploaded to Hugging Face Hub!\n" + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" ] - } - ], - "source": [ - "from huggingface_sb3 import package_to_hub\n", - "\n", - "\n", - "repo_id = \"oussamab2n/a2c-cartpole-wb\"\n", - "\n", - "# Create environment\n", - "eval_env = gym.make(\"CartPole-v1\",render_mode=\"rgb_array\")\n", - "eval_env = Monitor(eval_env)\n", - "eval_env = DummyVecEnv([lambda: eval_env]) # Wrap environment\n", - "\n", - "# Upload model to Hugging Face\n", - "package_to_hub(\n", - " model=model,\n", - " model_name=\"a2c-cartpole-wb\",\n", - " model_architecture=\"A2C\",\n", - " env_id=\"CartPole-v1\",\n", - " eval_env=eval_env,\n", - " repo_id=repo_id,\n", - " commit_message=\"Upload A2C model trained on CartPole-v1 with W&B logging\"\n", - ")\n", - "\n", - "print(\"Model successfully uploaded to Hugging Face Hub!\")\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "-IY2wgfc6p8U" - }, - "source": [ - "evaluate" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 1000 }, - "id": "34h0joTT7ooj", - "outputId": "4284581c-00c1-49a9-f298-807495fb2fcc" - }, - "outputs": [ { - "output_type": "display_data", - "data": { - "text/plain": [ - "<IPython.core.display.HTML object>" - ], - "text/html": [ - "Tracking run with wandb version 0.19.7" - ] - }, - "metadata": {} + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 519/600: Total Reward = -0.44\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.23 |\n", + "| ep_rew_mean | -0.348 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 130 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 433030 |\n", + "| train/ | |\n", + "| entropy_loss | -5.86 |\n", + "| explained_variance | 0.995 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 86605 |\n", + "| policy_loss | -0.143 |\n", + "| std | 0.589 |\n", + "| value_loss | 0.000786 |\n", + "------------------------------------\n" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": [ - "<IPython.core.display.HTML object>" - ], - "text/html": [ - "Run data is saved locally in <code>/content/wandb/run-20250222_130200-si01h5dj</code>" - ] - }, - "metadata": {} + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": [ - "<IPython.core.display.HTML object>" - ], - "text/html": [ - "Syncing run <strong><a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/cartpole-evaluation/runs/si01h5dj' target=\"_blank\">A2C-CartPole</a></strong> to <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/cartpole-evaluation' target=\"_blank\">Weights & Biases</a> (<a href='https://wandb.me/developer-guide' target=\"_blank\">docs</a>)<br>" - ] - }, - "metadata": {} + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 520/600: Total Reward = -0.12\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.76 |\n", + "| ep_rew_mean | -0.388 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 77 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 433865 |\n", + "| train/ | |\n", + "| entropy_loss | -5.82 |\n", + "| explained_variance | 0.9 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 86772 |\n", + "| policy_loss | -0.044 |\n", + "| std | 0.586 |\n", + "| value_loss | 0.00096 |\n", + "------------------------------------\n" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": [ - "<IPython.core.display.HTML object>" - ], - "text/html": [ - " View project at <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/cartpole-evaluation' target=\"_blank\">https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/cartpole-evaluation</a>" - ] - }, - "metadata": {} + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": [ - "<IPython.core.display.HTML object>" - ], - "text/html": [ - " View run at <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/cartpole-evaluation/runs/si01h5dj' target=\"_blank\">https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/cartpole-evaluation/runs/si01h5dj</a>" - ] - }, - "metadata": {} + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 521/600: Total Reward = -0.67\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.27 |\n", + "| ep_rew_mean | -0.338 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 127 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 434700 |\n", + "| train/ | |\n", + "| entropy_loss | -5.82 |\n", + "| explained_variance | 0.869 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 86939 |\n", + "| policy_loss | 0.328 |\n", + "| std | 0.585 |\n", + "| value_loss | 0.00463 |\n", + "------------------------------------\n" + ] }, { "output_type": "stream", "name": "stderr", "text": [ - "/usr/local/lib/python3.11/dist-packages/gymnasium/wrappers/rendering.py:283: UserWarning: \u001b[33mWARN: Overwriting existing videos at /content/videos1 folder (try specifying a different `video_folder` for the `RecordVideo` wrapper if this is not desired)\u001b[0m\n", - " logger.warn(\n" - ] - }, - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Episode 1: Total Reward = 500.0\n", - "Episode 2: Total Reward = 500.0\n", - "Episode 3: Total Reward = 500.0\n", - "Episode 4: Total Reward = 500.0\n", - "Episode 5: Total Reward = 500.0\n", - "Episode 6: Total Reward = 500.0\n", - "Episode 7: Total Reward = 500.0\n", - "Episode 8: Total Reward = 500.0\n", - "Episode 9: Total Reward = 500.0\n", - "Episode 10: Total Reward = 500.0\n", - "Episode 11: Total Reward = 500.0\n", - "Episode 12: Total Reward = 500.0\n", - "Episode 13: Total Reward = 500.0\n", - "Episode 14: Total Reward = 500.0\n", - "Episode 15: Total Reward = 500.0\n", - "Episode 16: Total Reward = 500.0\n", - "Episode 17: Total Reward = 500.0\n", - "Episode 18: Total Reward = 500.0\n", - "Episode 19: Total Reward = 500.0\n", - "Episode 20: Total Reward = 500.0\n", - "Episode 21: Total Reward = 500.0\n", - "Episode 22: Total Reward = 500.0\n", - "Episode 23: Total Reward = 500.0\n", - "Episode 24: Total Reward = 500.0\n", - "Episode 25: Total Reward = 500.0\n", - "Episode 26: Total Reward = 500.0\n", - "Episode 27: Total Reward = 500.0\n", - "Episode 28: Total Reward = 500.0\n", - "Episode 29: Total Reward = 500.0\n", - "Episode 30: Total Reward = 500.0\n", - "Episode 31: Total Reward = 500.0\n", - "Episode 32: Total Reward = 500.0\n", - "Episode 33: Total Reward = 500.0\n", - "Episode 34: Total Reward = 500.0\n", - "Episode 35: Total Reward = 500.0\n", - "Episode 36: Total Reward = 500.0\n", - "Episode 37: Total Reward = 500.0\n", - "Episode 38: Total Reward = 500.0\n", - "Episode 39: Total Reward = 500.0\n", - "Episode 40: Total Reward = 500.0\n", - "Episode 41: Total Reward = 500.0\n", - "Episode 42: Total Reward = 500.0\n", - "Episode 43: Total Reward = 500.0\n", - "Episode 44: Total Reward = 500.0\n", - "Episode 45: Total Reward = 500.0\n", - "Episode 46: Total Reward = 500.0\n", - "Episode 47: Total Reward = 500.0\n", - "Episode 48: Total Reward = 500.0\n", - "Episode 49: Total Reward = 500.0\n", - "Episode 50: Total Reward = 500.0\n", - "Episode 51: Total Reward = 500.0\n", - "Episode 52: Total Reward = 500.0\n", - "Episode 53: Total Reward = 500.0\n", - "Episode 54: Total Reward = 500.0\n", - "Episode 55: Total Reward = 500.0\n", - "Episode 56: Total Reward = 500.0\n", - "Episode 57: Total Reward = 500.0\n", - "Episode 58: Total Reward = 500.0\n", - "Episode 59: Total Reward = 500.0\n", - "Episode 60: Total Reward = 500.0\n", - "Episode 61: Total Reward = 500.0\n", - "Episode 62: Total Reward = 500.0\n", - "Episode 63: Total Reward = 500.0\n", - "Episode 64: Total Reward = 500.0\n", - "Episode 65: Total Reward = 500.0\n", - "Episode 66: Total Reward = 500.0\n", - "Episode 67: Total Reward = 500.0\n", - "Episode 68: Total Reward = 500.0\n", - "Episode 69: Total Reward = 500.0\n", - "Episode 70: Total Reward = 500.0\n", - "Episode 71: Total Reward = 500.0\n", - "Episode 72: Total Reward = 500.0\n", - "Episode 73: Total Reward = 500.0\n", - "Episode 74: Total Reward = 500.0\n", - "Episode 75: Total Reward = 500.0\n", - "Episode 76: Total Reward = 500.0\n", - "Episode 77: Total Reward = 500.0\n", - "Episode 78: Total Reward = 500.0\n", - "Episode 79: Total Reward = 500.0\n", - "Episode 80: Total Reward = 500.0\n", - "Episode 81: Total Reward = 500.0\n", - "Episode 82: Total Reward = 500.0\n", - "Episode 83: Total Reward = 500.0\n", - "Episode 84: Total Reward = 500.0\n", - "Episode 85: Total Reward = 500.0\n", - "Episode 86: Total Reward = 500.0\n", - "Episode 87: Total Reward = 500.0\n", - "Episode 88: Total Reward = 500.0\n", - "Episode 89: Total Reward = 500.0\n", - "Episode 90: Total Reward = 500.0\n", - "Episode 91: Total Reward = 500.0\n", - "Episode 92: Total Reward = 500.0\n", - "Episode 93: Total Reward = 500.0\n", - "Episode 94: Total Reward = 500.0\n", - "Episode 95: Total Reward = 500.0\n", - "Episode 96: Total Reward = 500.0\n", - "Episode 97: Total Reward = 500.0\n", - "Episode 98: Total Reward = 500.0\n", - "Episode 99: Total Reward = 500.0\n", - "Episode 100: Total Reward = 500.0\n", - "\n", - " Evaluation Completed!\n", - "Number of Perfect Episodes (Reward == 500): 100 / 100\n" + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" ] }, { - "output_type": "display_data", - "data": { - "text/plain": [ - "<Figure size 1000x500 with 1 Axes>" - ], - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAHWCAYAAAB9mLjgAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAWmBJREFUeJzt3Xd4VGX+/vF70gsplIQQCEV6l7JCkCqBUBYXVBQICoqiCNKEBXUVWMVgQ6yAuoIFpSqiC0iUjjRpq4IISCehkwCBkPL8/uCX+TIkwJyYZAbyfl3XXGaec+aczzPzCebOKbEZY4wAAAAAAE7zcHUBAAAAAHCzIUgBAAAAgEUEKQAAAACwiCAFAAAAABYRpAAAAADAIoIUAAAAAFhEkAIAAAAAiwhSAAAAAGARQQoAAAAALCJIAbhlLF++XDabTcuXL3d1KW7BZrNp7Nixri7DJaZPny6bzaZ9+/YV6n4L6z0vqP0UxZ5p3bq1Wrdu7bL9F8X3HLhVEKQA/CU2m82phzPh5uWXX9b8+fMLvObsH7KzH15eXipbtqz69u2rw4cPF/j+4Sg7AF/rMXPmTFeXiAK2b9++6/bAhAkTXF3iX7Jw4ULCEnAL8nJ1AQBubp999pnD808//VQJCQk5xmvWrHnDbb388su677771LVr1/ws8Zr+/e9/q1KlSrp48aLWrVun6dOna/Xq1fr111/l5+dXKDXg/wwePFh/+9vfcoxHR0db3taDDz6oHj16yNfXNz9KKzIuXLggLy/X/WjQs2dPderUKcd4gwYNXFBN/lm4cKHee++9XMOUq99zAHnHdy6Av6R3794Oz9etW6eEhIQc4+6oY8eOaty4sSTp0UcfValSpfTKK69owYIFuv/++11c3Y2dP39egYGBri7DKc7U2qJFC9133335sj9PT095enrmy7ZudVlZWbp06ZL8/Pxc/guEhg0b3hT/duQnV7/nAPKOU/sAFLjz58/r6aefVlRUlHx9fVW9enW9/vrrMsbY17HZbDp//rw++eQT++k8ffv2lSTt379fTz75pKpXry5/f3+VLFlS3bt3z/frX1q0aCFJ2rNnj8P477//rvvuu08lSpSQn5+fGjdurAULFtiXnzlzRp6ennr77bftYydOnJCHh4dKlizpMM8BAwYoIiLC/nzVqlXq3r27ypcvL19fX0VFRWnYsGG6cOGCQw19+/ZVsWLFtGfPHnXq1ElBQUGKi4uTJKWlpWnYsGEKCwtTUFCQ7r77bh06dMipOWefVjdr1iw9++yzioiIUGBgoO6++24dPHgwx/rr169Xhw4dFBISooCAALVq1Upr1qxxWGfs2LGy2Wzavn27evXqpeLFi6t58+ZO1XMjNptNgwYN0owZM1S9enX5+fmpUaNGWrlypcN6uV0j9fPPPys2NlalSpWSv7+/KlWqpEceecThdc70qmTtPT98+LAeeeQRlS5dWr6+vqpdu7Y+/vhjp+br7H769u2rihUr5hjP/iyudOV7WLt2bfn6+mrx4sX2ZVceNcl+/e7du9W3b1+FhoYqJCREDz/8sFJTUx22e+HCBQ0ePFilSpWy13r48OF8vQbo73//u2677bZcl0VHR9t/MSJJ06ZN01133aXw8HD5+vqqVq1amjx58g33ca3r63K7BtOZ79++ffvqvffek+R4KnS23N6fLVu2qGPHjgoODlaxYsXUtm1brVu3Ltc616xZo+HDhyssLEyBgYHq1q2bjh8/fsN5AvjrOCIFoEAZY3T33Xdr2bJl6tevn26//XZ9//33GjlypA4fPqw333xT0uVTBB999FHdcccd6t+/vySpcuXKkqSNGzfqp59+Uo8ePVSuXDnt27dPkydPVuvWrbV9+3YFBATkS63ZPzgVL17cPvbbb7/pzjvvVNmyZTV69GgFBgZq9uzZ6tq1q+bNm6du3bopNDRUderU0cqVKzV48GBJ0urVq2Wz2XTq1Clt375dtWvXlnT5B6/swCZJc+bMUWpqqgYMGKCSJUtqw4YNeuedd3To0CHNmTPHob6MjAzFxsaqefPmev311+3zfvTRR/X555+rV69eatasmZYuXarOnTtbmvv48eNls9k0atQoHTt2TJMmTVJMTIy2bt0qf39/SdLSpUvVsWNHNWrUSGPGjJGHh4f9h9VVq1bpjjvucNhm9+7dVbVqVb388ss5gkhuzp49qxMnTuQYL1mypMMPnitWrNCsWbM0ePBg+fr66v3331eHDh20YcMG1alTJ9dtHzt2TO3bt1dYWJhGjx6t0NBQ7du3T1999ZV9HWd7VXL+PT969KiaNm1qDy9hYWFatGiR+vXrp5SUFA0dOvS670l+fLa5Wbp0qWbPnq1BgwapVKlSuYawK91///2qVKmS4uPjtXnzZn300UcKDw/XK6+8Yl+nb9++mj17th588EE1bdpUK1assFxrampqrj0QGhoqLy8vPfDAA3rooYe0ceNGh9NA9+/fr3Xr1um1116zj02ePFm1a9fW3XffLS8vL3377bd68sknlZWVpYEDB1qq61qc+f59/PHHdeTIkVxPec7Nb7/9phYtWig4OFj//Oc/5e3tralTp6p169ZasWKFmjRp4rD+U089peLFi2vMmDHat2+fJk2apEGDBmnWrFn5MkcA12EAIB8NHDjQXPlPy/z5840k89JLLzmsd9999xmbzWZ2795tHwsMDDR9+vTJsc3U1NQcY2vXrjWSzKeffmofW7ZsmZFkli1bdt0ap02bZiSZH374wRw/ftwcPHjQzJ0714SFhRlfX19z8OBB+7pt27Y1devWNRcvXrSPZWVlmWbNmpmqVas6zLt06dL258OHDzctW7Y04eHhZvLkycYYY06ePGlsNpt56623rju3+Ph4Y7PZzP79++1jffr0MZLM6NGjHdbdunWrkWSefPJJh/FevXoZSWbMmDHXfS+y37OyZcualJQU+/js2bONJHutWVlZpmrVqiY2NtZkZWU51F+pUiXTrl07+9iYMWOMJNOzZ8/r7vvqGq71SExMtK+bPfbzzz/bx/bv32/8/PxMt27d7GPZn/HevXuNMcZ8/fXXRpLZuHHjNetwtletvOf9+vUzZcqUMSdOnHBYt0ePHiYkJCTXzz+blf306dPHVKhQIcc2sj+LK0kyHh4e5rfffsux/tXbzX79I4884rBet27dTMmSJe3PN23aZCSZoUOHOqzXt29fp/pw79691+2BtWvXGmOMSU5ONr6+vubpp592eP2rr76a43smt/c2NjbW3HbbbQ5jrVq1Mq1atbI/v7p3suX274uz379X/7t4pavfn65duxofHx+zZ88e+9iRI0dMUFCQadmyZY46Y2JiHL4nhw0bZjw9Pc2ZM2dy3R+A/MOpfQAK1MKFC+Xp6Wk/UpPt6aefljFGixYtuuE2so+ISFJ6erpOnjypKlWqKDQ0VJs3b85zbTExMQoLC1NUVJTuu+8+BQYGasGCBSpXrpwk6dSpU1q6dKnuv/9++9GSEydO6OTJk4qNjdWuXbvsd/lr0aKFjh49qp07d0q6fOSpZcuWatGihVatWiXp8lEqY4zDEakr53b+/HmdOHFCzZo1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6NGj+uKLL9S8eXMFBwffcA4ACgdHpAAUqC5duqhNmzZ67rnntG/fPtWvX19LlizRN998o6FDhzpc/9GoUSP98MMPmjhxov1UuSZNmujvf/+7PvvsM4WEhKhWrVpau3atfvjhB5UsWTLf6x05cqS6d++u6dOn64knntB7772n5s2bq27dunrsscd022236ejRo1q7dq0OHTqkbdu22V+bHZJ27typl19+2T7esmVLLVq0SL6+vg63bK5Ro4YqV66sESNG6PDhwwoODta8efMsXdtw++23q2fPnnr//feVnJysZs2a6ccff7R8JKBEiRJq3ry5Hn74YR09elSTJk1SlSpV9Nhjj0m6HAg/+ugjdezYUbVr19bDDz+ssmXL6vDhw1q2bJmCg4P17bffWtrn1VatWqWLFy/mGK9Xr57DKXB16tRRbGysw+3PJTkc7bvaJ598ovfff1/dunVT5cqVdfbsWX344YcKDg5Wp06dJDnfq1be8wkTJmjZsmVq0qSJHnvsMdWqVUunTp3S5s2b9cMPP+jUqVPXrNnKfnr06KFRo0apW7duGjx4sFJTUzV58mRVq1btL92QxVmNGjXSvffeq0mTJunkyZP225//8ccfkpw/IrN582Z9/vnnOcYrV66s6Oho+/Psv6U2YsQIe2C9Uvv27eXj46MuXbro8ccf17lz5/Thhx8qPDw811+KXKl27dpq2rSpnnnmGZ06dUolSpTQzJkzlZGR4bCele/f7JujDB48WLGxsfL09FSPHj1y3f9LL72khIQENW/eXE8++aS8vLw0depUpaWl6dVXX71u7QAKWaHeIxDALS+32/yePXvWDBs2zERGRhpvb29TtWpV89prrzncstcYY37//XfTsmVL4+/vbyTZb4V++vRp8/DDD5tSpUqZYsWKmdjYWPP777+bChUqONwu3ertz3O7FXZmZqapXLmyqVy5ssnIyDDGGLNnzx7z0EMPmYiICOPt7W3Kli1r/v73v5u5c+fmeH14eLiRZI4ePWofW716tZFkWrRokWP97du3m5iYGFOsWDFTqlQp89hjj5lt27YZSWbatGn29fr06WMCAwNznc+FCxfM4MGDTcmSJU1gYKDp0qWLOXjwoKXbn3/55ZfmmWeeMeHh4cbf39907tzZ4fbN2bZs2WLuueceU7JkSePr62sqVKhg7r//fvPjjz/a18m+Zfbx48evu++ra7jW48o5SDIDBw40n3/+ualatarx9fU1DRo0yPGZX30L682bN5uePXua8uXLG19fXxMeHm7+/ve/O9xG3Rjne9XKe3706FEzcOBAExUVZby9vU1ERIRp27at+eCDD2743ljZz5IlS0ydOnWMj4+PqV69uvn888+vefvzgQMH5rq/q7d7rc8yt1uEnz9/3gwcONCUKFHCFCtWzHTt2tXs3LnTSDITJky47jxvdPvz3P4sQlxcnP3237lZsGCBqVevnvHz8zMVK1Y0r7zyivn4449z1H317c+Nufw9HxMTY3x9fU3p0qXNs88+axISEnL8++Ls929GRoZ56qmnTFhYmLHZbA6fSW6f5ebNm01sbKwpVqyYCQgIMG3atDE//fSTwzrX+nfM2X8HAfx1NmO4GhEAiqrly5erTZs2mjNnju677z5Xl3NDNptNAwcOzHH6HdzT1q1b1aBBA33++eeKi4tzdTkAkK+4RgoAAPxlFy5cyDE2adIkeXh4qGXLli6oCAAKFtdIAQCAv+zVV1/Vpk2b1KZNG3l5eWnRokVatGiR+vfvz53mANySCFIAAOAva9asmRISEvTiiy/q3LlzKl++vMaOHavnnnvO1aUBQIHgGikAAAAAsIhrpAAAAADAIoIUAAAAAFjENVKSsrKydOTIEQUFBTn9RwMBAAAA3HqMMTp79qwiIyPl4XHt404EKUlHjhzhjkIAAAAA7A4ePKhy5cpdczlBSlJQUJCky29WcHBwge8vPT1dS5YsUfv27eXt7V3g+8Otgb5BXtA3yCt6B3lB3yAv3K1vUlJSFBUVZc8I10KQkuyn8wUHBxdakAoICFBwcLBbNAtuDvQN8oK+QV7RO8gL+gZ54a59c6NLfrjZBAAAAABYRJACAAAAAIsIUgAAAABgEddIAQAAuIAxRhkZGcrMzHR1KfkmPT1dXl5eunjx4i01LxSswu4bT09PeXl5/eU/e0SQAgAAKGSXLl1SYmKiUlNTXV1KvjLGKCIiQgcPHuRvc8JpruibgIAAlSlTRj4+PnneBkEKAACgEGVlZWnv3r3y9PRUZGSkfHx8bpnQkZWVpXPnzqlYsWLX/UOmwJUKs2+MMbp06ZKOHz+uvXv3qmrVqnneJ0EKAACgEF26dElZWVmKiopSQECAq8vJV1lZWbp06ZL8/PwIUnBaYfeNv7+/vL29tX//fvt+84IOBwAAcAGCBuA6+fH9x3cwAAAAAFhEkAIAAAAAiwhSAAAAN6nMTGn5cunLLy//91a847jNZtP8+fNdXUaBad26tYYOHerqMvLV9OnTFRoaWqD7qFixoiZNmlSg+7gRghQAAMBN6KuvpIoVpTZtpF69Lv+3YsXL4wXBZrNd9zF27Nhrvnbfvn2y2WzaunVrvtfVt29few3e3t6qVKmS/vnPf+rixYv5vq+ioGLFirl+vhMmTHB6Gw888ID++OOPAqzSPXDXPgAAgJvMV19J990nGeM4fvjw5fG5c6V77snffSYmJtq/njVrll544QXt3LnTPlasWLH83aEFHTp00LRp05Senq5NmzapT58+stlseuWVV1xW05WMMcrMzJSXl/v86J2eni5vb+9cl/373//WY4895jAWFBTk9Lb9/f3l7+//l+q7GXBECgAAwMWMkc6fd+6RkiINHpwzRGVvR5KGDLm8njPby207uYmIiLA/QkJCZLPZ7M/Dw8M1ceJElS9fXqVLl1bDhg21ePFi+2srVaokSWrQoIFsNptat24tSdq4caPatWunUqVKKSQkRK1atdLmzZstv3++vr6KiIhQVFSUunbtqpiYGCUkJNiXZ2VlKT4+XpUqVZK/v7/q16+vuXPn2pc3btxYr7/+uv15165d5e3trXPnzkmSDh06JJvNpt27d0uSPvvsMzVu3FhBQUGKiIhQr169dOzYMfvrly9fLpvNpkWLFqlRo0by9fXV6tWrdf78eT300EMqVqyYypQpozfeeOOGcxs7dqxuv/12TZ061X7L/Pvvv1/JyckO63300UeqWbOm/Pz8VKNGDb3//vv2ZdlHBGfNmqVWrVrJz89PM2bMuOY+s+d15SMwMNBhbv/9739Vr149+fn5qWnTpvr111/tr7/61L5t27apTZs2CgoKUnBwsBo1aqSff/7ZvnzevHmKjo6Wv7+/KlasmON9OXbsmLp06SJ/f39VqlQp19rPnDmjRx99VGFhYQoODtZdd92lbdu23fD9/SsIUgAAAC6WmioVK+bcIyTk8pGnazFGOnTo8nrObC819a/X/9Zbb+mNN97Qq6++qtWrV6t9+/a6++67tWvXLknShg0bJEk//PCDEhMT9dX/P//w7Nmz6tOnj1avXq1169apatWq6tSpk86ePZvnWn799Vf9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plKlSubChQsurByu1KdPH1O2bFnz3Xffmb1795qvvvrKlCpVyvzzn/+0r0PfwJjLd5PdsmWL2bJli5FkJk6caLZs2WL2799vjHGuTzp06GAaNGhg1q9fb1avXm2qVq1qevbs6aopOSBIFbJ33nnHlC9f3vj4+Jg77rjDrFu3ztUlwY1IyvUxbdo0+zoXLlwwTz75pClevLgJCAgw3bp1M4mJia4rGm7p6iBF3+Bavv32W1OnTh3j6+tratSoYT744AOH5VlZWeb55583pUuXNr6+vqZt27Zm586dLqoW7iAlJcUMGTLElC9f3vj5+ZnbbrvNPPfccyYtLc2+Dn0DY4xZtmxZrj/X9OnTxxjjXJ+cPHnS9OzZ0xQrVswEBwebhx9+2Jw9e9YFs8nJZswVf4YaAAAAAHBDXCMFAAAAABYRpAAAAADAIoIUAAAAAFhEkAIAAAAAiwhSAAAAAGARQQoAAAAALCJIAQAAAIBFBCkAAAAAsIggBQC45e3bt082m01bt24tsH307dtXXbt2LbDtAwDcC0EKAOD2+vbtK5vNluPRoUMHp14fFRWlxMRE1alTp4ArBQAUFV6uLgAAAGd06NBB06ZNcxjz9fV16rWenp6KiIgoiLIAAEUUR6QAADcFX19fRUREODyKFy8uSbLZbJo8ebI6duwof39/3XbbbZo7d679tVef2nf69GnFxcUpLCxM/v7+qlq1qkNI++WXX3TXXXfJ399fJUuWVP/+/XXu3Dn78szMTA0fPlyhoaEqWbKk/vnPf8oY41BvVlaW4uPjValSJfn7+6t+/foONQEAbm4EKQDALeH555/Xvffeq23btikuLk49evTQjh07rrnu9u3btWjRIu3YsUOTJ09WqVKlJEnnz59XbGysihcvro0bN2rOnDn64YcfNGjQIPvr33jjDU2fPl0ff/yxVq9erVOnTunrr7922Ed8fLw+/fRTTZkyRb/99puGDRum3r17a8WKFQX3JgAACo3NXP0rNAAA3Ezfvn31+eefy8/Pz2H82Wef1bPPPiubzaYnnnhCkydPti9r2rSpGjZsqPfff1/79u1TpUqVtGXLFt1+++26++67VapUKX388cc59vXhhx9q1KhROnjwoAIDAyVJCxcuVJcuXXTkyBGVLl1akZGRGjZsmEaOHClJysjIUKVKldSoUSPNnz9faWlpKlGihH744QdFR0fbt/3oo48qNTVVX3zxRUG8TQCAQsQ1UgCAm0KbNm0cgpIklShRwv71lYEl+/m17tI3YMAA3Xvvvdq8ebPat2+vrl27qlmzZpKkHTt2qH79+vYQJUl33nmnsrKytHPnTvn5+SkxMVFNmjSxL/fy8lLjxo3tp/ft3r1bqampateuncN+L126pAYNGlifPADA7RCkAAA3hcDAQFWpUiVfttWxY0ft379fCxcuVEJCgtq2bauBAwfq9ddfz5ftZ19P9d///ldly5Z1WObsDTIAAO6Na6QAALeEdevW5Xhes2bNa64fFhamPn366PPPP9ekSZP0wQcfSJJq1qypbdu26fz58/Z116xZIw8PD1WvXl0hISEqU6aM1q9fb1+ekZGhTZs22Z/XqlVLvr6+OnDggKpUqeLwiIqKyq8pAwBciCNSAICbQlpampKSkhzGvLy87DeJmDNnjho3bqzmzZtrxowZ2rBhg/7zn//kuq0XXnhBjRo1Uu3atZWWlqbvvvvOHrri4uI0ZswY9enTR2PHjtXx48f11FNP6cEHH1Tp0qUlSUOGDNGECRNUtWpV1ahRQxMnTtSZM2fs2w8KCtKIESM0bNgwZWVlqXnz5kpOTtaaNWsUHBysPn36FMA7BAAoTAQpAMBNYfHixSpTpozDWPXq1fX7779LksaNG6eZM2fqySefVJkyZfTll1+qVq1auW7Lx8dHzzzzjPbt2yd/f3+1aNFCM2fOlCQFBATo+++/15AhQ/S3v/1NAQEBuvfeezVx4kT7659++mklJiaqT58+8vDw0COPPKJu3bopOTnZvs6LL76osLAwxcfH688//1RoaKgaNmyoZ599Nr/fGgCAC3DXPgDATc9ms+nrr79W165dXV0KAKCI4BopAAAAALCIIAUAAAAAFnGNFADgpsdZ6gCAwsYRKQAAAACwiCAFAAAAABYRpAAAAADAIoIUAAAAAFhEkAIAAAAAiwhSAAAAAGARQQoAAAAALCJIAQAAAIBF/w+BoumIC+tB6AAAAABJRU5ErkJggg==\n" - }, - "metadata": {} + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 522/600: Total Reward = -0.20\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.25 |\n", + "| ep_rew_mean | -0.428 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 84 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 435535 |\n", + "| train/ | |\n", + "| entropy_loss | -5.82 |\n", + "| explained_variance | 0.37 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 87106 |\n", + "| policy_loss | 0.198 |\n", + "| std | 0.586 |\n", + "| value_loss | 0.00736 |\n", + "------------------------------------\n" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": [ - "<IPython.core.display.HTML object>" - ], - "text/html": [] - }, - "metadata": {} + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": [ - "<IPython.core.display.HTML object>" - ], - "text/html": [ - "<br> <style><br> .wandb-row {<br> display: flex;<br> flex-direction: row;<br> flex-wrap: wrap;<br> justify-content: flex-start;<br> width: 100%;<br> }<br> .wandb-col {<br> display: flex;<br> flex-direction: column;<br> flex-basis: 100%;<br> flex: 1;<br> padding: 10px;<br> }<br> </style><br><div class=\"wandb-row\"><div class=\"wandb-col\"><h3>Run history:</h3><br/><table class=\"wandb\"><tr><td>Episode Reward</td><td>▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁</td></tr></table><br/></div><div class=\"wandb-col\"><h3>Run summary:</h3><br/><table class=\"wandb\"><tr><td>Episode Reward</td><td>500</td></tr></table><br/></div></div>" - ] - }, - "metadata": {} + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 523/600: Total Reward = -0.35\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.85 |\n", + "| ep_rew_mean | -0.316 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 140 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 436370 |\n", + "| train/ | |\n", + "| entropy_loss | -5.82 |\n", + "| explained_variance | 0.974 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 87273 |\n", + "| policy_loss | -0.0137 |\n", + "| std | 0.587 |\n", + "| value_loss | 0.000183 |\n", + "------------------------------------\n" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": [ - "<IPython.core.display.HTML object>" - ], - "text/html": [ - " View run <strong style=\"color:#cdcd00\">A2C-CartPole</strong> at: <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/cartpole-evaluation/runs/si01h5dj' target=\"_blank\">https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/cartpole-evaluation/runs/si01h5dj</a><br> View project at: <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/cartpole-evaluation' target=\"_blank\">https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/cartpole-evaluation</a><br>Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)" - ] - }, - "metadata": {} + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, { - "output_type": "display_data", - "data": { - "text/plain": [ - "<IPython.core.display.HTML object>" - ], - "text/html": [ - "Find logs at: <code>./wandb/run-20250222_130200-si01h5dj/logs</code>" - ] - }, - "metadata": {} - } - ], - "source": [ - "import gymnasium as gym\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import wandb\n", - "from stable_baselines3 import A2C\n", - "from stable_baselines3.common.monitor import Monitor\n", - "from stable_baselines3.common.vec_env import DummyVecEnv\n", - "from huggingface_sb3 import load_from_hub\n", - "import os\n", - "from gymnasium.wrappers import RecordVideo\n", - "from IPython.display import Video, display\n", - "\n", - "\n", - "# Initialize Weights & Biases for evaluation\n", - "wandb.init(project=\"cartpole-evaluation\", name=\"A2C-CartPole\", config={\"num_episodes\": 100})\n", - "\n", - "# Define Hugging Face repository and model filename\n", - "repo_id = \"oussamab2n/a2c-cartpole-wb\"\n", - "filename = \"a2c-cartpole-wb.zip\"\n", - "\n", - "# Load model from Hugging Face Hub\n", - "model_path = load_from_hub(repo_id=repo_id, filename=filename)\n", - "model = A2C.load(model_path)\n", - "\n", - "# Create video folder\n", - "video_dir = \"videos\"\n", - "os.makedirs(video_dir, exist_ok=True)\n", - "\n", - "# Create evaluation environment\n", - "env = gym.make(\"CartPole-v1\", render_mode=\"rgb_array\")\n", - "env = RecordVideo(env, video_folder=video_dir, episode_trigger=lambda e: e % 10 == 0) # Record every 10 episodes\n", - "env = Monitor(env)\n", - "env = DummyVecEnv([lambda: env])\n", - "\n", - "# Initialize tracking variables\n", - "num_episodes = 100\n", - "perfect_episodes = 0 # Count episodes with reward == 500\n", - "episode_rewards = []\n", - "\n", - "for episode in range(num_episodes):\n", - " obs = env.reset()\n", - " done = False\n", - " total_reward = 0\n", - "\n", - " while not done:\n", - " action, _ = model.predict(obs, deterministic=True)\n", - " obs, reward, done, info = env.step(action)\n", - "\n", - " # Correct step call for Gymnasium\n", - " total_reward += reward[0]\n", - " done = done[0]\n", - "\n", - " episode_rewards.append(total_reward)\n", - " wandb.log({\"Episode Reward\": total_reward}) # Log reward in Weights & Biases\n", - "\n", - " # Count perfect episodes\n", - " if total_reward == 500:\n", - " perfect_episodes += 1\n", - "\n", - " print(f\"Episode {episode+1}: Total Reward = {total_reward}\")\n", - "\n", - "# Print final results\n", - "print(\"\\n Evaluation Completed!\")\n", - "print(f\"Number of Perfect Episodes (Reward == 500): {perfect_episodes} / {num_episodes}\")\n", - "\n", - "# Close environment\n", - "env.close()\n", - "\n", - "# Plot rewards\n", - "plt.figure(figsize=(10, 5))\n", - "plt.plot(range(1, num_episodes + 1), episode_rewards, marker=\"o\", linestyle=\"-\", color=\"b\", label=\"Total Reward per Episode\")\n", - "plt.xlabel(\"Episode\")\n", - "plt.ylabel(\"Total Reward\")\n", - "plt.title(\"Total Reward per Episode during Evaluation\")\n", - "plt.legend()\n", - "plt.grid(True)\n", - "plt.show()\n", - "\n", - "# Finish Weights & Biases logging\n", - "wandb.finish()\n" - ] - } - ], - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3", - "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.10.6" - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "03743e7926594213aaa8a4ea7f149e47": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_4916f07bcd1c47339946d15b1b44285b", - "placeholder": "", - "style": "IPY_MODEL_1c9b00b0286f45a1a38ad992723d0efa", - "value": " 43.4k/43.4k [00:00<00:00, 97.7kB/s]" - } - }, - "053eca19faa24c35833c132c1af7b94c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "0c6aaba7ffb04fe2a5babdcb5c3e955d": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "0ed8dfb35a3842bf8be3ae505eeba5d1": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_a46532aef6c042b884586a337658727c", - "max": 864, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_e43e0ac1d310408b914dddfaee691f9a", - "value": 864 - } + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 524/600: Total Reward = -0.43\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.86 |\n", + "| ep_rew_mean | -0.323 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 89 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 437205 |\n", + "| train/ | |\n", + "| entropy_loss | -5.81 |\n", + "| explained_variance | 0.997 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 87440 |\n", + "| policy_loss | -0.149 |\n", + "| std | 0.586 |\n", + "| value_loss | 0.000791 |\n", + "------------------------------------\n" + ] }, - "105a958acd644ed2bcab9791de217aed": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_b5ddd303cc494ecd865fab744c7c7017", - "IPY_MODEL_477c8ee0c2d94a5f9113b04e7e564aae", - "IPY_MODEL_22963ccded02458d8047644dea108c0f" - ], - "layout": "IPY_MODEL_9cd838bc92c144108ad7fb2717dfa058" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "10bbdba263394d43937799fb02a5308e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_dd70225db29144e4908328ba805f4771", - "max": 41074, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_cfd430b93720484583e1bfa3c6ea944a", - "value": 41074 - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 525/600: Total Reward = -0.39\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.81 |\n", + "| ep_rew_mean | -0.315 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 123 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 438040 |\n", + "| train/ | |\n", + "| entropy_loss | -5.8 |\n", + "| explained_variance | 0.971 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 87607 |\n", + "| policy_loss | -0.162 |\n", + "| std | 0.585 |\n", + "| value_loss | 0.00144 |\n", + "------------------------------------\n" + ] }, - "10f2c206b3b6403f871d78f6f665c937": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "13f76670252d4fcbaf43c831b8fe1ee7": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 526/600: Total Reward = -0.02\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.65 |\n", + "| ep_rew_mean | -0.291 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 121 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 438875 |\n", + "| train/ | |\n", + "| entropy_loss | -5.83 |\n", + "| explained_variance | 0.824 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 87774 |\n", + "| policy_loss | -0.113 |\n", + "| std | 0.586 |\n", + "| value_loss | 0.000857 |\n", + "------------------------------------\n" + ] }, - "16e142d0ae6f4e9b83fcf24b79b9a858": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "1749d9f40d0348d7ae4709fc273c9121": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 527/600: Total Reward = -0.21\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.85 |\n", + "| ep_rew_mean | -0.31 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 95 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 439710 |\n", + "| train/ | |\n", + "| entropy_loss | -5.85 |\n", + "| explained_variance | 0.972 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 87941 |\n", + "| policy_loss | 0.163 |\n", + "| std | 0.587 |\n", + "| value_loss | 0.0013 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 528/600: Total Reward = -0.40\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.26 |\n", + "| ep_rew_mean | -0.251 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 120 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 440545 |\n", + "| train/ | |\n", + "| entropy_loss | -5.85 |\n", + "| explained_variance | 0.64 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 88108 |\n", + "| policy_loss | -0.442 |\n", + "| std | 0.589 |\n", + "| value_loss | 0.012 |\n", + "------------------------------------\n" + ] }, - "19a6e413bee74cc083c01d1b5d8dfee6": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "1c9b00b0286f45a1a38ad992723d0efa": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 529/600: Total Reward = -0.51\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.55 |\n", + "| ep_rew_mean | -0.273 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 71 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 441380 |\n", + "| train/ | |\n", + "| entropy_loss | -5.81 |\n", + "| explained_variance | -8.13 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 88275 |\n", + "| policy_loss | 1.96 |\n", + "| std | 0.585 |\n", + "| value_loss | 0.165 |\n", + "------------------------------------\n" + ] }, - "1ee3d947c1844b138e29a138801a5e00": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_53e05aff6c98440e852b7d426197edb1", - "placeholder": "", - "style": "IPY_MODEL_666bb151dce54bec81944df29f2a8a3b", - "value": "Upload 4 LFS files: 100%" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "22963ccded02458d8047644dea108c0f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_5a73da851a4443208a79bfadb025bec4", - "placeholder": "", - "style": "IPY_MODEL_10f2c206b3b6403f871d78f6f665c937", - "value": " 41.1k/41.1k [00:00<00:00, 98.6kB/s]" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 530/600: Total Reward = -0.53\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.22 |\n", + "| ep_rew_mean | -0.419 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 124 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 442215 |\n", + "| train/ | |\n", + "| entropy_loss | -5.84 |\n", + "| explained_variance | 0.932 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 88442 |\n", + "| policy_loss | 0.842 |\n", + "| std | 0.587 |\n", + "| value_loss | 0.0153 |\n", + "------------------------------------\n" + ] }, - "23f1b8afdbbf4dc3a3ddaaae094a287a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_7595680d757448eab257e813cbf506b1", - "placeholder": "", - "style": "IPY_MODEL_b99ab3e32f10455398319b8c3e99ed18", - "value": " 864/864 [00:00<00:00, 5.30kB/s]" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "253114895704438e802214336c28eaf2": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 531/600: Total Reward = -0.14\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.89 |\n", + "| ep_rew_mean | -0.301 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 70 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 7 |\n", + "| total_timesteps | 443050 |\n", + "| train/ | |\n", + "| entropy_loss | -5.84 |\n", + "| explained_variance | 0.987 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 88609 |\n", + "| policy_loss | -0.299 |\n", + "| std | 0.588 |\n", + "| value_loss | 0.00245 |\n", + "------------------------------------\n" + ] }, - "28e092db03774e4db332da6f1f0d3dd6": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_e64bd642eab44cffa9d8c8e3a64103e7", - "placeholder": "", - "style": "IPY_MODEL_053eca19faa24c35833c132c1af7b94c", - "value": "pytorch_variables.pth: 100%" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "297db692b2d749979115c2468eb4fb00": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 532/600: Total Reward = -0.61\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.55 |\n", + "| ep_rew_mean | -0.274 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 122 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 443885 |\n", + "| train/ | |\n", + "| entropy_loss | -5.85 |\n", + "| explained_variance | 0.121 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 88776 |\n", + "| policy_loss | 0.0418 |\n", + "| std | 0.588 |\n", + "| value_loss | 0.000901 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 533/600: Total Reward = -0.14\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.71 |\n", + "| ep_rew_mean | -0.298 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 81 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 444720 |\n", + "| train/ | |\n", + "| entropy_loss | -5.84 |\n", + "| explained_variance | 0.986 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 88943 |\n", + "| policy_loss | 0.625 |\n", + "| std | 0.587 |\n", + "| value_loss | 0.0103 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "31324087708d4cfca89d7a16e3362a6d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_ac6c299386344084ae368388e69f247a", - "placeholder": "", - "style": "IPY_MODEL_87f804cec1814961a3f20d731cf1cb4b", - "value": "policy.pth: 100%" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 534/600: Total Reward = -0.27\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.84 |\n", + "| ep_rew_mean | -0.311 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 131 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 445555 |\n", + "| train/ | |\n", + "| entropy_loss | -5.84 |\n", + "| explained_variance | 0.918 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 89110 |\n", + "| policy_loss | -0.162 |\n", + "| std | 0.588 |\n", + "| value_loss | 0.00103 |\n", + "------------------------------------\n" + ] }, - "331d5ea6d2a743c2a9bea658cda2e80a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "333eaf4f77744246b98456a844fcca2d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 535/600: Total Reward = -0.14\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.03 |\n", + "| ep_rew_mean | -0.33 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 133 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 446390 |\n", + "| train/ | |\n", + "| entropy_loss | -5.84 |\n", + "| explained_variance | 0.97 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 89277 |\n", + "| policy_loss | 0.0358 |\n", + "| std | 0.588 |\n", + "| value_loss | 0.000241 |\n", + "------------------------------------\n" + ] }, - "360923166a664f24971d958a204eb04c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "37169f3a5e7048efb2b8dce9dbba1a3c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 536/600: Total Reward = -0.59\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.08 |\n", + "| ep_rew_mean | -0.343 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 120 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 447225 |\n", + "| train/ | |\n", + "| entropy_loss | -5.83 |\n", + "| explained_variance | 0.997 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 89444 |\n", + "| policy_loss | -0.127 |\n", + "| std | 0.588 |\n", + "| value_loss | 0.000544 |\n", + "------------------------------------\n" + ] }, - "3a3f1bb3be714c71bc71a7db8fc31189": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_28e092db03774e4db332da6f1f0d3dd6", - "IPY_MODEL_b899e2f587a34972ae41853ae62236fe", - "IPY_MODEL_23f1b8afdbbf4dc3a3ddaaae094a287a" - ], - "layout": "IPY_MODEL_aa6c1072bcd94715a93b9c0f598981a5" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "3d9b748f2b5d460cbba3332dd1ee43b7": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 537/600: Total Reward = -0.30\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.95 |\n", + "| ep_rew_mean | -0.4 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 123 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 448060 |\n", + "| train/ | |\n", + "| entropy_loss | -5.78 |\n", + "| explained_variance | 0.79 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 89611 |\n", + "| policy_loss | 0.0434 |\n", + "| std | 0.584 |\n", + "| value_loss | 0.00117 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 538/600: Total Reward = -0.37\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.03 |\n", + "| ep_rew_mean | -0.326 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 76 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 448895 |\n", + "| train/ | |\n", + "| entropy_loss | -5.75 |\n", + "| explained_variance | 0.961 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 89778 |\n", + "| policy_loss | -0.0038 |\n", + "| std | 0.581 |\n", + "| value_loss | 0.000711 |\n", + "------------------------------------\n" + ] }, - "406df9e39d29497dab95d0890ebc006f": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "451f1b9792f64fa68eb0f68c0aefbc0d": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 539/600: Total Reward = -0.10\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.75 |\n", + "| ep_rew_mean | -0.296 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 120 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 449730 |\n", + "| train/ | |\n", + "| entropy_loss | -5.75 |\n", + "| explained_variance | 0.998 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 89945 |\n", + "| policy_loss | 0.133 |\n", + "| std | 0.581 |\n", + "| value_loss | 0.00105 |\n", + "------------------------------------\n" + ] }, - "477c8ee0c2d94a5f9113b04e7e564aae": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_d2b3dfcf04a44fb692b800cf0bb7f802", - "max": 41074, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_a0fffd5ee818454da360030f6e1466ae", - "value": 41074 - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "4916f07bcd1c47339946d15b1b44285b": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 540/600: Total Reward = -0.38\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.16 |\n", + "| ep_rew_mean | -0.332 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 72 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 450565 |\n", + "| train/ | |\n", + "| entropy_loss | -5.76 |\n", + "| explained_variance | 0.461 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 90112 |\n", + "| policy_loss | 0.124 |\n", + "| std | 0.584 |\n", + "| value_loss | 0.00198 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 541/600: Total Reward = -0.02\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.34 |\n", + "| ep_rew_mean | -0.261 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 120 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 451400 |\n", + "| train/ | |\n", + "| entropy_loss | -5.75 |\n", + "| explained_variance | 0.988 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 90279 |\n", + "| policy_loss | 0.269 |\n", + "| std | 0.582 |\n", + "| value_loss | 0.00193 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 542/600: Total Reward = -0.37\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.71 |\n", + "| ep_rew_mean | -0.301 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 76 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 452235 |\n", + "| train/ | |\n", + "| entropy_loss | -5.74 |\n", + "| explained_variance | 0.846 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 90446 |\n", + "| policy_loss | -0.0856 |\n", + "| std | 0.583 |\n", + "| value_loss | 0.00144 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 543/600: Total Reward = -0.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.64 |\n", + "| ep_rew_mean | -0.293 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 123 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 453070 |\n", + "| train/ | |\n", + "| entropy_loss | -5.75 |\n", + "| explained_variance | 0.978 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 90613 |\n", + "| policy_loss | 0.228 |\n", + "| std | 0.583 |\n", + "| value_loss | 0.0024 |\n", + "------------------------------------\n" + ] }, - "4e4f9c3ec0644222b01f71e9a768da09": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_331d5ea6d2a743c2a9bea658cda2e80a", - "placeholder": "", - "style": "IPY_MODEL_e8db5be66c3342dc8817b3990fd4fd12", - "value": " 4/4 [00:00<00:00, 2.71it/s]" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "508ba1fe83a24b83a6b26626ff71f22f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_cd24c5adf102474493f9b7642a65dd57", - "max": 4, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_8711ae2fa5174670afb295d8c788d2ac", - "value": 4 - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 544/600: Total Reward = -0.46\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.99 |\n", + "| ep_rew_mean | -0.324 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 90 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 453905 |\n", + "| train/ | |\n", + "| entropy_loss | -5.75 |\n", + "| explained_variance | 0.593 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 90780 |\n", + "| policy_loss | -0.0748 |\n", + "| std | 0.584 |\n", + "| value_loss | 0.00169 |\n", + "------------------------------------\n" + ] }, - "536343b057e64933a62fe9aac074da24": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "53e05aff6c98440e852b7d426197edb1": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 545/600: Total Reward = -0.38\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.01 |\n", + "| ep_rew_mean | -0.328 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 121 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 454740 |\n", + "| train/ | |\n", + "| entropy_loss | -5.73 |\n", + "| explained_variance | 0.851 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 90947 |\n", + "| policy_loss | 0.176 |\n", + "| std | 0.583 |\n", + "| value_loss | 0.00232 |\n", + "------------------------------------\n" + ] }, - "57b8419adedf4abe8d950d18057aa7e5": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "5a73da851a4443208a79bfadb025bec4": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 546/600: Total Reward = -0.30\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.17 |\n", + "| ep_rew_mean | -0.346 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 125 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 455575 |\n", + "| train/ | |\n", + "| entropy_loss | -5.71 |\n", + "| explained_variance | 0.924 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 91114 |\n", + "| policy_loss | -0.0204 |\n", + "| std | 0.581 |\n", + "| value_loss | 0.000674 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "5dfdcec102ef454893d2337010e465b7": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 547/600: Total Reward = -0.19\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.01 |\n", + "| ep_rew_mean | -0.329 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 109 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 456410 |\n", + "| train/ | |\n", + "| entropy_loss | -5.7 |\n", + "| explained_variance | 0.899 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 91281 |\n", + "| policy_loss | -0.641 |\n", + "| std | 0.581 |\n", + "| value_loss | 0.00996 |\n", + "------------------------------------\n" + ] }, - "64b05aba20224e9caebc639dc6dd7c8f": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "666bb151dce54bec81944df29f2a8a3b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 548/600: Total Reward = -0.65\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.84 |\n", + "| ep_rew_mean | -0.31 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 123 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 457245 |\n", + "| train/ | |\n", + "| entropy_loss | -5.72 |\n", + "| explained_variance | 0.453 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 91448 |\n", + "| policy_loss | -0.374 |\n", + "| std | 0.583 |\n", + "| value_loss | 0.00723 |\n", + "------------------------------------\n" + ] }, - "6d42ee9f0e6e4195a8bae8981d14bfea": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "71ccd1edcb2149f4a5d79b047db05407": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_c753780ac4be491cb5868d0c65495055", - "IPY_MODEL_8ab12f359394454ea92d8810ff7a3f21", - "IPY_MODEL_8ab306238dc74406928f03c2b665c889" - ], - "layout": "IPY_MODEL_d2bc8e91840d498eaaec6040b4fb6356" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 549/600: Total Reward = -0.08\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.93 |\n", + "| ep_rew_mean | -0.407 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 75 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 458080 |\n", + "| train/ | |\n", + "| entropy_loss | -5.75 |\n", + "| explained_variance | 0.737 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 91615 |\n", + "| policy_loss | -0.619 |\n", + "| std | 0.586 |\n", + "| value_loss | 0.0125 |\n", + "------------------------------------\n" + ] }, - "7595680d757448eab257e813cbf506b1": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 550/600: Total Reward = -0.20\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.02 |\n", + "| ep_rew_mean | -0.328 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 121 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 458915 |\n", + "| train/ | |\n", + "| entropy_loss | -5.78 |\n", + "| explained_variance | 0.867 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 91782 |\n", + "| policy_loss | -0.213 |\n", + "| std | 0.587 |\n", + "| value_loss | 0.00244 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 551/600: Total Reward = -0.42\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.65 |\n", + "| ep_rew_mean | -0.296 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 75 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 459750 |\n", + "| train/ | |\n", + "| entropy_loss | -5.75 |\n", + "| explained_variance | 0.533 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 91949 |\n", + "| policy_loss | -0.237 |\n", + "| std | 0.585 |\n", + "| value_loss | 0.00249 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 552/600: Total Reward = -0.21\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.86 |\n", + "| ep_rew_mean | -0.305 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 129 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 460585 |\n", + "| train/ | |\n", + "| entropy_loss | -5.77 |\n", + "| explained_variance | 0.992 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 92116 |\n", + "| policy_loss | 0.0207 |\n", + "| std | 0.586 |\n", + "| value_loss | 0.000271 |\n", + "------------------------------------\n" + ] }, - "79a31c28dd1e4bb8b2e2252b5fd1a940": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "7b3c7a0ac0424cb7af4f7e1dfbdc513b": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 553/600: Total Reward = -0.03\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.78 |\n", + "| ep_rew_mean | -0.298 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 99 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 461420 |\n", + "| train/ | |\n", + "| entropy_loss | -5.73 |\n", + "| explained_variance | 0.994 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 92283 |\n", + "| policy_loss | 0.139 |\n", + "| std | 0.585 |\n", + "| value_loss | 0.000646 |\n", + "------------------------------------\n" + ] }, - "82fedcb1de0c4311bdab0a773473de38": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_16e142d0ae6f4e9b83fcf24b79b9a858", - "placeholder": "", - "style": "IPY_MODEL_8d88faf5346647fcb45737d57d628f41", - "value": "pytorch_variables.pth: 100%" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "852bd4183a5c4e2b9308a8f2d0f7191d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 554/600: Total Reward = -0.19\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.2 |\n", + "| ep_rew_mean | -0.331 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 122 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 462255 |\n", + "| train/ | |\n", + "| entropy_loss | -5.75 |\n", + "| explained_variance | 0.971 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 92450 |\n", + "| policy_loss | 0.52 |\n", + "| std | 0.586 |\n", + "| value_loss | 0.00656 |\n", + "------------------------------------\n" + ] }, - "8711ae2fa5174670afb295d8c788d2ac": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "87403f7d79a64dce87b5b099fc68d0b5": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 555/600: Total Reward = -0.43\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.66 |\n", + "| ep_rew_mean | -0.371 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 118 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 463090 |\n", + "| train/ | |\n", + "| entropy_loss | -5.73 |\n", + "| explained_variance | 0.988 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 92617 |\n", + "| policy_loss | 0.999 |\n", + "| std | 0.584 |\n", + "| value_loss | 0.0436 |\n", + "------------------------------------\n" + ] }, - "87f804cec1814961a3f20d731cf1cb4b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 556/600: Total Reward = -0.32\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 7.71 |\n", + "| ep_rew_mean | -0.684 |\n", + "| success_rate | 0.94 |\n", + "| time/ | |\n", + "| fps | 81 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 463925 |\n", + "| train/ | |\n", + "| entropy_loss | -5.72 |\n", + "| explained_variance | 0.822 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 92784 |\n", + "| policy_loss | -0.569 |\n", + "| std | 0.584 |\n", + "| value_loss | 0.0273 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 557/600: Total Reward = -0.16\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 6.3 |\n", + "| ep_rew_mean | -0.558 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 122 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 464760 |\n", + "| train/ | |\n", + "| entropy_loss | -5.73 |\n", + "| explained_variance | -1.41 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 92951 |\n", + "| policy_loss | -1.69 |\n", + "| std | 0.585 |\n", + "| value_loss | 0.175 |\n", + "------------------------------------\n" + ] }, - "8ab12f359394454ea92d8810ff7a3f21": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_b35b335258a641fb8c52e2d68afdea95", - "max": 97733, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_f4c0efc7782e41e5966d2ae9eba94a6a", - "value": 97733 - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "8ab306238dc74406928f03c2b665c889": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_64b05aba20224e9caebc639dc6dd7c8f", - "placeholder": "", - "style": "IPY_MODEL_37169f3a5e7048efb2b8dce9dbba1a3c", - "value": " 97.7k/97.7k [00:00<00:00, 336kB/s]" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 558/600: Total Reward = -0.82\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 6.56 |\n", + "| ep_rew_mean | -0.588 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 72 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 465595 |\n", + "| train/ | |\n", + "| entropy_loss | -5.67 |\n", + "| explained_variance | 0.935 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 93118 |\n", + "| policy_loss | 0.545 |\n", + "| std | 0.578 |\n", + "| value_loss | 0.0188 |\n", + "------------------------------------\n" + ] }, - "8bf9caee159f4f03b4b9be6500f7118a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "8d88faf5346647fcb45737d57d628f41": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 559/600: Total Reward = -0.20\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.21 |\n", + "| ep_rew_mean | -0.449 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 120 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 466430 |\n", + "| train/ | |\n", + "| entropy_loss | -5.72 |\n", + "| explained_variance | 0.992 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 93285 |\n", + "| policy_loss | -0.0205 |\n", + "| std | 0.583 |\n", + "| value_loss | 0.000135 |\n", + "------------------------------------\n" + ] }, - "8eecebc2ee5a42978670c9f2b0e5f592": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "8f7df43c9c924ec59695450fa933699f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_b93f82c0226747c5a4cf124d92c4a359", - "placeholder": "", - "style": "IPY_MODEL_f824d4ff15ec435f94fd0ffd1950064a", - "value": " 41.1k/41.1k [00:00<00:00, 125kB/s]" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 560/600: Total Reward = -0.38\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.59 |\n", + "| ep_rew_mean | -0.377 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 109 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 467265 |\n", + "| train/ | |\n", + "| entropy_loss | -5.72 |\n", + "| explained_variance | 0.956 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 93452 |\n", + "| policy_loss | 0.362 |\n", + "| std | 0.584 |\n", + "| value_loss | 0.00706 |\n", + "------------------------------------\n" + ] }, - "9286d4d05f354073a56ccab0f3fd0bba": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "9564480530bc447da27e15749428bdfd": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 561/600: Total Reward = -0.18\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.81 |\n", + "| ep_rew_mean | -0.481 |\n", + "| success_rate | 0.97 |\n", + "| time/ | |\n", + "| fps | 130 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 468100 |\n", + "| train/ | |\n", + "| entropy_loss | -5.7 |\n", + "| explained_variance | 0.161 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 93619 |\n", + "| policy_loss | 1.48 |\n", + "| std | 0.583 |\n", + "| value_loss | 0.0532 |\n", + "------------------------------------\n" + ] }, - "9b4427af69fd454eb54eaf678465ceee": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "9cd838bc92c144108ad7fb2717dfa058": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 562/600: Total Reward = -0.09\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.5 |\n", + "| ep_rew_mean | -0.36 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 107 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 468935 |\n", + "| train/ | |\n", + "| entropy_loss | -5.7 |\n", + "| explained_variance | 0.382 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 93786 |\n", + "| policy_loss | 1.23 |\n", + "| std | 0.583 |\n", + "| value_loss | 0.0692 |\n", + "------------------------------------\n" + ] }, - "a0fffd5ee818454da360030f6e1466ae": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "a46532aef6c042b884586a337658727c": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 563/600: Total Reward = -0.24\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.12 |\n", + "| ep_rew_mean | -0.412 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 77 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 469770 |\n", + "| train/ | |\n", + "| entropy_loss | -5.72 |\n", + "| explained_variance | -11.1 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 93953 |\n", + "| policy_loss | -2.64 |\n", + "| std | 0.585 |\n", + "| value_loss | 0.245 |\n", + "------------------------------------\n" + ] }, - "a6d98acbf717475dbfd80407d9256f5d": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "a7098ce07385468ba0b61a39601155ca": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_a6d98acbf717475dbfd80407d9256f5d", - "max": 43406, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_57b8419adedf4abe8d950d18057aa7e5", - "value": 43406 - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 564/600: Total Reward = -0.24\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.97 |\n", + "| ep_rew_mean | -0.44 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 129 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 470605 |\n", + "| train/ | |\n", + "| entropy_loss | -5.73 |\n", + "| explained_variance | 0.942 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 94120 |\n", + "| policy_loss | -0.539 |\n", + "| std | 0.586 |\n", + "| value_loss | 0.0129 |\n", + "------------------------------------\n" + ] }, - "aa6c1072bcd94715a93b9c0f598981a5": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "ac6c299386344084ae368388e69f247a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 565/600: Total Reward = -0.33\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.48 |\n", + "| ep_rew_mean | -0.373 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 75 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 471440 |\n", + "| train/ | |\n", + "| entropy_loss | -5.74 |\n", + "| explained_variance | 0.365 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 94287 |\n", + "| policy_loss | -0.0916 |\n", + "| std | 0.588 |\n", + "| value_loss | 0.00317 |\n", + "------------------------------------\n" + ] }, - "ad10bcfa05b64376905c996ecc1d455d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_3d9b748f2b5d460cbba3332dd1ee43b7", - "max": 4, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_360923166a664f24971d958a204eb04c", - "value": 4 - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "adc0827744e1479b8833205a44c83e1b": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 566/600: Total Reward = -0.30\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.29 |\n", + "| ep_rew_mean | -0.342 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 113 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 472275 |\n", + "| train/ | |\n", + "| entropy_loss | -5.77 |\n", + "| explained_variance | 0.38 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 94454 |\n", + "| policy_loss | 0.437 |\n", + "| std | 0.59 |\n", + "| value_loss | 0.00852 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 567/600: Total Reward = -0.46\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.88 |\n", + "| ep_rew_mean | -0.389 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 105 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 473110 |\n", + "| train/ | |\n", + "| entropy_loss | -5.74 |\n", + "| explained_variance | 0.766 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 94621 |\n", + "| policy_loss | 0.401 |\n", + "| std | 0.589 |\n", + "| value_loss | 0.0421 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "aef7b10c8f44483c825b7fd9a847f089": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_ecf4c9e4c7cd4ba698a5e8c4aa8b3071", - "placeholder": "", - "style": "IPY_MODEL_253114895704438e802214336c28eaf2", - "value": " 864/864 [00:00<00:00, 6.77kB/s]" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 568/600: Total Reward = -0.95\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.39 |\n", + "| ep_rew_mean | -0.425 |\n", + "| success_rate | 0.98 |\n", + "| time/ | |\n", + "| fps | 112 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 473945 |\n", + "| train/ | |\n", + "| entropy_loss | -5.71 |\n", + "| explained_variance | -2.37 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 94788 |\n", + "| policy_loss | -1.07 |\n", + "| std | 0.587 |\n", + "| value_loss | 0.0609 |\n", + "------------------------------------\n" + ] }, - "b30ea1ecb76544e4a4b4b6171e71b728": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_f4987c77de034d6a9a5fbe63f5db9b9e", - "IPY_MODEL_bdbb3e03cdda455ca313b37212800dbb", - "IPY_MODEL_e3e212292e2649f1969c4c31647cb680" - ], - "layout": "IPY_MODEL_dced652d1bd14be7ba2b65eae579fba5" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "b35b335258a641fb8c52e2d68afdea95": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 569/600: Total Reward = -0.13\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.27 |\n", + "| ep_rew_mean | -0.342 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 131 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 474780 |\n", + "| train/ | |\n", + "| entropy_loss | -5.72 |\n", + "| explained_variance | 0.602 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 94955 |\n", + "| policy_loss | -0.274 |\n", + "| std | 0.587 |\n", + "| value_loss | 0.00404 |\n", + "------------------------------------\n" + ] }, - "b515add3f25544cbb2b14b79b2e2770a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_82fedcb1de0c4311bdab0a773473de38", - "IPY_MODEL_0ed8dfb35a3842bf8be3ae505eeba5d1", - "IPY_MODEL_aef7b10c8f44483c825b7fd9a847f089" - ], - "layout": "IPY_MODEL_87403f7d79a64dce87b5b099fc68d0b5" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "b5ddd303cc494ecd865fab744c7c7017": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_8bf9caee159f4f03b4b9be6500f7118a", - "placeholder": "", - "style": "IPY_MODEL_5dfdcec102ef454893d2337010e465b7", - "value": "policy.pth: 100%" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 570/600: Total Reward = -0.14\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.16 |\n", + "| ep_rew_mean | -0.343 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 72 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 475615 |\n", + "| train/ | |\n", + "| entropy_loss | -5.69 |\n", + "| explained_variance | 0.932 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 95122 |\n", + "| policy_loss | -0.00937 |\n", + "| std | 0.585 |\n", + "| value_loss | 0.00128 |\n", + "------------------------------------\n" + ] }, - "b6d13ee968fa4473baecb877b8f302f8": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "b899e2f587a34972ae41853ae62236fe": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_536343b057e64933a62fe9aac074da24", - "max": 864, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_333eaf4f77744246b98456a844fcca2d", - "value": 864 - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 571/600: Total Reward = -0.07\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.91 |\n", + "| ep_rew_mean | -0.302 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 119 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 476450 |\n", + "| train/ | |\n", + "| entropy_loss | -5.72 |\n", + "| explained_variance | 0.931 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 95289 |\n", + "| policy_loss | 0.244 |\n", + "| std | 0.587 |\n", + "| value_loss | 0.00593 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 572/600: Total Reward = -0.18\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.81 |\n", + "| ep_rew_mean | -0.389 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 72 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 477285 |\n", + "| train/ | |\n", + "| entropy_loss | -5.66 |\n", + "| explained_variance | -0.873 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 95456 |\n", + "| policy_loss | -0.887 |\n", + "| std | 0.583 |\n", + "| value_loss | 0.0343 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 573/600: Total Reward = -4.22\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.76 |\n", + "| ep_rew_mean | -0.473 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 121 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 478120 |\n", + "| train/ | |\n", + "| entropy_loss | -5.64 |\n", + "| explained_variance | 0.435 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 95623 |\n", + "| policy_loss | 1.83 |\n", + "| std | 0.582 |\n", + "| value_loss | 0.199 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "b93f82c0226747c5a4cf124d92c4a359": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 574/600: Total Reward = -0.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.23 |\n", + "| ep_rew_mean | -0.336 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 115 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 478955 |\n", + "| train/ | |\n", + "| entropy_loss | -5.67 |\n", + "| explained_variance | 0.992 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 95790 |\n", + "| policy_loss | 0.248 |\n", + "| std | 0.586 |\n", + "| value_loss | 0.00272 |\n", + "------------------------------------\n" + ] }, - "b99ab3e32f10455398319b8c3e99ed18": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "b9f0d24741ba48308545746354105fc3": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_31324087708d4cfca89d7a16e3362a6d", - "IPY_MODEL_10bbdba263394d43937799fb02a5308e", - "IPY_MODEL_8f7df43c9c924ec59695450fa933699f" - ], - "layout": "IPY_MODEL_db5981fe348443ee9ea1e17a3c86aa34" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 575/600: Total Reward = -0.10\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.68 |\n", + "| ep_rew_mean | -0.284 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 78 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 479790 |\n", + "| train/ | |\n", + "| entropy_loss | -5.66 |\n", + "| explained_variance | 0.646 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 95957 |\n", + "| policy_loss | 0.592 |\n", + "| std | 0.585 |\n", + "| value_loss | 0.0178 |\n", + "------------------------------------\n" + ] }, - "ba48466f16a44983b96b20123c966be9": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "bdbb3e03cdda455ca313b37212800dbb": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_9286d4d05f354073a56ccab0f3fd0bba", - "max": 43406, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_852bd4183a5c4e2b9308a8f2d0f7191d", - "value": 43406 - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 576/600: Total Reward = -0.52\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.8 |\n", + "| ep_rew_mean | -0.298 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 119 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 480625 |\n", + "| train/ | |\n", + "| entropy_loss | -5.72 |\n", + "| explained_variance | 0.929 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 96124 |\n", + "| policy_loss | -1.44 |\n", + "| std | 0.59 |\n", + "| value_loss | 0.0749 |\n", + "------------------------------------\n" + ] }, - "c0b5a4535a3b4ca2b0e7c86e1b3ab5ec": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "c135ded2efad4a0d8bddea2e51bc6459": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_f183c2895da7440a80edc87f5a130fee", - "placeholder": "", - "style": "IPY_MODEL_8eecebc2ee5a42978670c9f2b0e5f592", - "value": " 4/4 [00:00<00:00, 2.98it/s]" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 577/600: Total Reward = -0.10\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.39 |\n", + "| ep_rew_mean | -0.353 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 73 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 481460 |\n", + "| train/ | |\n", + "| entropy_loss | -5.68 |\n", + "| explained_variance | 0.974 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 96291 |\n", + "| policy_loss | -0.619 |\n", + "| std | 0.587 |\n", + "| value_loss | 0.0108 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 578/600: Total Reward = -0.21\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.05 |\n", + "| ep_rew_mean | -0.322 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 129 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 482295 |\n", + "| train/ | |\n", + "| entropy_loss | -5.65 |\n", + "| explained_variance | 0.99 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 96458 |\n", + "| policy_loss | -0.0796 |\n", + "| std | 0.585 |\n", + "| value_loss | 0.000614 |\n", + "------------------------------------\n" + ] }, - "c48c8dc4a77f4dfaa2adede6518d373c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_0c6aaba7ffb04fe2a5babdcb5c3e955d", - "max": 100507, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_b6d13ee968fa4473baecb877b8f302f8", - "value": 100507 - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "c753780ac4be491cb5868d0c65495055": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_1749d9f40d0348d7ae4709fc273c9121", - "placeholder": "", - "style": "IPY_MODEL_6d42ee9f0e6e4195a8bae8981d14bfea", - "value": "a2c-cartpole.zip: 100%" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 579/600: Total Reward = -0.23\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 6.61 |\n", + "| ep_rew_mean | -0.52 |\n", + "| success_rate | 0.97 |\n", + "| time/ | |\n", + "| fps | 83 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 483130 |\n", + "| train/ | |\n", + "| entropy_loss | -5.66 |\n", + "| explained_variance | 0.874 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 96625 |\n", + "| policy_loss | 0.00827 |\n", + "| std | 0.585 |\n", + "| value_loss | 0.00111 |\n", + "------------------------------------\n" + ] }, - "c8df02b3721d4a97b6c6336e896ff179": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_f22b7b1e400a4ed98dc754b073a9a40a", - "placeholder": "", - "style": "IPY_MODEL_19a6e413bee74cc083c01d1b5d8dfee6", - "value": "a2c-cartpole-wb.zip: 100%" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "cd24c5adf102474493f9b7642a65dd57": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 580/600: Total Reward = -0.04\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 6.77 |\n", + "| ep_rew_mean | -0.594 |\n", + "| success_rate | 0.96 |\n", + "| time/ | |\n", + "| fps | 128 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 483965 |\n", + "| train/ | |\n", + "| entropy_loss | -5.64 |\n", + "| explained_variance | 0.662 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 96792 |\n", + "| policy_loss | -1.7 |\n", + "| std | 0.583 |\n", + "| value_loss | 0.114 |\n", + "------------------------------------\n" + ] }, - "cdca8fecc2cc412282c4f41ba141017d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_406df9e39d29497dab95d0890ebc006f", - "placeholder": "", - "style": "IPY_MODEL_da0b9ac258dd482fa342021ceb684aa7", - "value": "Upload 4 LFS files: 100%" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "cfd430b93720484583e1bfa3c6ea944a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 581/600: Total Reward = -0.77\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.94 |\n", + "| ep_rew_mean | -0.5 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 123 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 484800 |\n", + "| train/ | |\n", + "| entropy_loss | -5.63 |\n", + "| explained_variance | -0.163 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 96959 |\n", + "| policy_loss | 0.807 |\n", + "| std | 0.583 |\n", + "| value_loss | 0.0315 |\n", + "------------------------------------\n" + ] }, - "d2b3dfcf04a44fb692b800cf0bb7f802": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 582/600: Total Reward = -0.28\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.42 |\n", + "| ep_rew_mean | -0.373 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 86 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 485635 |\n", + "| train/ | |\n", + "| entropy_loss | -5.66 |\n", + "| explained_variance | 0.899 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 97126 |\n", + "| policy_loss | 0.595 |\n", + "| std | 0.585 |\n", + "| value_loss | 0.0199 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "d2bc8e91840d498eaaec6040b4fb6356": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 583/600: Total Reward = -0.18\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.16 |\n", + "| ep_rew_mean | -0.324 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 117 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 486470 |\n", + "| train/ | |\n", + "| entropy_loss | -5.67 |\n", + "| explained_variance | 0.921 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 97293 |\n", + "| policy_loss | -0.165 |\n", + "| std | 0.586 |\n", + "| value_loss | 0.00223 |\n", + "------------------------------------\n" + ] }, - "d7cfb3fea4444e6ca69e7bdb4f86d40d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_c8df02b3721d4a97b6c6336e896ff179", - "IPY_MODEL_c48c8dc4a77f4dfaa2adede6518d373c", - "IPY_MODEL_ea68977e2bc642358854ed2313d4c9bc" - ], - "layout": "IPY_MODEL_13f76670252d4fcbaf43c831b8fe1ee7" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "d996b268e9c24f85a73ca1017f8cc5fa": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_cdca8fecc2cc412282c4f41ba141017d", - "IPY_MODEL_508ba1fe83a24b83a6b26626ff71f22f", - "IPY_MODEL_c135ded2efad4a0d8bddea2e51bc6459" - ], - "layout": "IPY_MODEL_9b4427af69fd454eb54eaf678465ceee" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 584/600: Total Reward = -0.21\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.21 |\n", + "| ep_rew_mean | -0.415 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 73 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 487305 |\n", + "| train/ | |\n", + "| entropy_loss | -5.65 |\n", + "| explained_variance | 0.705 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 97460 |\n", + "| policy_loss | 0.333 |\n", + "| std | 0.585 |\n", + "| value_loss | 0.00704 |\n", + "------------------------------------\n" + ] }, - "da0b9ac258dd482fa342021ceb684aa7": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "dac9eb72052f448fbb17389d3acfbbfb": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_451f1b9792f64fa68eb0f68c0aefbc0d", - "placeholder": "", - "style": "IPY_MODEL_ba48466f16a44983b96b20123c966be9", - "value": "policy.optimizer.pth: 100%" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 585/600: Total Reward = -0.22\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.43 |\n", + "| ep_rew_mean | -0.354 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 116 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 488140 |\n", + "| train/ | |\n", + "| entropy_loss | -5.66 |\n", + "| explained_variance | -1.64 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 97627 |\n", + "| policy_loss | 1.49 |\n", + "| std | 0.587 |\n", + "| value_loss | 0.0482 |\n", + "------------------------------------\n" + ] }, - "db5981fe348443ee9ea1e17a3c86aa34": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 586/600: Total Reward = -0.75\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.98 |\n", + "| ep_rew_mean | -0.401 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 100 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 488975 |\n", + "| train/ | |\n", + "| entropy_loss | -5.64 |\n", + "| explained_variance | 0.316 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 97794 |\n", + "| policy_loss | -0.481 |\n", + "| std | 0.585 |\n", + "| value_loss | 0.0144 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 587/600: Total Reward = -0.59\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.76 |\n", + "| ep_rew_mean | -0.404 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 97 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 489810 |\n", + "| train/ | |\n", + "| entropy_loss | -5.66 |\n", + "| explained_variance | 0.964 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 97961 |\n", + "| policy_loss | -0.0906 |\n", + "| std | 0.587 |\n", + "| value_loss | 0.00213 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 588/600: Total Reward = -0.38\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.85 |\n", + "| ep_rew_mean | -0.406 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 120 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 490645 |\n", + "| train/ | |\n", + "| entropy_loss | -5.64 |\n", + "| explained_variance | 0.263 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 98128 |\n", + "| policy_loss | 0.262 |\n", + "| std | 0.585 |\n", + "| value_loss | 0.00946 |\n", + "------------------------------------\n" + ] }, - "dced652d1bd14be7ba2b65eae579fba5": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "dd70225db29144e4908328ba805f4771": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 589/600: Total Reward = -0.15\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.08 |\n", + "| ep_rew_mean | -0.339 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 70 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 7 |\n", + "| total_timesteps | 491480 |\n", + "| train/ | |\n", + "| entropy_loss | -5.66 |\n", + "| explained_variance | -0.24 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 98295 |\n", + "| policy_loss | -0.135 |\n", + "| std | 0.588 |\n", + "| value_loss | 0.00285 |\n", + "------------------------------------\n" + ] }, - "de7f77f12aa0470ab36a5afecd9f14fc": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_1ee3d947c1844b138e29a138801a5e00", - "IPY_MODEL_ad10bcfa05b64376905c996ecc1d455d", - "IPY_MODEL_4e4f9c3ec0644222b01f71e9a768da09" - ], - "layout": "IPY_MODEL_c0b5a4535a3b4ca2b0e7c86e1b3ab5ec" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "e097d0070f30469abbd542994e74bf81": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 590/600: Total Reward = -0.72\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.25 |\n", + "| ep_rew_mean | -0.342 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 113 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 492315 |\n", + "| train/ | |\n", + "| entropy_loss | -5.64 |\n", + "| explained_variance | 0.98 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 98462 |\n", + "| policy_loss | -0.12 |\n", + "| std | 0.585 |\n", + "| value_loss | 0.000953 |\n", + "------------------------------------\n" + ] }, - "e3e212292e2649f1969c4c31647cb680": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_297db692b2d749979115c2468eb4fb00", - "placeholder": "", - "style": "IPY_MODEL_fad8b1c404724e4dbd05c747b1bcd5de", - "value": " 43.4k/43.4k [00:00<00:00, 150kB/s]" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 591/600: Total Reward = -0.77\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.11 |\n", + "| ep_rew_mean | -0.328 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 81 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 493150 |\n", + "| train/ | |\n", + "| entropy_loss | -5.62 |\n", + "| explained_variance | -0.494 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 98629 |\n", + "| policy_loss | -0.64 |\n", + "| std | 0.583 |\n", + "| value_loss | 0.0174 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 592/600: Total Reward = -0.36\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.43 |\n", + "| ep_rew_mean | -0.362 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 122 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 493985 |\n", + "| train/ | |\n", + "| entropy_loss | -5.66 |\n", + "| explained_variance | 0.0971 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 98796 |\n", + "| policy_loss | -0.925 |\n", + "| std | 0.587 |\n", + "| value_loss | 0.0345 |\n", + "------------------------------------\n" + ] }, - "e43e0ac1d310408b914dddfaee691f9a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "e64bd642eab44cffa9d8c8e3a64103e7": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 593/600: Total Reward = -0.13\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.98 |\n", + "| ep_rew_mean | -0.336 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 108 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 494820 |\n", + "| train/ | |\n", + "| entropy_loss | -5.68 |\n", + "| explained_variance | 0.976 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 98963 |\n", + "| policy_loss | 0.0786 |\n", + "| std | 0.589 |\n", + "| value_loss | 0.000305 |\n", + "------------------------------------\n" + ] }, - "e8db5be66c3342dc8817b3990fd4fd12": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "ea68977e2bc642358854ed2313d4c9bc": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_7b3c7a0ac0424cb7af4f7e1dfbdc513b", - "placeholder": "", - "style": "IPY_MODEL_79a31c28dd1e4bb8b2e2252b5fd1a940", - "value": " 101k/101k [00:00<00:00, 113kB/s]" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 594/600: Total Reward = -0.43\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.02 |\n", + "| ep_rew_mean | -0.332 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 71 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 495655 |\n", + "| train/ | |\n", + "| entropy_loss | -5.65 |\n", + "| explained_variance | 0.0608 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 99130 |\n", + "| policy_loss | 0.0974 |\n", + "| std | 0.586 |\n", + "| value_loss | 0.00422 |\n", + "------------------------------------\n" + ] }, - "ecf4c9e4c7cd4ba698a5e8c4aa8b3071": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "f183c2895da7440a80edc87f5a130fee": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 595/600: Total Reward = -0.23\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.29 |\n", + "| ep_rew_mean | -0.418 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 113 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 496490 |\n", + "| train/ | |\n", + "| entropy_loss | -5.59 |\n", + "| explained_variance | 0.659 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 99297 |\n", + "| policy_loss | -0.117 |\n", + "| std | 0.58 |\n", + "| value_loss | 0.0167 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "f22b7b1e400a4ed98dc754b073a9a40a": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "1.2.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 596/600: Total Reward = -0.28\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.88 |\n", + "| ep_rew_mean | -0.378 |\n", + "| success_rate | 0.99 |\n", + "| time/ | |\n", + "| fps | 76 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 497325 |\n", + "| train/ | |\n", + "| entropy_loss | -5.59 |\n", + "| explained_variance | 0.994 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 99464 |\n", + "| policy_loss | 0.197 |\n", + "| std | 0.581 |\n", + "| value_loss | 0.00119 |\n", + "------------------------------------\n" + ] }, - "f48bd46317b54ebc9d55eee77b4eb165": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_dac9eb72052f448fbb17389d3acfbbfb", - "IPY_MODEL_a7098ce07385468ba0b61a39601155ca", - "IPY_MODEL_03743e7926594213aaa8a4ea7f149e47" - ], - "layout": "IPY_MODEL_e097d0070f30469abbd542994e74bf81" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "f4987c77de034d6a9a5fbe63f5db9b9e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_adc0827744e1479b8833205a44c83e1b", - "placeholder": "", - "style": "IPY_MODEL_9564480530bc447da27e15749428bdfd", - "value": "policy.optimizer.pth: 100%" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 597/600: Total Reward = -0.69\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.4 |\n", + "| ep_rew_mean | -0.339 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 83 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 5 |\n", + "| total_timesteps | 498160 |\n", + "| train/ | |\n", + "| entropy_loss | -5.57 |\n", + "| explained_variance | 0.955 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 99631 |\n", + "| policy_loss | 0.111 |\n", + "| std | 0.579 |\n", + "| value_loss | 0.00115 |\n", + "------------------------------------\n" + ] }, - "f4c0efc7782e41e5966d2ae9eba94a6a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "f824d4ff15ec435f94fd0ffd1950064a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 598/600: Total Reward = -0.19\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.48 |\n", + "| ep_rew_mean | -0.27 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 112 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 498995 |\n", + "| train/ | |\n", + "| entropy_loss | -5.59 |\n", + "| explained_variance | 0.896 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 99798 |\n", + "| policy_loss | 0.119 |\n", + "| std | 0.581 |\n", + "| value_loss | 0.000871 |\n", + "------------------------------------\n" + ] }, - "fad8b1c404724e4dbd05c747b1bcd5de": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "1.5.0", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] }, - "a52deb23470f4f9d9acfe28e69f47fb5": { - "model_module": "@jupyter-widgets/controls", - "model_name": "VBoxModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "VBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "VBoxView", - "box_style": "", - "children": [], - "layout": "IPY_MODEL_136b0ee69b6a4012a1c4a92ea45a352e" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 599/600: Total Reward = -0.77\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.7 |\n", + "| ep_rew_mean | -0.298 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 71 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 7 |\n", + "| total_timesteps | 499830 |\n", + "| train/ | |\n", + "| entropy_loss | -5.58 |\n", + "| explained_variance | 0.968 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 99965 |\n", + "| policy_loss | 0.0586 |\n", + "| std | 0.581 |\n", + "| value_loss | 0.00044 |\n", + "------------------------------------\n" + ] }, - "c7294d001a9c44aca712bba2e7141b35": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_02dcba9d3e194f79890227e180c37474", - "placeholder": "", - "style": "IPY_MODEL_6376dea1e82f4c159ea5062c1b3b14ef", - "value": "<center> <img\nsrc=https://huggingface.co/front/assets/huggingface_logo-noborder.svg\nalt='Hugging Face'> <br> Copy a token from <a\nhref=\"https://huggingface.co/settings/tokens\" target=\"_blank\">your Hugging Face\ntokens page</a> and paste it below. <br> Immediately click login after copying\nyour token or it might be stored in plain text in this notebook file. </center>" - } + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m When using several event log directories, please call `wandb.tensorboard.patch(root_logdir=\"...\")` before `wandb.init`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 600/600: Total Reward = -0.37\n", + "Logging to runs/aqrdlwti/A2C_0\n", + "------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.75 |\n", + "| ep_rew_mean | -0.388 |\n", + "| success_rate | 1 |\n", + "| time/ | |\n", + "| fps | 108 |\n", + "| iterations | 100 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 500665 |\n", + "| train/ | |\n", + "| entropy_loss | -5.6 |\n", + "| explained_variance | 0.797 |\n", + "| learning_rate | 0.0007 |\n", + "| n_updates | 100132 |\n", + "| policy_loss | -0.57 |\n", + "| std | 0.583 |\n", + "| value_loss | 0.0129 |\n", + "------------------------------------\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.11/dist-packages/stable_baselines3/common/evaluation.py:67: UserWarning: Evaluation environment is not wrapped with a ``Monitor`` wrapper. This may result in reporting modified episode lengths and rewards, if other wrappers happen to modify these. Consider wrapping environment first with ``Monitor`` wrapper.\n", + " warnings.warn(\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Evaluation: mean_reward=-0.46 +/- 0.35\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<Figure size 1000x500 with 1 Axes>" + ], + "image/png": "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1VdfNQHYbTUMwxwwYIA5ffp00zAMof19+vQxTzvtNHvZz372MxOAeckll/juW26D13979uyx12XLli5dai/btm2bmZmZaZ533nn2MnaOt2zZYpqmaf773/82AZhLlizxbEfQazWdPr/uuuvMLl26mAcOHBDWvfjii82CggLl+ScIgmhLKP2PIAiiHTJz5kyEQiFbwWHceeedME0T7777bsptMKUEAGKxGA4ePIj+/fujsLAQy5Yta3Lbpk6dipKSEvTo0QMXXHABcnJy8NZbb6F79+4AgPLycnz00Ue46KKLbBXlwIEDOHjwIKZPn44NGzbYboGTJk3Cvn37sG7dOgCWInXSSSdh0qRJmDdvHgBLvTJNU1Cq+GOrqanBgQMHMGHCBJimieXLl7vafNNNNwnvZ86cCQCu/k1XAbnyyiuRl5dnv7/gggvQpUsXe/srVqzAhg0bcOmll+LgwYN2X9TU1ODUU0/F3LlzYRiGsM0bb7wxrTbcd999mDVrluu/Dh06COuNHz8eY8aMsd/37NkT3/rWt/D+++8jkUgot11YWAgAeOeddxCLxZTrBL1Wg/a5aZp44403cPbZZ8M0TbvPDhw4gOnTp6OysrJZ1y9BEERrQOl/BEEQ7ZBt27aha9euwoAdcNwAt23blnIbdXV1eOSRR/Dcc89h165dQipZZWVlk9v2pz/9CQMHDkRlZSWeffZZzJ07V3CL27hxI0zTxL333ot7771XuY2ysjJ069bNDpTmzZuH7t27Y/ny5XjwwQdRUlKCRx991P4sPz8fI0eOtL+/fft23HfffXjrrbdQUVEhbFs+tnA4bAd8jG3btkHXdTtVkjFo0KC0+mLAgAHCe03T0L9/fzslcsOGDQCAq666ynMblZWVQupknz590mrD8OHDMXXq1LTbCgADBw5EbW0t9u/fL9SsMSZPnozzzz8fDzzwAB5//HFMmTIF5557Li699FL7nAe9VoP2+f79+3Ho0CE8/fTTePrpp5XHUlZWlvJ4CYIgvk4oqCIIgjhK+f73v4/nnnsOP/jBDzB+/HgUFBRA0zRcfPHFLnUkHY4//njb/e/cc8/FxIkTcemll2LdunXIzc21t33XXXdh+vTpym30798fANC1a1f06dMHc+fORe/evWGaJsaPH4+SkhLcdttt2LZtG+bNm4cJEyZA163kikQigdNOOw3l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dar3eVVVld2lSxe7qKgogqNCuCTZK1as8D73eDx2VlaW/ctf/tJ77PDhw3ZSUpL9+9//3rZt2962bZstyd60aZP3mtdee822LMv+6quvWmzsCG3//v22JHvNmjW2bZ+KYUJCgv3SSy95r9m+fbstyX733Xdt27btlStX2i6Xy963b5/3moULF9qpqal2WVlZy34AhNS+fXv7N7/5DTE13NGjR+28vDy7uLjYHjp0qD1t2jTbtvm7aqo5c+bYffv2DXqOmJrp5z//uT1kyJCQ502/X6JSFWXKy8u1efNmjRw50nvM5XJp5MiRevfddyM4MjTUrl27tG/fPkdM09LSNHDgQG9M3333XaWnp6ugoMB7zciRI+VyubRhw4YWHzMCHTlyRJLUoUMHSdLmzZtVUVHhiGvPnj11xhlnOOJ67rnnqnPnzt5rRo8erZKSEm9lBJFTVVWl5cuX6/jx4xo0aBAxNdzUqVN1xRVXOOIn8XfVZJ999pm6dOmibt26afz48dqzZ48kYmqqv/zlLyooKNC4ceOUmZmpfv366de//rX3vOn3SyRVUebbb79VVVWV4z8CktS5c2ft27cvQqNCY1THrbaY7tu3T5mZmY7z8fHx6tChA3GPAh6PRz/72c900UUXqU+fPpJOxSwxMVHp6emOa/3jGizu1ecQGVu3blXbtm2VlJSkyZMna8WKFerduzcxNdjy5cv1/vvvq6ioKOAccTXTwIEDtXTpUq1atUoLFy7Url27dPHFF+vo0aPE1FCff/65Fi5cqLy8PL3++uuaMmWKbr/9dj3//POSzL9fio/obwcAA0ydOlUff/yxYz4/zNWjRw9t2bJFR44c0csvv6wJEyZozZo1kR4WGujLL7/UtGnTVFxcrOTk5EgPB01kzJgx3sf5+fkaOHCgunbtqj/+8Y9yu90RHBkayuPxqKCgQA899JAkqV+/fvr444+1aNEiTZgwIcKjazwqVVGmU6dOiouLC+hg88033ygrKytCo0JjVMettphmZWUFNCKprKzUwYMHiXuE3XbbbXrllVf09ttv6/TTT/cez8rKUnl5uQ4fPuy43j+uweJefQ6RkZiYqO7du6t///4qKipS37599fjjjxNTQ23evFn79+/X+eefr/j4eMXHx2vNmjX61a9+pfj4eHXu3Jm4xoD09HSdffbZ2rlzJ39XDZWdna3evXs7jvXq1cs7rdP0+yWSqiiTmJio/v3768033/Qe83g8evPNNzVo0KAIjgwNlZubq6ysLEdMS0pKtGHDBm9MBw0apMOHD2vz5s3ea9566y15PB4NHDiwxceMU21db7vtNq1YsUJvvfWWcnNzHef79++vhIQER1x37NihPXv2OOK6detWx/8BFBcXKzU1NeD/WBA5Ho9HZWVlxNRQI0aM0NatW7VlyxbvT0FBgcaPH+99TFzNd+zYMf3rX/9SdnY2f1cNddFFFwVsTfLPf/5TXbt2lRQD90sRbZOBoJYvX24nJSXZS5cutbdt22ZPmjTJTk9Pd3SwQXQ5evSo/cEHH9gffPCBLclesGCB/cEHH9hffPGFbdu2PW/ePDs9Pd3+85//bH/00Uf29773PTs3N9c+ceKE9z0KCwvtfv362Rs2bLDXrl1r5+Xl2T/84Q8j9ZFavSlTpthpaWn26tWr7b1793p/SktLvddMnjzZPuOMM+y33nrLfu+99+xBgwbZgwYN8p6vrKy0+/TpY48aNcresmWLvWrVKjsjI8OeNWtWJD4SbNu+++677TVr1ti7du2yP/roI/vuu++2Lcuy33jjDdu2iWms8O3+Z9vE1UQzZsywV69ebe/atctet26dPXLkSLtTp072/v37bdsmpibauHGjHR8fb8+dO9f+7LPP7GXLltkpKSn2iy++6L3G5Pslkqoo9cQTT9hnnHGGnZiYaF9wwQX2+vXrIz0k1OLtt9+2JQX8TJgwwbbtU21C7733Xrtz5852UlKSPWLECHvHjh2O9/j3v/9t//CHP7Tbtm1rp6am2jfccIN99OjRCHwa2LYdNJ6S7CVLlnivOXHihH3rrbfa7du3t1NSUuyrr77a3rt3r+N9du/ebY8ZM8Z2u912p06d7BkzZtgVFRUt/GlQ7cYbb7S7du1qJyYm2hkZGfaIESO8CZVtE9NY4Z9UEVfz/OAHP7Czs7PtxMRE+7TTTrN/8IMf2Dt37vSeJ6Zm+utf/2r36dPHTkpKsnv27Gk/88wzjvMm3y9Ztm3bkamRAQAAAID5WFMFAAAAAI1AUgUAAAAAjUBSBQAAAACNQFIFAAAAAI1AUgUAAAAAjUBSBQAAAACNQFIFAAAAAI1AUgUAAAAAjUBSBQBoVXbv3i3LsrRly5Zm+x0TJ07U2LFjm+39AQDRhaQKAGCUiRMnyrKsgJ/CwsKwXp+Tk6O9e/eqT58+zTxSAEBrER/pAQAAUF+FhYVasmSJ41hSUlJYr42Li1NWVlZzDAsA0EpRqQIAGCcpKUlZWVmOn/bt20uSLMvSwoULNWbMGLndbnXr1k0vv/yy97X+0/8OHTqk8ePHKyMjQ263W3l5eY6EbevWrRo+fLjcbrc6duyoSZMm6dixY97zVVVVuuOOO5Senq6OHTvqrrvukm3bjvF6PB4VFRUpNzdXbrdbffv2dYwJAGA2kioAQMy59957dc011+jDDz/U+PHjdd1112n79u0hr922bZtee+01bd++XQsXLlSnTp0kScePH9fo0aPVvn17bdq0SS+99JL+9re/6bbbbvO+/tFHH9XSpUv13HPPae3atTp48KBWrFjh+B1FRUV64YUXtGjRIn3yySeaPn26rr/+eq1Zs6b5vgQAQIuxbP9/TgMAIIpNnDhRL774opKTkx3H77nnHt1zzz2yLEuTJ0/WwoULvecuvPBCnX/++Xr66ae1e/du5ebm6oMPPtB5552nq666Sp06ddJzzz0X8Lt+/etf6+c//7m+/PJLtWnTRpK0cuVKXXnllfr666/VuXNndenSRdOnT9edd94pSaqsrFRubq769++vP/3pTyorK1OHDh30t7/9TYMGDfK+980336zS0lL97ne/a46vCQDQglhTBQAwzqWXXupImiSpQ4cO3se+yUv181Dd/qZMmaJrrrlG77//vkaNGqWxY8dq8ODBkqTt27erb9++3oRKki666CJ5PB7t2LFDycnJ2rt3rwYOHOg9Hx8fr4KCAu8UwJ07d6q0tFSXXXaZ4/eWl5erX79+9f/wAICoQ1IFADBOmzZt1L179yZ5rzFjxuiLL77QypUrVVxcrBEjRmjq1Kl65JFHmuT9q9dfvfrqqzrttNMc58JtrgEAiG6sqQIAxJz169cHPO/Vq1fI6zMyMjRhwgS9+OKLeuyxx/TMM89Iknr16qUPP/xQx48f9167bt06uVwu9ejRQ2lpacrOztaGDRu85ysrK7V582bv8969eyspKUl79uxR9+7dHT85OTlN9ZEBABFEpQoAYJyysjLt27fPcSw+Pt7bYOKll15SQUGBhgwZomXLlmnjxo169tlng77X7Nmz1b9/f51zzjkqKyvTK6+84k3Axo8frzlz5mjChAm67777dODAAf30pz/Vj370I3Xu3FmSNG3aNM2bN095eXnq2bOnFixYoMOHD3vfv127dpo5c6amT58uj8ejIUOG6MiRI1q3bp1SU1M1YcKEZviGAAAtiaQKAGCcVatWKTs723GsR48e+vTTTyVJ999/v5YvX65bb71V2dnZ+v3vf6/evXsHfa/ExETNmjVLu3fvltvt1sUXX6zly5dLklJSUvT6669r2rRpGjBggFJSUnTNNddowYIF3tfPmDFDe/fu1YQJE+RyuXTjjTfq6quv1pEjR7zXPPjgg8rIyFBRUZE+//xzpaen6/zzz9c999zT1F8NACAC6P4HAIgplmVpxYoVGjt2bKSHAgBoJVhTBQAAAACNQFIFAAAAAI3AmioAQExhVjsAoKVRqQIAAACARiCpAgAAAIBGIKkCAAAAgEYgqQIAAACARiCpAgAAAIBGIKkCAAAAgEYgqQIAAACARiCpAgAAAIBG+P//ToWVYl5p1gAAAABJRU5ErkJggg==\n" + }, + "metadata": {} }, - "659607dd3c294904913ccb88a2ecfea5": { - "model_module": "@jupyter-widgets/controls", - "model_name": "PasswordModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "PasswordModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "PasswordView", - "continuous_update": true, - "description": "Token:", - "description_tooltip": null, - "disabled": false, - "layout": "IPY_MODEL_1a6532f14ca74a479f01155019a2a30f", - "placeholder": "", - "style": "IPY_MODEL_3f9f02c927bb4e0c9e0002703189fbfa", - "value": "" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[38;5;4mℹ This function will save, evaluate, generate a video of your agent,\n", + "create a model card and push everything to the hub. It might take up to 1min.\n", + "This is a work in progress: if you encounter a bug, please open an issue.\u001b[0m\n", + "Saving video to /tmp/tmpus46mpyv/-step-0-to-step-1000.mp4\n", + "Moviepy - Building video /tmp/tmpus46mpyv/-step-0-to-step-1000.mp4.\n", + "Moviepy - Writing video /tmp/tmpus46mpyv/-step-0-to-step-1000.mp4\n", + "\n" + ] }, - "ec4b7fdf9f344b5eb5aabfe00395ddea": { - "model_module": "@jupyter-widgets/controls", - "model_name": "CheckboxModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "CheckboxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "CheckboxView", - "description": "Add token as git credential?", - "description_tooltip": null, - "disabled": false, - "indent": true, - "layout": "IPY_MODEL_c8a5fea9ebed4821821592ae85b0af71", - "style": "IPY_MODEL_439ac621f2cb4c0d91749ee09729453b", - "value": true - } + { + "output_type": "stream", + "name": "stderr", + "text": [] }, - "4064541754324b308f9e02565edc7fc2": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ButtonModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ButtonModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ButtonView", - "button_style": "", - "description": "Login", - "disabled": false, - "icon": "", - "layout": "IPY_MODEL_f116aadb2ef94eb8aa8a6b43c7b4fb5d", - "style": "IPY_MODEL_4f814644155549caa91d2d81d9333740", - "tooltip": "" - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Moviepy - Done !\n", + "Moviepy - video ready /tmp/tmpus46mpyv/-step-0-to-step-1000.mp4\n", + "\u001b[38;5;1m✘ 'DummyVecEnv' object has no attribute 'video_recorder'\u001b[0m\n", + "\u001b[38;5;1m✘ We are unable to generate a replay of your agent, the package_to_hub\n", + "process continues\u001b[0m\n", + "\u001b[38;5;1m✘ Please open an issue at\n", + "https://github.com/huggingface/huggingface_sb3/issues\u001b[0m\n", + "\u001b[38;5;4mℹ Pushing repo oussamab2n/a2c-panda-reach to the Hugging Face Hub\u001b[0m\n" + ] }, - "cc92a18e333e454eaf4d2b27ccad782b": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_3675a21548ee4857b98b3bc0a9c206f3", - "placeholder": "", - "style": "IPY_MODEL_463f22dcd9da484f98795b42c7406fb4", - "value": "\n<b>Pro Tip:</b> If you don't already have one, you can create a dedicated\n'notebooks' token with 'write' access, that you can then easily reuse for all\nnotebooks. </center>" - } + { + "output_type": "display_data", + "data": { + "text/plain": [ + "policy.optimizer.pth: 0%| | 0.00/49.2k [00:00<?, ?B/s]" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "c78c5ec0063b416289dce2fe89e9b0ad" + } + }, + "metadata": {} }, - "136b0ee69b6a4012a1c4a92ea45a352e": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": "center", - "align_self": null, - "border": null, - "bottom": null, - "display": "flex", - "flex": null, - "flex_flow": "column", - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": "50%" - } + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Upload 3 LFS files: 0%| | 0/3 [00:00<?, ?it/s]" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "adbdabe296864d4bb49cd7bf8a6eaa81" + } + }, + "metadata": {} }, - "02dcba9d3e194f79890227e180c37474": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "display_data", + "data": { + "text/plain": [ + "policy.pth: 0%| | 0.00/47.3k [00:00<?, ?B/s]" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "af001b75d30f48c7a5a02293afa17ba5" + } + }, + "metadata": {} }, - "6376dea1e82f4c159ea5062c1b3b14ef": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "display_data", + "data": { + "text/plain": [ + "a2c-panda-reach.zip: 0%| | 0.00/114k [00:00<?, ?B/s]" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "fc348c31afbf470a84acde08f7f4142c" + } + }, + "metadata": {} }, - "1a6532f14ca74a479f01155019a2a30f": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[38;5;4mℹ Your model is pushed to the Hub. You can view your model here:\n", + "https://huggingface.co/oussamab2n/a2c-panda-reach/tree/main/\u001b[0m\n" + ] }, - "3f9f02c927bb4e0c9e0002703189fbfa": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<IPython.core.display.HTML object>" + ], + "text/html": [] + }, + "metadata": {} }, - "c8a5fea9ebed4821821592ae85b0af71": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<IPython.core.display.HTML object>" + ], + "text/html": [ + "<br> <style><br> .wandb-row {<br> display: flex;<br> flex-direction: row;<br> flex-wrap: wrap;<br> justify-content: flex-start;<br> width: 100%;<br> }<br> .wandb-col {<br> display: flex;<br> flex-direction: column;<br> flex-basis: 100%;<br> flex: 1;<br> padding: 10px;<br> }<br> </style><br><div class=\"wandb-row\"><div class=\"wandb-col\"><h3>Run history:</h3><br/><table class=\"wandb\"><tr><td>global_step</td><td>▁▁▂▂▂▃▄▄▁▄▃▄▂▂▅▁▄▃▆▃▃▆▃▆▁▆▅▂▇▇▇▇▇▁▇██▂▄█</td></tr><tr><td>mean_reward</td><td>▁</td></tr><tr><td>rollout/ep_len_mean</td><td>█▅▅▆▅▂▁▁▂▅▁▁▄▆▆▇▁▄▁▅█▇█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▇▁▁</td></tr><tr><td>rollout/ep_rew_mean</td><td>▄▄▄▅▁▅███▆▅█████▃█████▅██▅▄█████████▄█▅█</td></tr><tr><td>rollout/success_rate</td><td>▁▁▂▅▁▃▃▄▄███▇██▄██▅█████████▂▅█▄████████</td></tr><tr><td>std_reward</td><td>▁</td></tr><tr><td>time/fps</td><td>██▆▇▃▆▃▂▂▁▂▅▅▆▄▄▄▄▄▄▄▄▅▁▂▁▄▄▄▃▄▁█▄▅▂▆▅▇▅</td></tr><tr><td>train/entropy_loss</td><td>▁▂▂▂▂▁▁▁▄▂▆▃▃▆▁▄▇▄▂▇▇█▁▁█▇██▂███▂▆▂█▆▆▅▆</td></tr><tr><td>train/explained_variance</td><td>███████████████▁█▄████████▇████▇████████</td></tr><tr><td>train/learning_rate</td><td>▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁</td></tr><tr><td>train/policy_loss</td><td>▄▁▁▁▁▁█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁</td></tr><tr><td>train/std</td><td>███▇▇▆▆▅▇▅█▄▃▃▃▂▆▆█▂▆▅▁▁▅▁▂▄▇▂▁▃▁▁▁▁▁▁▁▁</td></tr><tr><td>train/value_loss</td><td>▁▁▃▁▁▃▁▃█▁▂▁▁▂▁▁█▁▁▁▁▁▁▁▁█▁▁▁▁▁▁▁▁▁▁▁▁▁▁</td></tr></table><br/></div><div class=\"wandb-col\"><h3>Run summary:</h3><br/><table class=\"wandb\"><tr><td>global_step</td><td>500665</td></tr><tr><td>mean_reward</td><td>-0.4558</td></tr><tr><td>model_saved</td><td>True</td></tr><tr><td>rollout/ep_len_mean</td><td>4.75</td></tr><tr><td>rollout/ep_rew_mean</td><td>-0.38819</td></tr><tr><td>rollout/success_rate</td><td>1</td></tr><tr><td>std_reward</td><td>0.34822</td></tr><tr><td>time/fps</td><td>108</td></tr><tr><td>train/entropy_loss</td><td>-5.59675</td></tr><tr><td>train/explained_variance</td><td>0.79654</td></tr><tr><td>train/learning_rate</td><td>0.0007</td></tr><tr><td>train/policy_loss</td><td>-0.56994</td></tr><tr><td>train/std</td><td>0.58343</td></tr><tr><td>train/value_loss</td><td>0.01293</td></tr></table><br/></div></div>" + ] + }, + "metadata": {} }, - "439ac621f2cb4c0d91749ee09729453b": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<IPython.core.display.HTML object>" + ], + "text/html": [ + " View run <strong style=\"color:#cdcd00\">sweet-pyramid-32</strong> at: <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym/runs/aqrdlwti' target=\"_blank\">https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym/runs/aqrdlwti</a><br> View project at: <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym' target=\"_blank\">https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym</a><br>Synced 5 W&B file(s), 0 media file(s), 3 artifact file(s) and 600 other file(s)" + ] + }, + "metadata": {} }, - "f116aadb2ef94eb8aa8a6b43c7b4fb5d": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<IPython.core.display.HTML object>" + ], + "text/html": [ + "Find logs at: <code>./wandb/run-20250226_140257-aqrdlwti/logs</code>" + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Modèle entraîné sur 500 épisodes, évalué, sauvegardé et visualisé avec succès !\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### evalute" + ], + "metadata": { + "id": "iFiJ9KWgjKFP" + } + }, + { + "cell_type": "code", + "source": [ + "import gymnasium as gym\n", + "import panda_gym\n", + "import wandb\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from stable_baselines3 import A2C\n", + "from huggingface_sb3 import load_from_hub\n", + "from gymnasium.wrappers import RecordVideo\n", + "import os\n", + "\n", + "# Initialize Weights & Biases for evaluation\n", + "wandb.init(project=\"panda-gym\", name=\"evaluation\", config={\"num_episodes\": 100})\n", + "\n", + "# Load the model from Hugging Face Hub\n", + "repo_id = \"oussamab2n/a2c-panda-reach\"\n", + "filename = \"a2c-panda-reach.zip\"\n", + "model_path = load_from_hub(repo_id=repo_id, filename=filename)\n", + "model = A2C.load(model_path)\n", + "\n", + "# Create video folder\n", + "video_dir = \"videos\"\n", + "os.makedirs(video_dir, exist_ok=True)\n", + "\n", + "# Create environment with video recording\n", + "env = gym.make(\"PandaReachJointsDense-v3\", render_mode=\"rgb_array\")\n", + "env = RecordVideo(env, video_folder=video_dir, episode_trigger=lambda e: e % 10 == 0) # Record every 10 episodes\n", + "\n", + "# Run evaluation\n", + "num_episodes = 100\n", + "success_count = 0\n", + "episode_rewards = []\n", + "truncation_rewards = [] # Store reward at truncation\n", + "\n", + "for episode in range(num_episodes):\n", + " obs, _ = env.reset()\n", + " done = False\n", + " total_reward = 0\n", + " truncation_reward = None # Initialize reward at truncation\n", + "\n", + " while not done:\n", + " action, _ = model.predict(obs, deterministic=True)\n", + " obs, reward, terminated, truncated, info = env.step(action)\n", + "\n", + " total_reward += reward\n", + "\n", + " # Check success condition\n", + " if \"is_success\" in info and info[\"is_success\"]:\n", + " success_count += 1\n", + "\n", + " done = terminated or truncated\n", + "\n", + " episode_rewards.append(total_reward)\n", + "\n", + " # Log episode rewards\n", + " wandb.log({\"Episode\": episode + 1, \"Total Reward\": total_reward})\n", + "\n", + " print(f\"Episode {episode+1}: Total Reward = {total_reward} is_success : {info['is_success']}\")\n", + "\n", + "# Log success rate\n", + "success_rate = (success_count / num_episodes) * 100\n", + "wandb.log({\"Success Rate\": success_rate})\n", + "print(f\"\\nSuccess Rate: {success_rate:.2f}% ({success_count}/{num_episodes})\")\n", + "\n", + "# Close the environment safely\n", + "try:\n", + " env.close()\n", + "except Exception as e:\n", + " print(f\"Warning: Unable to close environment properly: {e}\")\n", + "\n", + "# Plot Total Reward per Episode\n", + "plt.figure(figsize=(10, 5))\n", + "plt.plot(range(1, num_episodes + 1), episode_rewards, marker=\"o\", linestyle=\"-\", label=\"Episode Reward\")\n", + "plt.xlabel(\"Episode\")\n", + "plt.ylabel(\"Total Reward\")\n", + "plt.title(\"Total Reward per Episode (Evaluation)\")\n", + "plt.legend()\n", + "plt.grid()\n", + "plt.show()\n", + "\n", + "# Finish Weights & Biases logging\n", + "wandb.finish()\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 }, - "4f814644155549caa91d2d81d9333740": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ButtonStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ButtonStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "button_color": null, - "font_weight": "" - } + "id": "o0EsUC_8pFK-", + "outputId": "b45c2335-8894-4934-b36a-0bc9db13c0bf" + }, + "execution_count": 16, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Episode 1: Total Reward = -0.4062510058283806 is_success : True\n", + "Episode 2: Total Reward = -0.7712566517293453 is_success : True\n", + "Episode 3: Total Reward = -0.22577803954482079 is_success : True\n", + "Episode 4: Total Reward = -0.042276110500097275 is_success : True\n", + "Episode 5: Total Reward = -0.618223849684 is_success : True\n", + "Episode 6: Total Reward = -0.04875709488987923 is_success : True\n", + "Episode 7: Total Reward = -0.5882552899420261 is_success : True\n", + "Episode 8: Total Reward = -0.16985227167606354 is_success : True\n", + "Episode 9: Total Reward = -0.17977378517389297 is_success : True\n", + "Episode 10: Total Reward = -0.03690134733915329 is_success : True\n", + "Episode 11: Total Reward = -1.8714497312903404 is_success : True\n", + "Episode 12: Total Reward = -0.35330819338560104 is_success : True\n", + "Episode 13: Total Reward = -0.31165493465960026 is_success : True\n", + "Episode 14: Total Reward = -0.5640652924776077 is_success : True\n", + "Episode 15: Total Reward = -0.33318396657705307 is_success : True\n", + "Episode 16: Total Reward = -0.6635698936879635 is_success : True\n", + "Episode 17: Total Reward = -0.35100577771663666 is_success : True\n", + "Episode 18: Total Reward = -0.3555702306330204 is_success : True\n", + "Episode 19: Total Reward = -0.14223862066864967 is_success : True\n", + "Episode 20: Total Reward = -0.09988411515951157 is_success : True\n", + "Episode 21: Total Reward = -0.4415702186524868 is_success : True\n", + "Episode 22: Total Reward = -0.14504414796829224 is_success : True\n", + "Episode 23: Total Reward = -0.48955822736024857 is_success : True\n", + "Episode 24: Total Reward = -0.868715662509203 is_success : True\n", + "Episode 25: Total Reward = -0.19161485880613327 is_success : True\n", + "Episode 26: Total Reward = -0.6230216957628727 is_success : True\n", + "Episode 27: Total Reward = -0.4985925517976284 is_success : True\n", + "Episode 28: Total Reward = -0.293687392026186 is_success : True\n", + "Episode 29: Total Reward = -0.14396221190690994 is_success : True\n", + "Episode 30: Total Reward = -0.391715832054615 is_success : True\n", + "Episode 31: Total Reward = -0.956602681428194 is_success : True\n", + "Episode 32: Total Reward = -0.1682831607758999 is_success : True\n", + "Episode 33: Total Reward = -0.1536100059747696 is_success : True\n", + "Episode 34: Total Reward = -0.345889188349247 is_success : True\n", + "Episode 35: Total Reward = -0.0851143728941679 is_success : True\n", + "Episode 36: Total Reward = -0.21177243813872337 is_success : True\n", + "Episode 37: Total Reward = -0.42292168363928795 is_success : True\n", + "Episode 38: Total Reward = -0.39669718965888023 is_success : True\n", + "Episode 39: Total Reward = -0.2870192937552929 is_success : True\n", + "Episode 40: Total Reward = -0.1431233212351799 is_success : True\n", + "Episode 41: Total Reward = -0.2012624740600586 is_success : True\n", + "Episode 42: Total Reward = -0.34745531901717186 is_success : True\n", + "Episode 43: Total Reward = -0.44094180688261986 is_success : True\n", + "Episode 44: Total Reward = -0.35268260911107063 is_success : True\n", + "Episode 45: Total Reward = -0.3315625675022602 is_success : True\n", + "Episode 46: Total Reward = -0.619943555444479 is_success : True\n", + "Episode 47: Total Reward = -1.0147716626524925 is_success : True\n", + "Episode 48: Total Reward = -0.6043238863348961 is_success : True\n", + "Episode 49: Total Reward = -0.35877181962132454 is_success : True\n", + "Episode 50: Total Reward = -0.2241729274392128 is_success : True\n", + "Episode 51: Total Reward = -0.19858066737651825 is_success : True\n", + "Episode 52: Total Reward = -0.04564374312758446 is_success : True\n", + "Episode 53: Total Reward = -0.22833451628684998 is_success : True\n", + "Episode 54: Total Reward = -0.8358038850128651 is_success : True\n", + "Episode 55: Total Reward = -0.7864313051104546 is_success : True\n", + "Episode 56: Total Reward = -0.3810633607208729 is_success : True\n", + "Episode 57: Total Reward = -0.11827689781785011 is_success : True\n", + "Episode 58: Total Reward = -0.5082429815083742 is_success : True\n", + "Episode 59: Total Reward = -0.5666449964046478 is_success : True\n", + "Episode 60: Total Reward = -0.30292200297117233 is_success : True\n", + "Episode 61: Total Reward = -0.6551055945456028 is_success : True\n", + "Episode 62: Total Reward = -2.1062250286340714 is_success : True\n", + "Episode 63: Total Reward = -0.43518895097076893 is_success : True\n", + "Episode 64: Total Reward = -0.12211803160607815 is_success : True\n", + "Episode 65: Total Reward = -0.5217533744871616 is_success : True\n", + "Episode 66: Total Reward = -0.2624095845967531 is_success : True\n", + "Episode 67: Total Reward = -0.6889664717018604 is_success : True\n", + "Episode 68: Total Reward = -0.1458827406167984 is_success : True\n", + "Episode 69: Total Reward = -0.6224392205476761 is_success : True\n", + "Episode 70: Total Reward = -0.5712128654122353 is_success : True\n", + "Episode 71: Total Reward = -0.32383403554558754 is_success : True\n", + "Episode 72: Total Reward = -0.9531832113862038 is_success : True\n", + "Episode 73: Total Reward = -0.3022409453988075 is_success : True\n", + "Episode 74: Total Reward = -0.1974497027695179 is_success : True\n", + "Episode 75: Total Reward = -0.46416498720645905 is_success : True\n", + "Episode 76: Total Reward = -0.171061422675848 is_success : True\n", + "Episode 77: Total Reward = -0.13197795674204826 is_success : True\n", + "Episode 78: Total Reward = -0.40117064118385315 is_success : True\n", + "Episode 79: Total Reward = -0.3267452251166105 is_success : True\n", + "Episode 80: Total Reward = -0.013564204797148705 is_success : True\n", + "Episode 81: Total Reward = -0.36473673209547997 is_success : True\n", + "Episode 82: Total Reward = -0.20988689735531807 is_success : True\n", + "Episode 83: Total Reward = -1.1261731199920177 is_success : True\n", + "Episode 84: Total Reward = -0.21271120756864548 is_success : True\n", + "Episode 85: Total Reward = -0.36954135820269585 is_success : True\n", + "Episode 86: Total Reward = -0.1980939283967018 is_success : True\n", + "Episode 87: Total Reward = -0.8878751918673515 is_success : True\n", + "Episode 88: Total Reward = -0.35339905321598053 is_success : True\n", + "Episode 89: Total Reward = -0.033909156918525696 is_success : True\n", + "Episode 90: Total Reward = -2.02072698995471 is_success : True\n", + "Episode 91: Total Reward = -0.5981295704841614 is_success : True\n", + "Episode 92: Total Reward = -0.310416866093874 is_success : True\n", + "Episode 93: Total Reward = -0.24613886699080467 is_success : True\n", + "Episode 94: Total Reward = -0.7379350885748863 is_success : True\n", + "Episode 95: Total Reward = -0.2529986910521984 is_success : True\n", + "Episode 96: Total Reward = -0.7348614633083344 is_success : True\n", + "Episode 97: Total Reward = -0.13540641963481903 is_success : True\n", + "Episode 98: Total Reward = -0.22798261418938637 is_success : True\n", + "Episode 99: Total Reward = -0.02772532030940056 is_success : True\n", + "Episode 100: Total Reward = -0.37505700439214706 is_success : True\n", + "\n", + "Success Rate: 100.00% (100/100)\n", + "Warning: Unable to close environment properly: 'RecordVideo' object has no attribute 'enabled'\n" + ] }, - "3675a21548ee4857b98b3bc0a9c206f3": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<Figure size 1000x500 with 1 Axes>" + ], + "image/png": "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OcnKlSvhdDpphYdw0003ged5vPbaa5rPQSopgGAE0NnZialTp6K0tBSbNm0yfWxLly5FVVUVxo0bhwsvvBAFBQV4+eWXMXbsWABClWD16tX42te+RqssHR0d6OzsxLJly7Br1y7qRrho0SK0trZix44dAISK1eLFi7Fo0SKsWbMGgFDd4nk+rpIlfW+Dg4Po6OjAySefDJ7nsXnz5qRjvu666+L+vXLlSgBI+ny1KiSJXHHFFSgqKqL/vvDCC1FXV0eff8uWLdi1axcuvfRSdHZ20s9icHAQp59+Ot5//31Eo9G45/zOd75j6Bhuu+02vPnmm0n/lZeXx91vwYIFmD9/Pv33+PHj8eUvfxmvv/46IpGI7HMTI4hXX30VoVBI9j56z1W9nznP83jxxRdx7rnngud5+pl1dHRg2bJl6O3tVT1/u7q6wPN8XGU1kRdffDHp83rsscfo3y+44AK4XC48++yz9LbGxkZs27YNX//61+ltXq8XDoewFYlEIujs7ERhYSFmzJiR0m8sEen53t3djd7eXixatMj0a7z11lsIBoO4/vrr6fEDwLXXXovi4mL85z//ibt/YWFhXL+ox+PBCSecgL179yY9N/nc5aqrDAbDPjC5IIPByEmampowZsyYuA08ILoNNjU1aT7H8PAw7rnnHjz22GM4fPhwnPSst7fX9LH94Q9/wPTp09Hb24tHH30U77//fpxr2e7du8HzPH7605/ipz/9qexztLW1ob6+ngZOa9aswdixY7F582bcddddqKqqwq9//Wv6t+LiYhx99NH08QcOHMBtt92Gl19+Gd3d3XHPnfjeXC4XDQAJTU1NcDgcSXKqGTNmGPospk2bFvdvjuMwdepUKqHctWsXAODKK69UfI7e3t64gGDSpEmGjmHOnDlYunSp4WMFgOnTp2NoaAjt7e1xPW+EU045BV/96ldxxx134De/+Q2WLFmC888/H5deein9zvWeq3o/8/b2dvT09OCRRx7BI488Ivte2traNN8vryK1XLx4sarxRWVlJU4//XQ899xzuPPOOwEIUkGXy4ULLriA3i8ajeLBBx/EQw89hH379sUFqxUVFZrHqJdXX30Vd911F7Zs2YJAIEBvl8pBjUC+k8TP3uPxYPLkyUnry9ixY5Neq6ysDJ9++mnSc5PP3eyxMRiM7IAFWQwGg6HAD37wAzz22GO4/vrrsWDBApSUlIDjOFx88cVJ1RMjnHDCCdRd8Pzzz8fChQtx6aWXYseOHSgsLKTP/eMf/xjLli2TfY6pU6cCAMaMGYNJkybh/fffx8SJE8HzPBYsWICqqir86Ec/QlNTE9asWYOTTz45rmJwxhlnoKurCzfffDNmzpyJgoICHD58GFdddVXSe5NWGzINOZb/+7//w7x582Tvk2glLq1ajDQcx+GFF17A+vXr8corr+D111/HNddcg/vuuw/r16+XtUFPFfKZXX755YrB6dy5cxUfX15eDo7jkoJvo1x88cW4+uqrsWXLFsybNw/PPfccTj/99Ljg7O6778ZPf/pTXHPNNbjzzjtRXl4Oh8OB66+/XvM3xnGcbCCYWFVcs2YNzjvvPCxevBgPPfQQ6urq4Ha78dhjj+Ef//hHSu9RL0rOhHLHTz730eTeyGDkIizIYjAYOcmECRPw1ltvob+/P65CsH37dvp3glLG+IUXXsCVV16J++67j97m9/uT3MNSwel04p577sGpp56K3//+97jlllswefJkAILTmJ4Ky6JFi/D+++9j0qRJmDdvHoqKinD00UejpKQEq1atwqZNm+Kc3j777DPs3LkTTzzxBK644gp6+5tvvqn7uCdMmIBoNIo9e/bEZfOJbFEvpFJF4Hkeu3fvpkEAqdoUFxfr+izSSeKxAsDOnTvh8/lQVVWl+tiTTjoJJ510En7xi1/gH//4By677DI888wz+Na3vqX7XNX7mRPnwUgkYuozc7lcmDJlCvbt22f4sVLOP/98/Nd//ReVDO7cuRO33npr3H1eeOEFnHrqqfjrX/8ad3tPT49mkFFWViYrt0usIr344ovIy8vD66+/HlcxlsobCXqrR+Q72bFjB/29AkAwGMS+fftSOlf37dsHh8OB6dOnm34OBoMx8rCeLAaDkZOsWLECkUiEWkUTfvOb34DjuDhHr4KCAtnAyel0JmWaf/e73yn235hlyZIlOOGEE/DAAw/A7/ejuroaS5YswZ/+9Cc0Nzcn3b+9vT3u34sWLcL+/fvx7LPPUvmgw+HAySefjPvvvx+hUCiuH4tk1aXvjed5PPjgg7qPmXx+Uvt4AHjggQd0PwcgDJHu7++n/37hhRfQ3NxMn3/+/PmYMmUKfv3rX2NgYCDp8YmfRTpZt25dXA/PwYMH8e9//xtnnnmmYqWiu7s76RwiFTkiW9N7rur9zJ1OJ7761a/ixRdfRGNjY9Ix6fnMFixYgI8//ljzfmqUlpZi2bJleO655/DMM8/A4/EkDfmV+409//zztOdQjSlTpmD79u1x72fr1q1J1v5OpxMcx8X9bvfv34+XXnop6TmV1oJEli5dCo/Hg9/+9rdxx//Xv/4Vvb29hl02pXzyySc46qijUFJSYvo5GAzGyMMqWQwGIyc599xzceqpp+J//ud/sH//fhx99NF444038O9//xvXX399XF/L/Pnz8dZbb+H++++n8rsTTzwR55xzDv7+97+jpKQEs2fPxrp16/DWW29Z2itC+MlPfoKLLroIjz/+OL7zne/gD3/4AxYuXIg5c+bg2muvxeTJk9Ha2op169bh0KFDcXOESAC1Y8cO3H333fT2xYsX47XXXoPX68Xxxx9Pb585cyamTJmCH//4xzh8+DCKi4vx4osvGpKHzZs3D5dccgkeeugh9Pb24uSTT8bbb7+N3bt3G3rf5eXlWLhwIa6++mq0trbigQcewNSpU3HttdcCEILFv/zlLzjrrLNw1FFH4eqrr0Z9fT0OHz6Md955B8XFxXjllVcMvWYia9asgd/vT7p97ty5cbK6hoYGLFu2LM7CHYDsPCjCE088gYceeghf+cpXMGXKFPT39+PPf/4ziouLsWLFCgD6z1Ujn/kvf/lLvPPOOzjxxBNx7bXXYvbs2ejq6sKmTZvw1ltvyVqwS/nyl7+Mv//979i5c6dsReWFF16QlTqeccYZqKmpof/++te/jssvvxwPPfQQli1bRo1ACOeccw5+/vOf4+qrr8bJJ5+Mzz77DE899VRcdUiJa665Bvfffz+WLVuGb37zm2hra8Mf//hHHHXUUejr66P3O/vss3H//fdj+fLluPTSS9HW1oY//OEPmDp1alJPlNJakEhVVRVuvfVW3HHHHVi+fDnOO+887NixAw899BCOP/5400PRQ6EQ3nvvPXz3u9819XgGg5FFZNTLkMFgMNJEooU7z/N8f38/f8MNN/Bjxozh3W43P23aNP7//u//4qzAeZ7nt2/fzi9evJjPz8/nAVAL5+7ubv7qq6/mKysr+cLCQn7ZsmX89u3b+QkTJsTZPBu1cJez845EIvyUKVP4KVOm8OFwmOd5nt+zZw9/xRVX8LW1tbzb7ebr6+v5c845h3/hhReSHl9dXc0D4FtbW+lta9eu5QHwixYtSrr/tm3b+KVLl/KFhYV8ZWUlf+211/Jbt25Nssm+8sor+YKCAtn3Mzw8zP/whz/kKyoq+IKCAv7cc8/lDx48aMjC/emnn+ZvvfVWvrq6ms/Pz+fPPvvsOAt5wubNm/kLLriAr6io4L1eLz9hwgT+a1/7Gv/222/T+xB78fb2dtXXTjwGpf+k7wEA/73vfY9/8skn+WnTpvFer5c/5phjkr7zRKvvTZs28Zdccgk/fvx43uv18tXV1fw555wTZwXP8/rPVSOfeWtrK/+9732PHzduHO92u/na2lr+9NNP5x955BHNzyYQCPCVlZX8nXfeGXe7moW73G+gr6+P/q6efPLJpNfx+/38TTfdxNfV1fH5+fn8l770JX7dunVJ9uxyFu48z/NPPvkkP3nyZN7j8fDz5s3jX3/9dVkL97/+9a/0e5s5cyb/2GOP0fciRWktSPxeCb///e/5mTNn8m63m6+pqeGvu+46vru7O+4+p5xyCn/UUUclvXe543zttdd4APyuXbuS7s9gMOwFx/M6JjUyGAwGg2Eh7777Lk499VQ8//zzuPDCC0f6cDThOA7f+973kiR9ucydd96Jxx57DLt27VKUQzKs5fzzzwfHcfjXv/410ofCYDBShPVkMRgMBoPBSOKGG27AwMAAnnnmmZE+lFHBF198gVdffZVa3jMYDHvDerIYDAaDwWAkUVhYqGueFsMaZs2ahXA4PNKHwWAwLIJVshgMBoPBYDAYDAbDQlhPFoPBYDAYDAaDwWBYCKtkMRgMBoPBYDAYDIaFsCCLwWAwGAwGg8FgMCyEGV9oEI1GceTIERQVFYHjuJE+HAaDwWAwGAwGgzFC8DyP/v5+jBkzBg6Hcr2KBVkaHDlyBOPGjRvpw2AwGAwGg8FgMBhZwsGDBzF27FjFv7MgS4OioiIAwgdZXFyc9tcLhUJ44403cOaZZ8Ltdqf99Ri5ATtvGGZh5w7DDOy8YZiBnTcMs2TTudPX14dx48bRGEEJFmRpQCSCxcXFGQuyfD4fiouLR/wkYtgHdt4wzMLOHYYZ2HnDMAM7bxhmycZzR6uNiBlfMBgMBoPBYDAYDIaFsCCLwWAwGAwGg8FgMCyEBVkMBoPBYDAYDAaDYSEsyGIwGAwGg8FgMBgMC2FBFoPBYDAYDAaDwWBYCAuyGAwGg8FgMBgMBsNCWJDFYDAYDAaDwWAwGBbCgiwGg8FgMBgMBoPBsBDbBVl/+MMfMHHiROTl5eHEE0/Exo0bVe///PPPY+bMmcjLy8OcOXOwcuXKDB0pg8FgMBgMBoPBGI3YKsh69tlnceONN+L222/Hpk2bcPTRR2PZsmVoa2uTvf+HH36ISy65BN/85jexefNmnH/++Tj//PPR2NiY4SNnMBgMBoPBGL1Eojw27OvCJx0cNuzrQiTKj/QhMRhpxVZB1v33349rr70WV199NWbPno0//vGP8Pl8ePTRR2Xv/+CDD2L58uX4yU9+glmzZuHOO+/Esccei9///vcZPnIGg8FgMBiM0cmqxmYsvHc1Ln/0Y/xtlxOXP/oxFt67Gqsam0f60BiMtOEa6QPQSzAYxCeffIJbb72V3uZwOLB06VKsW7dO9jHr1q3DjTfeGHfbsmXL8NJLLym+TiAQQCAQoP/u6+sDAIRCIYRCoRTegT7Ia2TitRi5AztvGGZh5w7DDOy8Yejl9c9b8YNntiKxbtXS68d1T27C7y4+GsuOqhmRY2PYh2xac/Qeg22CrI6ODkQiEdTUxP8Qa2pqsH37dtnHtLS0yN6/paVF8XXuuece3HHHHUm3v/HGG/D5fCaO3Bxvvvlmxl6LkTuw84ZhFnbuMMzAzhuGGlEeuGOTMxZgcXF/42P/93//uQWh/RE4uKSHM0YRUR7Y08ehLwQUu4EpxbzsOZENa87Q0JCu+9kmyMoUt956a1z1q6+vD+PGjcOZZ56J4uLitL9+KBTCm2++iTPOOANutzvtr2cXIlEeHzd1o60/gOoiL46bUAYnW5Ep7LxhmIWdOwwzsPOGoYcN+7rQs/5jlXtw6AkCVbNPwomTyjN2XCMB28co8/rnrbhn5Xa09IlKstpiL/53xUxa5cymNYeo3LSwTZBVWVkJp9OJ1tbWuNtbW1tRW1sr+5ja2lpD9wcAr9cLr9ebdLvb7c7ol5qJ14tEeWzc14W2fj+qi/JwwqTyrPzBr2psxh2vbENzr5/eVleSh9vPnY3lDXUjeGTZR6bPU0buwM4dhhnYecNQo3MorPt+uXwesX2MMqsam2XlpK19Afzgma14+PJj4z6jbFhz9L6+bYwvPB4P5s+fj7fffpveFo1G8fbbb2PBggWyj1mwYEHc/QGhzKh0/9EEaUK95M/r8aNntuCSP6831IQaifJYt6cT/95yGOv2dKbNJWhVYzOue3JT3MIEiFpu1jTLYDCyiUytjQyGHaguyrP0fnaE7WOUiUR53PHKtqQACwC97Y5Xttl2HbVNJQsAbrzxRlx55ZU47rjjcMIJJ+CBBx7A4OAgrr76agDAFVdcgfr6etxzzz0AgB/96Ec45ZRTcN999+Hss8/GM888g48//hiPPPLISL6NEYf84JWaUBOzBnKPz0RGRuvHx0H48Z0xuzYrK3AMBmN0wbLVDEY8J0wqR11JHlp6/bLXcg5AbYmgpMlF2D5GnY37upKCTyk8gOZePzbu68Jx49PfsmM1tqlkAcDXv/51/PrXv8Ztt92GefPmYcuWLVi1ahU1tzhw4ACam8WMwMknn4x//OMfeOSRR3D00UfjhRdewEsvvYSGhoaRegsjTqpZg0xmZIz8+BgMBmMkYdlqBiMZp4PD7efOlv0bCSluP3d2zgYYbB+jTlu/8mdj5n7Zhq0qWQDw/e9/H9///vdl//buu+8m3XbRRRfhoosuSvNR2QcjP/gFUyri/pbpjEyu//gYDEZuwLLVDIYyyxvq8PDlx+LWf36G7iHR+rp2FFR52T5GnVyXk9qqksVInVR+8JnOyOT6j4/BYOQGLFvNYKizvKEOPzhtatxtb914Sk4HWADbx2hB5KRKcBAk13aVk7Iga5SRyg8+0xkZ8uNTyvva/cfHYDByA5atZjC0Odg9HPfvlr7c/z2wfYw6uS4nZUHWKCOVH3ymMzK5/uNjjD6Y81xuwrLVDIY2BzrjB7geTgi6chG2j9FmeUMdTp9ZnXR7bUmephFbtsOCrFFGKj/4kcjILG+ow0+WzUi6PRd+fIzRRapjExjZC8tWMxjaNHUJQZbHISSXDvfkfpAFiD1pZb742UpsHyPSOxyK+/ePTp+GtTefZvvPhgVZoxDyg893x3/9Wj/4kcrIDIcicf/+/qlTcuLHxxg9MOe53IasjUoW1QDLVjNGN9Eoj4OxIGtyUSzIGgWVLMLyhjpct2QK/fdZDbVsHxMjFImi8UgvAKChXrBpL/A6c2K9ZEHWKGV5Qx0qC7303wUep64fPAnQ8gwGaKnw9hdtAAAu9nubWFmYEz8+q4hEeWzY14VPOjhs2NfFJGhZRq4PW2QILG+owxULJiTdXuZzs2w1Y9TT1h9AIByF08FhSvHoqmQRDkmCyspCL9vHxNjZ2g9/KIqiPBcWTq0CEP9Z2RnbWbgzrKGtzx/XhDqUUC1SY3lDHY75cD/W7RWcsu796hxcOH9cWhaM5t5hbGvuA8cBx4wrxaYDPQhHopa/jl2JH37qxN92fcyGn2YZqYxNYNgLYk99/rwxaO71Y8O+Lnzt+HHst8gY9TR1DgIAxpTkoTJvAMDoqmQBwIEusSctHGX7GMKWgz0AgHnjSjGuPB9A7pwbrJI1Svm4qRsAMK26EADA88maWDV6hsP0f48r86UtI0OqWMeMK0VtzOYzxIIsAEyCZheY89zoIBLlsXZXOwDgspMm4IJj6wEAm5p6RvCoGIzsgPRjjS/3ocw7OitZ0iArGGbKBcLWWJB19NhS1JfGgqwcOTdYkDVK+Xi/EGSdNLkCRV6hoNk9FNT9+B7JfTsH9T/OKKu3C0HW6bNq4HYKp2swwhYnJkGzD8x5bnTQeLgX3UMhFHldmDeuFMdNFEwuth7qQSCsXylgNbngaJkL72G0Q5wFx5fnozzWqdDS5x81ypRolMehLjFwYJUsEVLJOnpcKcaWCUHWoe5h8Lz9f+dMLjhK+aRJkPodN7EM7+5sQ38gHBc4aSENyIwEZ0YYDkbwwe4OAMDps6qxr0OQG7BKFpOg2QniPNfS61c0RqhlznO25/2dQhXr5KkVcDsdmFxZgPICD7oGg2g83If5E8oyfkzxcmIBu8mJc+E9MMQqzvhyH4p6AbeTQyjCo7nXj3HlvhE+uvTT2u9HULJ3CbNkMQBgIBDGrjZBPnr0uBIUed309r7hMEoSHBntBqtkjUKGgmE0HukDABw3sRyl+R4AQM+QPrmgPxSBPyQuFl1pqmR9uKcDgXAU9aX5mFFTRCtZoTALspgEzT6ouXISmPOc/XkvFmQtni40bnMcRwOrj/d3Zfx4ckFOnAvvwa5YXT0kcsFxZflwcEKgDOSOLEyLxBlhQZYsBgB8dqgXPA/Ul+ajuigP+R4nKgqEPenB7iGNR2c/LMgahWw52INIlEddSR7qS/NRGssUdOsMshIrV91pCrLeivVjnTazGhzHweMUNqGsksUkaHZDyZUz3+1gznM5QJ8/hM0xycviaVX09uMnxoKsWA9spsgFOXEuvAe7ko6ZfgdixhfjY1Ur2nuTIwYHWkj7sQDkrEzSaHAuSgVL6G1EMpgLATiTC45CPon1Y5Esa5mPVLL0BUvdg/HBWJfO4MwIPM9j9fZWAIJUEABco7gnKxLlsXFfF9r6/aguykNNsRdODlD6KPRK0BKf94RJ5barqNjlPSxvqMO4N3ZgV9sglh1Vi9c/bwEHYMmM5En3mUJq/1+xrwsLplZn5WeX7Xy4uwORKI/JVQVx0ifSl/VJUzd4ngfHZeazzQU58Ui/B7usK1ZDqoeJlxZSPTSTFOrzh2gSd1x5PvYBGFM6uipZZEZYgceJwWAEoRzcx5iR9m6VOAsS6svysfVQb04E4CzIGoV8FMuqHh/bAJTRSpbOICvhfl2DAQuPTuDzI31o7Qsg3+3ESZOFCyiVC+ZoBkgJuYVLK8ACtCVoudDrYKf3EIpEsT8mGfnfs2fhs0M9ONLrx3s727HsqNqMHw+z/7eO93YKvaPSKhYANIwpgdflQNdgEHs7BjGlqjAjx5MLcuKRfA92WlesRKt6yEGoHp4xu9ZQwEmkcpWFHhTGjLbqS0ZnJWtKdSE+PdSbc/sYs8H51kM9AARnQQKpcubCrCwmFxxlRKI8NjfFV7JKY5Uss3LBrkHrK1nEVXDhtErkuZ0AMCrlgko9CSTAuuzE8VTbTtAzGDoXeh1G8j2Y6Vdo6hxCKMLD53FibFk+VswRvp//fJr5zzoXvv9sged5anpxyvT4IMvjcuDoWIY2k31ZuSAnHqn3MJp/G0aqh0YgAYa0yjvaKlmkJ21yZQGA3NrHmJX2tvb50dzrh4MD5oyVygWF8+RwD+vJYtiMna396A+EUeBxYmZtEQCxkqVbLhgLxki2IR09WW9/EZMKzhSlVKOtkqW2cBFWb2/Dez85FX+7aj642D2f+fZJqgFWLvQ6jOR7MNuvsLutHwAwtboQHMfh7LnCd/TWF63wGxgGniq58P1nE3vaB3G4ZxgepwMnTk6W5x4XS2Z9tD9zfVnE0VKp1sBBqMxks6PlSLyH0f7bSFf1sClWyZogCbJybR6SFkQuSKrZ4Rw6h8wG56Qfa3pNEXweUViXS+cGC7JGGSSbeuyEMtrjVBZzcknstVKiJxZUTa4SMjJdQ0Hd8wz0VADa+v3YeqgXgGB6QXC7Yj1Zo2SIn9bCBQgL1ydN3VgwpQIVeeJtqTyv2WxlJsnEe5A7V1PJcu9qFWxqp8YGgM8bJwxeHApG8O6ONtPHaZRc+P6zCVLFOmFSedxGgXC8pC8rU6g5WuqVE4800veQeJTpeg+j/beRrurhga6Y6UVFAb1NWsmK5lDAIcdgIIyOAbJvEtb/YA65JJsNzrfI9GMBQk8WkBtyQdaTNcr4OEEqCEjlgsYqWZMrC7BmVweC4SiGghEUeNVPJ70693e3C5uWuWNLUF0sLuajrZJlbOEqRrmXR4ef01yYWL+GNnLnam2xF/5w1HS/wu52IciaVi1UkEk165H39+LVT5sz1uuRC99/NvH+LmLdXin792PHl4HjgH0dg2jvD6CqyJuR41reUIefnjMbP391W9zttTbqLSKunD996XO0D4i9v+l6D6Ptt5Fo7jHgV0+0mp3pJ1fJqi3OA8cJwUbHYCCrpaupQqzIS/LdqCgU9lu5VMkyG5zLmV4AYpDVMxTCYCCsubfMZux75AxTfLw/3vQCkMoFdVayYsHYmNJ85Lkd8Iei6BoMqv4Q9DRFnjG7Fhv3deHJDfsBAEtmJPQ3jLKeLKMLV0Vs76bVSMz6NdRRPFf71A1etNzOEitZAHD2HCHIevuLNgwHI8j3OA0fr1Fy4fvPFvyhCNbv7QQgzsdKpMTnxvTqIuxo7ccnTd1Y3pA5k5Oa4vjv8IenT8WPTp+e1RWsRJY31CHP5cRVj39Eb/vPDxahPLZZtZLR9NuQSyRJ4YC4NTCV6iHpyZpQIQZZHpcDNUV5aOnz43D3cE58pkoQ448JFT64c3AfQ6S9Lb1+2SSkXHAejfL4NKZYOjohyCrOc6M4z4U+fxiHe4YxvaYofQefZphccBTR3DuMwz3DcDq4uMxBmeFKVpA+rjz2WLWBxHp07rf88zN86ZdCn8unh4RByU9tOBAnvxptlSyjPQnlXuHTPKQxwI/1ayijpw9OC7ksdyTKYw+tZIlB1tyxJRhblo/hUATvZEgySD47Jezw/WcLH+/vhj8URU2xFzNUNgLHkXlZGR5KvLttIO7fxXluWwVYhIMJvRltA+mpJOXC2qgHJdkz4VuLJqHWhKGSHMFwFEdi3994SSULECsWudB7o4bU+MPlEPYx4RyycFeT9gLCPi8xON/TPoCBQBg+j1M2iCLmF1r7mWyHBVmjCFLFmlVXFFd1IsOIA+EohoPaDfhELljqc9N+ri6VAE2Pzr1nKISWvvj7dA0E4/pc3KNsTpbRvoryWCVLSy6Y7n4NM857RknXe9DTB6eFXEb2UPcQAuEoPC5HnMOW1AAjUy6Dap8dIH9BZMjz3k4hMF48rUp1BhZRDnyU4aHERKLqifWzpnpujxRkkC2hJU3vIxd62bTQSiRxENai935yKu4+vwEAUJznwtqbTzMlzzzcM4woD+S7nUlSWTp0Ngd6b9Qgphfjy32SfUxuJYuJtLe6OFkOPauuKOncIf1YDfUlsr+n+hw5N1iQNYogWdTjJsRn4Qq9LrhiJ3nPsHY1i1ayCjwop6YZyo8zq19PdHMixhe5OildDrJwEYkBQS6rSCtZOmxPlzfU4ZdfnZN0u9lsJcGs854ZljfU4XeXHpOUOSsv9Jh+D6n0WqhluUlFYUpVYdIF5Zw5YwAAb29vxVAwbPr1jbC8oQ6TKn2Kfx8tiQyzkETCq1uF83rhVPl+LALpgf38cK+uRJZV7GoVHC1PjJ2T6QpO0g2pBBBa+9L3PsiaW5wXL39PdW1MJ0YSW3rNPT5p6saXj6kHAPT5w+gbNjeqpSkWII8v9yUlIrLZRc7KZOGBuCBL+AxycR+zvKEO//jWSQAAr5PDby+eBwcHfNHcj8+P9MbdV8n0gkBnZWXhuWEE1pM1iiCmF0S6QuA4DqU+NzoGgugeDKEuNiRQCRJQlfncNMhSkwumorWW9rmMtp4swumzauj//unZszB7TAlOmFSetFknlazmHj/CkSh1j1RiUmX8YNSbl8/AtxdPMZ2lNTuMMBUqC73gARTluVBXkoedrQO46Yzppl/H7LmqleXe1ZYsFSQ01BdjfLkPB7qGsHp7G86ZO8bUMRihcyBAByM/+LW5+GTzZpy56ESs39eN37+zB//vn59hzpgStPT5aVO83Dk3GpHrZbl75Rfwuh2K593YsnzUFgv9J1sO9sj27FlNJMpjb4ewwV04tRJrdnUkqQXsAjFOIJ9hS696f2SqLG+oQ+ORPvx+9W4AwOUnjscdX27IyvPf6OBkI+YeBd4KjCnJw5FeP/a0D+C4AuMySRpgVCQndbK1WmH1MOoDMpWsUI4msvoDQqKwsigP582rx5tftOGVrUfwyPt78eDFx9D7kSHESkHW2BxxGGSVrFHCQCCML5qFXqfEShYgOgxqzcoKR6Lo84fpY/T0c2np3PXQ1u8fdXJBwq7WAYQiPIryXLhm4SQsmFIhe7Ev9gBuJ4dwlEdrv/YmZH+CBKc433y/xkjNl3kvZp99+sxqLJomGA/sSuhDMYKenoxSnxu1CYYCNRpZbjnTC/qcEsng3z7cn1aZJeG9ne3geWB2XTFWzKnF/EoeJ04qx/VLp+P4iWUYCIRx5gPvZaQiaSeUelna+gOqFv4cx2F+LLn1SVNm+rIOdg0hGI7C63LQxJodK1k8z9NNKplD1tKX/o1Xr8QIqsDrytoAy+hICaPmHlNiaxbpKTXKARlnQYKRSlYmZOiA9cOoo1EeB7vFnjRXjieLyR6yJF9oQ/mvxZMBAK9+2kz7q/yhCLY3C1X2RNMLQq5ISVmQNUrYfKAbUT6WUZVpeicOg90aDoO9EslAab6+SpZWD4geqovyxAxQDs2X0EPjYaHM3jCmRLXvw8GBGhoc6tKWDO7viA+yUskYjdR8mXd3CEHWkhnV1HhgZ0wiZQY9PRm/vGAOPrjlNDx97Yko9ApugL+9+BjVDCcZRCxXyQKAstgFaeP+7owENW9vF3qJTp9VHXe7y+nA+TGJUGKm1ewmI1dINZFwfIaHEhOJ6uSqQtSXChvc1j6/7QbpdgwEMRSMgOPEwc6ZCBal1zQy4yibMHs+GjX3IMNzE01U9NKkUsnSu5FORYZuJDhLR7Kwtd+PYDgKp4NDXUkePDlu4NUj6dkHhJ6rL02tQCTK469r9wEAPj/Si3CUR2WhF2MUTJjImsUqWQxbQEwvjptQJvt3vbOySBBWlOeCy+kQjS9UgixA1LkXeOMtqmuLvSj1uXUt+KPNXZDwWSzImjO2RPO+Y0v1l9hJJYtUZVJZzEZivkxrnx9fNPeB44BF0yoxvVYIsna0mK9kAZJzNcFOXdqT4XRwWDClEidNFnpxPo1JH+TgeZ5uUKbVJAdZqxqbcc9r25NuT1dQE4pE8X4sOD11ZnyQFYnyVCKVSDorktlI4uZs/d7OlBIJx8XMLzYd6M7I5yeVqFYVeeF0CFXuzoH0Su2shgyyHVOST01jtMYpWEF8kJV9n5nZxJZRcw+xkjUo+xgtSCUr0VkQEMbAAILErFeh5yuVypLR4CwdyULy/utL8+FyOqiMP8ojJ9dRUskiQRYA/NfiKQCAZzYeRPdgEFsOCnuaeeNKFRPHJADvGAjAH8pcH6vVsCArxyEbhddii8oxCkGWOCtLPVgifycVLGLh3j2o3RS7vKEOy2YLM2LOmVuHp689CR/ccjp+eYFgwJD4U0tc8D2u3C6zK/EpqWTVawdZRial7+8QFv8vxZr2D6dglToS82XeiwUKc+tLUFHopVWijoFAyhvJ5Q11OG+e0Bt1VkMtnr72JFl3rWMnlAIQNs5KNPf6MRiMwOXgMKGiIO5vIyGz/Hh/N/oDYVQUeHD02NK4v41URTLbkNucfe+pTboeq5RImFlbBJ/bgX5/GI+8vyftklAS2E+tFsxWqmPObnZzGBTtr0UVRktv+rPb0oRjNgZZqSS2SCIpUQEpZ+4xpUpYs8zIBaVSz8S1DwB8HhfdS8hVs1JZH80EZ+lIFkr7sQDEmVjl4l6mJxYsl+SLc+wWTavErLpiDIciuGflF/jPp0cAAHPHFis+T6nPDV8s0XnExuYXLMjKYaQbhZ2xnpDfvb1LdnERe6vUgyXRvj0WZOmwcJfSHrtYnTqjmvYWkQVfay5HrjeMyhGKRGkv3Rw9QRbVuKsHTDzP00rWomlCkJVKJWsk5suQfqxTZgjVmAKvC+PKhfdPzvdUGIq5wM2fUKbYB3fMOCFpsflAj+LzkIrCxMoCeg4TRiKoWb29FYAgsUx8TyNRkcw2lDZnPTrd1ZQSCW990YpwbOm6d9WOtEtCEyWqZH21W5DVRHt6CmjVvXsolPbsdrZXslJNbC2eXgUSm9xzQYNiIon0kR7sGjL8mbf3BzAcisDBidemRNT6ssyuj2aDs3QkCw9KZmQBiLsGhHOykiWsk2WSShbHcTgp1k/53CeHsCl2vXz8wybVPtZcML9gQVaOorRR6EyYPUXQLReUOAsC0GXhLoVY79YkGAcsb6jD2ptPw9PXnoQHL54nu+CTIX65Nl9CjV2tAwiGoyjyumQbhxMZW6pP+tfeH8BQULj4nTRZcDpr6zdfls/0fJlwJIo1u0g/VhW93Yq+LMJAzOClKE/ZhPXoccKMj+ZeP5oVsuvERluuH2skghrSj3VaglQQGJmKZDaRyjBqtUQCWY+DCf2k6ZKESiWqZJNcl8EqkJVQuVmFDyX5bnhjozza0igZ5Hk+7lrYORBENMs2xKkOFSdKhjKfG5ecMEExkVRV6EVRngtRPtksSQtSxRlTmk9ntSVCgywZJYXZ9dFscJaOZGFyJUv8HHKxv5zIPqVywVWNzXj8g/1J9+0elN+PErLZ4l8vLMjKQcxkcUS5oFYliwRZQnBVVuCmt+u5CLXGLow1MgPrhD6XCnx5Xr3sgj8a5YLE9OKo+mI4dAQoeuWC+2KmF/Vl+agp9iLfLZTlU8lyi/Nl3HG3p2O+zOaDPejzh1Hqc8dJ3qZbGWTFrGgLvW7F+/g8LsyM9YIpVbOIzEYuyMp0ULO/YxB72wfhcnBYND15ttNIVCSzCbPDqNUSCSMhCSUSVadEolpbLKwNzTazcW+icjNhzhINFtP4PgYC4TjFRDjKK/YMjRROB4f/OXuW7N/0JLbINWBiZbKML+65OI4G6kbNL5pU+rEI1MZdZiNtdn00G5ylI1l4QHL+ktcgbUihaPr3MplyZSTQnqyYXDCV9S9bLf6NwIKsHMRMFseo8QXJUpBgK8pD8yLkD0XofaqLjW8aR6O7IDW90CEVBMTMz5GeYdXFlFz8JlYUJJTlzfdlAUKg9Z0lk+m/z583RlaCkirv7hCqMYumVcVd8GbUpiHIUqlkAcAx40sBAJua5PuyqH17LACUkumgZnWsinXCpPKkYBiI32Ro9UjmIno3Z6X5+hMJIyEJJZvhiRU+WkEQK1k2C7IkckFAVEEoVY6tgPQY57ud1Io6GyWDRN2hp7cqEVKVmiTTK5UIcRjc02asktWUEGDIoVatMFutSyV5tbyhDnee35B0u9lk4YEu0b6dkKnWh0y5Mkohe8SS2B4xlfVvbBlxGExtXzKSsGHEOYiZLI7eSlZPQiXL7XSgKM+Ffn8YXUNB6jYo+3qxKlae24FijY2rHKOxJ+szA6YXAFBd5IXbySEU4dHa56fuTYnsIxfYWBazviwfu9oGLMkYEZkdIHxn6diQU+v26VVxt5NK1o6WfvA8r2p5r4VYyVI/V48dX4Yn1x+QNb/geZ72ZE2tSq5kkaDmuic3gQPisn3pCGpWq0gFCaQimTiMs9Tnxj0XzLE8YM4m9G7O/nDpsXA4OF2DmkdCEpooFQTs2ZM1FAzT4IZsUsn7aE1jJatLYvDkdTvQOxxC+0AA02QSJSPJUxuaAADfXjwZh3uG8crWZpw5uwYPXz5fc83QW8kCxPNot0HziwOx68z4cuXXUKtWkPXxO08mm86orY8kOGvp9ctWUDgI55FS8sqbIG28+ksT8b9nG1+HpefvOGmQ5eAQhCB7TxdEopz4/olEWS1gTGUYM5ULxpITqax/TC7IyErMZHFIcKTlLijKBcVMboXOvqzWfrEfy8zmVxxGHAXP536gFTZoegEgNotDWzJIZmQRKZGVDaZ9fjFQb9MxFNkobf1+fH5E+FwWJwRZk6sK4HRw6POHqTTVLCRY1BNkAUDjkT4EwvE9be0DAfQOh+DghGOTQ8n4pbrIa6nMciAQxoZ9nQDUgyxyTKRHkhijLGuozekAC9BfWTxpSoWqtFnKSPS5ifbtYlBgx0oWkVqV5LtpZpyYX7T06vt9m8nI097jAjcqCwVpe2eWzcpq6hzEml0d4DjgshMnYHFsGPtAIKwrGNhvIMgSK1kGg6wUK1mAsBYRSbYUtcpSqrK/9XvjqyoVBR5Tia6DsSpWSb6bVkQBwO1K7ziaTLsyShEt3IV9YSrrH5MLMrISMxIkIv/rHQ6p9lYlugsC0D0ri5pemNxMeHLclSeRXW0DCISjKPS6MFGHpIOgR/pHspiTKoWLnzj4L/WyfN+wWMlKR5D1/s4OAELgWVUU39vndTlpdW5HipLBfp1ywQkVPpQXeBAMR7EtFvwRSEVhfLkPeW6n3MMBxAc1ZDjjHecdZWlQs3ZXO0IRHpMqCzBZpqqWCOmRvOZLkwAA7+9oz/nkBtmcKWW/AeOVxZHoc9ujUslq6fXb5nukUkHJJt1IJcusXKprUFRsVMWCrGyTC/5j4wEAwCnTqzCu3Ge4b4rIBScbqGTt7RgwZACSaPoghzgPKShrvDQcjGBvhyhTLC9wKzohSiHJq6KEJFl5gUczebV+r5CMIsFdn0SdYQSl909knulS5WTalZEQlfQukkR8KusfOTda+vy27cVnQVYOYqavgjQpRvn4SkQiiXOyAHFWlnaQJVykqmVML/TgduX2fIlEiFTwqDH6TC8IWlUpnufjerKkj7GiLC89f9rTYPVN+rFOSahiEajDYIv5ICsYjlInOK1KFsdxOGZcKQBQa1qCKNvSlhmRoObk2Nyybc19Go8wxttfaEsF5VgwpQJelwNHev0pB652YHlDHc6cXZN0u9mejJHoc9sVs2+XBlnVRXngOEEJoLVWZwtyg2xrdfZkpZKR75Zc5yoLhetbNgVZgXAEz398CIBQxQLEocFt/QHVazggrNEdscqcnkrWuLJ8eJwO+ENR3deIgUCYvsZ4lUpWSb6bDn6XtXHf34VgOCr5fXCa1WPC8oY6XHHyhLjbLjlhnOpv+GDXEA73DMPp4LAkNh6kz6TpSROVS8a/f48zvSZemXZlJPQHwnQsQHGscpfK+ldZ4IXH5UCUt1cFXgoLsnIUksVJDGiUNgoel4MudGqzsroGk+05y3TOympTsG/XS7z1qT0ysalAnAXnjtUnFSSQZlGlEntbbHaJ08HR+1opF5QaoHQMBC29kAjW7UIlS2rdLoX2ZaUQEAwGxMylVpAFAMdOIPOy4vuyqOmFjLOgEuT7JkOorSAa5fFOLDg93WCQled24uQpgs3/O9vbLTumbEVqf/7D06YqjpQwgt5ZgFbQORBA91AIHCfKvABhjSfSN7v0ZTV1JW9Sa2glSznoSTUjL61kkc+soz97AtNVjS3oGgyiriQPp8bWweI8N3Xt1apmEalgZaFX1/rmcjowMaZ60NuXRQLkMp9b1mSHwHGcqizs/dg8RDJnSbo262E4KFx/iOph7e5O1ftviAUQc+pLqMS232QlK3FGFsGV5v7yTLsyEnqHRMMYqXLD7PrncHAYG5OTHrSp+QULsnKY5Q11ePrakwAImROtjYKWwyDP80nGF4D+WVnijCxzlSyXJNMxGmZlGTW9INCASWEgMbVvl8wuqZeU5RNn+RglMetnZQZ466Fe9A6HUJznwrxY9SiRGbXCxjIVh0FieuHzOHVlTEklK9HGfVeb8owsJUj/3WeHei2RdUWiPJ7aeAAdA0HkuR04JtZDZgRS/XonZpyRy+xuG8DejkF4nA5cu3iyrr4rPRBJ6NePHwcAWDK9Mi3Om6Qfa2xZPvI98RJVUgVKp2mElRBntji5oOQ9KEnXUs3Ix1WyirJPLvjUBkEqePHx4+mGHdDfO5UoF9eD0b6sAyRA1iF1V+vLIvMQlx9VCwAIhKOGbMiHgsJaTqrTnx7qocGAHBtiUsGTJlegOF8IQLUqg0ooyQXdsUpWuowvTphUrrrPSocrIyD+bqRJeIKeWahy2L0viwVZOQ6pKlQV5WluFMjMKyXzi4FAmPZCyQVZpMqlhDgjy1wli+M42pcVzsB8iZHEjOkFQbQ9lV+UiIRBKhOpKvTC63KAt6Asn6hft2JoKGlef+S9PQCAhVMr4zYXUqSzsswOEO3XaXpBOHpcKRycsEmQbmBJRnlajf4ga1ZdMZwODp2DwZQrDqQn5acvNQIA/KEoTrvvXcPDb4ls5pMD3aoblFzg9c9bAABfmlqBIpUMvBmcDo7+nj0ufQG8UXaruFnazWFQzp2uqsgLByf05XYqJPZSzcjTSlaBpJKVJUHWrtZ+bNzXBaeDowE7Qa8LIBlEbKTXlzz3nnZ9Nu7U9EKlH4ugtJFu6fVjZ+sAOA44MxZkAWLgpIfBoNDnNaWqEFOrCxHlgQ/3dCjef33MHOjEyeKYC7NyQeUgK72VLKeDU/xu9bgymu0f7Yl9TiX58uum1ixUOezuMMiCrBynW6aHSgkSOHUrBEvE3t3rcsRlSMt1ztgi7oKpuGiRDFCuywV3tw/AHzJuegGIlSylWVn7YhfYSZLssFSykar5BbkgEdfJVM0vpM3rr29rBQB8sKdTMVCYUFEAj0voHzArMdBr304o8Lowo7YYgCgZ7B4M0p6EKTqMJgh5bicNFD89ZF4ymKpLlJRx5T5Mqy5EJMrj/V25LRl8/XPhHFsm2dRZCcny9qRpuK0Y2Cf3AdrJYTAcidJEkbSS5XaKskel95FyRj52DSz3eVBBe7KyQy5IqlhLZ1Unya9oIKQlFyQjPBQcT+UwWsmSMy1RghgvJW6kyVozd2wpqou8dFM+FEw2yFBiKLaWF3idWBjrd12zWz7IOtwzjINdQj/WcRPKaF+RGeOLaJTHwe7kGVmAJMhKU7J49fZWbNjXBQ7idZiQTlfGHpVKllmsbGUYCViQleOQ6pLa/CqCllywW0YqKH1upawioY1WsszJBQHR+jTX5YKfHTJnegEIlUKXQ5iVJZepVbLuJRmjQylkjPyhCAIxuSG54KciTVIKFHqHQ4qBgtPBUXneDpPmFwMB4Xej5SwohQ4ljkkGSTa5vjQfBTqDNcKceiFgazTZl5VqT4ocpxLJ4I7clQwe7hnGZ4d74eCApTLmF1ZATIbSVRHMRCUrEuWxYV8XPungsGFfl6HzSC/NvX6Eozw8TgeVCBKoU6LC2pJqRl46J0vqLjiSroyRKI/3drThmY+EIOuS48cn3Yd851o9WVQuaKqSpVcuKN+PJIdSJYv03y6eVgmO4+CLJXeN9GUNBon020XHUaxRSBQRqWBDfQmK8twoiq3/ZipZbf0BathRVxp//rpostj6fUzvcAi3/vMzAMC3Fk3Cxv9ZSq8n3zllim5XxsRASU//qOgsqL3f1AuTCzKyGuoGqCOzoDWQWLRvj3+u8pjMUK0nayAQptWBapNyQUBaZrdmcTI71TzdkM21UakgIAQZZAixXPaHZDETK2RaMkM9EJkdx4HahJutZKkFCgSlQGGGRDJoBqNyQUCcl7WpSahkmTG9IMwZWwrAvPlFqj0pcpwakwy+t6PdtAwz23kjJhU8bkI5rZZYjVjJSk9lhGywp8icd7SS1Wf+N04qy5c/+jH+tsuJyx/9WJctulFIJWRseX5SoolIzpWCrFQz8uRaVi6RCwbCUXoNyzTkM7/ysY/gDwnXvlv++VnSZ07WmgNdQ7J26AQjg4gJZM5f52BQs/8akFSy9ARZMpKwaJTH2lgwROYhFniE9dhQJSt23wKvEydNroDbyeFg1zCVzUvZEJuPdVIs+CZywX5/2HCATYLM+tL8ONMuQNzHWDWKRrqP+dHTm9DaF8DkygLcdOYMOB0cdbct87l1uzLesHQa/fdpM6t19U/1KOwRU0GpymkXWJCV40i15VpoVbLkTC+k/1ZbeEk1o9DrMrRxTcRjYZBldoZKJiCmF3MMOgsSaFUqQS7H87wYZFUmBlmpywVJg3CR10Wzz2Zt3FMJFKbXEodBY8MzCYMB4cJs5FwllazPDvciGI6aMr0gzI0F142HzZlfpNqTIsdxE8tQ5HWhczBoqfNhNkH6sc48Kj1VLEDsV+hNg1ywzx+igYdccF9bLPzGzVayrJSgaqHW00OCxVaV97G8oQ53X9CQdLtWRj4a5UXVRoEb+R4ndd4dCcmg0mfe2pf8mVcVeVGU50KUF5NpiXQPBum5Z0SK7vO46HVFq5oVjohW7xN0vIZ0HhIxg2g80ovuoRAKvaLJkc9ropIVECtZBV4XNf55f1eyZJD0Y500WXBTJXLBYCRKFRp6UZsR5rbQwj1xH/NubI7kBcfWU4e/Cp1qIymdkrYRp4PTFZyRIKsk37pKllb7Q7bDgqwch/Zk6SjfalayJNk9KRUFQqavPxBWdKYjQZbZGVkEqxanTG4WjBKOROmMJKPOggQaMHXFZ39a+wLwh6Ix+/Z82cekUpYnsorifDf9rs0aX6QSKKQ6K8uMXHByZQFKfW4EwoJpiRnTC8KM2iK4HBy6BoOmMnip9qTI4XY6sGi6ILdZnYMug12DQRqwp6sfCwBKYuusPxRVrTaYgfTLVBd5ZZvP61IYSJwOCaoaxL5dbpNeQ2dlqa8RJAtOuGHpNM2MfO9wiM76IQlEqxwGjSonjH7mHMdJeqfkg6x9seCrtjgvyX1SC1LN0pIjHunxIxLl4XU5UF2kfc2vKvTC43QgEuVpkoBIBRdMqaCVn1QqWURquDgmGVybIBls7h1GU+cQHJyQUBJezwkSWxiVDKrJJa0yvlDaxwDAfW/spPuYChPmLZ2S+3bqfBypzltZySLtD+Eon3J/90jAgqwcx0gli1xQlGQsXQql4KI8F81yKDkT0n6sFEwvAHG+RDAF44tMbxaMsqd9kJpeGNHMS1GS/hGZyLiyZAmDFQ2mpEG4OM9NL66tJitZqQQKpJK1p33AlCX9gAm5YPxQ4m7JIGLjQVae24kZsffwmQnzC9KTonisUO9JUYK4DL6bhr6skZbuvvVFK6I8MLuuWFcfiVmKvOJ6aXU1a5dGYE96mYaCEcPN/OmQoKohN4iYoNeKfldCMFBW4NHMyJN+rKI8F10jxVlZ5jd5ZpQTZj5z6jCoEAiJPbnGz3E9fVmRKI9VnwvvqbLQoyr3JjgkfUskyUfmYy2WDJ0nQeGgEXdBSSULABZOE57vwz2dcRbqRCpI+rEAYU0XzS+M/VYPqlSyXI7UFTlG5PTEvKXTQCVWGpDpreBSuaCCu6AZpD1tR2woGWRBVo5DXZJ0yQVJb5WSu6C8XNDh4GgVTKkcneqMLIIVPVlWbBbSuSH89FAPAGC2CdMLAq1KJSxKREIilx0mWV+pZMMoYiXLRYMfs5WsVJrXx5TkodDrQjjKK8pm1Og36C5IIFKUNbs66Dk2tSrZ5U0PdF6WCWme08Hh/62YJfs3PT0pSpAB0J8e6jUkNdQiG6S7b2RAKggIGzdSZVJSDZhlj4rpBSAE72StNuowmA4JqhpNakGWhvEFYXdbfCVbjwmPnGKjkjoMmlvLzConzHzmWjbu++mMLOPJnykaxhrkd3z3yu0AgMM9ft2/Y2lf1kAgjE9iva2k8gSAyjaHAuZ6sgBhXS3Jd6PfH8ZWSQJrA7FuT7ieEPOL3mFjSYkmOn4g+fz1uFKfk2VkH0PO385BI5UscS+n97xPh7sgIDXlyn5X1ERYkJXjdBk46WklS9FdULmpUasvK9UZWQSPBXLBVDcL6d4QpmJ6QVDqr6LWvTINz9VFXridXJxkwygk21ec56YBdcdAwFQQmkrzOsdxmF5j3mGQVrIMyAUB0fyCVHqqi7xUHmYU0o9nJsgCRGlt4sejxyVKieqiPHpevrfDGiv3bJDuDgbCtEcjnVJBQikNsqzt8SGVm6ky9u2E2hLSl2UsK5wOCaoSPM+LPVkyFuC1OnqyANF8ZmasKtyqI+FD1R+SZCKRW7Wb6MlKRTlh5jPXchjcFwtejQwips+tMisr1d8xDbK6h7F+TyfCUR7jy31xCUFfLOmlt5IVDEepuQSpZDkdHL40Vei5Wivpy1pPTC9i/VgE0fzCqFxQ3r4dECtZwRTkgkb2MWIl1lwlaygY0TWbjIylKLXQXRAQE8CsksXIOpT6qOSglSyF7KpSJQsQ5YhdCpsGOiMrxSDLikpWKpuFTGwIP7MiyCoXHXmkTnBUKiKzcXE4OIlhhrnFrFfSk1VRKAwNjfLGMmhSiJ2s1xW/VOkJFIjczozDILmIFxmsZB09TvjOyEdeXeQ1XeWcW18KQDgfzJhfPPPRQQDAtYsn4+lrT8KDF8/D09eepMslSg1i5f7CJwdTruRmi3T3vZ3tCIajGF/uoxvydFKSpllZavbtBLOzslK1RTdC91CIOvnJSTeJXLBf4lqbCM/zNOg8eYpQDdHT0yE3WzKVgcSpKCfMfOYkENrbPqAwJ1H4TIzOXwTEStbB7nj3Qit+x/US9cUa6ipYGXcfWsnS2ZMlDQx8kv6zRTHJIHmd1j4/9nUMguOA4ybGn790ILEBee1QMEzPFXnji5i7YIb2MSRJ0DmofwxBorRQj9SwNw3ugoBUmcMqWYwsQuqSpMf4gmQfhkMR2YZsqeNSIsS9RqmS1RarjCTOOzEKWZz0ZoDkZH2fHe5RfYzSZsGKC4mazDASs6wlQdasumId71CemiKvZFaWuDHYHxtErGTdm+pMir5hsSfL6eDo4m5WMggIlQVygbzhjGm6AwUy0NdMJavfZCXrg90dcElKR41H+kxXOafXFsLt5NAzFDIc9Db3DtOehouPH48FUyrw5Xn1WDClwrBEMJG8WMC7YV+34Upu4vm/fm9nRvt8lCCugsuOqgHHpfb56IFUsqycleUPRejwbTWzFbOzslK1RTdCk8ScgTikSSnwumgCRClYbB8IoHc4BAcHnDRZWMvbdFTo6WxJyTWziva0GF/HUlFOmPnMx5X74HE6EAhHk9ZxnufpNUBOzaBFZaEHJflu8LzY3wtYI8GXygVJVZkEQwQfNb7QF/AMxoIxj8sR14NMhhJvPtiDfn8I62PzsY4aU5xkGFOcb2xWViTK49WtwlrocztkryFWGHgZCcDJ/iwU4XUFi/5QhErmiVyyXePc53lerGRZ6C4IxAfgdsO8lzYj6+nziy5Jesq3xTEDi0iUR89QCLUl8Rc30qsl91y0kqXQz9VqwSBiQBxGrGeI36rGZtzxyra4xb/I66KLByAsRNKQSG2zYORCsmBKRdLf5Y6nriSPXkQT/3bloxvxs/Nmm6o6uJwO1JXm4WDXMA51D6G2JA9RSX+SUhZzbKkPQKfpShaVC8YuTNVFXrT3B2IbCHOVuUPdw+geCsHl4PBfi6fIbrrkSGVW1gDtydKfkSNVzsQQm1Q5jUr0vC4nZtYW47PDvfj0UK8hM4YXPj6EKC9ciM1sppRY1diM/3t9R9Ltet6j3Pmvt0Hayv4vKZEojw93d9Aga+ms9PZjEUo1TIbMsKd9ADwvZJErVJQLdcXmKlmAWFn+3j82xyWIamPrWCoVUinU/lqm4i59zf62AbT2+WXNZXbHpIITKgrob8dYJUs8N8VKlvHvK1WZpdHP3OngMKmyADta+7GnfSDuM+wYCGIgEAbH6RsSnIjgXliATQd6sKd9gCYCjQWS8slDspHecrAH/f4wnA4u6TpaQC3cdVayYut4QYKL4rhyHyZVFmBfxyDW7enEhljwd+Kk5Ot2Ea1kaQdZiWvcUCiKhfeuTvqerHAXJAH4dU9uSvpb4j7G6XCi0OvCQCCMzoGArPOoFNJb73E6MKmyAJ8e6tWsZA0EwvT8tLySVSrauKNK485ZBqtk5TBEW17kdcHj0v6qOY6jmx65WVlqckFSKeuSkYXxPC8xvshMT5aSrI8EWGfPqcPDlx1Ls7oENRlaKhlJNZnhd57chO/onINihLGl8Q6Drf1+BMJRuGTs2wn1Kc7KosYXsQsT+b5TqWR9GmtOnllXpDvAAkSHwaauIQwbsPwFxJ4sclHXIl2yNzN9WdEoj+c+EaSCFx8/ztDrqZHKe1Q6//XK5azo85E7poX3rsY3Ht1IB7z+6JktGekBS4fxBR0ZUF2oWo2jlSyTfZenz6oBJJKjadUFKUtQE1EzvSDUasged0ncPck61DUY1HQblXPkTcXC3QqZ5fKGOpTGElc3L5+hWc1XchgkSbb60nxDa6nWc1vRr1cXm+FGVATHjCuh1xGC2UoWeZwUUs1au7uDVrIS+7EAiVxQw/jCSCuBy6JRNMsb6vC7S49Jul1uH0MdBnXMyiIV24pCj26pLFnLvC6H6XNLCeKWfLjHDxPK+RGFBVk5jCjv01+6Ffuy4n+IgXCELlhy0kOxJyt509A3HKaD/Kp0zMxQQ09Plh5r000HunHmUbVYe/NpOCWm+/7qsfWqFy6zFxI9m1M5Uu1JSQyYqH17uY9a4Sei5EqoF2rhHttEUhv3lIKsHgDA3LGlhh5XWehFeYEHPK891yURUskq0lnJSpe9tegw2KP7Mev2duJg1zCKvC6cZeHG1+x71PN7VMLKPh8pRga8poPSNPRk6R0ZoNc0QommzkFIE/B9saqDlZAgS24QMYEETkomPdJh4GU+N5VoacmeaB+zT6Yny4SFuxUyS54XZV56ZL9TFIKsfdRZ0Hx1m87hkphfpDoyYlVjMy758/q427a3DCT9DguohbvBSpZMsmxhzLXwpc1HsDf2XubHjIukEFWGmvGF0QQU7cmyoNf0qDHCNcLjdOCBryv33dKBxDoSBSSgqiz0is6EOoMsq6tYgLBmcRwQCEfRb/0M97TCgqwchmrLDQRZosNg/JlM/u3gRI2uFCKtkOvJIqYXpT53yhkOPT1ZWptBQNwMOh0cFk4V6s/DoYjqhctsRlLP8SiRSk9K4twrosWXc+sSHyM/X0svpJJVkhBkpSL32hoLso4ea1xuSB0GDUoGjboLpsvemgZZh/SbXzwbM7w4b94Yw8NG1TD7Hs2e/1b3+RCywWwjHT1ZYpClbtxRR3uyzP3GyeuMiT1PW3/A1Cw6NQ7qkQtqyB53toozwziOo8kvLRv3LpnkJNloDgYjhqvigCj5S9zs63X6HA5FqLRMS+oFKNu47+tQl4vrQa6S5XRwuGLBRNn7a/2OScIjMVgeCISTEh7EXXBIwewkEbVKFpmfJZUBnv27NUmBnR7jC6MJKBLwW/G7IUYmU6oLcf4xygF4hQHJK7lPfCVL/XFE+iyndEoVj8uBmtheYl0rhw37ukZsjqlRWJCVw4gZOf2ZBdIrkFjJ6qZW8B7Z2U1lVC4oE2QRqaAFkh89lSyjm8FpOq2+zWYkregnMfMcYold2Ew1afRjAWL1q7l32NQiJlq4Cxe1qmJxI2aGSJRH4+E+AMYrWYC5viye5zEQNDYnK1321tNriuBxOtDnD9M+FTV6hoJYFesv+rqFUkHA/HvUe+4m9melYjWvRqaH6sphdU9WJMrTZEQoElX97RIL9z5/mG40jUA218dPLIOb48Hz5vq71GjqUp7nR9CalSXKJ4U1oLpYnwmPnCNvoURyb3ZW1vKGOpwk6fk5dlypbpklkaq5HFycS54SUht3aXJGHESceiVrb/sAda7leR5vbhPWnXy3/kDSyEBdQHQI1F3JCspXslY1NuOm57Ym3V9O2keHEatUnY3uOYiFeziaepBFqnCTNb5TIw6Z5D4VBV7J+AJ9lSw9SQCjrGpspjLHlYecuPzRjzM+R9EsLMjKYeQyclqQQZWJlSzR9EL+B1RRIPwQ5Xq5iFSsOkXTC0DfED+jm0HiQre/cwiBsPrivbyhDreumJl0u9qFxIp+EjPPkVjJ0iMViXclNL5xou6CsYW2hlayzG1M9rYPYCAQRp7bgWkaMig5SF/Whr36B0cPBSNU9y1XtZUjXfbWHpcDs+qE96CnL+ulzYcRDEcxq644pREAcph9j3rP3T9ceiweu+p4+u///GCR5QEWkPmhunKUKKyzZljV2Iwv/XI1jsTsjX/52nbVDUih1JnPRF8W7XWqKkBZbEk/1GOuh1MOfyhCrxmqPVnFypWpzoEAugaD4DgxKNBbVZebk8VxHKp0bjbV2CWp/nAOTneFVjoaQ4/75eSqAnCc8DhpBUK8Bhg3vSDEuRfGEngvbz2CTQd64PM48fZNp+geGWE04VFgtCcrkFzJMlrJJtcANeMLo3sODzXwSr0ao1cCKsr+9PRkCfepLPLolwsOp0cuSCqdiSYhmZyjmAosyMph5LTlWpCALHFIpprphfA44YfVORhMkjVZZXoB6JMLGt0M1pXkocjrQiTKx9nSKpH4GSxvqFG9kGgdjxqp9KSMldixxzkLqizGxJUQMCcZFN0FY3JBanxhbsO69ZA4M0ypj0wN8hvYeqhXt9046cdyOrik+VxKSKucid9zqrI3an5xSD7Iorbomw/j0Q/2AwC+ftxYy63I1d4jQe496u3XOGlKBU6dWU0dSA+YNF/RIpNDdZUotcj4QklqpbUB0TKNUEPa+1XmFdbhIxbOryEV2yKviyb95FCzoifBzNiyfCqZ1WPCE4pEqSwscbakkU2qHEPB+Gp0r4F+vN5hY1WCPLeTrv/k++J5nva6pSIXJO6FgCBHHA5GcO9r2wEA310yBWNK83WPjDCa8CCVrCG97oKkkiWp/hkN7ETjC+Xvy+ieg4z5CFlQydIbZNGeLB0zK2lPVoFXt1ywl6idLLRvzwZpd6qwICuHkXNJ0kJpIDH5t9JFj1yQguFo0qDANhpkpV7J0iMXNLrh5TgOU2OSQaLjV+OLZkF6RhbucASqFxI9MkO9x2qE2uI8OB0cgpEoWvv9kgusehaTzisxGGT5QxGqMSdyQZI9bu8PxA1F1otZ0wtA2IDe98bOpNu1NqB0RpbXZShQIX0XRhwr9UAqUp/KBFnEIe+SP6/Hj57dIm5QDc730ovSewSAey6YI/sejcpsyWaB9BpYTSaH6ipB5IJ6Z+/IkcoGxOysrGiUx55Yn8+UqgKUx5Z0s3P15KDOghU+1d8fCZo6BgJJ14NdCVJBQGrCo/yeSdDLcckBTSoDiQFgV8K1xUyQVWxAijWVGlQIr9vaF6B9x2bs26VMqRJ+o//efBg/fakRR3r9qC/Nx7cWTTb0PEYTHgWkJ0unXJBUsvIllSyjgZ1ofKFcPTO657DCwp2wT6cE1EhPVnwlKzbIWMswJg3GF9kg7U4VFmTZBLUhtkrITa7XQjS+UO7JkiPf7aRZ/8S+LHFGloU9WRoNo0Y3vKR3Z5eO3p0vmoUeoSUzqwHoszsnx5NopV9bkoc/Xn4s/piGzbnL6aAVhI/3d1P7dhJEKSGaXxirJJAqloMTZR1kgQ5LBmMbgVSy5ho0vUhlAyrOyDIeqCxvqMPam0/TLZfRw5z6UgBA45HeuEBVySEPAH78/Kdpk1EkvscZsQRFk0rPmNJvX+4cn1QpPN++du2qshkyOVRXCVLJ6g+ETds4p7IBqaOVLGPB0eGeYfhDUXicDowry6eVrMMWygVJokDNoAcQMvNuJweeF5I4Una3is6CBFJVb1WRLtPrXL476ftPxWEQEM13SBKhdyik28wm0VBID4kGFdRdtiw/bjCvUVY1NuP9XcKg85e2HMELmw4BAM6aU2vY2MpowkPsydInF5SrZBkN7Ip1zski1/jKBAdluTWOGF+otT3oYSgYpmuAVk9WhYGB2tKeLFLB7R4Kqa5VorugdZWsbJB2pwobRmwD1IbYqm3e5LTlWpQpVbLoc8kv8hzHobzAg+ZeP7qHgnGZMuIuaIX8Ru+cLEBY9M6YXYszf/Me9rQP4sdnTsd1S6bKbp6m6TRI4HkeX7QIQdaZs2vwn0+bcbBrCDzPa1Y9ljfUYUzJduzvHML3T52KL02txAmTyunxnDG7Fhv3daGt34/qory4v5llbFk+DnUPY+2uDgBCj4OW7I4EYUblgmQjUJTnpuYoHpcDFQUedA4G0dYfoNk0PQTDUXxxRPisjzZYyUplcPRgwqR7o8gN0UyFaTWF8Lgc6PeH0dQ1hEmVBbobxs+YXZuWYEH6HvPdTnz775/gyfVN+N6pU2WD0z+8sxuAMCbhwvnjVM9x0i+yV4d01yzLG+pw11ca8D//aoy73eqhukpIKxJ9wyFDvwtCKhsQYn5htJJFNuyTKgvgcjrESpbJkQ9yHIjJmseXq28aHQ7BMfBwzzBa+vwYI0ke7ZKxs6c9WSqVLDX1R2WRcJvZStbOmLHS8RPLsK9jEMFIFP5QVJcDKK1kGViTyHsnlSy9FQ81lAauA8Bf1+zDcRPKDP12pAN1OcSPNJFLeEgrWXquuSQY80nWJBLYtfT6Zd8HB2EdIIEd+a36Q1EEwhF4Xcrf1/KGOlQX5eGChz9Eab4bD18+X3aN06PI0QNxDC71uTUVS7QipWNOFql2VRZ6BbMzDojywu9DKWHWO0wS8dZVsrJB2p0qrJKV5RgZcJcICZSMVLJK8pXcBbXt4MnrJFay2mglyzq5oFpPlhSng4MntijOHVuquOEkVt+Jko5EWvr86BkKwengcGqskjUYjCQFpXJEojzdjFx64vgkvTrZuOrRsuuFVKXW7haCLD0XWLOzsnqp6UX8RqBKh0xHjh0t/QhGoijJd2tmtRNJZQMqlQtmA26nA7PrigGI5hfZJKNYOqsGkysL0O8PU/t4KduO9OGtL9rAccD3Tp2qeY6TShbpIUwXY2KBxriyfMuqjnpxOjgaxJudlZXKBqTOZE9W4iwuWsmyUi5I7Nt1SNqUesuoXLBGlAvW6HA6JdeuCrkgy4DcSg5SyTpmfBk97/VKBo32ZAHJlaz9Otxl1TDqBKgXI6oTUsmKRHk6e1MNIiuUVrKMSvuk1wE1ySChN1bxIr1pcmucyyK5IPlO9cw9q6D99uoVqUiUR9cgmZPlgdPBobxAWypLK1kWugtmg7Q7VViQlcWk2vTXRa1o9Z/0xMAieU6WdlVMLsiKRkWXOivkgi4TGSDiGJgo1ZMiOgwOwh9S1nsTqeCUqgIU57lp4HhQh732kZ5hhCI8PE6HJZ+FHmh/VSxg0hOsmJ2VJdq3x59v1SZt3LfSfqwSwyYOqWxAqVwwTX1NZmioF4Ksf206hHV7OnW7wmVCRuFwcLQX49G1+5J+m394V6hinT2nDpOrtB0iaU9W+6BuOZUZtscqC/PGl1ma2NBLaYoOg6lsQMz2ZJENOxl2SypZR3r8pnou5TjQqU8uCMjPyuoZClL5oFwlq2swqDifSE39odfKWgmikphRWyTOSUtjkEVcFZt7/RgIhFMeRJzOxI5embXUJVBPXxYxyPAlJMyMBHZOB0fdOPUEWUT1Q+R5crgNKHLUMPKdlsUqUoD8qB1Cz1AQ5KdM9nREMqiWYCDJohILK1npNJTKFCzIymJSWdTCkShdmI3JBcWeLOlFs3tIXS4ofaz0B9w9FKTZmqoiKypZxhcnckFVc4qrLvKiOM+FKC/KK+TYFpOvzYpVFsbFApKDOvqXSK/B2PL8jC0KpCpF0LMYSytZRjZOfcMKQZbE/MIIWw/2ADAuFQRS24AOxILFgiypZK1qbMYrW4WK9Ts72nHJn9fj5698ruuxmZJRXHBsPSoLPTjcM4yVn4nV9T3tA/Tf3zt1qq7nGl/ug4MTKsRGzxkjkE3vzFr14b3pgrhw9ZqclZVKbxmtZBmsLu9qi+91KnELPZjBSNS0jE5KJMrTtdRIJUtaJZcOS5ZWIcp8Hnr9UAqU5GZkEcSNpvH32TMUpL3J06oLabCU2PusBElgGQmySn2i/faetgE6I8tskJXu/hg9Sg6ng0OeW7iO65nxNijTk0Uw0j+rZ1YWQU+bBlHkhFOsZOmdkQUIyTA9FalOSWsISWrr6UcUK1nWDiNOl6FUpmBBVhaTyqJGsgpyLklqkOxqlI/P2uhpaiQXJqnUkFxYKgs9KTXbEuh8CRNBlloli+M4Ws1SkwwSZ0EaZMU2Age7tKs+xDVrQorOTkYgVSmCHqlIbUmesHEKG9s4EevjRLlgTbF2L4Qcn5o0vQBS24CSSlZRFgRZRC6cmPHWkqdmWkaR53biigUTAQCPvL+XVqAeemcPeF6QFJLfjBYel4Oet+nsyyKVrOk1IxRkWTAra3lDHX536TFJt2ttQOqKhURK12BQtXIvhef5JLmg0yEqFA6l2JcVifJY+VkzQhEeDk6f8oFUsqTJSNqPlfC9OhzirCultUhttmRVCsYXxLW2vjQfRXluumnXW8nqM+EuCIjVrF1tA1SGaTbIypb+GJ9H7MvSgtxHWgGToleir2dWFqFLJVAniG0PqVaySI+kvhmSesYQkPO7UtInSh+nYP/O8zxNGFg9JwsQA+InrzkOV0yL4MlrjsuYtDtVWJCVxaSyqJGMXEm+29B8Ia/LSXXP0mCpW4dcUKxkiQuRlaYXgGRxMjDEjyxkWjOPyOBaNfMLIhcUK1nCZkVPJaupS9gwTkhhRolREucT6ckOu50Ounk5aEAyqOSARb77VpX5NIkMBcM0a370uFLdj5NCMmCJ/RVaG9D+FNwFrURPDwSQPTKKb5w0AXluBz4/0oe/rtmHx9buw782C85j3z9NXxWLINq4pyfICkei2BPbjI9UJavEollZx4wvAyAEPA98XV9vWXG+C/kxJzi9vZLtAwH0+cNwcPEb9frYXL1U+rLIKIIfPL0ZgJDkO+X/3tF0yKyRqciRJJnc8HLqMKiwFqnNliSbzj5/WFFuqMQOiVQQEDei6ZQLAmIwvGZXO4JhwRVyjIa7rBLZ0h9jxGGQVLsKvMZcDxMRK1nar6knyHIRd8EU52SJZib6ErcVGsESAHTIyB217N8HgxGEY6oXI8opIzgdHE6cVI75lTxOtMAULFOwICuLSWVR6zIxiJhAfiQksIpGeYn0UHmRLydWnxK5oJUzsgBzrjy0kuVUX2inV6vPyhoKhrEv1mg6q064WJKMu56eLNJroCfQsYJVjc24+JH1cbdd/Mh6Xdbe5H0ZMb9Q7Mkirl4GZCSNh/sQ5YXzJpX+teUNdfjHtScBAPLdDl0b0MEs6cnSkgsTErPuIyWjKCvw4MRJguPgXSu/wB2vbkOUFypTRq3CySZ+f5qCrP2dQwhGovB5nJojDdIFrWSlMCsLEPuRaovzcf4x+nrLOI6jCRi9fVm7Y+vi+HJfnFU3MRAx6zCYirlTLQ2apJWsZPt2gihdVqpkKRs8leS76RBZPQNdpexMqJqWZKAnCxCDrHe2twEAxqUgVc+W/hgyHkTPQGKtSpZeik1UstRMwjwWyAW7B4NU0aDXzKSigMy8MlrJUpcZkiqWx+Wgck6GAPs0sphUFrVuFdmDFokylj5/iDZCqsoFZXqyrJyRBaTWk6UmFwTECyC5SCeyo6UfPC8sOKQ6M7Zcv915k4GG7lQhG5fEnovWPu2NCyD2ZRmZldVH3QUTjS9IkKV/Y5LKEOJEiNRhOBTF8RPLNDcBA1niLqg3KP3p2bMsnctlllWNzXhvZ3vS7cFwVNc5J2VybNhpuuSCO2Kb3mk1RXTcQKahPVkm5sdJaTWZyKqRCVDU2N2ebIsOpFbJStXcSeqSSCSqu6mzYHKQVaO3kiVjFuVwcDS739Fv7DsTK1mxXjbDcsFw3OP0Qr4rIuU2KxUkZEN/jC9WlRrSUcmic7JSrWTFEof9OoIssveSc6gkkGA9FbkgSfjWFufp7h+u0GFg0TmoLBdUepzUWdCoSVWuM/JNBwxVyKKWOCdLa54LkeyZKd1S84tYQzYJmgo8TtVAhTgTdsX1ZMXkghYFWR6DlaxIlKdlbK0gi9j9HugawnAwkjS/ROzHEuVFxPjicLdgEqG0YeN5nla70h1kaW1cOGjPUKon5hdG5IK0khW/rJCAtK0/oGu2CSAOIT7aRD9WItKNSc9wKO7iIUcqw4itRK/EtrYk39K5XGYg55waRuZ2pVsuSDa9M0eoHwuwrpJF1tjEja8WhitZCc6ChDGl5itZqcyzA8QETiAcRc9QCC4nR59valXyd0v7Q5UqWRqmBZWFXrT2BQz1qvI8TyXoJJFn1l0wUSWgRWJAbNa+XQqZP2n1TEe9FBjoyRoMEAv3FCtZBuSCnXqML1ypV7LMGJloVaQAMYEgDRK1jC/I+ZmOfiy7wypZNoA0/f2/FbMAAGPL8jSz1SSbYsS+nUB+KN2xQE3PjCzhtZLlgq0WzsgCjM/JkmrntXqyKgs9KPO5wSs4DG5rFjb+syUN/HUleXA6OAQjUdp/Jkf3UIj2+iSaUViNFVa7YiXLeE9WYiWLuEoGw1HdmwpSyTLbjyXF5XQYcvOic7JGWC6YLT0QerDa3plsBg90Dhmeu6MHKt8aoX4swLqerBZayTIWZCnNmFKCml5UWVfJStWxzuty0utOS5+fHmN1kVfWSlqrP1S8bspf68zYuLf1B9AzFIKDE40oig1898FwFMMxcxKjlaza4jz4JPItHrwlv6d0zHTUi96erEiUp5+bT8fAZzWMyAXVHCoJbkfqw4ipfXuVkSCLGF+ouQvGKllFyXJBJZlsupwFcwEWZNkEp4PD0lnC8NvuwRC01rRuHbpgJaQ27tL/r1UVK5f0chHrbzojyyrjC+IuqLPxWBpkaVWyOI6j1SwiJ5KS6CwICBv4MbFNhprDYJOktC/tZ0gHVljtirOyDMgFibtgQrY1z+2kmwM9ksHuwSCVVs6tL9X9+mqQXkKpKYsS2VLJypYeCD1Ybe88pjQfHpcDwUgUR1J0rZODyrdGtJJFFAMpVrJoT5bZSpa+z1duwC8QX8kyOtfMCsc6Ely29PklxyjvtqYmXfaHIrQ6onTdNGPjTq4lEysL6NpvRC5INvYcJ7rc6eX1z1sQkgRVf127HwvvXW1IupttEGmcVk/WsMQ1M9VxHHot3CNRnv6eVYMsF2l7MB/wEim1Hvt2Au3JUpmT1T6QXMmqkLgSyo11IckJK2dk5QosyLIRdbEG48FghG5olSCSPXPGF7FK1lB8JUurFEwuTFFevDCQLKnVPVl6XXkCEWGh5ThRB63G9NjFeWdCX1Y0ymN7grMgYZwO8wsyI2t8BvqxrNi41JvYOKnZDFPzCx0Og58eFiqGEyt8li3apQlmLmpQC/csGEacDT0QerDa3tnp4DCxIj027v5QBPtjSY8ZI1jJIuupntk7arSYlAvWxq4neipZvcMhOrNsSkLmfEzsdQcCYV1yKilWVGtJsNjaK1ayplXLf69UuizTh0bWBpdk+Gwioo27/p6snTIBvZEgi9yn0Osy1D9I+nITN/J6DEWyGb2VrKHYOu7gtFUsWogW7uqv2TMUBE/715WvXS4rKlntxuWCFTos3EmVS1rJIo8LR3nZap4eY7TRCguybES+R5RGaGV3U6lkJW5I9Vay3E4HXYw6B4MISwZUWiUXFHuyjMkFPU6Hrl6gGQqzsg52D2EwGIHH5aBN+QQ9A4kzOSPLko1LaR44DvCHoqpZLylikJW8QanW6IWQ8mlsCLEVpheEMp9+uSB1F/RmxwXDyNDMkSId0kbal6UyHNwMu1oHwPNCprmycOTkLaUGB9IqYdZcyEhPFgleaovzUJRQqc73OGnW22hflhXV2hrJrKxdsYAmsRdJvK+YyU+0YZe6wildK7RkU3LskJnHRq6xRoIsI1LBVA1FshlaydLoyRqUOAumasag1/iC7JmK81yqc0FFd0FzQRbP86Jc0GRPllzylOd5umerLBD3bF6Xk0om5aq44owsJhdMhAVZNoNI07SCLGJFa6qSVRCvFxdnZGkv8tK+rM7BIKK8kEmq0DAb0Is4J0tnJUunsyCBSGESZ2WR+VjTawqTFs9xOhwGM+ksaMXGxetyoiq2Af3HhgNYt6dT9YLM87yihTsgykX1zMramsIQYiXK6KBs7U1NtvRkSRnJHgg9pEPaODFN5hc7qAlB4Yg6YZVIZiXJSXD0wPO8xMLdXE9W+0BAM6O+m9iiK8jwqFGOCWlnqtVaqY07lQsqBFllPg9VNCRuFkkPsto1s7LIuFxwZ8KMLMBcJctIkGV1j2Q2Qea7kWSYEuTvqfZjAfqNL0iFSGu/43KmJhds7QtgOBSB08FhnIHELalIBcJRGoRKGQpG4A8JawE51wkkQGuXqeKSvaLRnsHRAAuybAaZSZLWSlZ+fCVLlAtqP1eZxMaduF5VFXkt2xQanZNFgjG9cgGSbTzUPRy3iG87EpMK1hYnPYYscupyQWGjOD5Dg4hT3bisamym3/v9b+7EJX9er6rl94ei9IIhJxes0lHJikR5rNvTiY37OgEADfUWBlk+MfhXIxiO0sC8MEVHqtGG1dJG0muwr1N/X6AeyKZ3psxvOZOQDUmUFwdgG6XPH6a9J0YrWeU+DzxOB3heu1eSOgtWKQRZRF5soIdTCqnWji0T3sP/rpilu1pbWyKsLXs7BmmiK7FvjOBwcFS6nGhd30XHnihvFCsNygWjUZ7OXZyuIBfUkmMrDXlXw+oeyWyigFq4q1eyyN9T7ccCxMShlvGF3oQ03cdEo4b7GAFgb4dwTo0ry1etmCXi84hDyOXML0iQmO92Js0WU6vi9jB3QUXYLsJmkCbjIxoSDz0ON0okzsmiAZuRStZQkGaJrerHAgAPbRg1GmTpy2YRCVHHQBC72waou902GdMLgmgSoRz4kp6sTMgFCWatdomWP3HpJ1p+uQ0zufg4HRwKZDKHUht3pddMHFPwo2c2447zjrJEFif2GapvjqSBdaqzVUYjVto7T6oUNvT7OqyVC26XkW+NBF6XEz6PE0PBCHqHQqaywCRQKM5zJY2c0MLh4FBT4sXBrmG09A6rDmWmzoIKFaJUbNwJTgdHe1XmjS/Vfc6Q3rLNB7oBCA37ate9quI8HOn1J61Feq6ZeiywpRzqHsZwKAKP00F7DAHxGhuJ8hgIhJMkmFL6TNi3W90jmU2Qzb9WJYvMyLKikkV7sjQqj8RYqbxAvZJFest5XjgHSGVLL/s7hP2EmblnlUUeHOwaRsdAABMSkr7ttB8r+TdAq7gy1/Be5i6oiG0qWV1dXbjssstQXFyM0tJSfPOb38TAgPrFd8mSJeA4Lu6/73znOxk64vRALoRqlaxgOEozo+aMLxIrWfqrYuQC1TUYEmdkWbiQu432ZEWMyQUBsWlaKhn8QsH0AhDlgs29w7LBnz8UoTK58RkMsgDjMjOzWn5xIyCvfyfZ43YZuSAJ6hLlLW19AcsatPXKBYnpRb7bCZeBDCFDxCppI9lAHOoeRiCsPRNHL8S+nQyGHUmojfuwub4sszOyCLWxtfmVrUdUJcFkELGSDK/egiALEJNiRrLzRC5IrglKgSChhprwJFSydMw3InKrrqGgrn4aIk2dUl0Yt57kucWZk1qSQTNyQTuNfzAKSX5J3QPloJUsCxQJRJ0xGIyofu9dsSqP1ugc6fkdNiEVJoknkogyAnEYlBssTKpbFTJBotrjumlPFqtkJWKbXcRll12Gzz//HG+++SZeffVVvP/++/j2t7+t+bhrr70Wzc3N9L9f/epXGTja9FGnoyeLNCE6HZwphzRykRkKRhAIR2hFS89gY2klq43Ob7GmHwsAvVDpnZQuNb7QC3UYjF0ge4dDdPMwWybIqir0Is/tQJSX/15IFasoz5X1i5BZLT/tx1LYCJBqZuIssUw1aCeOJVCC2rdnUT/WaKWy0INCrws8L8zLsoLeoRB14xvpShaQ+qysVNxbVzU247MjQv/j4x82KUqCh4MRWqVXCmDMDC+Xg8w/NJIUS+xFU+obIyjZuGvNyAKEpCXHCRWILh2GJaKzYPIx6e3LokGWgWuHncY/GEVvJYv2ZFmgSJDuowZUXpdUsrQS0tLKld69jBQzM7IIlSoOgySAqpTpKWNyQXPYIsj64osvsGrVKvzlL3/BiSeeiIULF+J3v/sdnnnmGRw5ckT1sT6fD7W1tfS/4uKR1eGnCpUL9ihvhMniX5rvNmT5SijKc9E5XD1DIYnOWH9PVudA0LTrlRpupygX1KNlDho0vgDEAaVES0+s2+tL82UvdBzHUcmg3KwsqenFSDba68Gslp80BCtJWqQW7tLvLVMN2qV0Tpa+IEvJwpmROTiOEx0GLTK/IJWF+tJ8VYlWpqDSbJM27rSSZXCNJdVj0uROkLP33tMuuDGW+dyKDf3WVbKE6oORSlZxvgt5kvXd5XCoJmVEEx7jlSyX00HVIXr6snbQqmnyvoO4S/ZqBNhkbTUqJ7XL+AejkMqU7p4sCypZbqeDyg7VzC/IXqlCI8giw4gBIGzC/MLMjCwCnZUl25MVkwvKuK6SKm6i8QXP86JckLkLJmGLncS6detQWlqK4447jt62dOlSOBwObNiwAV/5ylcUH/vUU0/hySefRG1tLc4991z89Kc/hc+nLNkKBAIIBMSTr69P2GCHQiGEQqnNM9EDeQ2l16ouEL6ylj4/hv0BWUlTe2y4ZKnPbfqYS/Ld6B4Kob13iEqsCj2c5vOV5AnH0zngp/MiKgtcln12XGw+Fs8D/kBQU9I16BcWBLdT+9gJkyuEDcPO1n6EQiE0Hu4BIGQjlZ6jvjQPu9sGsL+jHydOjDds2NcuXGjHlean7RzSOm/0UuHTtyRU+OK/064BYcNS5HXKHkNZvvA9DYci6B7w08xgc4++zXNzzyBCIfMJkiKP8PrdQ0HVz6hnUHgfPo/8+8hFrDp30sGE8nx8drgXu9v6cOr0ipSfb9uRHgDA1OqCrHi/xBa5q3/Y1PEc6RESOFWFHt2Pj0R5/OzlzxWrxxyAO175HEumCVLPHc1CtWtKVfxnJj1vagqFAKBjIIj+Ib/pgetEbu1ARPf7ef3z1riBu49/uB+rGpvxvytmYtlRNUn3r4hdQ1t7/XGvQTaYxXnqv/2KAg86B4No7R3CtCrlPjYA2NEi7B+mVCav/eS77xzwq75e95BwXAVu/dcwwukzKrFk2iJ83NSNtv4Aqou8OG5CGZwO489lFamuNx6n8F0PBMKqz9Efk+Dmmfjc5CjKc2EoGEHXwDDqiuUD3o5Y8rFY4TooxengEInyGPIHUOTRn3wNR6K0sj+u1Gv4vZXFrvFt/cnnXVvfML1P4t/K8oXfdEfC+ToUDNNqXIErvdeRbLpW6T0GWwRZLS0tqK6ujrvN5XKhvLwcLS0tio+79NJLMWHCBIwZMwaffvopbr75ZuzYsQP//Oc/FR9zzz334I477ki6/Y033lANzqzmzTfflL09ygNOzolIFHj25VUok0ksbu7kADgB/wBWrlxp6vXdUScADq+8vRbBsPDj2rj2HXyqce3c2yW89r4j7RCKSByatn+Gla2fmjqORIQh78Jp++rKVdDqaf2kQzie/p4u3Z/FUFh4jeZeP/758kq8sd8BwAHXQKvic0R7hfu8+3Ejitri3+uavcLfQt3NWLnysK5jMIvSeaOXKA+UepzoCQLJQhMA4FHqAdq3rcfKL8Rb17UIn/NgT4fiZ+R1OhGIcHjhP2+gJrY32dsbO1c12Pv5Fqw8tNnguxHpDQKACz2DQbz6n5VQKvBuip0vgYEe078du5LquZMOwt3Cb2fN5h2o7/tC8/5avLmX/JbbsuL77e8Qjmfj1s9R1tlo+PGf7hIe335gF1au3KnrMbt6ObT0Kf/mhOpxAL9/dhWmlfB4/YDwGp5h+TX0zTffBM8DXocTgSiHp19+nf6+jRIICdedNe++i1IdKvOtnRwe3UkSbeKPuqXPj+8/swXXTI/i6Ir4cLKpW/iN7z7cHvd+mlqE197z+RasPKyy1gSEz+PtDzaib6dyFSISBXa3Cc95eNtHWLkn/u/+fuF5Pti4CdEm5efZd0i4394dn2OliXOE4ATQCeD11H9GlmB2vTkyBAAu9PQPqf6GP42dt+1HDmHlygOmXksKFzs333zvAzSVyH9f+5tj59AXn2Jly1bV53PAiQg4vPn2apQb6KhoHwbCURfcHI9P1q5WvJYp0dosnP+Nu/Zj5cq9cX9r3C18Zq1Nu7Fy5a64v+3rBwAXDrbFXxu7A8LtTo7Hu2+9gUyIdbLhWjU0pE/CPqJB1i233IJ7771X9T5ffGF+RZD2bM2ZMwd1dXU4/fTTsWfPHkyZMkX2MbfeeituvPFG+u++vj6MGzcOZ555ZkakhqFQCG+++SbOOOMMuN3y2ZL7dqzBoe5hzDx2AeZPKEv6e/fGg8DOLzB5bA1WrJhn6jieOLwRbQd6UDl5NrB9B9xODl855yxNuVtNUzf+suMj8B4fhgNhACGcfdpCzKqzpv8hGI7ivze+BQA4bekZij1AhOFNh4Fdn2NMTTVWrDhW9+v8Zvt7aOsPYNIxJ2Pw8HYAfThn4Tyc1VAre//mD/Zjzaqd8JaPwYoVc+P+9uLfPgFaO3Hq8Q1YcdxY3cdgBD3njV7cE1vxg2eEC4T0UsLF/u9dFxydlCFuem8vsG83pk8ahxUrjpJ93gd3rcXejiHMOuYknDRZaLiORHm8cN/7aO0LyGbWOQgWzd//+uKU+gcC4Shu++QtRMFh0WlnKEpv+j46BOzahgljarBixTGmX89OWHnuWE1oazNWvfAZwr4KrFhxfMrP9/e/bATQg7MWzMWKeWNSP8AUaXx9J9a17UfNuMlYcdYMw4//c9N6oLsPp588H6fPrNZ+AIBXPm0Gtn2meb/JR83Dirl1+M/TW4DDbVgyfxZWnDyB/j3xvPnD3g+wq20QU48+AYumVhp+L5Eoj+g6YfO0/Mylms64kSiPe+57H4Cc0x8HDsBrrT7892Xxa8ek5n78afs6+DkvVqxYQm+/u/E9AAEsW/IlHDVG+Vr/1uCn2PlpC8ZOnYUVX5qoeL9dbQOIbPgQBR4nLjv/jKRr57vDn+Hz7maMmzoTKxZNUnyeP+5bB/T145QFx2PxNOOfa7aR6npzqHsY925dgzDnxIoVyxTvt2nlduDwAcyePgUrzpiWyiEDEPZELQd6MGvusbIVUgD41RfvA/DjzMULMC/mTKzE/2xajVAgjIWLT8FEA6Nd3t3ZDmzZjMnVRTjn7JMNvAOByKfN+Nf+z+AtTl5Tn2r+COjsxqLjhd++lKbOITzQuBZD0fjP/YvmfmDTOpQVeHH22UsMH48RsulaRVRuWoxokHXTTTfhqquuUr3P5MmTUVtbi7a2trjbw+Ewurq6UFsrv+mV48QTTwQA7N69WzHI8nq98HqT0wputzujX6ra69WX5uNQ9zDaBsOy9+nzC1rkyiKv6WMmF7imLiI99MDj0dbbVpcI1b72/iB1/xlbUWjZZ+dyiVtx3uHUfN5ILDTwurXvK2V6TRHa+gPY3T6MnTH74jnjyhWfY2LM5edwjz/pPge7BQnBpKqitJ9DVpyn58wbC5fLmWSpXluSh9vPnS2r5R8ICnKBUp9H8fWri/Owt2MIXcPieesG8LPzjsJ1T25Kur/YoH0U8rypab3dblC77IEgj0oFucdwrIevOF/5feQqmV7j9DCtRtjsNnUOpXxsPM9jV5sgT51dX5YV77W8UOiX6fNHTB1Pa8y8ob5M/xpbV6pvQ1dXWgC32429MbvomXUlsq9BzpuxZT7sahtEa3/I1HuJSNzifHnav7+P93SiRWW4OanIbT7UjwVTRKnpmHLh/XcOBgGHE26nAzzPU1l8VYlP9bWri4UyXfeQ/PWXsLdTuHZOry2SvXaWxnpjBoJR1eehTsGFeVlxzlqF2fWm2Ces0f5QFA6nSzH55g8Je4Uii9ZykpgbCvOKz0eML6o1ziFA7C8HZ2xvclAoHWFylbl9VU1sj9Y5mPw77Yr9BmpKk4+/tkz43QyHogjxHDUg0XPtt5psuFbpff0RDbKqqqpQVVWleb8FCxagp6cHn3zyCebPnw8AWL16NaLRKA2c9LBlyxYAQF2dPRs+CWM0bNz1NPBqQRoYScO5nhlZgBickQDL7eR0P1YPHMcJ/VURXtesLDPGF4DgULV2dwdWfd6CYDgKn8epOuNKnJUVX0KORHl62/iKzMlNU4XMO/rKQx/g00O9+K/Fk/Hfy2cqXtD0zHKhs7ISNkbLG+pw5ckT8PiHTXG3qwV1ZijzeTAUHEb3UBATIb/RHBD0qMxdMEuYGGvsbusPYCAQRmEKhiStfQH0DofgdHCYbMKVKx0Q44teExbuoUiUzmuqKdGvNyL23i29fpXqsWDvHYpEsT92DdCyRk/VYVDqsqZnvTZr0lPu88Dl4BCO8mjvD2BMaT4GgxH6+lpjT6gBgMasLDoqQMHF0qi7oJZqY7QgHS48FFSeMTZo4ZwsQPz8lWZlDQcjdN+jZz6p26BTMoE6C5owvQDE87dTxgSqgxpfJK8nBR4nvC4HAuEoOvqDGF8hfA/EtMfKfV4uYQt3wVmzZmH58uW49tprsXHjRnzwwQf4/ve/j4svvhhjxgiSj8OHD2PmzJnYuHEjAGDPnj2488478cknn2D//v14+eWXccUVV2Dx4sWYO3eu2stlPWM0bNz1WNFqQX4w+9pJkKXvuYrz3HEa4eqiPMsd9eisrHB63AUB0d75g90dAICZtUWqTo3jYgFYx0CQDkEEyOwsHm4nh7oSk40KI4TTwWFWzBXL51HOGALaFu6A6DCY6OoFAAdiFdOvHluPBy+eh6evPQlrbz7NUgessgJtu+wBv/DdFTB3waygJN9Nna72p+gwSJwFJ1b4TBszWE1pChbuHQMB8DzgcnCo1Bh+KkXN3hsQKkC3nSPYezd1DiIc5VHgcaJOYxZXfamwBpp1GCRrNRDvvqaE2YG7DgeHKuJ2GqsEkkHEeW6H5lBncSCxemBMzjelUQF6gqxIlEe/35y7YK7idTnoHkPNYdBKd0FATCD2+eXdBYmrs9vJ6UoGkX2MUXfBlIOs2FrRnTDrLRSJ0nVILsjiOE489yU27uQxJWwQsSy2CLIAwSVw5syZOP3007FixQosXLgQjzzyCP17KBTCjh07aDOax+PBW2+9hTPPPBMzZ87ETTfdhK9+9at45ZVXRuotWEYmK1lHYnIxvc/lcHBx97VyRhbBSAYoELtwe00GWcQKuLzAo2oLXJLvpm5RhySZXOoCVOaz5UwSMpetuVd940Qt3POVLy7Eyj9xPk3PUBDv72wHAFy3ZErKQ2yVIOelmo37QCDmpMmCrKyB9CvsTTXIijm9zZSx0x4pSnz6qhlykBlZ1UVew6M6lOy9CWSUwe6YVHpKdaFmsizVShZRJridnK73k8rA3erieBt3siZoVbEAYS4iAHT0a1SyYiNAZtTKB1m0iqkj6QOoqwRGExzH6bJxJ3OytIJmvRBHXKVKVrdk36UnsSwdR2MEEmSZrcaX+dx01lu35Nwjx+90cDT5k0hlUfK5TwapsxlZ8thmJ1FeXo5//OMfin+fOHFi3PydcePG4b333svEoWWcMXQmibxcwopKVuIPpkxjgnn8fT20FG3ljCwCrWQZkAt6XcYW2qbO+A3dW1+0YeG9q1Xla+PKffj8SB8Odg3RIK2py35SQSljYtU3tVlWgKSSpSYXpENA45/r9c9bEI7ymFlbhKnV6RsQSxIH3SpDROmcLCYXzBomVRbg46bu1CtZLcKmNxuGEBNKY9lfM3OySIBQo1FhUoJIgjfu60Jbvx/VRXn4uKkL972xE7f9+3McPa4Uq7cLvdAl+W5Eorxq4iPVWVlkrdY7I4tU5K57chM4yJn0KA/crU6oZJEqhNYQWUBayZIPsiJRHmt3t9PN8JQqeZmlnkoW+Vu+22lYjZHL+LxO9AfCqgOJaSXLgmHEgEQu6Jf/vmigrnPf5aL7GP2VLH8oQn9fkyrV5btqr1vm86BrMIjOwQCt6hL5a3mBRzHJURl7b9IqLp2RxSqtsrBfrQ2p16hkdeucOq5GYuXKyJA56SKTjiDLE8sA6Smzk2qXkQvUqsZm3PRcsv2q3KBOKePoQGKxL4sOIlbp58pmSKZbu5JFJAPKC22iRIfwylbh8zz36PS6vZX7tKVZRJrDKlnZw6QqawYS72wlg2HNbU7SgbSaoWe4uhRSyTI6iFiK08FhwZQKWj3+7pKpWDC5AsOhCFY8uAbPfXwIALBmVwcW3rtace0DxOtSS58/Toakl5CJtdrswF2isGiLBardBjbIlUViRTyaoG5Y1diMhfeuxpWPfkRvO/+hD2Q/NyNBFpMKxqOrkkV7sqyVC/YryQUNBllGksWE/bHkb3GeK6UeKDIsuVMSLJH/rTZImSQYpIOMe+ggYnaOysF2EjaEaON7h0MYDIST+keMSB+USKpkGfgBSV+3Oh1yQZd+uSDtydKZHY1EedzxyjaNQZ3bcMbs2qQM6bhyYZNxUCoX7BIWxfEGLFqzCdL/16xQNSUQnbp6T1ay8UXHQAAf7hH63s6dm94giyQKunRUsliQlT1MrkxdLhiJ8pIgK3vkgmSdDUaiGA5FDG0IibOelYksp4PDl+eNwbq9nQgnBBAkyaQUvFQXeakpUWt/gAZdegkYXKsJchW5EyaVq1bdEtciIxJ70tMSjvLoHQ7RZOaqxmZc9+SmpGtHq8LnRnpYelTWIxZkyeOLVacGg8qVrGGre7Ly1eWC9BzSHWTFksVR/UEW6ZGfVKUt31WjstCLXW0DcdVY8r9JMlT2cUWeuPsColywJIX9Zi7DKlk2pCjPTeVMiRUGqcONEYlfIqlUskokAVn/cFi1l8kMRjJAAYPGFxv3dalK4wRbYD827utK+hsxv5CrZI23aSWLmHX0B8LoV5BJ8Dyvy12QZI8HAmFqDvLaZ82I8sDRY0vSLqkso5Us5U0NkZ8wd8HsgTgM7msfMFztIRzoGkIgHIXX5ciq32K+20mDCqPmF1QuaGGQFYnyePDtXbJ/I5/8Ha9sk13THQ7R3MdMXxaRTemVC0pJrMhp9XOStag1Jl02IrH3uBw06CGbTa3kHJD8uZHn6A+EkypiBCJNY0FWPCQZMRTQ7snyWSUX1DC+IOeQWiVICu0t12HgRSCJpskmTS8IxGGww2AliyQYpI8jfV3MXVAeFmTZlHqFvqxugw43SiQGWXqNL1Y1NuPVT4/Qfz/83h5NmYlRzPRk6Q2yzNoCAxK5YGyDwfM8Nb6YYNOerAKvixp6tCgEn8OhCM16qxlfFHpdyI+5upEM8iufZkYqCIgZRiKnlWOAyQWzDmJ80ecPxzVqG2FHzE57Wk1hVhnQcBxHk1JGgywqFzRg365FKkkmQHpdGpL9uxpBkyZFZkiuZJGNor7rXGWCjbuZz40ETjyvLEET7dvZeiSlwKNeyeJ53nJ3QS3ji06DhmMuh/FK1v4UnQUJcrI/Nft2+rii5H5EsSeLVbLkYEGWTVFyGOwy6HCjhBm5IJFLDCZkl7R6mYziMeDKEwhHYo/Rd6qbtQUGRLngoa4h8DyPnqEQHSSZTdlzo5Ds9BGFTQRxFnQ5OBpEycFxnMT8IoCWXj8+2i9sOlbMSf/sujIdxhf9TC6YdeS5nXTzvq9jwNRz7KAzi7JHKkigNu4GZ2Wlo5KVSpIJSM1hUHQXzECQlWDCI/Zk6cvGVyTYuJv53DwuB53hpPTdsxlZ8oiVLPkgKxiJ0sSfZZUsDeMLcg6RKpEWJPGrtycrEuWx9VAPACAciaakEJLrySLncoVakFWgLBdkPVnysCDLpijNyrLCWRAQNjbSDbOWztiMXMIsRsrsNDvq1neqp2ILTAYS9wfC6B0OUWfBmmJv1szlMQO1cVcwWpHOyNIK7KWzsv7zWTN4Hjh+YhlNGqQTrSCL53mxJ4vJBbMKkrnd2268LysS5bEu1veX5+Ysly+nCjVAMCkXTMX4IpFUkkxAag6DZmcamoEcf+dgEKFI1JC7IJBs4272c9Myv2A9WfL4aCVLXi4olRH6LLr2ErnggIK802wlS4+7IDFUIWMBfrt6d0oKIRJIdQ7KVbJUjC+KyOPEa6g4J4udo3KwIMumjFG4mFkxI4sgrV5pPV+qMhMjuAxUsqi7oEFbYCB5UKeWLXCe20mbRg92DVMb+Anl9jS9INRp2LjTbKuOwKRaMivrla2CrPScNBteEEimrVvByW0oGAG5ucjLLhjZBAmyjDoMks3J+ti689SGg5bLl1OFnJdGbNz7/SG6wVSadWWGVJJMgFjJOmSikhWUzMlKNxUFHjgdHHhe2Fx2GzSLqiyMz+ifMKlcdSak0uemFWTpcW0djRCzryEFuSCREXpdDmqVnipELsjzwIDM6xpxqAT0DyMmCqHE628qCiHZnqxBHXLB2N96hkIIRaLwhyK0751VsuRhQZZNUbJxN/pDV0O6sH/R3KeaAU5VZmKEdPZkAeZtgQFgXBlxGByi/Vh2nZFFGKNh495nQNJCKlmbDnRjy8EeODjgrDm1Fh2pOuQ3EQxHqTmMFNIo7XRwyNNZ+WRkhokmgqx0bE7Sgegypz/IIlWsojyXZRbVQGpJJgAYa5NKlsPBSarqAVrd1lvJEntahMcJQZR8NV7tcyPXWKXvvleHodBohFSylCzcxRlZ1v028txO2i8o15dlVEWkZx+TLoUQSRLEVbL6g7G/KQdZpflueg53DgTpeetypOYBkMuwT8Wm0D6ZJOMLMiMrtUV5VWMz9kikOZf9ZQPqSvIUh/GmKjMxgsfUMOL02wIDgsPgpgM9ONg1ROWCdp2RRRBnZSn0ZOkYREwgC/jKz4QN7omTyi05J/Tg8whObsFIFF2DwaTNKenHKvA4U+pnZFjPxNhvaOvBHqzb06n5W0xlFEOmEStZ+nuyWnqFzZGVUkECSTLd8cq2uN98rcr6TyCVrCM9w+B53tDvKJM9WYCQ8Gnu9aOl10+vm3o3yOWxTWrjkV6s29OJD3a3Y8vBHrgcHEry3XFyKrXPjckFzUErWQrugtRZ0GOtTL8oz43AQEDoQy4Tb49GecPnkFuHIseIQmjBlApdrwtIBmrHAiue52nApdZT5nBwKC/woL0/gI6BAF07S33arQKjFRZk2RTSk9XS60c0ytMJ3TSbkoJcUGneh9qcFCIzaen1y25sOAgXGyWZiRFoT5YOLbNRC3cpxBbYCMRh8FD3cO5UsjSGXxPjCy0HrFWNzXjk/b0AQGV525r7saqxWXXjZhUcx6HU50ZbfwA9QyGMLYv/O3EWLGJZ46xiVWMzfvrS5wAE85VL/rxeNeEDpG9zkg5KTfRktZB+LAulglLMJpnqSvLBcYA/FEXnYFA1K55IJt0FASJd7sWe9gFaCdAjeVrV2Ixfv74DAPD5kT5c8uf19G+//OpcfOWYet2fG5MLmsOn4S5otbMgoTjfhY6BQJL5RZ8/ZOgcAkBljGo9WelSCJGerOFQBEPBMEJhnh6HVpBYIQmyvC7he2DnpzJME2NTaorz4OAEHXuHpORrdCBeImbL06nKTIxAhhGHwkYqWZkxnhgrlQt22XtGFqFOUsmS62XSMyOLBO6Jm4m+4VBGpVvkAiJnfsEGEWcf5Lxpl7hZAdqSv0zKl1Ol1ISFO5ELprMKbHT2FCAks4gMz6jD4EhUsgBBCg8Iv3ut6wQ5H5VGCRR6nYY+N80gK5b4KWH9LnGQ4ElJLmj1jCwCucYlWu6TfVeRjnOIIPZkKe9j0qUQKvCI0sfOgSDdQxbluTRNukjfeedAEL3UWZDZtyvBgiyb4nY6qHWvVDKYqrtgKgYWqfQyGUFPmZ1AjS8ylB0lA4l3tw3QbPOEitwwvhgKRmQHMWoNzMyk86QWUvOLRMiFkzkLZgepnDeZlC+nSklsg6K00ZYjHTOyrMKsw2AqqgMzkOvn9pi9v5bEXu18BEQJqpF1jKxHSlVM1pMlDwmeBhUs3NNXyYrZuCf8Vs0kt/XsY1I1olGC4zhRMjgQoL2FeirP0sf10BlZ7PxUgu0mbMyY0nw09/pxpGcY88aVAjA+VDGRVDPAZmUmRjDTk6XXXTBVpHJBQMhs2X0Ser7HiVKfGz1DITT3DicFU6JcUP59ZpN0i9q4D7JKVraTynmTSflyqohzskzIBdPQk5Uq9WVCX6rxSpbwTWW6kkXMVMoL1DeY6VjH1CpZPM+zniwFNCtZMRlhvuU9WbGBxH75IMtIcpsaX6gE5UQhdN2Tm5L+lqpCqKLQg8M9w+gcCNJktJp9O32cZFYWOXJWaVWGVbJsjFyvTKruglZkgM3ITIyQqZ4sM9SVCjJOwvgKX040hFIb957kTYZofCEfnGSTdKtUZVbWIJuRlVWkct5I5cuJWC1fThWxmqHf+KItDYOIrYL0CxutZGXSXRAQPztSeSrX2CimYx0rVhlEPRSM0GNjQVY8+Vo9WQFSyUqPXJAkFglmFER0FI1G2wNRCCW+l1QVQnQg8WAAnTE5doVGogGQzMqSuAuW5jO5oBIsyLIxxFqbXMx4njc8VDGRdJWnrcSYhbuw2Gbqwu12OuKsfCfY3PSCMEbFYVA6jFiObJJulRco97/QSpbFEhOGOVI9b8jmJDGOslq+nCpkg2KqkpUm44tUIGvFx01dWLenU7d8LmRwpmGqkN4SgtY1Mx3rWCmViiYHC6SK5XaykRKJ0EqWgrsgqXD5LFYlEHOnxEqW0UHEgHieh3X8PpY31OH8Y+qF/31ULZ6+9iSsvfm0lNYwUfYXRDuRCxbpr2S1DwTQQ/abrJKlCPvl2pjEStZQMEKzgWbdBTNpYGEWt0tfBgiQVLIydOEGgLFl4kXW6XBkpNco3dSqzMqickGFvoFsCtzJRbBLRi7IerKyCyvOm9Nn1YD8/O46v8GSzYnVEKnNUDCCQFh+0yglHImivT99Fu6psKqxGQ+8tQsA0HhYcN7TO/w50/2ziVVArWtmOtaxEoUeHyDevj0X1BBWQnuyFN0FxXEcViIaX8R/X0RBpGZ/nojLQRQ52vsYQExCzBlbYolCqCKuJ8t4JatDWsliQZYiLMiyMSTIItUFsnHMcztS0iJnysDCLHozQDzP0wXMm6FM4KrGZnx6qI/++5WtR3RvMrIZMaBXq2TJByfZFLiryQUHAsL7YD1Z2YEV501HbPPgcnC49ITxaZEvp0qR10WrbXrMLzoGgojywudTYcAiPd0oOe/pHf5MEoTEECDdVBR44s4FrUpWOtYxtZ6sXgND3kcbpJI1HIzIOt6S4MvKQd2A1PgiPrgzU8kiyWI1d0EpVo84oAOJB4J0naws0l5Pqugg7gCVuZYwd0FFWJBlY4j2nVSyrJiRRVjeUIe1N5+Gp689CQ9ePC+rMsBiT5b64hSO8nQek9eZfgt3sskYDsVno/VuMrIZYuPe0pdcydLjgJUtgbuqXJDOyWJBVraQ6nlDXPiqi7x0lmC24YgNsAX0zcpq6RPfU7YEjFY4iNJKVgbWakD43KskQaqefhqr1zFiejIQCCfJ39mMLGVIJSsc5WX3AbQny3ILd3m5oNgLr/+7cju052RJIaocr4bFul5I1U3oyYrJBXX8BsTHBdE9yNwFtWC7CRtDrHI7BoLwhyIpz8hKxMww3kxAe7I05IJByd/TLUHR2mQQe98zZtdmzcbICErGFzzPi3OyNBbaTDhPaqFeyRIuzKySlV2Q82bNrnZc9dhHAIDXfrRI12wWOk8qy2R1iZT6POgeCunqy6KBYxa9Jyuc92gly5W59aC62EuDVr1VCCvXMema2TcciqtMMvt2ZXySQGMoEEmaTZW2ShYxvkh0F4wlR7QcKqUYGUUDSIIsi1ofiDSwM7Z/BPRVssjjIlGezgJlckFl2G7CxpTku+HzODEUjKC515/yjCy7oHdxymSQlU025emAVLKO9A6D53naIzAYjNCeFz2bgZEO3NUt3IULZQELsrIOp4PDkhnVKM5zoc8fRnt/QGeQlZ29S4mQaoWegcSt1L49e6SCVjjvZdr4AkBcJau5dxiRKK8rWLJqHXM6OBR5XegPhNGrEGSxSlYyLqcDXpcDgXAUg8FwUmKZzsmyupJFjC+GE4cRC+uMkUqWy4CBFyCRC1rU+kAqUh0DQQRiQVaFjr2jx+VASb4bvcMhqtph7oLKMLmgjeE4Ttz89gynPCPLLpCASavMTmQETgeX9mpJNtmUpwMij/GHonEbwT6bOWARF6RBiUkMYYBZuGc9tVS2qu931EKtzrMnIJGDZIJ7dNi4Z+OMLCuc9zJt4b6qsRnr9nbSf9/xyrYR6Z8tVpiTxuSC6pBkmNysLDKOI12VrGTjC+OVLNpbrlsuKLxP63qyYpWswQD6Y5+XnkoWkGzwUWoguBxtZP+uiKEKMSQ43DNMs/O5bqep15UnEMpcZjSbbMrTQZ7bSbNc0oqdOCPLHg5YxXluajKQuKGlPVmskpW11JbEm/1oQao+NVlodS5FzQAhkWx8T1Y472WykkX6ZxM36CPRP0vnpCUGWbH1iAVZ8vjIrKxAssMgrWSly/jCH6aGG4FwhCbojPTDkzlZet0FrZ75SRRPpG/d43TovvZVSiqupBrLkIcFWTanXmLjnuqMLLugWy4YiWV+MlBhySab8nRRV5ps405kE3bZCDgcHJWZdSUGWaySlfXUxao3rUaDrCxPbpSakgtmz3uywnkvQN0FR7Z/FtA26bASJRt30V2QrUdykCBLtpJFerIslgsSU6RIlKevS6pYTgdnyDTJbbCSJboLWvOe3E5HXC9VRaFHd6K0UlLJYiMG1GFBls2hNu49fonDTW4HWaJcUKOSlcEZWdlkU54uaotjAb20khXbCBTZJMgCxMwxuTgS6JwslpXLWkj1plmnXJD2ZGVR1UcOYoFMLJHVIMYX2RRkAak774UyNCfLSP9sJlDqx2M9WeoQKaBsJSuQnkpWvtsJV+waTlQcXRL7diMOpqaNLyz8fUh7sCoNjIOQ3pc5C6rDgiybQ+cX9Q7H/dhzGdFdUKMnK8Ma/2yxKU8XZGRAc4+kkkXlgvYJTIikQyoXDEWi9CJW5GUXjWyFjhLQW8nqJT1Z2RWQJFJK5YLyw1WlkMAxm+SCBDL6Y3ZdMQDgB6dN1T36I1Prdbb1zyrKBVmQpQoxtVCtZFk8jJjjuKRZWV0m7NsByT5GZ8WUmFNY+fuQGq0YGaQsDbJKcrw9JVXsszNiyEI2vod7hmmGJdcrWXrnZGU6yAKyw6Y8XRAb9xaZSpadBmaKNu7ipkaaDbXakYphHaR6oyfIGgyEaUN3rhhfDATCVNaarYGj08GhqsgLNAMTKgp0r33EyCjdyoNs658tVujHY8OI1SGVrMQgKxLl4Y/1Y1sdZAFCQrFrMEjNL7pMujq7dI6iIZD9jlVyQSBe9mekkiUNyHI9qZ8qLMiyOWNKxJ4sInPK9ZNeb5k9k3JBKSNtU54u6PBraU9WTGJnp1kuxBhGOiuLSAXz3A568WNkH0bcBUnvUoHHiaIsPz+VqhmJkOCy0OvKalkrkTQRRzQ9ZCopRvpnW3r9sn1ZHITzLFP9s1pyQTutrZmkgPZkxVd/pf9OxzgO0fxC+H7Mtmm4Y8mHcFSnXDCUDrlg6pUsJhdUh+0mbI7UWrtjYJT0ZOmcLxFMg4Z5NEOqCM2ylazs3fAlQoxhpLOyqOkFkwpmNUQu2DUoDtBUgsrqsrTiI6Ukn0hY1YOsVptY0pNAKXFMghpkPU+38UW29c+SGUNKlSwmF5TH5yU9WfHrwHCssuXg0nPtJ+YWRC7YabJNw61zFA3BandBACiTSBwHA2HdZi9SB+uhkP7HjUbY7tPm5LmdSWXeXJ++rXdxSkd5fTRDTVZ6/dS+1o7Z1jIZuSAJsoy4QzEyT0m+m26c2mJBlBJiQJL9QZZeuSA1vcjCfiwpZM0NGAiy0rGJVCKb+mfl3AX9oQj9PFjPizxKlaxBiX17OlzvyLUusZKlZ5CvFNLeocf4gud5yX7Gmt/HqsZmPP7BfvrvJ9cf0DUnblVjM7731GbJv1tHZL6cXWA7ihygvjQPHQPChqPA40SeO7eDCtqTpXEBH4merFyGbFaD4Si6BoOoKPSKxhc2yrbKyQUHmLOgLSAD2Pd3DqGlz4/xFT7F+9ql6gOIkps+v5AVVqqitPbbI3BMrZKVmQpStvTPUrmgxFmSrKsODii02CEvV6DugolBViA99u0EGmQNx/dkGR2d49apyAHikxVeC/Z3ZE5cYpqazIlTSjSYfdxohu0+cwBSYQByf0YWYGBOFguyLMXjctCqKZEMEsmEndwFReOLZLkgM73IfmqobHVY9X4tWTi0VwmpJCxxXpKU1iy1b0/EVE+WxZl6PZD+2S/Pq8eCKRUjYlAk149HR2PkuQ3Zgo8mqLtgglwwXYOICUQaT/p4u0y2aRiZkyUNslLtMTc7Jy7b5svZBbb7zAGkQVau92MB4iIT1vgxByIjY3yRy1Dzi5iNux0rWeQ30iMjF2Q9WdmPXht3uwwiBgSnsaJYFbVHJcgigWP2ywVNVLIyNIw42yiRcRdk/Vja5CtVstI0iJiQJBc06S5IksVaLsmA+DviuNQrvWbnxGXbfDm7MLpWsxylTnLBzXVnQUA6J0vDXTANcyVGO3UJ7m7inCz7bAbU5IKsJyv7qdHpMGiXQcSEEh19WS02MfMQK1n6g6xghoYRZxskQeUPRamZC1EIsCBLGbEnK6GSFats+dJUyUo0vjA7n9RYJUt4T16XI+U+M7Nz4rJtvpxdGF2rWY5SJ7ngRqJ8zpdrifGF5pysEZCf5Dp1dGRAvFzQTpsBIhfsHQ7R30p/gPVk2YU6nbOyWugg4uzvyQIk5hc65ILZHmQZ7cnieZ4aGY22SlaR1wWybyYywV4burZmGtqTFZCvZBWkYUYWEG/hzvM8TdYZsUAHJEGWDgt3K8fRmJ0Tl23z5ezC6FrNcpBVjc247eXP6b/X7u7IeacX1pM1cpBKVnPvMKJRng5ktNNmgGxmeV7czFDjC1bJynpqyVBslUoWz/M0o5rtAQmBWnkr2LhHojzaYwZH2d+TZcxdUJowG23rtcPBJUkGmVxQG9qTlVTJInLBNPVkSYwv+gNhmhwwWsly0X0MT916laDjaCwwvSBz4pTqYRyE63zinDizjxvtjK7VLMcgTi+dg/HyEuL0kquBFsnmRHmoVu1YkGU9dcTGvcePwWAY5OO3k1zQ7XRQyQfJQg6ySpZtqNXRk9U1GKSbH7tkVtXkgpEoj9c/b0EkyoND/JyabMRoJUs6jmM09tCyIMs4pJKVGGSJFu7prWT1+8PU9MJnwtVZWrHV7C+3cOan2Tlx2TZfzi6MvtUsRxjNTi/SxUmtmsWCLOsZQypZfcPoi1V/PC6H7cYG0FlZsQTFAAuybAOpprb1BxTXN9KPVVHgsc3vvzRfXi64qrEZC+9dje8+tQmAsL4v+fW7WZ1EM+ouKA3GRptcEJDYuMeqmOKQdxZkKSFWsuLlguTf6erJIqqNPn+I2rebMRyTGlhoqXKs7i83Oycum+bL2QW2o7ApRpxeFkypyNyBZQCXZHEKRqKKG3zakzUKL9rpglSyWnr9NONupyoWocznxoEucSAx68myD5WFXjgdHCJRHh0DAVk5oJ0GERMSN9qAfefSeAwaX5BNptPBjcpMuFIly45ra6YooD1ZCZWs2L/TNY6jiMoFw6bt24HEZLGGXJD2l1v3nszOicuW+XJ2ge0obMpodnpxOySLk8pFPBBilSyrqS7yguOEi8K+jkEA9urHIiTOyhqI9Zaxnqzsx+ngUF3kRXOvH829fo0gyx6mF4DYK0iqGFpqBQ6CWuGM2bVZt8Ex3JNlYWO/HWFyQeP4YnLA4VAkboB32itZsWtEMBJFc2ydMePq7HIYqWSlx8SLzInL1ONGI6NzRcsBRrPTi8PB0QVKLQOUjuzPaMftdKC6SNi47mjpB2DPbKs4KyteLljEKlm2QKsvyy7zpKQQ4wsiF7TzXBqjPVlkrU51BpBdKUmQipLRGCzIUqZAslYPh8RqFunJ8qWpJ6vA4wKJj5piicYKE5UsjuPo+a5l4x5grQ+2hX1jNmW0O73QWVmsJyvjEBv37STIsuFGgFQNugaZu6AdqaU27sOyfyc9WXZKMiUaX9hZrWB0Tpa4Vo/OhFhiFbPXhqMxMo0wM0r430MSG3fyvwvSVMlyODgqGdzfOQQAKDMRZAGAy6G9jwGAYESck8WwF+wbsymj3elFz7R0lv1JD2NKhY2rWMmyX2BC5B2JlawCVsmyBbXUgEU+wGi1ZSUrvpphZ7WCx6DxBdlkekZ5JYvIBJnxhTYcx4l9WRKHQeI26EtTTxYgDiTe3ylUssz0ZAH6x9GIcsHRmYSwM2z3aWNGs9MLuYirVrIio1vnny5qi4VK1oEuIYtnx40AyTx2DwXB8zyTC9oMUslqVZIL2mwQMSAZkh0zvjhhUrnqPKxsVit4jcoFR3lCTDQ9EZI+rCdLH0QSKB1IPEQt3NO3lhOJPLkGmg+yyD4mcxbujMzCdhQ2Z7Q6vdDFKaw2J8ta21OGAKlkEezYk0XmDHUPhjAcitB5X0wuaA9oJUshyLLbIGJAlIz1DIfA80Ij/1FjimWHLme7WsGouyAJskajfTsQX8kKR6I06cOCLHUKvC6gP5DQk0WML9JX9SFmT+S8NWN8Aehre5C+Dguy7IeuHcWNN96o+wnvv/9+0wfDMMdodHohixOTC2Ye0pNFsONGoEziLkj6sRwckG+zeV+jFXIOtsoEIMFwFB0xa2U7BVlkfEAkyuOd7W042D2Et7e3ARCkhNL5WbUlebj93NlZq1Ygsiajxhejda0uiZme9A6H0O8XqzJ2lGJnEtlKFrVwT38li1BRaLInS69ckCWMbYuus3Dz5s1x/960aRPC4TBmzJgBANi5cyecTifmz59v/REyGDLo0TKz7E96SJSn2tPCPVbJGgrFzcjiuOyrCjCSITK65l4/eJ6P+97aBwTTC7eTQ7nJDHOmWdXYjDte2Ub/fc0TH9P//eMzp+O6JVNtpVYwO4yYVbJCVCpY4HHCNUo/D70QSeBQMNOVrPggy2wli7QyhBWGqhOYXNC+6NodvfPOO/R/33///SgqKsITTzyBsrIyAEB3dzeuvvpqLFq0KD1HyWAkwNwFR45ckAtKLdypsyDrx7IN1bFeq0A4it7hEO1nAsR+rOqiPDiyOBAhKA0cJkypKrSdWkHak5UYBMtBelJG61pNnCWlQZYdFQKZhphbkEoWz/NiT1Ya1/OihAqj2Z4sWsnSqPjShDFTWtgOwyvafffdh3vuuYcGWABQVlaGu+66C/fdd5+lB8dgKEEuxmrzJcQ5WaPzwp0uqovy4rLotjS+iG3Kw1Ge9vWwfiz7kOd20o1NYl9Wm40GEasNHAaE3qufv7oNEY1Md7ZB1ucor52lB0SL6tFqUkScJUMRnvbg2XFdzTSJlaxAOEp/K2mtZEkSiw7OfEBMk8U6K1mj9fdhZwx/Y319fWhvb0+6vb29Hf39/ZYcFIOhhZ6eLFrJcrLsj5U4HRxqisQNrB37BvLcTuS5hXPoULfgEMUqWfZCnJUVH2TZaRCxnQcOqyG1mtbTl0UMjEZrJcvnccIVS1wdtLFra6ahPVkxiaBUNuhLp7ug5Lsp9XlMS3dd1MBLX08WSxjbD8Pf2Fe+8hVcffXV+Oc//4lDhw7h0KFDePHFF/HNb34TF1xwQTqOkcFIQk9PFjO+SB/SKsHejkHbZdoB0H4dsqkptKHscTRDgqhE9z07DSK288BhNaRrrh6HwcAoH7fBcRythhBbcCYX1IYEWcTsgsgG89yOtPYsShOLZqWCgDgXLhzVCrKIXHB0/j7sjOFv7I9//CPOOussXHrppZgwYQImTJiASy+9FMuXL8dDDz2UjmNkMJIw0pPFsj/WsqqxGV+0iFXrm57bioX3rsaqxuYRPCrjkD6eg93DANiMLLuhZONup0HEdh44rIbTwdHKjL5KVsz4YhSv1aQvq6mTBVl68XnJMOL4SlY6Z2QB8ZWsVMx1XA6iyGFywVzF0DcWiUTw8ccf4xe/+AU6OzuxefNmbN68GV1dXXjooYdQUFCQruNkMOLw6JqTxSpZVkOa9P2h+I1TS68f1z25yVaBVlmBcKGklSwWZNmKOoWBxK026sk6YVI56kryoJRzz+aBw1p4DDgMssHxYlB1kFWydFOQWMkizoLe9LYISI0vyHXEDG7aW65RyQox4wu7YmhFczqdOPPMM9HT04OCggLMnTsXc+fOZcEVI+No9WTxPD/qZ69YjVqTPrntjlfs06QvVrKETU063agY1lNDKll98j1ZdpiR5XRwuP3c2QCQFGhl+8BhLaQOg1qEaELMfu/TKkhQdShWWbeja2umIX1XQ7FhxHRGVporWdLnD0V409c8t0PfnCxm4mVfDH9jDQ0N2Lt3bzqOhcHQjdYQP2nwxYIsa8i1Jn0i8yBVOeYuaC/qSE9W73Dc7aSyZYcgCwCWN9Th4cuPTZI31pbk4eHLj83agcNaiJUs7SCLVbJEh0HyWZTYcP5gpinwkkqWUMEilaz8NDoLrmpsxrf+Js6xW729zbRcXmx70JALhtgwYrti+Fd811134cc//jHuvPNOzJ8/P6mKVVxcbNnBMRhKeDR6sqTZ09F84baSXGvSL/PFZ4pZT5a9kHMXHAiEMRjry7BLkAUIgdYZs2ttNXBYC+IwaCTIGq3DiIFkeWCJj1WytCCVLBJcDae5J0tpph2RyxtNimgliwniMGImF7Qbhs/EFStWAADOO++8uAGDZOBgJKJvwjuDkQpaGaAAC7IsJ9ea9EsTGpZZJctekMpPnz+MoWAYPo+LBlyFXpfteuzsNnBYC0M9Wax/NjnIYj1ZmtBKVjChJysNlSwtuTwHQS5/xuxa3ckRso9Rm/cJMBMvO2P4KvTOO++k4zgYDEO4XerOVUGJG4/DxtngbII06bf0+mUvNByEja9dmvQTrXfttikf7RTluVHodWEgEEZLrx+TqwptNYg41zHUk8UqWUlzsVhPlja0khWTC9KerDSs5Ubk8nqTJWQUjdq8T0BMVIzmJIRdMXwmnnLKKek4DgbDEFoW7iwzaj2kSf+6JzeBA+ICLTs26ZcmyHFYkGU/aoq9GGgXgyw7mV7kOoZ6sth6nVRZZ5UsbYgsMBOVrHTI5V06K1kBVsmyLaZ3FUNDQzhw4ACCwWDc7XPnzk35oBgMLTR7spizYFogTfp3vLItLqtXW5KH28+dbasm/TImF7Q9dSX52NM+SM9FMoi4lgVZI46xSpawyRzN0m4mFzQOMbiglaxg+ipZ6ZDLa+1jCEHWk2VbDJ+J7e3tuPrqq/Haa6/J/p31ZDEygVZPVpAN70sbudKknxRksUqW7SAVK1LBIjOyqlmQNeJ4jBhfsEpWUlCVKB9kJCPtyeJ5ngZb6ahkpUMuTwZ2h6L6jC9G8+/Drhj+xq6//nr09PRgw4YNyM/Px6pVq/DEE09g2rRpePnll9NxjAxGElpzstiilF5Ik/6X59VjwZQK2wVYQPIQSRZk2Q/Rxj0+yKplPVkjjpFKFnMXjJcve1wO5LHBs5qQnqxwVJiLOZRGd8F0zLQThxFryQWF98XkgvbD8Jm4evVq/Pvf/8Zxxx0Hh8OBCRMm4IwzzkBxcTHuuecenH322ek4TgYjDmJ8EVK4gLNGUYYWhV4XXA4O4dggySImF7QdZCAxqWSR/584c4qReZi7oDGklSwmFdSHtGI1HIyIlSxvegJUq+XyeoYR8zwvygXdo/f3YVcM7yoGBwdRXV0NACgrK0N7ezumT5+OOXPmYNOmTZYfIIMhh945WSzzw1CC4ziU+jzoGBD6eNKh42ekl7qEWVltsZ4sJhccecy5C9qvIm4VLMgyjtvpgMflQDAcxWAwktZKFsFKubyeYcThKI9YHhBeJ6tu2g3DZ+KMGTOwY8cOTJw4EUcffTT+9Kc/YeLEifjjH/+Iujr7NL0z7A1dnKIaPVksyGKoUF7gRsdAAF6XY1RLlexKraSSFY3yErkgC7JGGq8Jd8HRnBRzOx1wOziEojw48IhEeVvKsDNNgceJYDiKoUA4re6CUqyaaefSYXwh/f2wSpb9MPyN/ehHP0JzczMA4Pbbb8drr72G8ePH47e//S3uvvtuyw+QwZCDBllKc7IizPiCoQ3JGHucHNbt6UREIWhnZCckyOoYCKC1349wlAfHAVVFrCdrpCFOaGxOljarGpux8N7VNGm4q20QC+9djVWNzSN8ZNkPnZUVjKR1TlY6IJXbsEqQJf39sP2M/TB8Jl5++eX0f8+fPx9NTU3Yvn07xo8fj8rKSksPjsFQgixObE4WwyyrGpvx6aFeAEB/IIJL/rwedTa0oh/NlPs88DgdCEai9LusKPCO2s16NmGkJ2s0GxWtamzGdU9uSnKsa+n147onN+Hhy49l65EK1GEwg5Usq9AjFyS/H7eTg4NVNm2H4RVt7969cf/2+Xw49thjWYDFyCjkYqxl4T6a5ScMZcjGJlHKRDY2LINsDxwODtUxJ8GtB3sACAOKGSOPuZ6s0bVeR6I87nhlm6wlOLntjle2sQq7CnGVrFhPli+NPVlW4tYhF2QzsuyN4RVt6tSpGD9+PL7xjW/gr3/9K3bv3p2O42IwVNFr4c4WJkYibGOTWxAb962HegCwfqxsgUibdPVkjdLh8Rv3dcW51CXCA2ju9WPjvq7MHZTNIFWroWAYQzarZLk0FDmAdC8zun4buYLhb+3gwYO45557kJ+fj1/96leYPn06xo4di8suuwx/+ctf0nGMDEYSLg3rUyYXZCjBNja5RW1JPgBQuSBzFswOSJO+rkpWWEhojLaek7Z+5XXIzP1GI6Rq1ecPwx8SzjW79GSR8z2sktALhNhexs4Y/tbq6+tx2WWX4ZFHHsGOHTuwY8cOLF26FM899xz+67/+Kx3HyGAk4Xapl9mZ8QVDCbaxyS3I4OF+fzj2bxZkZQOskqVNdZG+c1Xv/UYjpCeroz9Ab7NbJUstERGMsEHEdsZwuD80NIS1a9fi3XffxbvvvovNmzdj5syZ+P73v48lS5ak4RAZjGTonKywfAZoNDdSM9RhG5vcglSyCKwnKzvwuoWNrhEL99HWk3XCpHLUleShpdcvK1/mIDhonjCpPNOHZhtIJYvMO3Q6ONsEJG4DlSzW+mBPDAdZpaWlKCsrw2WXXYZbbrkFixYtQllZWTqOjcFQRKthlMkFGUqwjU1ukVi5qilhwXE2IFaytN0FR2sly+ngcPu5s3Hdk5vAAXHrEfGRu/3c2WxelgoFsapVe6yS5fM4wXH2+Ly0XJIBljC2O4a/tRUrViASieCZZ57BM888g+effx47d+5Mx7HF8Ytf/AInn3wyfD4fSktLdT2G53ncdtttqKurQ35+PpYuXYpdu3al90AZGYEsTsrGF8KFnS1MjETIxgYQNzIEtrGxH7UJQRWTC2YHenuyeJ6XVLJG329ueUMdHr782OTzuCSP2bfrwBfrv2qPVbIKbOIsCOi1cGfGF3bG8Lf20ksvoaOjA6tWrcKCBQvwxhtvYNGiRbRXK10Eg0FcdNFFuO6663Q/5le/+hV++9vf4o9//CM2bNiAgoICLFu2DH4/67WwO3orWWxhYsjBNja5Q+J3WMOCrKxAb0+WVCrldY5OSdTyhjqsvfk0PH3tSXjw4nl4+tqTsPbm09g6pIOkSpbXPueQy6Ft4c4SxvbGdMg/Z84chMNhBINB+P1+vP7663j22Wfx1FNPWXl8lDvuuAMA8Pjjj+u6P8/zeOCBB/C///u/+PKXvwwA+Nvf/oaamhq89NJLuPjii9NynIzMoHdOFluYGEosb6jDGbNrsXFfF9r6/aguEiSCrIJlLyoKPPR/uxwcivPsk8nOZUhPllYlS/r30bxeOx0cFkypGOnDsB20ktVvv0qWxyVca8LMwj1nMXw23n///Xj33Xexdu1a9Pf34+ijj8bixYvx7W9/G4sWLUrHMZpi3759aGlpwdKlS+ltJSUlOPHEE7Fu3TrFICsQCCAQEF1q+vr6AAChUAihUCi9Bx17Hen/Z8jD8UJ2JxiOyn5W/pDgNObiRsdnyc4b8xw3vhhAMQAgGgkjqt1CklPY+dx5/fNW3LVyO/13OMpj4b2r8b8rZmLZUTUjeGS5j9Z544SwOfSHIqrn1pBf8rdoGKGQtlEGw75Yvd7kxQpXJBjJdzvss5ZFhWNW2scAwHBAuN3t5OzzvtJENl2r9B6D4SDr6aefximnnEKDqpKSEsMHlwlaWloAADU18Rfampoa+jc57rnnHlo1k/LGG2/A5/NZe5AqvPnmmxl7LTvSFQAAFwLBEFauXJn09wOHHAAc2Ll9G1b2fJ7pwxsx2HnDMIvdzp2tnRwe3Umyu2L1saXPj+8/swXXTI/i6Ao2UDrdKJ03+/sBwIXe/gHZNZrQGxTux4HHG6+vSschMrIQq9abLzo5AKJEcKCnU/V8yyYODwKACwNDw4rHvKVZeH8drS22eV/pJhuuVUNDQ7ruZzjI+uijjwwfjBK33HIL7r33XtX7fPHFF5g5c6Zlr6nFrbfeihtvvJH+u6+vD+PGjcOZZ56J4uLitL9+KBTCm2++iTPOOANutzvtr2dX2voDuGPTe4iAw4oVK5L+/lLXJqCrA8cePQcr5o8dgSPMLOy8YZjFjudOJMrjnvveBxCQ+SsHDsBrrT7892WLmfwzTWidN9ua+/CbxvVwevKwYsUpis9zuGcY+GQNPC4nVqxYls5DZmQBVq83Rbs78OjOTfTfk8aOwYoVc1N+3kywq20Av/r0QzjdHqxYcarsfQ6+vw/YvwuTJozFihUNGT7C7CKbrlVE5aaFKfHqmjVr8Kc//Ql79uzBCy+8gPr6evz973/HpEmTsHDhQt3Pc9NNN+Gqq65Svc/kyZPNHCJqa2sBAK2trairE5tHW1tbMW/ePMXHeb1eeL3Jc1bcbndGv9RMv57d8HmFDHWUBxxOV9JGKhSTfOV7R9fnyM4bhlnsdO58vKcTLX1yAZYAD6C5N4DNh/pZn0uaUTpvCvKEXrlgJKp6XkVjgbLH5bDN+cdIHavWmxJf/H6tMM8+65jPK/xGwhFe8ZjJKNB8j8s27yvdZMO1Su/rGw6yXnzxRXzjG9/AZZddhs2bN9P+pd7eXtx9992GyplVVVWoqqoyegi6mDRpEmpra/H222/ToKqvrw8bNmww5FDIyE7ckibQUCQKpyPeUUh0F7SP0xCDwdBHW78+h1i992NYD1l7Axo9VsS8yDPKBhEzrMGXYHRhK3dBjVE0gGRO1ih13rQ7hle1u+66C3/84x/x5z//OS6S+9KXvoRNmzapPDI1Dhw4gC1btuDAgQOIRCLYsmULtmzZgoGBAXqfmTNn4l//+hcAgOM4XH/99bjrrrvw8ssv47PPPsMVV1yBMWPG4Pzzz0/bcTIyg3Seipz9aYAMt2QXbgYj56gu0mfTrvd+DOshToFqG0iAOcEyUiPRTdDnsU8wQvYn0jEGiZAkBZk7x7AXhitZO3bswOLFi5NuLykpQU9PjxXHJMttt92GJ554gv77mGOOAQC88847WLJkCT223t5eep///u//xuDgIL797W+jp6cHCxcuxKpVq5CXxy68dsftkFaykhcoduFmMHKXEyaVo64kDy29fshtTzgI87NOmFSe6UNjxCCW05Eoj3AkCpdCwosEYW6WEGOYILFylVjZymbIbyIS5RGN8nDI9I8GI0LvA7NwtyeGv7Xa2lrs3r076fa1a9ea7p/Sw+OPPw6e55P+IwEWIMzGkvZ4cRyHn//852hpaYHf78dbb72F6dOnp+0YGZnD4eDgii1IcpWsIBvgx2DkLE4Hh9vPnQ1A6iuIuH/ffu5sZnoxgkjXXrVqFkuIMVIhsZJVYKNKVpwiJyr/GyGVLPb7sCeGv7Vrr70WP/rRj7BhwwZwHIcjR47gqaeewo9//GPW68TIKCTzKTfsklzU2cLEYOQmyxvq8PDlx6K2JF6ZUFuSh4cvPxbLG+oUHsnIBFKptlpfVohVshgpkOd2gJPkUshwYjsgPeflFDmAdBixfYJHhojhs/GWW25BNBrF6aefjqGhISxevBherxc//vGP8YMf/CAdx8hgyOJyckBIoSeL6JhZkMVg5CzLG+pwxuxabNzXhbZ+P6qLBIkgq2CNPC6nA04Hh0iUZ5UsRtrgOA4FHhcGAmEAyZWtbEYaZIUVfiOiiRf7fdgRw2cjx3H4n//5H/zkJz/B7t27MTAwgNmzZ6OwsBDDw8PIz89Px3EyGEmQTKlsT1aELUwMxmjA6eCYTXuW4nU5MBSM6KpkeZwsMGaYI9/jpEGWndwFnQ4OHAfwvLKkNsBaH2yN6W/N4/Fg9uzZOOGEE+B2u3H//fdj0qRJVh4bg6GKmwZZcj1ZzPaUwWAwRhLRYTCieB8m7WakirQPy06VLEA08QprygXZ78OO6P7WAoEAbr31Vhx33HE4+eST8dJLLwEAHnvsMUyaNAm/+c1vcMMNN6TrOBmMJNwu5RkTTILCYDAYIwvZGPpVKllkrWY9WQyzSB0F7WThDojmF0pBFpv5aW90h/y33XYb/vSnP2Hp0qX48MMPcdFFF+Hqq6/G+vXrcf/99+Oiiy6Ck1UNGBmEVrISjC8iUZ7OnWBBFoPBYIwMemZlBdlMQ0aKFEgkggU2Mr4AiI17REUuyCpZdkb32fj888/jb3/7G8477zw0NjZi7ty5CIfD2Lp1KziOaakZmUepJ0vqNsiCLAaDwRgZSPZdtSeLVLLYWs0wibSSZScLd0BMFoeVLNzDbE6WndH9rR06dAjz588HADQ0NMDr9eKGG25gARZjxFDqyZIGWWxhYjAYjJGBJML0VLK8rJLFMIm0kmUnC3dAlAuGwhpyQTf7fdgR3d9aJBKBx/P/27v38Kiqe//jn7llEm4Jl4QERQ2CAiLIxQt4QxAJtrRU6vPYgy1UrRWxImit0J8iVYz0qPWUKmirYIvKqT1SL1U8UQQPHiEIYkUuFgHxQCIqlwAxmcnM/v2R7J2ZZBImccLsPfN+PU8ekpk9mRX22mv2Wt+1vivD+tnr9apDhw5tUiggHmbj1PADvLpukbXLJWvDYgDAiWXeGFYHm058Yc5EYE0WWisykpXlc2Ykq8nNiEni5Whxd/kNw9CUKVPk9/slSVVVVbrpppvUvn37qONefPHFxJYQaMLxIlkZHjeRVgBIkngiWdUkKcK3lFXXmfd5XCrddcBRe+V5rUjWcdZkEclypLg7WZMnT476+dprr014YYCWMD+Um+xk8aENAEnj98WxJitEdkG03orNZXrxg72SaqOiP/rjWhVkZ2rO+P4qGlCQ5NIdX4a1Jut42QW5Ppwo7k7W4sWL27IcQIv5mkp8wUbEAJB0ca3JYlAMrbRic5mmLt2oht2T8sNVmrp0oxZeO8T2HS1vE8seTGxG7GycNTiWtWC04ZqsICmBASDZ4luTZbbXzpjeBXsIhQ3NfWVLow6WJOuxua9sUaiJCJFdWNkFY+yTFQ4b1iAy+2Q5E3ehcKym9smyIlkOWwALAKnEzBhY3cR6E4lIFlqndNcBlR2uavJ5Q1LZ4SqV7jpw4grVCj537GUPUnR0i5k5zsRZg2Mdb58sIlkAkDxmJCtAJwsJtv9I0x2s1hyXLD5v7Bk5UvRaRq4PZ+KswbF8Tcz350MbAJIvI55IFokv0Ap5HTMTelyyeN2xB4ul+vVYbrajcSxaNTiWt6k1WXSyACDpzCnbJL5Aop1X2EUF2ZlqquvhklSQnanzCrucyGK1WP2arBiRLCuzoIftaBwqruyCL7/8cty/8Hvf+16rCwO0RJP7ZIWYLggAyWZFsuJIfEEkCy3hcbs0Z3x/TV26US4pKgGG2R2ZM76/7ffLaiqBl8SAcSqIq5M1YcKEuH6Zy+VSKNR0YwokUv0+WdFhdvMDnc37ACB5zMX6zUay2HIDrVQ0oEALrx2iua9siUqCke+gfbKa2opGqp8uyLXhXHF1ssLhphtIIFnMEaCGi6qJZAFA8pkDYc1uRlxTe3NJJAutUTSgQGP656t01wHtP1KlvI61UwTtHsEyNbXsQWIqbSqIezNiwG6anC5IwwQASWeOwFc3E8mqZlAM35LH7dLw07smuxitYtb7mhj7edWvyeLacKpWdbKOHTum1atXa8+ePQoEAlHP3XrrrQkpGHA8dLIAwL4y6jZQbT6SVbcmi/YaacjbxIwcKTrxBZypxZ2sDz74QFdeeaUqKyt17NgxdenSRV999ZXatWunvLw8Olk4YY63TxajPwCQPC1Zk0UkC+nIyi4YY1kOA8bO1+IzN2PGDI0fP14HDx5UVlaW1q5dq88++0xDhw7VQw891BZlBGKy1mSRXRAAbKd+TdbxswtmeJ2xhgZIJBJfpLYWn7lNmzbp9ttvl9vtlsfjUXV1tXr27Knf/va3mj17dluUEYjJnF4SbBBmt0LsPkLsAJAscUWyzNF6D+010k+zKdyD3Ms4XYs7WT6fT+66Harz8vK0Z88eSVJ2drY+//zzxJYOaMZx12QRyQKApIkru6C5TxaRLKQhrzv2fYzErJxU0OI1WYMHD9b69evVp08fXXrppbrnnnv01Vdf6S9/+YsGDBjQFmUEYmpqTRYb+AFA8pkL9puLZFUzKIY0Zt6n1MSaLsien47X4jP3wAMPqKCgdoO3efPmqXPnzpo6daq+/PJLPfHEEwkvINAUsgsCgH1Zkaya46/JYp8spCOvO/bacokU7qmgxZGsYcOGWd/n5eVpxYoVCS0QEK+m5jITYgeA5LPWZMVIT20iGyzSmZVdMEYki2vD+Vp85kaNGqVDhw41eryiokKjRo1KRJmAuFiJLxpOF6wLsRPJAoDksTYjbqKTFQobMvdgJZKFdNRs4gv2yXK8Frdqq1atarQBsSRVVVXpf/7nfxJSKCAeGU1NFwwx+gMAyWatyWqikxX5OINiSEekcE9tcU8X/Oc//2l9v2XLFpWXl1s/h0IhrVixQieddFJiSwc0w2ycGu2TxZosAEi6jONEsiLbbiJZSEdeNiNOaXF3ss455xy5XC65XK6Y0wKzsrK0YMGChBYOaI63qTVZzGMGgKQz2+BQ2FBNKGzdUJoiI1nmtCkgncQ3XZB7GaeKu5O1a9cuGYahXr16qbS0VLm5udZzGRkZysvLk4fNBHECWdMFa6LD7FbiCxomAEiayDY4EKOTFYxIUuRy0clC+ml+uiBrspwu7k7WqaeeKkkKxwhpAslw/M2IaZgAIFkiR+ADNWG1y4h+nulQSHdmCveYmxFzfThei1O4S9Knn36qRx99VFu3bpUk9e/fX9OnT9fpp5+e0MIBzTHD7A3XZLEZMQAkn9fjltslhY3Y67Lq98giioX05GtuM2ISXzhei8/cG2+8of79+6u0tFQDBw7UwIEDtW7dOp111lkqKSlpizICMR0vkkXDBADJ1VyGQQbEkO587tj3MVLEdEEf14dTtTiSddddd2nGjBl68MEHGz3+q1/9SmPGjElY4YDmZDS1TxYf3ABgCxlet74JhqxR+Uj1kSzaaqSneBJfsPTBuVrcsm3dulXXX399o8evu+46bdmyJSGFAuJhfjCHwoZC4fqOVqCGzYgBwA6a25CYNSdId964El9wfThVi89cbm6uNm3a1OjxTZs2KS8vLxFlAuISOY8/chQoEJGxCgCQPM3tlWXeWNJWI12Zdb8mViQrWLcmi+mCjhX3dMHf/OY3uuOOO/Szn/1MN954o3bu3KkRI0ZIkt59913Nnz9fM2fObLOCAg1FTjEJhsLK9HlkGAZrsgDAJsx2ONaarECIWQdIb14rgVfjSBYDxs4Xdydr7ty5uummm3T33XerY8eOevjhhzVr1ixJUo8ePXTvvffq1ltvbbOCAg1Fd7JqG6iasCFz5iB7SwBAcmXUtcPNThfkJhJpyryPqYmxPVJ10Ex8wb2MU8XdyTKM2jtXl8ulGTNmaMaMGTpy5IgkqWPHjm1TOqAZHrdLHrdLobBhhdojR0sZHQWA5Go+klV7X0HiC6QrK/FFzOuDWTlO16Lsgg13ZKdzhWTzeWo7WQE6WQBgO/VrshpnFyTxBdKdtRVNOEbiiyDTaZ2uRZ2sM844o1FHq6EDBw58qwIBLeHzuFUVDFvTBc3OlhnlAgAkT3ORLFK4I91540jhTiTLuVrUyZo7d66ys7PbqixAi2U02JCYOf4AYB/xpHDnJhLpyrxXMYza7WjMwWHDMCKmC7Imy6la1Mm65pprSNMOWzFHQM0PazYiBgD7MG8Qm49kMesA6cnbIEuyx+2p+95QXSoE7mccLO4zd7xpgkAyNAy1m/P+GRkFgORrbk0Wg2JId03t9xl5vXA/41xxnzkzuyBgJxkNdktnITUA2AdrsoCm+dyNt6KRGiTx4vpwrLinC4Zj5PAHks3X1JosOlkAkHQZcazJor1GunLH2IpGiojyetxyk8TLsWjZ4Gg+r7lbejjqX0Z+ACD54olk0V4jnXnd0fcxEpkFUwVnD45mRbJqoiNZNEwAkHxm4gsiWUBs5iBDTYzpglwbzsbZg6P5GqzJYiE1ANhHs9MF69pt1mQhncXaK4skXqmBswdHa2qfLPaVAIDk8zeTXZDReqDxYLEUMV3Qx72Mk9GywdHM9KcBEl8AgO1kkF0QaFbDBF5SxL0M14ajcfbgaA0bp2oWUgOAbbAmC2ieOVhcE44xXdDHteFknD04ms8bO/EFH9oAkHzxRLIyPKSoRvryxpouGCSJVyrg7MHR2IwYAOyr2TVZIdprIOZ0Qa6NlMDZg6OZYfZgXZidjDwAYB/NRbLMx1iThXRmTReMGcki8YWT0bLB0er3ySKSBQB24282hTtraAHzPiZACveUw9mDozUMs9PJAgD7iCu7IO010pjXHSOSxb1MSuDswdHMBsjqZNX962dkFACSLp7sgrTXSGcN72OkiH2y6GQ5GmcPjsY+WQBgX/5mI1m1I/dEspDOzEhW7E4Wa7KcjJYNjuZ1M10QAOyq2eyCbLgKxEzhzr1MauDswdGsMHtd4gtGfwDAPprNLkiaasAaZIi5GTHXhqNx9uBoVgr3kJnCnQ9tALCLeNZkkcId6cxrLnuoYbpgqqFlg6M1TH1KSmAAsA9zwKsmbCgUNqKeMwfHGK1HOvN56q8RE9MFUwNnD47WOIV7bYidhgkAki+yA9VwyiCRLCBiRk7MSBbXhpNx9uBoGQ0WjDL6AwD2EdkWRya/CIcNa+Se9hrpzBosjohkVQfr1mT5uDacjLMHR/N5WZMFAHbldbtUl6E6KpIViEhXbY7kA+moYZZkiaUPqYKzB0ez1mTVRKdwJ8QOAMnncrmsQa/qJjpZDIohnZmDxTWR+2QF6+5lfCS+cDJaNjhaozVZLKQGAFuJlWEwcv2Jz017jfTlc0cve5BI4Z4qOHtwtCbXZHkY/QEAO8iIsSGxOSDm87jkdjNdEOmr4WCxxB5yqcIxZ2/evHkaMWKE2rVrp5ycnLheM2XKFLlcrqivoqKiti0oTqjG2QVpmADATvwxNiQ2N5AnsyDSnbfBfp9SxHRB7mUczZvsAsQrEAjo6quv1vDhw/XUU0/F/bqioiItXrzY+tnv97dF8ZAkDTcjppMFAPYSe00W220AUv2MnJqo6YJsRpwKHNPJmjt3riRpyZIlLXqd3+9Xfn5+G5QIduDzRk8XZG8JALAX80YxKrsgkSxAUn0kKzIZDEm8UoNjOlmttWrVKuXl5alz584aNWqU7r//fnXt2rXJ46urq1VdXW39XFFRIUkKBoMKBoNtXl7zPU7Ee6UCt1G/CXEgELAaKbcRSqv/Q+oNWou6g9ZoSb0xE6RVVgWs4yurA5KkDI+LupdGaG8ac8tcU15/32KuX3QrzP9VHTvVnXjLkNKdrKKiIl111VUqLCzUp59+qtmzZ2vcuHF677335GkiMUJxcbEVNYv03//932rXrl1bF9lSUlJywt7LyfZVSpJXR7+p0iv/eF1mlV618i1lpXTtjo16g9ai7qA14qk3xw57JLm09v0Nqt5Ve0P5aYUkeRWo+kavvfZam5YR9kN7U2/rFy5JHu0tK7euhWNVtdfMe2ve0b8yk1o827FD3amsrIzruKTeht51112aP39+s8ds3bpVffv2bdXvv+aaa6zvzz77bA0cOFCnn366Vq1apdGjR8d8zaxZszRz5kzr54qKCvXs2VNXXHGFOnXq1KpytEQwGFRJSYnGjBkjn8/X5u/ndDu/PKb5H74rt8enyy4fLa1bKUn67rixabW/BPUGrUXdQWu0pN78df8GfXrka5119iBdeU4PSdL/fvq19PEGde7UUVdeOeJEFBk2QHvTWGDTPi3buVlduubqyiuHSpJuX1ciydAVl49Sfid6WZK96o45y+14ktrJuv322zVlypRmj+nVq1fC3q9Xr17q1q2bduzY0WQny+/3x0yO4fP5TuhJPdHv51TtMjMk1a7JMlzuiMf9aZkWmHqD1qLuoDXiqTdZGbUDXiHDZR0brmuvM3xu6l0aor2p58+o/X+oCdf+v9SEwqoJ10Z8O2T6+X9qwA51J973T2onKzc3V7m5uSfs/f7v//5PX3/9tQoKCk7Ye6JtRaZwZ98VALCfmNkFrT0NWdiP9JZRl/iiJly3xjwiAQbZN53NMWdvz5492rRpk/bs2aNQKKRNmzZp06ZNOnr0qHVM3759tXz5cknS0aNH9ctf/lJr167V7t279dZbb+n73/++evfurbFjxybrz0CC+azGyVBVkJSnAGA3sbILBq1BMcfchgBtwuuu20cuZCbAqL9OyC7obI5JDXDPPffomWeesX4ePHiwJOntt9/WyJEjJUnbt2/X4cOHJUkej0f//Oc/9cwzz+jQoUPq0aOHrrjiCt13333slZVCfBEN0LHqGkmM/ACAnZjRKjNjmsSehoDJvI+pqRt4MCO+HrdLXgYhHM0xnawlS5Ycd48sw6jfyC0rK0tvvPFGG5cKyRY51eSo2cmiUQIA2/D76kbqY0SyaK+R7nx1yxvMzYirg1wbqYIzCEeLnGpCJAsA7Kc+khVjTRbtNdKcGckyBx4CodqIrzk4AefiDMLRPG6XzBwXR+lkAYDtmDeLUZ2sulF71mQh3XnrbmKCdYkv6teXc204HWcQjmd+SB+rrh39IcQOAPaR4alNfEEkC2jMypJcUzddkGsjZXAG4Xhmp+podVASIXYAsJNm12RxI4k0Z3ayrBTuNWRKThW0bnA8cz4zkSwAsJ9mswvSXiPNmVvRmNeEeZ0wXdD5OINwPLOBIvEFANgPkSygafWRLKYLphrOIBzPWpMVqO1kMfoDAPYRK7ug+b05SAakK2tNVqjhdEHuZZyOMwjHq1+TVTddkIYJAGzD76tdWxJ7nyzWnSC9eesGGoIhQ4ZhWAMQrMlyPu5G4XjmKNDRqrrEFzRMAGAbza3J8nmJZCG9+dz1t+I1YcO6Thgwdj7OIBzP/JAm8QUA2I+1JisUK5JFe430FjnQUBMymC6YQjiDcDyv25wuSOILALAbvxnJCkZuRszifkCqv4eRaq8LpgumDlo3OF5Gg8QXfGgDgH3EimSRwh2oFZn8pSYUtgYjuJdxPs4gHK9+uiCdLACwGzO5RXQkqzZdtY9OFtKcy+WS112f/CIQYp+sVMEZhONZiS/MThYf2gBgG7EjWSzuB0yRadzNwQjzuoFzcQbheGbjVEXDBAC2Y2UXDNZnFwwSyQIs9WncI9ZkcW04HmcQjtcwckUkCwDso7k1WUyJAurvW2rCEdkFfSS+cDpaNzhe5KJRiQ9tALCTDGsqlKFw2Kj7vm6fLAbFACuSFagJW/tkcS/jfJxBOF7DD2nm+AOAfUSOyJvRLCu7IO01YN3H1G5GzLWRKjiDcDyfl04WANhV5BRuc1F/wIpkuWK+BkgnkYkvmEqbOjiDcLzGa7KYxwwAduHzuOSq60tV16WnJpIF1PPFSnzBZsSOR+sGx2NNFgDYl8vlisgwWHsDaa7JIlERIHnd9esWGYBIHZxBOB5rsgDA3szBL9ZkAY2Zyx5qQiS+SCWcQTgenSwAsLeMuqlP9ZEs9skCTD430wVTEa0bHK9hp4pOFgDYS2QkyzAMK6JFew1EJr5gumAq4QzC8RquyWKOPwDYi7khcXUwZEWxJCJZgFS/T1Z0JItrw+k4g3A8c8GoKdNHtQYAOzEHvwKhsBXFkriRBKT666MmZFhrsohkOR9nEI7XaJ8sUrgDgK2YGxJXB8MK1tR3sohkARGRrDCRrFTCGYTjZTScLkjDBAC24o8RyfK4XfK42YwYsNZk1UR0snwMGDsdd6NwPLILAoC9WWuyakL1C/uJYgGSmkh8wfXheJxBOB6dLACwN2tNVk19JKth0iIgXZnXwrFAjfWYn/XljscZhOM16mQx+gMAtlIfyQoraKVvZzoUIEneuvuWY9URnSwGjB2PMwjHy/DWj4a6XIyOAoDdREWyrOlQtNWAVH99HK0ONXoMzsUZhONFRrIyPG65XHxwA4Cd+OuiVtGRLG5BAEny1iWAMSNZGV7uZVIBLRwcL6qTxYc2ANiO2TZXR2RPI307UMvciuZoXSeLqYKpgbMIx4v8oKZhAgD78XvrswsGQ4YkBsUAk68ukkUnK7VwFuF4GQ2mCwIA7MXsUEWuySKSBdTyNUh84ScpTEqghYPj+SISXzAyCgD2w5osoGkNswsSyUoNnEU4XvR0QUZ/AMBuYkWymHkA1DKzIpvZBRmASA2cRTheBokvAMDW/BGJL6xOFu01ICnWdEGujVTAWYTjkV0QAOytPpIVUiBkrskiRTUgSd66a+GbYG0ki1k5qYE7Ujhe5Ac1008AwH5iR7K4kQSkxklgGDBODZxFOJ6XSBYA2Jq1T1awPvEFkSygVsNrgemCqYGzCMfLYJ8sALA1c/pTIFQfyaK9Bmo1jGT5fVwbqYCzCMeLmi7IhzYA2E70ZsTskwVE8robTBfk2kgJnEU4nsftkquun0UnCwDsxx+Rwr06RAp3IFKGt+F0QdYrpgJaODiey+WyRkSZfgIA9pMRkfgiWGNIkny014CkxpEspgumBs4iUoI5IsrIKADYj7UmqyasQKhuw1Xaa0BSjOyCXBspgbOIlGCuy2K6IADYT6xIFu01UKtRdkEiWSmBs4iUUD9dkHnMAGA3kWuyAqzJAqI0yi7IvUxKoIVDSjAbKEZGAcB+MiKyCwbYJwuI4m1wLXAvkxo4i3C8UNhQKFw7/aTs8DfW9wAAezAjWcGQoepg3ZosRusBSY2juiTxSg2cRTjais1lumj+SpVXVEmSni/9XBfNX6kVm8uSXDIAgClyZP5odY0kIlmAyct0wZREJwuOtWJzmaYu3aiyw1VRj5cfrtLUpRvpaAGATUTeNJqdLKZEAbUaDjhwbaQGziIcKRQ2NPeVLYo1MdB8bO4rW5g6CAA2EHkTebSqtpPFlCigVuPEF1wbqYCzCEcq3XWgUQQrkiGp7HCVSncdOHGFAgDE5HK5rBvH+umC3IIAUox9suhkpQTOIhxp/5GmO1itOQ4A0LbMG8cjVUwXBCI1zC5IJCs1cBbhSHkdMxN6HACgbZnrsqprzBTu3IIAUqzsgiS+SAW0cHCk8wq7qCA7U03lpnJJKsjO1HmFXU5ksQAATWg4Ok8kC6jldZP4IhVxFuFIHrdLc8b3l6RGHS3z5znj+8vjJkUwANhBo04WkSxAUu09jSvidoXpgqmBswjHKhpQoIXXDlF+dvSUwPzsTC28doiKBhQkqWQAgIYajs4zWg/Ucrlc8rnrr4dMH9dGKvAmuwDAt1E0oEBj+uerdNcB7T9SpbyOtVMEiWABgL00HJ1nTRZQz+dxKRCq/T7Dw5qsVEAnC47ncbs0/PSuyS4GAKAZRLKApnk9bkm1vSw/kayUwFkEAABtrmHGNJ+HGQeAKTKyy5qs1MBZBAAAba5h5MrPlCjAEjnoQJQ3NXAWAQBAm2u0JstLJAswRUayyLyZGjiLAACgzTVak8WNJGDx1kWyvG5X3fosOB1nEQAAtLnISJbLJbLAAhHMQQemCqYOziQAAGhzkTePGR63XC46WYDJjGSR9CJ1cCYBAECbi8wuyFRBIJq3bjPihlk44Vy0cgAAoM1FRbIYrQeiMF0w9XAmAQBAm4ucBuUjkgVEYbpg6uFMAgCANkckC2iaOfDg93FtpArOJAAAaHORa00iN14FUH9NsF4xdTjiTO7evVvXX3+9CgsLlZWVpdNPP11z5sxRIBBo9nVVVVWaNm2aunbtqg4dOmjixIn64osvTlCpAQCAKTqSxeJ+IJIVyeLaSBmO6GRt27ZN4XBYTzzxhD7++GP97ne/06JFizR79uxmXzdjxgy98soreuGFF7R69Wrt27dPV1111QkqNQAAMPmjUrgTyQIieZkumHK8yS5APIqKilRUVGT93KtXL23fvl0LFy7UQw89FPM1hw8f1lNPPaXnnntOo0aNkiQtXrxY/fr109q1a3XBBRfEfF11dbWqq6utnysqKiRJwWBQwWAwUX9Sk8z3OBHvhdRBvUFrUXfQGq2pNx4Z1vc+j4s6l4Zob5rmUViS9NWRaq355AsNO7UzG3ZHsFPdibcMLsMwjOMfZj//7//9P61YsULvv/9+zOdXrlyp0aNH6+DBg8rJybEeP/XUU3XbbbdpxowZMV937733au7cuY0ef+6559SuXbuElB0AgHTz4dcuPf1J7VSoM7LDmtY/nOQSAfbw4dcuLd3hViBc36nKyTB01WlhDerqyNv0lFZZWal/+7d/0+HDh9WpU6cmj3NEJKuhHTt2aMGCBU1GsSSpvLxcGRkZUR0sSerevbvKy8ubfN2sWbM0c+ZM6+eKigr17NlTV1xxRbP/kYkSDAZVUlKiMWPGyOfztfn7ITVQb9Ba1B20RmvqTdb2L/X0Jx9Ikgry8nTllUPasoiwIdqbxt74+Astfu9DNexKHQ64tPgTjxZcM0hjz+qelLLZiZ3qjjnL7XiS2sm66667NH/+/GaP2bp1q/r27Wv9vHfvXhUVFenqq6/Wz372s4SXye/3y+/3N3rc5/Od0JN6ot8PqYF6g9ai7qA1WlJv2mdmWN/7fR7qWxqjvakVChua9/r2Rh0sSTIkuSTNe327xg08iamDdexQd+J9/6R2sm6//XZNmTKl2WN69eplfb9v3z5ddtllGjFihJ588slmX5efn69AIKBDhw5FRbO++OIL5efnf5tiN2IYhmpqahQKhb717woGg/J6vaqqqkrI70Pq8ng88nq9crloeAHYX2R2QR/7ZAEq3XVAZYermnzekFR2uEqluw5o+OldT1zBkBBJ7WTl5uYqNzc3rmP37t2ryy67TEOHDtXixYvldjffQA8dOlQ+n09vvfWWJk6cKEnavn279uzZo+HDh3/rspsCgYDKyspUWVmZkN9nGIby8/P1+eefc/OM42rXrp0KCgqoKwBsLzK7oJ+9gADtP9J0B6s1x8FeHLEma+/evRo5cqROPfVUPfTQQ/ryyy+t58yo1N69ezV69Gj9+c9/1nnnnafs7Gxdf/31mjlzprp06aJOnTrpF7/4hYYPH95kZsGWCofD2rVrlzwej3r06KGMjIxvfbMbDod19OhRdejQ4bgdSaQvwzAUCAT05ZdfateuXTrttNOSXSQAaFZUJItOFqC8jpkJPQ724ohOVklJiXbs2KEdO3bo5JNPjnrOTI4YDAa1ffv2qIjS7373O7ndbk2cOFHV1dUaO3asHn/88YSVKxAIKBwOq2fPngnLPBgOhxUIBJSZmUknC83KysqSz+fTZ599ZouUpgDQnMhNVjOYLgjovMIuKsjOVPnhqpjrslyS8rMzdV5hlxNdNCSAI1q5KVOmyDCMmF+m0047TYZhaOTIkdZjmZmZeuyxx3TgwAEdO3ZML774YsLXY0miM4SkMeueQ3diAJBG/ESygCget0tzxveXVNuhimT+PGd8f5JeOBStHAAAaHOR0SsiWUCtogEFWnjtEOVnR08JzM/O1MJrh6hoQEGSSoZvyxHTBQEAgLNFRrIyPIzMA6aiAQUa0z9fpbsOaP+RKuV1rJ0iSATL2RhKsoFQ2NB7n36tlzbt1dqdXysUtv/Ur927d8vlcmnTpk1t9h5TpkzRhAkT2uz3O8Fpp52mRx99NNnFAIBvjUgW0DSP26Xhp3fV9885ScNP70oHKwXQyiXZis1lumj+Sv3oj2s1fdkm/dufSnXlwve1YnN5m73nlClT5HK5Gn0VFRXF/Tt69uypsrIyDRgwoM3KmQgjR460/r7MzEydccYZKi4uZg0TAJxgGR7WZAFIH0wXTKIVm8s0denGRhll9h8JaNpzH2ih29Vmc3GLioq0ePHiqMf8fn/cr/d4PG2SRKQt/OxnP9NvfvMbVVdXa+XKlbrxxhuVk5OjqVOnJrtokqRQKCSXy0UCFQApzeVyKcPrVqAmTCQLQMqjlUsgwzBUGaiJ6+tIVVBzXv44ZspO87F7X96iI1XBuH5fSyMzfr9f+fn5UV+dO3e2nne5XFq4cKHGjRunrKws9erVS3/729+s5xtOFzx48KAmTZqk3NxcZWVlqU+fPlGduI8++kijRo1SVlaWunbtqhtvvFFHjx61ng+FQpo5c6ZycnLUtWtX3XnnnY3+pnA4rOLiYhUWFiorK0uDBg2KKlNT2rVrp/z8fJ166qn66U9/qoEDB6qkpMR6vrq6WnfccYdOOukktW/fXueff75WrVolqfac5ubmRr3POeeco4KC+s7vmjVr5Pf7re0DHnnkEZ199tlq3769evbsqZtvvjnqb12yZIlycnL08ssvq3///vL7/dqzZ4/279+v8ePHKysrS4WFhXr22WeP+7cBgFOEwobMpVifH6h0xNR4AGgtIlkJ9E0wpP73vJGQ32VIKq+o0tn3/ndcx2/5zVi1y0js6bz77rv14IMP6j/+4z/0l7/8Rddcc40++ugj9evXL+axW7Zs0euvv65u3bppx44d+uabbyRJx44d09ixYzV8+HCtX79e+/fv1w033KBbbrlFS5YskSQ9/PDDWrJkiZ5++mn169dPDz/8sJYvX65Ro0ZZ71FcXKylS5dq0aJF6tOnj9555x1de+21ys3N1aWXXnrcv8cwDK1Zs0bbtm1Tnz59rMdvueUWbdmyRcuWLVOPHj20fPlyFRUV6aOPPlKfPn10ySWXaNWqVfrhD3+ogwcPauvWrcrKytK2bdvUt29frV69Wueee661V5rb7dbvf/97FRYWaufOnbr55pt15513Ru3RVllZqfnz5+tPf/qTunbtqry8PP3whz/Uvn379Pbbb8vn8+nWW2/V/v37W3XuAMBOVmwu09xXtuibYFiS9PS7u/X65nLNGd+f7GkAUhKdrDT16quvqkOHDlGPzZ49W7Nnz7Z+vvrqq3XDDTdIku677z6VlJRowYIFMTd03rNnjwYPHqxhw4ZJqk3YYHruuedUVVWlP//5z2rfvr0k6Q9/+IPGjx+v+fPnq3v37nr00Uc1a9YsXXXVVZKkRYsW6Y036jus1dXVeuCBB/Tmm29q+PDhkqRevXppzZo1euKJJ5rtZD3++OP605/+pEAgoGAwqMzMTN16661WuRcvXqw9e/aoR48ekqQ77rhDK1as0OLFi/XAAw9o5MiReuKJJyRJ77zzjgYPHqz8/HytWrVKffv21apVq6Le/7bbbrO+P+2003T//ffrpptuivp/CwaDevzxxzVo0CBJ0ieffKLXX39dpaWlOvfccyVJTz31VMwOLQA4SVNT48sPV2nq0o2kqQaQkuhkJVCWz6Mtvxkb17Gluw5oyuL1xz1uyU/PjWun7yyfJ673NV122WVauHBh1GNdukS/j9mZify5qWyCU6dO1cSJE7Vx40ZdccUVmjBhgkaMGCFJ2rp1qwYNGmR1sCTpwgsvVDgc1vbt25WZmamysjKdf/751vNer1fDhg2zpgzu2LFDlZWVGjNmTNT7BgIBDR48uNm/ddKkSfr1r3+tgwcPas6cORoxYoRVto8++kihUEhnnHFG1Guqq6vVtWtXSdKll16q6dOn68svv9Tq1as1cuRIq5N1/fXX63//93915513Wq998803VVxcrG3btqmiokI1NTWqqqpSZWWlFe3KyMjQwIEDrdds3bpVXq9XQ4cOtR7r27evcnJymv3bAMDOQmFDc1/Z0uTUeJekua9s0Zj++WRTA5BS6GQlkMvlinvK3sV9clWQnanyw1UxP3xcqt2I7uI+uW3ywdO+fXv17t07Yb9v3Lhx+uyzz/Taa6+ppKREo0eP1rRp0/TQQw8l5Peba5r+8Y9/6KSTTop67ngJO7Kzs62/9a9//at69+6tCy64QJdffrmOHj0qj8ejDRs2yOOJ7qiakb6zzz5bXbp00erVq7V69WrNmzdP+fn5mj9/vtavX69gMGh12nbv3q3vfve7mjp1qubNm6cuXbpozZo1uv766xUIBKxOVlZWllwubigApLbSXQdUdriqyecNSWWHq1S664CGn971xBUMANoYiS+SxON2ac74/pJqO1SRzJ/njO+f1JG9tWvXNvq5uelrubm5mjx5spYuXapHH31UTz75pCSpX79++vDDD3Xs2DHr2HfffVdut1tnnnmmsrOzVVBQoHXr1lnP19TUaMOGDdbPkQkievfuHfXVs2fPuP+mDh06aPr06brjjjtkGIYGDx6sUCik/fv3N/q9ZvZEl8uliy++WC+99JI+/vhjXXTRRRo4cKCqq6v1xBNPaNiwYVaUbsOGDQqHw3r44Yd1wQUX6IwzztC+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aOvWrZo/f75++9vfasGCBdYx1B0cO3ZMgwYN0mOPPRbz+XjqyKRJk/Txxx+rpKREr776qt555x3deOONJ+pPaJ4B2zjvvPOMadOmWT+HQiGjR48eRnFxcRJLBTvbv3+/IclYvXq1YRiGcejQIcPn8xkvvPCCdczWrVsNScZ7772XrGLCJo4cOWL06dPHKCkpMS699FJj+vTphmFQbxDbr371K+Oiiy5q8vlwOGzk5+cb//7v/249dujQIcPv9xvPP//8iSgibOo73/mOcd1110U9dtVVVxmTJk0yDIO6g8YkGcuXL7d+jqeObNmyxZBkrF+/3jrm9ddfN1wul7F3794TVvamEMmyiUAgoA0bNujyyy+3HnO73br88sv13nvvJbFksLPDhw9Lkrp06SJJ2rBhg4LBYFQ96tu3r0455RTqETRt2jR95zvfiaofEvUGsb388ssaNmyYrr76auXl5Wnw4MH64x//aD2/a9culZeXR9Wb7OxsnX/++dSbNDdixAi99dZb+uSTTyRJH374odasWaNx48ZJou7g+OKpI++9955ycnI0bNgw65jLL79cbrdb69atO+Flbsib7AKg1ldffaVQKKTu3btHPd69e3dt27YtSaWCnYXDYd1222268MILNWDAAElSeXm5MjIylJOTE3Vs9+7dVV5enoRSwi6WLVumjRs3av369Y2eo94glp07d2rhwoWaOXOmZs+erfXr1+vWW29VRkaGJk+ebNWNWJ9b1Jv0dtddd6miokJ9+/aVx+NRKBTSvHnzNGnSJEmi7uC44qkj5eXlysvLi3re6/WqS5cutqhHdLIAh5o2bZo2b96sNWvWJLsosLnPP/9c06dPV0lJiTIzM5NdHDhEOBzWsGHD9MADD0iSBg8erM2bN2vRokWaPHlykksHO/vrX/+qZ599Vs8995zOOussbdq0Sbfddpt69OhB3UHaYLqgTXTr1k0ej6dRNq8vvvhC+fn5SSoV7OqWW27Rq6++qrffflsnn3yy9Xh+fr4CgYAOHToUdTz1KL1t2LBB+/fv15AhQ+T1euX1erV69Wr9/ve/l9frVffu3ak3aKSgoED9+/ePeqxfv37as2ePJFl1g88tNPTLX/5Sd911l6655hqdffbZ+vGPf6wZM2aouLhYEnUHxxdPHcnPz2+UHK6mpkYHDhywRT2ik2UTGRkZGjp0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\n" + }, + "metadata": {} }, - "463f22dcd9da484f98795b42c7406fb4": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<IPython.core.display.HTML object>" + ], + "text/html": [] + }, + "metadata": {} }, - "632684e2f5e648f3ad8eb6f65acbdd6b": { - "model_module": "@jupyter-widgets/controls", - "model_name": "LabelModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "LabelModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "LabelView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_b5bc5fcb6fea4586839b5dc6e43ce0f9", - "placeholder": "", - "style": "IPY_MODEL_decc3d18711a459badab9c4def213303", - "value": "Connecting..." - } + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<IPython.core.display.HTML object>" + ], + "text/html": [ + "<br> <style><br> .wandb-row {<br> display: flex;<br> flex-direction: row;<br> flex-wrap: wrap;<br> justify-content: flex-start;<br> width: 100%;<br> }<br> .wandb-col {<br> display: flex;<br> flex-direction: column;<br> flex-basis: 100%;<br> flex: 1;<br> padding: 10px;<br> }<br> </style><br><div class=\"wandb-row\"><div class=\"wandb-col\"><h3>Run history:</h3><br/><table class=\"wandb\"><tr><td>Episode</td><td>▁▂▃▃▃▄▄▄▄▄▄▅▁▁▁▂▂▂▂▂▃▃▃▃▃▄▄▅▅▅▆▆▆▆▆▇▇▇▇█</td></tr><tr><td>Success Rate</td><td>▁</td></tr><tr><td>Total Reward</td><td>▇▇██▁█▇▇▇███████▇▇▆██▇▇▇▆██▇▇▇██▇▇▇█▇▆▇█</td></tr></table><br/></div><div class=\"wandb-col\"><h3>Run summary:</h3><br/><table class=\"wandb\"><tr><td>Episode</td><td>100</td></tr><tr><td>Success Rate</td><td>100</td></tr><tr><td>Total Reward</td><td>-0.37506</td></tr><tr><td>is_success</td><td>True</td></tr></table><br/></div></div>" + ] + }, + "metadata": {} }, - "b5bc5fcb6fea4586839b5dc6e43ce0f9": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<IPython.core.display.HTML object>" + ], + "text/html": [ + " View run <strong style=\"color:#cdcd00\">evaluation</strong> at: <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym/runs/62kngzah' target=\"_blank\">https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym/runs/62kngzah</a><br> View project at: <a href='https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym' target=\"_blank\">https://wandb.ai/benyahiamohammedoussama-ecole-central-lyon/panda-gym</a><br>Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)" + ] + }, + "metadata": {} }, - "decc3d18711a459badab9c4def213303": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } + { + "output_type": "display_data", + "data": { + "text/plain": [ + "<IPython.core.display.HTML object>" + ], + "text/html": [ + "Find logs at: <code>./wandb/run-20250226_150848-62kngzah/logs</code>" + ] + }, + "metadata": {} } - } + ] } - }, - "nbformat": 4, - "nbformat_minor": 0 + ] } \ No newline at end of file -- GitLab