{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"accelerator": "GPU",
"colab": {
"name": "Varying_loss_optimizer.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": {
"555f8075b30344ffad1a09752ac88ea1": {
"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_e11f28d88a22465b97f31a8611583a76",
"IPY_MODEL_8cef7279ec104ee5a45602603537ba92"
],
"layout": "IPY_MODEL_40a4dc115817415fb0f956ab8343921c"
}
},
"40a4dc115817415fb0f956ab8343921c": {
"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
}
},
"e11f28d88a22465b97f31a8611583a76": {
"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_ec6aa5ffe76947d99d74fdc48f3bda87",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_a8251570eabf4c87a5f54837ccb2a0a0",
"value": 1
}
},
"8cef7279ec104ee5a45602603537ba92": {
"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_4ebe7feaf19b463ea64c7ceb939392ae",
"placeholder": "",
"style": "IPY_MODEL_db11ed571583409992509c9177265bab",
"value": " 26427392/? [00:20<00:00, 83478868.91it/s]"
}
},
"a8251570eabf4c87a5f54837ccb2a0a0": {
"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"
}
},
"ec6aa5ffe76947d99d74fdc48f3bda87": {
"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
}
},
"db11ed571583409992509c9177265bab": {
"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": ""
}
},
"4ebe7feaf19b463ea64c7ceb939392ae": {
"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
}
},
"0afd0f24f0b84d01a1ac805461780038": {
"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_8bfb0bf136954e508e49691710baea94",
"IPY_MODEL_57ff7b0b5c5747498c7c251acfadba63"
],
"layout": "IPY_MODEL_9149b38ce9e24652a226bbb78c57158e"
}
},
"9149b38ce9e24652a226bbb78c57158e": {
"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
}
},
"8bfb0bf136954e508e49691710baea94": {
"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_d2d7908b02104b53819195b4b38dc35b",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_4996fd9c0f29441285827db538683121",
"value": 1
}
},
"57ff7b0b5c5747498c7c251acfadba63": {
"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_a0273ce565bb403eb1f180bb1c65782c",
"placeholder": "",
"style": "IPY_MODEL_7a36dd0db81146289a0014156aadc02f",
"value": " 32768/? [00:00<00:00, 89204.95it/s]"
}
},
"4996fd9c0f29441285827db538683121": {
"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"
}
},
"d2d7908b02104b53819195b4b38dc35b": {
"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
}
},
"7a36dd0db81146289a0014156aadc02f": {
"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": ""
}
},
"a0273ce565bb403eb1f180bb1c65782c": {
"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
}
},
"708bd6ef4ee14f8a81c3e0eea17dbb3b": {
"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_10c602e87fa844deb169ce5400ac9992",
"IPY_MODEL_09d4af85a8474de2a21402b585fcd0ea"
],
"layout": "IPY_MODEL_ebbc2338d4f44948adc9636383cab302"
}
},
"ebbc2338d4f44948adc9636383cab302": {
"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
}
},
"10c602e87fa844deb169ce5400ac9992": {
"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_53beddf25c0d4373ba8335491af85fa5",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_fc3f7edb493b49db9eda12f9c45ff30a",
"value": 1
}
},
"09d4af85a8474de2a21402b585fcd0ea": {
"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_ed4d32cfa18849f3b421fe4b9c433a96",
"placeholder": "",
"style": "IPY_MODEL_f23dccb7ae8d4e6bbde1b96394a044da",
"value": " 4423680/? [00:00<00:00, 17006263.58it/s]"
}
},
"fc3f7edb493b49db9eda12f9c45ff30a": {
"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"
}
},
"53beddf25c0d4373ba8335491af85fa5": {
"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
}
},
"f23dccb7ae8d4e6bbde1b96394a044da": {
"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": ""
}
},
"ed4d32cfa18849f3b421fe4b9c433a96": {
"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
}
},
"e7e20d5f7ded4155b5de7a59a5ddf43e": {
"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_736b7a750d094ff487db2249615fa82a",
"IPY_MODEL_378f2fb19c37421195f2b0c19ea1cf7f"
],
"layout": "IPY_MODEL_7aeec9531faa44d7bd95ff72fd63bb8b"
}
},
"7aeec9531faa44d7bd95ff72fd63bb8b": {
"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
}
},
"736b7a750d094ff487db2249615fa82a": {
"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_ac086a6bcf274e91b8d506ea39490592",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_c6cf46d85249463caaf07823604e0ce3",
"value": 1
}
},
"378f2fb19c37421195f2b0c19ea1cf7f": {
"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_abe78c8e154f4fe48ae2753e0f5fc9e7",
"placeholder": "",
"style": "IPY_MODEL_4e6caf9db2f345e9aa3a83d47d9d635c",
"value": " 8192/? [00:00<00:00, 25459.14it/s]"
}
},
"c6cf46d85249463caaf07823604e0ce3": {
"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"
}
},
"ac086a6bcf274e91b8d506ea39490592": {
"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
}
},
"4e6caf9db2f345e9aa3a83d47d9d635c": {
"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": ""
}
},
"abe78c8e154f4fe48ae2753e0f5fc9e7": {
"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": [
""
]
},
{
"cell_type": "code",
"metadata": {
"id": "-CiYe82L4gom",
"outputId": "7238ae25-5422-41bf-9101-8c42777ebb3e",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 437,
"referenced_widgets": [
"555f8075b30344ffad1a09752ac88ea1",
"40a4dc115817415fb0f956ab8343921c",
"e11f28d88a22465b97f31a8611583a76",
"8cef7279ec104ee5a45602603537ba92",
"a8251570eabf4c87a5f54837ccb2a0a0",
"ec6aa5ffe76947d99d74fdc48f3bda87",
"db11ed571583409992509c9177265bab",
"4ebe7feaf19b463ea64c7ceb939392ae",
"0afd0f24f0b84d01a1ac805461780038",
"9149b38ce9e24652a226bbb78c57158e",
"8bfb0bf136954e508e49691710baea94",
"57ff7b0b5c5747498c7c251acfadba63",
"4996fd9c0f29441285827db538683121",
"d2d7908b02104b53819195b4b38dc35b",
"7a36dd0db81146289a0014156aadc02f",
"a0273ce565bb403eb1f180bb1c65782c",
"708bd6ef4ee14f8a81c3e0eea17dbb3b",
"ebbc2338d4f44948adc9636383cab302",
"10c602e87fa844deb169ce5400ac9992",
"09d4af85a8474de2a21402b585fcd0ea",
"fc3f7edb493b49db9eda12f9c45ff30a",
"53beddf25c0d4373ba8335491af85fa5",
"f23dccb7ae8d4e6bbde1b96394a044da",
"ed4d32cfa18849f3b421fe4b9c433a96",
"e7e20d5f7ded4155b5de7a59a5ddf43e",
"7aeec9531faa44d7bd95ff72fd63bb8b",
"736b7a750d094ff487db2249615fa82a",
"378f2fb19c37421195f2b0c19ea1cf7f",
"c6cf46d85249463caaf07823604e0ce3",
"ac086a6bcf274e91b8d506ea39490592",
"4e6caf9db2f345e9aa3a83d47d9d635c",
"abe78c8e154f4fe48ae2753e0f5fc9e7"
]
}
},
"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": "555f8075b30344ffad1a09752ac88ea1",
"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": "0afd0f24f0b84d01a1ac805461780038",
"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": "708bd6ef4ee14f8a81c3e0eea17dbb3b",
"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": "e7e20d5f7ded4155b5de7a59a5ddf43e",
"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": "53UbSwV44pKN"
},
"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": "hLjiLWl24qjU"
},
"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": "markdown",
"metadata": {
"id": "r9CEfaWfxCAZ"
},
"source": [
"### SGD optimizer"
]
},
{
"cell_type": "code",
"metadata": {
"id": "5brrbtrf4rsb"
},
"source": [
"class FMNISTDataset(Dataset):\n",
" def __init__(self, x, y):\n",
" x = x.float()/255\n",
" x = x.view(-1,28*28)\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 = SGD(model.parameters(), lr=1e-2)\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": "Ipn9JZfJ4yVl"
},
"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": "q44UDG_q41Up"
},
"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": "mK19mnET42it"
},
"source": [
"trn_dl, val_dl = get_data()\n",
"model, loss_fn, optimizer = get_model()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "TVtikJsV43mD",
"outputId": "f2c6ca32-5347-4062-a57f-ba50f7b74662",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 199
}
},
"source": [
"train_losses, train_accuracies = [], []\n",
"val_losses, val_accuracies = [], []\n",
"for epoch in range(10):\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",
" 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",
" val_epoch_accuracy = np.mean(val_is_correct)\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": [
"0\n",
"1\n",
"2\n",
"3\n",
"4\n",
"5\n",
"6\n",
"7\n",
"8\n",
"9\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "X8qZ13F3452Y",
"outputId": "17ff2d4a-2679-49a8-f03f-0f6b0d02e702",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 337
}
},
"source": [
"epochs = np.arange(10)+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 SGD optimizer')\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 SGD optimizer')\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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\n",
"text/plain": [
"