Computer_Vision/Chapter03/Learning_rate_annealing.ipynb

1461 lines
86 KiB
Plaintext
Raw Permalink Normal View History

2024-02-13 03:34:51 +01:00
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"accelerator": "GPU",
"colab": {
"name": "Learning_rate_annealing.ipynb",
"provenance": [],
"include_colab_link": true
},
"hide_input": false,
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"121bf271756e48ee89011c118eb3acef": {
"model_module": "@jupyter-widgets/controls",
"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_35dbe15d0d614a378a7194698f3b7d2b",
"IPY_MODEL_c0bf00c159054eef944c32cffeaaf5ac"
],
"layout": "IPY_MODEL_97fedc22f4b4451899057d4aa21cacc8"
}
},
"97fedc22f4b4451899057d4aa21cacc8": {
"model_module": "@jupyter-widgets/base",
"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
}
},
"35dbe15d0d614a378a7194698f3b7d2b": {
"model_module": "@jupyter-widgets/controls",
"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": "info",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_6044bb55136243edb55d5fd1626ab6b0",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_b4e360589aa645ffb8b990fcfd2e6d4d",
"value": 1
}
},
"c0bf00c159054eef944c32cffeaaf5ac": {
"model_module": "@jupyter-widgets/controls",
"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_f12288961ef7460bb62681f7d1d2bece",
"placeholder": "",
"style": "IPY_MODEL_749f1cc5c99349f7b8bacb114bc8d124",
"value": " 26427392/? [00:20<00:00, 783618.23it/s]"
}
},
"b4e360589aa645ffb8b990fcfd2e6d4d": {
"model_module": "@jupyter-widgets/controls",
"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": "initial"
}
},
"6044bb55136243edb55d5fd1626ab6b0": {
"model_module": "@jupyter-widgets/base",
"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
}
},
"749f1cc5c99349f7b8bacb114bc8d124": {
"model_module": "@jupyter-widgets/controls",
"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": ""
}
},
"f12288961ef7460bb62681f7d1d2bece": {
"model_module": "@jupyter-widgets/base",
"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
}
},
"8312d26a60e94def95301e614028d928": {
"model_module": "@jupyter-widgets/controls",
"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_4e7fd30b2aa94d00904c1820cf4da47f",
"IPY_MODEL_afddf511606e4cecaa57c58a6354992f"
],
"layout": "IPY_MODEL_9cb8510294dd4d249621c85239d714a2"
}
},
"9cb8510294dd4d249621c85239d714a2": {
"model_module": "@jupyter-widgets/base",
"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
}
},
"4e7fd30b2aa94d00904c1820cf4da47f": {
"model_module": "@jupyter-widgets/controls",
"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_79cee2e2202641059fd1904835f2fe7d",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_db6ff16b75b74c21a659ff7941fc050a",
"value": 1
}
},
"afddf511606e4cecaa57c58a6354992f": {
"model_module": "@jupyter-widgets/controls",
"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_e75b3677fda849d1ab4e14f3fbe0a144",
"placeholder": "",
"style": "IPY_MODEL_f350377c527b4acf96a584442524f611",
"value": " 32768/? [00:00<00:00, 104238.56it/s]"
}
},
"db6ff16b75b74c21a659ff7941fc050a": {
"model_module": "@jupyter-widgets/controls",
"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": "initial"
}
},
"79cee2e2202641059fd1904835f2fe7d": {
"model_module": "@jupyter-widgets/base",
"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
}
},
"f350377c527b4acf96a584442524f611": {
"model_module": "@jupyter-widgets/controls",
"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": ""
}
},
"e75b3677fda849d1ab4e14f3fbe0a144": {
"model_module": "@jupyter-widgets/base",
"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
}
},
"70b0035b0ed44a919284e59f882dfd67": {
"model_module": "@jupyter-widgets/controls",
"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_b5abc6896a2f406eb51ff709a8d5bb65",
"IPY_MODEL_79b82d2313cc4a56bf928dd2b4ad94fe"
],
"layout": "IPY_MODEL_dff73ff9b86940ff988e98dca428a5c7"
}
},
"dff73ff9b86940ff988e98dca428a5c7": {
"model_module": "@jupyter-widgets/base",
"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
}
},
"b5abc6896a2f406eb51ff709a8d5bb65": {
"model_module": "@jupyter-widgets/controls",
"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_cb86ec154bd246b295794c57a692255a",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_f3704bae39fb48c49f68582136eeb829",
"value": 1
}
},
"79b82d2313cc4a56bf928dd2b4ad94fe": {
"model_module": "@jupyter-widgets/controls",
"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_1b29c52020a042d1b118fb7b0b767e5b",
"placeholder": "",
"style": "IPY_MODEL_d5b1b6422bc54ddd9aa0ad46eff9ab40",
"value": " 4423680/? [00:00<00:00, 19038424.90it/s]"
}
},
"f3704bae39fb48c49f68582136eeb829": {
"model_module": "@jupyter-widgets/controls",
"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": "initial"
}
},
"cb86ec154bd246b295794c57a692255a": {
"model_module": "@jupyter-widgets/base",
"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
}
},
"d5b1b6422bc54ddd9aa0ad46eff9ab40": {
"model_module": "@jupyter-widgets/controls",
"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": ""
}
},
"1b29c52020a042d1b118fb7b0b767e5b": {
"model_module": "@jupyter-widgets/base",
"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
}
},
"cf4c51e9500e41d4aa6717a2d650944e": {
"model_module": "@jupyter-widgets/controls",
"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_b80749088da943c2acf8c0a77cac5abf",
"IPY_MODEL_5bae4a76b2174963b69dbe97e9cc68e1"
],
"layout": "IPY_MODEL_33b8fcc14a7b455e83d03b9ace66fc47"
}
},
"33b8fcc14a7b455e83d03b9ace66fc47": {
"model_module": "@jupyter-widgets/base",
"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
}
},
"b80749088da943c2acf8c0a77cac5abf": {
"model_module": "@jupyter-widgets/controls",
"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_0c21e2bfda3c4364bb845d8896a8f3df",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_d01a884210b340c090cd3721b186b41e",
"value": 1
}
},
"5bae4a76b2174963b69dbe97e9cc68e1": {
"model_module": "@jupyter-widgets/controls",
"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_f7347e2bcb9042888fdd208af319692e",
"placeholder": "",
"style": "IPY_MODEL_ea86a4f9ca0a4833943cec3e5feaa44f",
"value": " 8192/? [00:00<00:00, 27717.98it/s]"
}
},
"d01a884210b340c090cd3721b186b41e": {
"model_module": "@jupyter-widgets/controls",
"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": "initial"
}
},
"0c21e2bfda3c4364bb845d8896a8f3df": {
"model_module": "@jupyter-widgets/base",
"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
}
},
"ea86a4f9ca0a4833943cec3e5feaa44f": {
"model_module": "@jupyter-widgets/controls",
"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": ""
}
},
"f7347e2bcb9042888fdd208af319692e": {
"model_module": "@jupyter-widgets/base",
"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
}
}
}
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/github/PacktPublishing/Hands-On-Computer-Vision-with-PyTorch/blob/master/Chapter03/Learning_rate_annealing.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "US2PQ90V-TxM",
"outputId": "81ec7fa2-0fde-4e01-dee9-48812856d2ea",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 437,
"referenced_widgets": [
"121bf271756e48ee89011c118eb3acef",
"97fedc22f4b4451899057d4aa21cacc8",
"35dbe15d0d614a378a7194698f3b7d2b",
"c0bf00c159054eef944c32cffeaaf5ac",
"b4e360589aa645ffb8b990fcfd2e6d4d",
"6044bb55136243edb55d5fd1626ab6b0",
"749f1cc5c99349f7b8bacb114bc8d124",
"f12288961ef7460bb62681f7d1d2bece",
"8312d26a60e94def95301e614028d928",
"9cb8510294dd4d249621c85239d714a2",
"4e7fd30b2aa94d00904c1820cf4da47f",
"afddf511606e4cecaa57c58a6354992f",
"db6ff16b75b74c21a659ff7941fc050a",
"79cee2e2202641059fd1904835f2fe7d",
"f350377c527b4acf96a584442524f611",
"e75b3677fda849d1ab4e14f3fbe0a144",
"70b0035b0ed44a919284e59f882dfd67",
"dff73ff9b86940ff988e98dca428a5c7",
"b5abc6896a2f406eb51ff709a8d5bb65",
"79b82d2313cc4a56bf928dd2b4ad94fe",
"f3704bae39fb48c49f68582136eeb829",
"cb86ec154bd246b295794c57a692255a",
"d5b1b6422bc54ddd9aa0ad46eff9ab40",
"1b29c52020a042d1b118fb7b0b767e5b",
"cf4c51e9500e41d4aa6717a2d650944e",
"33b8fcc14a7b455e83d03b9ace66fc47",
"b80749088da943c2acf8c0a77cac5abf",
"5bae4a76b2174963b69dbe97e9cc68e1",
"d01a884210b340c090cd3721b186b41e",
"0c21e2bfda3c4364bb845d8896a8f3df",
"ea86a4f9ca0a4833943cec3e5feaa44f",
"f7347e2bcb9042888fdd208af319692e"
]
}
},
"source": [
"from torchvision import datasets\n",
"import torch\n",
"data_folder = '~/data/FMNIST' # This can be any directory you want to \n",
"# download FMNIST to\n",
"fmnist = datasets.FashionMNIST(data_folder, download=True, train=True)\n",
"tr_images = fmnist.data\n",
"tr_targets = fmnist.targets"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-images-idx3-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw/train-images-idx3-ubyte.gz\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "121bf271756e48ee89011c118eb3acef",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"Extracting /root/data/FMNIST/FashionMNIST/raw/train-images-idx3-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw\n",
"Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-labels-idx1-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw/train-labels-idx1-ubyte.gz\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "8312d26a60e94def95301e614028d928",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"Extracting /root/data/FMNIST/FashionMNIST/raw/train-labels-idx1-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw\n",
"Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-images-idx3-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw/t10k-images-idx3-ubyte.gz\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "70b0035b0ed44a919284e59f882dfd67",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"Extracting /root/data/FMNIST/FashionMNIST/raw/t10k-images-idx3-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw\n",
"Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-labels-idx1-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw/t10k-labels-idx1-ubyte.gz\n",
"\n",
"\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "cf4c51e9500e41d4aa6717a2d650944e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"Extracting /root/data/FMNIST/FashionMNIST/raw/t10k-labels-idx1-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw\n",
"Processing...\n",
"Done!\n",
"\n"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.6/dist-packages/torchvision/datasets/mnist.py:469: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:141.)\n",
" return torch.from_numpy(parsed.astype(m[2], copy=False)).view(*s)\n"
],
"name": "stderr"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Oh-XVKan-g2q"
},
"source": [
"val_fmnist = datasets.FashionMNIST(data_folder, download=True, train=False)\n",
"val_images = val_fmnist.data\n",
"val_targets = val_fmnist.targets"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "QAtH6m0e-iKd"
},
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"import numpy as np\n",
"from torch.utils.data import Dataset, DataLoader\n",
"import torch\n",
"import torch.nn as nn\n",
"device = 'cuda' if torch.cuda.is_available() else 'cpu'"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "1a6Ft27b-jTW"
},
"source": [
"class FMNISTDataset(Dataset):\n",
" def __init__(self, x, y):\n",
" x = x.float()\n",
" x = x.view(-1,28*28)/255\n",
" self.x, self.y = x, y \n",
" def __getitem__(self, ix):\n",
" x, y = self.x[ix], self.y[ix] \n",
" return x.to(device), y.to(device)\n",
" def __len__(self): \n",
" return len(self.x)\n",
"\n",
"from torch.optim import SGD, Adam\n",
"def get_model():\n",
" model = nn.Sequential(\n",
" nn.Linear(28 * 28, 1000),\n",
" nn.ReLU(),\n",
" nn.Linear(1000, 10)\n",
" ).to(device)\n",
"\n",
" loss_fn = nn.CrossEntropyLoss()\n",
" optimizer = Adam(model.parameters(), lr=1e-3)\n",
" return model, loss_fn, optimizer\n",
"\n",
"def train_batch(x, y, model, opt, loss_fn):\n",
" model.train()\n",
" prediction = model(x)\n",
" batch_loss = loss_fn(prediction, y)\n",
" batch_loss.backward()\n",
" optimizer.step()\n",
" optimizer.zero_grad()\n",
" return batch_loss.item()\n",
"\n",
"def accuracy(x, y, model):\n",
" model.eval()\n",
" # this is the same as @torch.no_grad \n",
" # at the top of function, only difference\n",
" # being, grad is not computed in the with scope\n",
" with torch.no_grad():\n",
" prediction = model(x)\n",
" max_values, argmaxes = prediction.max(-1)\n",
" is_correct = argmaxes == y\n",
" return is_correct.cpu().numpy().tolist()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "TV6g7C3v-k62"
},
"source": [
"def get_data(): \n",
" train = FMNISTDataset(tr_images, tr_targets) \n",
" trn_dl = DataLoader(train, batch_size=32, shuffle=True)\n",
" val = FMNISTDataset(val_images, val_targets) \n",
" val_dl = DataLoader(val, batch_size=len(val_images), shuffle=False)\n",
" return trn_dl, val_dl"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "6O1wjRFi-mFG"
},
"source": [
"@torch.no_grad()\n",
"def val_loss(x, y, model):\n",
" prediction = model(x)\n",
" val_loss = loss_fn(prediction, y)\n",
" return val_loss.item()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "fNzWYrew-ndP"
},
"source": [
"trn_dl, val_dl = get_data()\n",
"model, loss_fn, optimizer = get_model()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "-rKvZEha-ooh",
"outputId": "1f853a8c-83da-4500-d334-5f2090d3973a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 145
}
},
"source": [
"from torch import optim\n",
"scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, factor=0.5, patience=0, threshold = 0.001, verbose=True, min_lr = 1e-5, threshold_mode = 'abs')\n",
"train_losses, train_accuracies = [], []\n",
"val_losses, val_accuracies = [], []\n",
"for epoch in range(30):\n",
" #print(epoch)\n",
" train_epoch_losses, train_epoch_accuracies = [], []\n",
" for ix, batch in enumerate(iter(trn_dl)):\n",
" x, y = batch\n",
" batch_loss = train_batch(x, y, model, optimizer, loss_fn)\n",
" train_epoch_losses.append(batch_loss) \n",
" train_epoch_loss = np.array(train_epoch_losses).mean()\n",
"\n",
" for ix, batch in enumerate(iter(trn_dl)):\n",
" x, y = batch\n",
" is_correct = accuracy(x, y, model)\n",
" train_epoch_accuracies.extend(is_correct)\n",
" train_epoch_accuracy = np.mean(train_epoch_accuracies)\n",
"\n",
" for ix, batch in enumerate(iter(val_dl)):\n",
" x, y = batch\n",
" val_is_correct = accuracy(x, y, model)\n",
" validation_loss = val_loss(x, y, model)\n",
" scheduler.step(validation_loss)\n",
" val_epoch_accuracy = np.mean(val_is_correct)\n",
"\n",
" train_losses.append(train_epoch_loss)\n",
" train_accuracies.append(train_epoch_accuracy)\n",
" val_losses.append(validation_loss)\n",
" val_accuracies.append(val_epoch_accuracy)"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"Epoch 2: reducing learning rate of group 0 to 5.0000e-04.\n",
"Epoch 8: reducing learning rate of group 0 to 2.5000e-04.\n",
"Epoch 11: reducing learning rate of group 0 to 1.2500e-04.\n",
"Epoch 14: reducing learning rate of group 0 to 6.2500e-05.\n",
"Epoch 15: reducing learning rate of group 0 to 3.1250e-05.\n",
"Epoch 16: reducing learning rate of group 0 to 1.5625e-05.\n",
"Epoch 17: reducing learning rate of group 0 to 1.0000e-05.\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "lX0dSmyE_GSm",
"outputId": "3d8e1c75-6ca3-4bc0-eca3-7fd328e47ab3",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 337
}
},
"source": [
"epochs = np.arange(30)+1\n",
"import matplotlib.ticker as mtick\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.ticker as mticker\n",
"%matplotlib inline\n",
"plt.subplot(211)\n",
"plt.plot(epochs, train_losses, 'bo', label='Training loss')\n",
"plt.plot(epochs, val_losses, 'r', label='Validation loss')\n",
"plt.gca().xaxis.set_major_locator(mticker.MultipleLocator(1))\n",
"plt.title('Training and validation loss with learning rate scheduler')\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Loss')\n",
"plt.legend()\n",
"plt.grid('off')\n",
"plt.show()\n",
"plt.subplot(212)\n",
"plt.plot(epochs, train_accuracies, 'bo', label='Training accuracy')\n",
"plt.plot(epochs, val_accuracies, 'r', label='Validation accuracy')\n",
"plt.gca().xaxis.set_major_locator(mticker.MultipleLocator(1))\n",
"plt.title('Training and validation accuracy with learning rate scheduler')\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Accuracy')\n",
"plt.gca().set_yticklabels(['{:.0f}%'.format(x*100) for x in plt.gca().get_yticks()]) \n",
"plt.legend()\n",
"plt.grid('off')\n",
"plt.show()"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "539Fi1Kw_1-n"
},
"source": [
""
],
"execution_count": null,
"outputs": []
}
]
}