Przetwarzanie_tekstu/projekt/BERT_sms_spam.ipynb
2023-02-10 12:42:56 +01:00

5415 lines
280 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
},
"gpuClass": "standard",
"accelerator": "GPU",
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"26f1d5f367aa49c9a572adcded83219a": {
"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_b5eaae22aefd429d9946c7c644c0cd02",
"IPY_MODEL_3d95f755191647889171d659ddd6c755",
"IPY_MODEL_322e6c92a93845d683028f1ac77fd991"
],
"layout": "IPY_MODEL_a1edcaafe9a349a487875ad77ccd00c9"
}
},
"b5eaae22aefd429d9946c7c644c0cd02": {
"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_f1d9de6c2e864d5481f04af80d92058e",
"placeholder": "",
"style": "IPY_MODEL_e2124cb283c045f5822a395ce8b5fe6d",
"value": "Downloading builder script: 100%"
}
},
"3d95f755191647889171d659ddd6c755": {
"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_e4e57cf95df04f56a4ef4ae990344116",
"max": 3208,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_cccb07d8327342fa8f30de34f056543e",
"value": 3208
}
},
"322e6c92a93845d683028f1ac77fd991": {
"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_a1fa218698f64411a80bcf999ca1e786",
"placeholder": "",
"style": "IPY_MODEL_3cf8102ac99f4c419dda058164653aaa",
"value": " 3.21k/3.21k [00:00<00:00, 158kB/s]"
}
},
"a1edcaafe9a349a487875ad77ccd00c9": {
"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
}
},
"f1d9de6c2e864d5481f04af80d92058e": {
"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
}
},
"e2124cb283c045f5822a395ce8b5fe6d": {
"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": ""
}
},
"e4e57cf95df04f56a4ef4ae990344116": {
"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
}
},
"cccb07d8327342fa8f30de34f056543e": {
"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": ""
}
},
"a1fa218698f64411a80bcf999ca1e786": {
"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
}
},
"3cf8102ac99f4c419dda058164653aaa": {
"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": ""
}
},
"fc229165f10d40d59c6d751a13848f6d": {
"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_bdafd6edd15c45f0849ec4973f4f0930",
"IPY_MODEL_9e821b7e6efa4cbcb200944969338ac0",
"IPY_MODEL_043b8b140ad54391ba0aff7062628eea"
],
"layout": "IPY_MODEL_6730bd27c7404ccba47d535da42dc4df"
}
},
"bdafd6edd15c45f0849ec4973f4f0930": {
"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_9ea0e304a63548bfa044e31f8b4c15d5",
"placeholder": "",
"style": "IPY_MODEL_0d1e9d91e7dc4707b20266aaef49eb1c",
"value": "Downloading metadata: 100%"
}
},
"9e821b7e6efa4cbcb200944969338ac0": {
"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_6eac05fb740f4483953ba2e1ad610019",
"max": 1687,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_28d758c4f4a8401c9a30fb87a71be070",
"value": 1687
}
},
"043b8b140ad54391ba0aff7062628eea": {
"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_c36f89ddd4b847c2a0cceeae00aee173",
"placeholder": "",
"style": "IPY_MODEL_68ad89e9846d479ba7d4e3828e0cfb77",
"value": " 1.69k/1.69k [00:00<00:00, 82.7kB/s]"
}
},
"6730bd27c7404ccba47d535da42dc4df": {
"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
}
},
"9ea0e304a63548bfa044e31f8b4c15d5": {
"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
}
},
"0d1e9d91e7dc4707b20266aaef49eb1c": {
"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": ""
}
},
"6eac05fb740f4483953ba2e1ad610019": {
"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
}
},
"28d758c4f4a8401c9a30fb87a71be070": {
"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": ""
}
},
"c36f89ddd4b847c2a0cceeae00aee173": {
"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
}
},
"68ad89e9846d479ba7d4e3828e0cfb77": {
"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": ""
}
},
"39e2d7303cdf4d02bf2d31352a6e1e46": {
"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_50e674ad4a94415cb45eacd4fc3fe267",
"IPY_MODEL_ac515908ad4e48e392ab95322b9fce70",
"IPY_MODEL_5a286626f8824392a545c771d84a9c1e"
],
"layout": "IPY_MODEL_05abdaeba97b4cdba119f09cdd7d6dd5"
}
},
"50e674ad4a94415cb45eacd4fc3fe267": {
"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_a2497b2b41e94dad9750dd9dafe56685",
"placeholder": "",
"style": "IPY_MODEL_abff67fe155a4646a27f821911e433ad",
"value": "Downloading readme: 100%"
}
},
"ac515908ad4e48e392ab95322b9fce70": {
"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_269fd836fbb0407a9e9eff325fdf8abe",
"max": 4872,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_f102c4257ca545b88da535d532c912c8",
"value": 4872
}
},
"5a286626f8824392a545c771d84a9c1e": {
"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_4a00e2b3f66f4bfc8f17cc4ceeaec36c",
"placeholder": "",
"style": "IPY_MODEL_ad54e2070fe04f699966193c4f009599",
"value": " 4.87k/4.87k [00:00<00:00, 216kB/s]"
}
},
"05abdaeba97b4cdba119f09cdd7d6dd5": {
"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
}
},
"a2497b2b41e94dad9750dd9dafe56685": {
"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
}
},
"abff67fe155a4646a27f821911e433ad": {
"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": ""
}
},
"269fd836fbb0407a9e9eff325fdf8abe": {
"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
}
},
"f102c4257ca545b88da535d532c912c8": {
"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": ""
}
},
"4a00e2b3f66f4bfc8f17cc4ceeaec36c": {
"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
}
},
"ad54e2070fe04f699966193c4f009599": {
"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": ""
}
},
"1b3b7113964f4323ba191fcf81234c9e": {
"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_97271051ebb84baf817732aa9a0c40ed",
"IPY_MODEL_522da98c97d347de8ff5e6e2dda3dda7",
"IPY_MODEL_fae8dbc9f7924039aebcda0a044323ec"
],
"layout": "IPY_MODEL_16d7fdc67b144af7a4a1d310d90aeb7a"
}
},
"97271051ebb84baf817732aa9a0c40ed": {
"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_1150dfcfc607448b8cb6e7d2d81717f4",
"placeholder": "",
"style": "IPY_MODEL_c88918df12b44f1a8cefebab628eb4bd",
"value": "Downloading data: 100%"
}
},
"522da98c97d347de8ff5e6e2dda3dda7": {
"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_9395f6da4e5c437d80b65c207e81f9bd",
"max": 203415,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_7d20ee84bb5e45f282e960a37f544901",
"value": 203415
}
},
"fae8dbc9f7924039aebcda0a044323ec": {
"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_fc689018e6f04ad0aeae11caca7ec1e6",
"placeholder": "",
"style": "IPY_MODEL_2e0c88489b06443d849ca955b77b2577",
"value": " 203k/203k [00:00<00:00, 423kB/s]"
}
},
"16d7fdc67b144af7a4a1d310d90aeb7a": {
"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
}
},
"1150dfcfc607448b8cb6e7d2d81717f4": {
"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
}
},
"c88918df12b44f1a8cefebab628eb4bd": {
"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": ""
}
},
"9395f6da4e5c437d80b65c207e81f9bd": {
"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
}
},
"7d20ee84bb5e45f282e960a37f544901": {
"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": ""
}
},
"fc689018e6f04ad0aeae11caca7ec1e6": {
"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
}
},
"2e0c88489b06443d849ca955b77b2577": {
"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": ""
}
},
"442c9a346ffe451eb7fb70e906b554a7": {
"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_25980d4dc17b412c9e76a9efdf251759",
"IPY_MODEL_704713f8cceb4792bb986520698d0be5",
"IPY_MODEL_6f4fc94edab84a65ba57b34a2d0b2422"
],
"layout": "IPY_MODEL_429b0cd8d6a643ac8a69c5b6adbd53a4"
}
},
"25980d4dc17b412c9e76a9efdf251759": {
"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_0d71e715ffeb445e9e233a6d6bc2de2b",
"placeholder": "",
"style": "IPY_MODEL_c713be1ba0904e7a8e95a6eb7108b630",
"value": "Generating train split: 100%"
}
},
"704713f8cceb4792bb986520698d0be5": {
"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": "",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_91b3bd32d53b4fe5ad21814fcb73a4a2",
"max": 5574,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_0cbf05e2f58f4bd289e3e845f64dce7e",
"value": 5574
}
},
"6f4fc94edab84a65ba57b34a2d0b2422": {
"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_edbf793856b24cb3a0d81c110e2c58fd",
"placeholder": "",
"style": "IPY_MODEL_d57ed46f96fa4d51bac74fcc326700cc",
"value": " 5574/5574 [00:19<00:00, 17709.20 examples/s]"
}
},
"429b0cd8d6a643ac8a69c5b6adbd53a4": {
"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
}
},
"0d71e715ffeb445e9e233a6d6bc2de2b": {
"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
}
},
"c713be1ba0904e7a8e95a6eb7108b630": {
"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": ""
}
},
"91b3bd32d53b4fe5ad21814fcb73a4a2": {
"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
}
},
"0cbf05e2f58f4bd289e3e845f64dce7e": {
"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": ""
}
},
"edbf793856b24cb3a0d81c110e2c58fd": {
"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
}
},
"d57ed46f96fa4d51bac74fcc326700cc": {
"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": ""
}
},
"bab7298185af41188969a03e81489efc": {
"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_b0fba461ad5f4826a082787223335564",
"IPY_MODEL_e6ec15b30b8040d38098ea1fd383b77d",
"IPY_MODEL_678b9387f0454322b78f873de4febbda"
],
"layout": "IPY_MODEL_146e93df04c6431fbc5f810541f61bc4"
}
},
"b0fba461ad5f4826a082787223335564": {
"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_0632ab2656404dd4b64330fc98a9a229",
"placeholder": "",
"style": "IPY_MODEL_61d2037630ad44d5ad6204724fe62108",
"value": "100%"
}
},
"e6ec15b30b8040d38098ea1fd383b77d": {
"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_c7465ee25ec341709908366f2c1e6cb9",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_0f57b73714264ca8b6b5a83e7d03a340",
"value": 1
}
},
"678b9387f0454322b78f873de4febbda": {
"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_0d83fcf09db44518889abe9e2d3a4756",
"placeholder": "",
"style": "IPY_MODEL_3da9d5cbd9ce48758e5a86242c5c74a3",
"value": " 1/1 [00:00<00:00, 31.16it/s]"
}
},
"146e93df04c6431fbc5f810541f61bc4": {
"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
}
},
"0632ab2656404dd4b64330fc98a9a229": {
"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
}
},
"61d2037630ad44d5ad6204724fe62108": {
"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": ""
}
},
"c7465ee25ec341709908366f2c1e6cb9": {
"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
}
},
"0f57b73714264ca8b6b5a83e7d03a340": {
"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": ""
}
},
"0d83fcf09db44518889abe9e2d3a4756": {
"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
}
},
"3da9d5cbd9ce48758e5a86242c5c74a3": {
"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": ""
}
},
"645d79ef5a2143af93b9dd7a66398ef4": {
"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_3a5a82fb677b49fa964e7841a2a384c5",
"IPY_MODEL_c4e7374b8fdf420bb7024c820aac501d",
"IPY_MODEL_9e9b5577000f43d0a8c14ef9e17f2770"
],
"layout": "IPY_MODEL_a73714a6ba874de28edc7a6b61db1289"
}
},
"3a5a82fb677b49fa964e7841a2a384c5": {
"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_5b745905ea6d4f08b51dbaaa05dba69c",
"placeholder": "",
"style": "IPY_MODEL_c83ab170d2704a1f8e32f70f6b40006b",
"value": "Downloading (…)solve/main/vocab.txt: 100%"
}
},
"c4e7374b8fdf420bb7024c820aac501d": {
"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_38ace4c2fd31432e801fd5f073c40a4f",
"max": 231508,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_9de94d9afbf6465a9f23898d1789da67",
"value": 231508
}
},
"9e9b5577000f43d0a8c14ef9e17f2770": {
"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_0c1e159cc977492fb1ff554818f8b90c",
"placeholder": "",
"style": "IPY_MODEL_b78fb9ef1ff9445d86a68eb37d7f6959",
"value": " 232k/232k [00:00<00:00, 1.94MB/s]"
}
},
"a73714a6ba874de28edc7a6b61db1289": {
"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
}
},
"5b745905ea6d4f08b51dbaaa05dba69c": {
"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
}
},
"c83ab170d2704a1f8e32f70f6b40006b": {
"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": ""
}
},
"38ace4c2fd31432e801fd5f073c40a4f": {
"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
}
},
"9de94d9afbf6465a9f23898d1789da67": {
"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": ""
}
},
"0c1e159cc977492fb1ff554818f8b90c": {
"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
}
},
"b78fb9ef1ff9445d86a68eb37d7f6959": {
"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": ""
}
},
"4e79563a33e345a28ebd242f88f1391d": {
"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_b0e31c0236d043099a916902a79baa3b",
"IPY_MODEL_0d50f317048c4b3b9d0e433fc2b8b81f",
"IPY_MODEL_a74a190e28764f86980748e1861d4ae9"
],
"layout": "IPY_MODEL_d3e4e3c42fec41afa141c27b1f0ed279"
}
},
"b0e31c0236d043099a916902a79baa3b": {
"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_bf117c3c64c04ee6b94e03e82408ed2e",
"placeholder": "",
"style": "IPY_MODEL_b3ec2fe604104083986a7720d5a2dd65",
"value": "Downloading (…)okenizer_config.json: 100%"
}
},
"0d50f317048c4b3b9d0e433fc2b8b81f": {
"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_2247bfff362241e7bf036cf2596aea99",
"max": 28,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_07383fac57cf498e9eed23259a2d5763",
"value": 28
}
},
"a74a190e28764f86980748e1861d4ae9": {
"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_30e3e89595d541be81a95b2d600e4fba",
"placeholder": "",
"style": "IPY_MODEL_65f61b687a2041bbbb0f6807d2f5b01c",
"value": " 28.0/28.0 [00:00<00:00, 759B/s]"
}
},
"d3e4e3c42fec41afa141c27b1f0ed279": {
"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
}
},
"bf117c3c64c04ee6b94e03e82408ed2e": {
"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
}
},
"b3ec2fe604104083986a7720d5a2dd65": {
"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": ""
}
},
"2247bfff362241e7bf036cf2596aea99": {
"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
}
},
"07383fac57cf498e9eed23259a2d5763": {
"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": ""
}
},
"30e3e89595d541be81a95b2d600e4fba": {
"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
}
},
"65f61b687a2041bbbb0f6807d2f5b01c": {
"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": ""
}
},
"71f3be8385a74b10a015974e168e6bd1": {
"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_f1b905ed8a0a412caab7515ea016267f",
"IPY_MODEL_a7fa5557847f453b89ded8dde3c372db",
"IPY_MODEL_a81e4849602f473386cb1782fa4de83d"
],
"layout": "IPY_MODEL_026b251acf294bb8902aff109a7f6f5d"
}
},
"f1b905ed8a0a412caab7515ea016267f": {
"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_6a4966cc6cc841fe86a704cd98bdb52d",
"placeholder": "",
"style": "IPY_MODEL_371e82101aa14e90839490638c90a68e",
"value": "Downloading (…)lve/main/config.json: 100%"
}
},
"a7fa5557847f453b89ded8dde3c372db": {
"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_8dd3f484a6e94b8aae8b7cb1675e7ec1",
"max": 570,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_72a3ecffa85948169f786ab1154b943f",
"value": 570
}
},
"a81e4849602f473386cb1782fa4de83d": {
"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_79621956769e4912bb6965df4e2c574a",
"placeholder": "",
"style": "IPY_MODEL_e9a97237031d4bbd9a3582936f25d72b",
"value": " 570/570 [00:00<00:00, 17.2kB/s]"
}
},
"026b251acf294bb8902aff109a7f6f5d": {
"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
}
},
"6a4966cc6cc841fe86a704cd98bdb52d": {
"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
}
},
"371e82101aa14e90839490638c90a68e": {
"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": ""
}
},
"8dd3f484a6e94b8aae8b7cb1675e7ec1": {
"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
}
},
"72a3ecffa85948169f786ab1154b943f": {
"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": ""
}
},
"79621956769e4912bb6965df4e2c574a": {
"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
}
},
"e9a97237031d4bbd9a3582936f25d72b": {
"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": ""
}
},
"371154699498422189229c97ccbfa508": {
"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_51de31720ffc40ba8067dd2c2033851b",
"IPY_MODEL_8c1eaf11c9db4c09aa6936a201615412",
"IPY_MODEL_57ac64a5a8534de889c977d558fb81b8"
],
"layout": "IPY_MODEL_7fb1c882a0524cbd8a71ab42cf54d02a"
}
},
"51de31720ffc40ba8067dd2c2033851b": {
"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_981ae04516214af6995cd9f846f5f45a",
"placeholder": "",
"style": "IPY_MODEL_815a8f36e137412aa54aa012adb7306d",
"value": "Downloading (…)"pytorch_model.bin";: 100%"
}
},
"8c1eaf11c9db4c09aa6936a201615412": {
"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_83723a5f3104486193880e58b7e9228c",
"max": 440473133,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_9947d9cd0a124c26b132c75e3bcafd2b",
"value": 440473133
}
},
"57ac64a5a8534de889c977d558fb81b8": {
"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_a323a1744edb4e84b7f2b80530abc097",
"placeholder": "",
"style": "IPY_MODEL_665af58d5b5349f1a85dd4493407020f",
"value": " 440M/440M [00:02<00:00, 145MB/s]"
}
},
"7fb1c882a0524cbd8a71ab42cf54d02a": {
"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
}
},
"981ae04516214af6995cd9f846f5f45a": {
"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
}
},
"815a8f36e137412aa54aa012adb7306d": {
"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": ""
}
},
"83723a5f3104486193880e58b7e9228c": {
"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
}
},
"9947d9cd0a124c26b132c75e3bcafd2b": {
"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": ""
}
},
"a323a1744edb4e84b7f2b80530abc097": {
"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
}
},
"665af58d5b5349f1a85dd4493407020f": {
"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": "markdown",
"source": [
"# Instalacja pakietów"
],
"metadata": {
"id": "t2xXKpOpcZg_"
}
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "fdpN7ugfauLD",
"outputId": "e96c1a3b-4a4a-4ebc-b71c-163dd775c5ca"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
"Collecting transformers\n",
" Downloading transformers-4.26.1-py3-none-any.whl (6.3 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.3/6.3 MB\u001b[0m \u001b[31m51.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting datasets\n",
" Downloading datasets-2.9.0-py3-none-any.whl (462 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m462.8/462.8 KB\u001b[0m \u001b[31m43.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: torch in /usr/local/lib/python3.8/dist-packages (1.13.1+cu116)\n",
"Collecting tokenizers!=0.11.3,<0.14,>=0.11.1\n",
" Downloading tokenizers-0.13.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.6/7.6 MB\u001b[0m \u001b[31m107.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: requests in /usr/local/lib/python3.8/dist-packages (from transformers) (2.25.1)\n",
"Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.8/dist-packages (from transformers) (23.0)\n",
"Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.8/dist-packages (from transformers) (1.21.6)\n",
"Requirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.8/dist-packages (from transformers) (4.64.1)\n",
"Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.8/dist-packages (from transformers) (6.0)\n",
"Requirement already satisfied: filelock in /usr/local/lib/python3.8/dist-packages (from transformers) (3.9.0)\n",
"Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.8/dist-packages (from transformers) (2022.6.2)\n",
"Collecting huggingface-hub<1.0,>=0.11.0\n",
" Downloading huggingface_hub-0.12.0-py3-none-any.whl (190 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m190.3/190.3 KB\u001b[0m \u001b[31m27.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: aiohttp in /usr/local/lib/python3.8/dist-packages (from datasets) (3.8.3)\n",
"Collecting multiprocess\n",
" Downloading multiprocess-0.70.14-py38-none-any.whl (132 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m132.0/132.0 KB\u001b[0m \u001b[31m20.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: pandas in /usr/local/lib/python3.8/dist-packages (from datasets) (1.3.5)\n",
"Requirement already satisfied: fsspec[http]>=2021.11.1 in /usr/local/lib/python3.8/dist-packages (from datasets) (2023.1.0)\n",
"Collecting xxhash\n",
" Downloading xxhash-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (213 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m213.0/213.0 KB\u001b[0m \u001b[31m24.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: pyarrow>=6.0.0 in /usr/local/lib/python3.8/dist-packages (from datasets) (9.0.0)\n",
"Requirement already satisfied: dill<0.3.7 in /usr/local/lib/python3.8/dist-packages (from datasets) (0.3.6)\n",
"Collecting responses<0.19\n",
" Downloading responses-0.18.0-py3-none-any.whl (38 kB)\n",
"Requirement already satisfied: typing-extensions in /usr/local/lib/python3.8/dist-packages (from torch) (4.4.0)\n",
"Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (6.0.4)\n",
"Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (22.2.0)\n",
"Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (4.0.2)\n",
"Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (1.3.1)\n",
"Requirement already satisfied: charset-normalizer<3.0,>=2.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (2.1.1)\n",
"Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (1.8.2)\n",
"Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (1.3.3)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (2022.12.7)\n",
"Requirement already satisfied: chardet<5,>=3.0.2 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (4.0.0)\n",
"Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (1.24.3)\n",
"Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (2.10)\n",
"Collecting urllib3<1.27,>=1.21.1\n",
" Downloading urllib3-1.26.14-py2.py3-none-any.whl (140 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m140.6/140.6 KB\u001b[0m \u001b[31m18.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas->datasets) (2022.7.1)\n",
"Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas->datasets) (2.8.2)\n",
"Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.8/dist-packages (from python-dateutil>=2.7.3->pandas->datasets) (1.15.0)\n",
"Installing collected packages: tokenizers, xxhash, urllib3, multiprocess, responses, huggingface-hub, transformers, datasets\n",
" Attempting uninstall: urllib3\n",
" Found existing installation: urllib3 1.24.3\n",
" Uninstalling urllib3-1.24.3:\n",
" Successfully uninstalled urllib3-1.24.3\n",
"Successfully installed datasets-2.9.0 huggingface-hub-0.12.0 multiprocess-0.70.14 responses-0.18.0 tokenizers-0.13.2 transformers-4.26.1 urllib3-1.26.14 xxhash-3.2.0\n"
]
}
],
"source": [
"!pip install transformers datasets torch"
]
},
{
"cell_type": "markdown",
"source": [
"# Załadowanie pakietów"
],
"metadata": {
"id": "s8cfdy_6ldCn"
}
},
{
"cell_type": "code",
"source": [
"from datasets import load_dataset\n",
"from transformers import BertTokenizer\n",
"import torch\n",
"from torch.utils.data import TensorDataset, random_split\n",
"from torch.utils.data import DataLoader, RandomSampler, SequentialSampler\n",
"from transformers import BertForSequenceClassification, BertConfig\n",
"from transformers import get_linear_schedule_with_warmup\n",
"import numpy as np\n",
"import time\n",
"import datetime\n",
"import random"
],
"metadata": {
"id": "yLS_x9DIlgSs"
},
"execution_count": 2,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Załadowanie datasetu\n",
"sms_spam"
],
"metadata": {
"id": "fPwDyJd5cdaE"
}
},
{
"cell_type": "code",
"source": [
"dataset = load_dataset(\"sms_spam\")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 244,
"referenced_widgets": [
"26f1d5f367aa49c9a572adcded83219a",
"b5eaae22aefd429d9946c7c644c0cd02",
"3d95f755191647889171d659ddd6c755",
"322e6c92a93845d683028f1ac77fd991",
"a1edcaafe9a349a487875ad77ccd00c9",
"f1d9de6c2e864d5481f04af80d92058e",
"e2124cb283c045f5822a395ce8b5fe6d",
"e4e57cf95df04f56a4ef4ae990344116",
"cccb07d8327342fa8f30de34f056543e",
"a1fa218698f64411a80bcf999ca1e786",
"3cf8102ac99f4c419dda058164653aaa",
"fc229165f10d40d59c6d751a13848f6d",
"bdafd6edd15c45f0849ec4973f4f0930",
"9e821b7e6efa4cbcb200944969338ac0",
"043b8b140ad54391ba0aff7062628eea",
"6730bd27c7404ccba47d535da42dc4df",
"9ea0e304a63548bfa044e31f8b4c15d5",
"0d1e9d91e7dc4707b20266aaef49eb1c",
"6eac05fb740f4483953ba2e1ad610019",
"28d758c4f4a8401c9a30fb87a71be070",
"c36f89ddd4b847c2a0cceeae00aee173",
"68ad89e9846d479ba7d4e3828e0cfb77",
"39e2d7303cdf4d02bf2d31352a6e1e46",
"50e674ad4a94415cb45eacd4fc3fe267",
"ac515908ad4e48e392ab95322b9fce70",
"5a286626f8824392a545c771d84a9c1e",
"05abdaeba97b4cdba119f09cdd7d6dd5",
"a2497b2b41e94dad9750dd9dafe56685",
"abff67fe155a4646a27f821911e433ad",
"269fd836fbb0407a9e9eff325fdf8abe",
"f102c4257ca545b88da535d532c912c8",
"4a00e2b3f66f4bfc8f17cc4ceeaec36c",
"ad54e2070fe04f699966193c4f009599",
"1b3b7113964f4323ba191fcf81234c9e",
"97271051ebb84baf817732aa9a0c40ed",
"522da98c97d347de8ff5e6e2dda3dda7",
"fae8dbc9f7924039aebcda0a044323ec",
"16d7fdc67b144af7a4a1d310d90aeb7a",
"1150dfcfc607448b8cb6e7d2d81717f4",
"c88918df12b44f1a8cefebab628eb4bd",
"9395f6da4e5c437d80b65c207e81f9bd",
"7d20ee84bb5e45f282e960a37f544901",
"fc689018e6f04ad0aeae11caca7ec1e6",
"2e0c88489b06443d849ca955b77b2577",
"442c9a346ffe451eb7fb70e906b554a7",
"25980d4dc17b412c9e76a9efdf251759",
"704713f8cceb4792bb986520698d0be5",
"6f4fc94edab84a65ba57b34a2d0b2422",
"429b0cd8d6a643ac8a69c5b6adbd53a4",
"0d71e715ffeb445e9e233a6d6bc2de2b",
"c713be1ba0904e7a8e95a6eb7108b630",
"91b3bd32d53b4fe5ad21814fcb73a4a2",
"0cbf05e2f58f4bd289e3e845f64dce7e",
"edbf793856b24cb3a0d81c110e2c58fd",
"d57ed46f96fa4d51bac74fcc326700cc",
"bab7298185af41188969a03e81489efc",
"b0fba461ad5f4826a082787223335564",
"e6ec15b30b8040d38098ea1fd383b77d",
"678b9387f0454322b78f873de4febbda",
"146e93df04c6431fbc5f810541f61bc4",
"0632ab2656404dd4b64330fc98a9a229",
"61d2037630ad44d5ad6204724fe62108",
"c7465ee25ec341709908366f2c1e6cb9",
"0f57b73714264ca8b6b5a83e7d03a340",
"0d83fcf09db44518889abe9e2d3a4756",
"3da9d5cbd9ce48758e5a86242c5c74a3"
]
},
"id": "N1EWeM0KcYtO",
"outputId": "a323ce09-0f64-4317-b1ef-a154e54994d6"
},
"execution_count": 3,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading builder script: 0%| | 0.00/3.21k [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "26f1d5f367aa49c9a572adcded83219a"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading metadata: 0%| | 0.00/1.69k [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "fc229165f10d40d59c6d751a13848f6d"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading readme: 0%| | 0.00/4.87k [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "39e2d7303cdf4d02bf2d31352a6e1e46"
}
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"Downloading and preparing dataset sms_spam/plain_text to /root/.cache/huggingface/datasets/sms_spam/plain_text/1.0.0/53f051d3b5f62d99d61792c91acefe4f1577ad3e4c216fb0ad39e30b9f20019c...\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading data: 0%| | 0.00/203k [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "1b3b7113964f4323ba191fcf81234c9e"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Generating train split: 0%| | 0/5574 [00:00<?, ? examples/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "442c9a346ffe451eb7fb70e906b554a7"
}
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"Dataset sms_spam downloaded and prepared to /root/.cache/huggingface/datasets/sms_spam/plain_text/1.0.0/53f051d3b5f62d99d61792c91acefe4f1577ad3e4c216fb0ad39e30b9f20019c. Subsequent calls will reuse this data.\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
" 0%| | 0/1 [00:00<?, ?it/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "bab7298185af41188969a03e81489efc"
}
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"dataset['train'][0]"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Mf1QIM_dlp2x",
"outputId": "48b3eb91-1044-4fc2-ccc6-0187b8b8ca1f"
},
"execution_count": 4,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"{'sms': 'Go until jurong point, crazy.. Available only in bugis n great world la e buffet... Cine there got amore wat...\\n',\n",
" 'label': 0}"
]
},
"metadata": {},
"execution_count": 4
}
]
},
{
"cell_type": "markdown",
"source": [
"# Tokenizer BERT"
],
"metadata": {
"id": "Qc7CIjSOchir"
}
},
{
"cell_type": "code",
"source": [
"tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 113,
"referenced_widgets": [
"645d79ef5a2143af93b9dd7a66398ef4",
"3a5a82fb677b49fa964e7841a2a384c5",
"c4e7374b8fdf420bb7024c820aac501d",
"9e9b5577000f43d0a8c14ef9e17f2770",
"a73714a6ba874de28edc7a6b61db1289",
"5b745905ea6d4f08b51dbaaa05dba69c",
"c83ab170d2704a1f8e32f70f6b40006b",
"38ace4c2fd31432e801fd5f073c40a4f",
"9de94d9afbf6465a9f23898d1789da67",
"0c1e159cc977492fb1ff554818f8b90c",
"b78fb9ef1ff9445d86a68eb37d7f6959",
"4e79563a33e345a28ebd242f88f1391d",
"b0e31c0236d043099a916902a79baa3b",
"0d50f317048c4b3b9d0e433fc2b8b81f",
"a74a190e28764f86980748e1861d4ae9",
"d3e4e3c42fec41afa141c27b1f0ed279",
"bf117c3c64c04ee6b94e03e82408ed2e",
"b3ec2fe604104083986a7720d5a2dd65",
"2247bfff362241e7bf036cf2596aea99",
"07383fac57cf498e9eed23259a2d5763",
"30e3e89595d541be81a95b2d600e4fba",
"65f61b687a2041bbbb0f6807d2f5b01c",
"71f3be8385a74b10a015974e168e6bd1",
"f1b905ed8a0a412caab7515ea016267f",
"a7fa5557847f453b89ded8dde3c372db",
"a81e4849602f473386cb1782fa4de83d",
"026b251acf294bb8902aff109a7f6f5d",
"6a4966cc6cc841fe86a704cd98bdb52d",
"371e82101aa14e90839490638c90a68e",
"8dd3f484a6e94b8aae8b7cb1675e7ec1",
"72a3ecffa85948169f786ab1154b943f",
"79621956769e4912bb6965df4e2c574a",
"e9a97237031d4bbd9a3582936f25d72b"
]
},
"id": "hmnlC_hubLmP",
"outputId": "006f93b1-78bc-46a2-9b23-73cb741aa903"
},
"execution_count": 5,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading (…)solve/main/vocab.txt: 0%| | 0.00/232k [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "645d79ef5a2143af93b9dd7a66398ef4"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading (…)okenizer_config.json: 0%| | 0.00/28.0 [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "4e79563a33e345a28ebd242f88f1391d"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading (…)lve/main/config.json: 0%| | 0.00/570 [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "71f3be8385a74b10a015974e168e6bd1"
}
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"sms = dataset['train'][0]['sms']\n",
"print('Original: ', sms)\n",
"print('Tokenized: ', tokenizer.tokenize(sms))\n",
"print('Token IDs: ', tokenizer.convert_tokens_to_ids(tokenizer.tokenize(sms)))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ZxigrpcQdWCF",
"outputId": "6cea310c-9209-4c1b-be4d-e85e8397d2ee"
},
"execution_count": 6,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Original: Go until jurong point, crazy.. Available only in bugis n great world la e buffet... Cine there got amore wat...\n",
"\n",
"Tokenized: ['go', 'until', 'ju', '##rong', 'point', ',', 'crazy', '.', '.', 'available', 'only', 'in', 'bug', '##is', 'n', 'great', 'world', 'la', 'e', 'buffet', '.', '.', '.', 'ci', '##ne', 'there', 'got', 'amore', 'wat', '.', '.', '.']\n",
"Token IDs: [2175, 2127, 18414, 17583, 2391, 1010, 4689, 1012, 1012, 2800, 2069, 1999, 11829, 2483, 1050, 2307, 2088, 2474, 1041, 28305, 1012, 1012, 1012, 25022, 2638, 2045, 2288, 26297, 28194, 1012, 1012, 1012]\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# Check maximum length of a sentence"
],
"metadata": {
"id": "wVT0m8T7evoz"
}
},
{
"cell_type": "code",
"source": [
"max_len = 0\n",
"\n",
"for sentence in dataset['train']:\n",
" input_ids = tokenizer.encode(sentence['sms'], add_special_tokens=True)\n",
" max_len = max(max_len, len(input_ids))\n",
"\n",
"print('Max sentence length: ', max_len)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "cmUVPrQYez3J",
"outputId": "ea16509d-6299-4cd8-e028-e32606553a19"
},
"execution_count": 7,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Max sentence length: 238\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# Special tokenization"
],
"metadata": {
"id": "2NfXDfYifX5S"
}
},
{
"cell_type": "code",
"source": [
"input_ids = []\n",
"attention_masks = []\n",
"\n",
"for sentence in dataset['train']:\n",
" encoded_dict = tokenizer.encode_plus(\n",
" sentence['sms'],\n",
" add_special_tokens = True,\n",
" max_length = 240,\n",
" padding = 'max_length',\n",
" truncation=True,\n",
" return_attention_mask = True,\n",
" return_tensors = 'pt',\n",
" )\n",
" \n",
" input_ids.append(encoded_dict['input_ids'])\n",
" attention_masks.append(encoded_dict['attention_mask'])\n",
"\n",
"input_ids = torch.cat(input_ids, dim=0)\n",
"attention_masks = torch.cat(attention_masks, dim=0)\n",
"labels = torch.tensor([sentence['label'] for sentence in dataset['train']])\n",
"\n",
"print('Original: ', dataset['train'][0])\n",
"print('Token IDs:', input_ids[0])"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "4u03dIS1fbKU",
"outputId": "27376a8d-a0ff-4afe-a3fc-01ff3475599e"
},
"execution_count": 8,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Original: {'sms': 'Go until jurong point, crazy.. Available only in bugis n great world la e buffet... Cine there got amore wat...\\n', 'label': 0}\n",
"Token IDs: tensor([ 101, 2175, 2127, 18414, 17583, 2391, 1010, 4689, 1012, 1012,\n",
" 2800, 2069, 1999, 11829, 2483, 1050, 2307, 2088, 2474, 1041,\n",
" 28305, 1012, 1012, 1012, 25022, 2638, 2045, 2288, 26297, 28194,\n",
" 1012, 1012, 1012, 102, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# Split dataset"
],
"metadata": {
"id": "Z6cC0YjAhmw_"
}
},
{
"cell_type": "code",
"source": [
"dataset = TensorDataset(input_ids, attention_masks, labels)\n",
"\n",
"test_size = 1000\n",
"dataset_len = len(dataset)\n",
"train_size = int(0.9 * (dataset_len-test_size))\n",
"val_size = (dataset_len-test_size) - train_size\n",
"\n",
"test_dataset, train_dataset, val_dataset = random_split(dataset, [test_size, train_size, val_size])\n",
"\n",
"print('{:>5,} test samples'.format(test_size))\n",
"print('{:>5,} training samples'.format(train_size))\n",
"print('{:>5,} validation samples'.format(val_size))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "vH3yXhA0hT3n",
"outputId": "1023a01b-60b0-4de0-ba97-28518b935a21"
},
"execution_count": 9,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"1,000 test samples\n",
"4,116 training samples\n",
" 458 validation samples\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# Create train and validation loaders"
],
"metadata": {
"id": "z1hVsejihpO2"
}
},
{
"cell_type": "code",
"source": [
"batch_size = 32\n",
"\n",
"train_dataloader = DataLoader(\n",
" train_dataset,\n",
" sampler = RandomSampler(train_dataset),\n",
" batch_size = batch_size\n",
" )\n",
"\n",
"validation_dataloader = DataLoader(\n",
" val_dataset,\n",
" sampler = SequentialSampler(val_dataset),\n",
" batch_size = batch_size\n",
" )"
],
"metadata": {
"id": "k4pXght6hre3"
},
"execution_count": 10,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Device check"
],
"metadata": {
"id": "MnErwHAbl_rF"
}
},
{
"cell_type": "code",
"source": [
"if torch.cuda.is_available(): \n",
" device = torch.device(\"cuda\")\n",
"\n",
" print('There are %d GPU(s) available.' % torch.cuda.device_count())\n",
" print('We will use the GPU:', torch.cuda.get_device_name(0))\n",
"\n",
"else:\n",
" print('No GPU available, using the CPU instead.')\n",
" device = torch.device(\"cpu\")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "aUvyBFxzmBUy",
"outputId": "830f843f-f1ab-47ee-def7-0dfa3943b264"
},
"execution_count": 11,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"There are 1 GPU(s) available.\n",
"We will use the GPU: Tesla T4\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# Load BERT model"
],
"metadata": {
"id": "o-YrojT-iIfY"
}
},
{
"cell_type": "code",
"source": [
"model = BertForSequenceClassification.from_pretrained(\n",
" \"bert-base-uncased\",\n",
" num_labels = 2,\n",
" output_attentions = False,\n",
" output_hidden_states = False,\n",
")\n",
"\n",
"model.cuda()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000,
"referenced_widgets": [
"371154699498422189229c97ccbfa508",
"51de31720ffc40ba8067dd2c2033851b",
"8c1eaf11c9db4c09aa6936a201615412",
"57ac64a5a8534de889c977d558fb81b8",
"7fb1c882a0524cbd8a71ab42cf54d02a",
"981ae04516214af6995cd9f846f5f45a",
"815a8f36e137412aa54aa012adb7306d",
"83723a5f3104486193880e58b7e9228c",
"9947d9cd0a124c26b132c75e3bcafd2b",
"a323a1744edb4e84b7f2b80530abc097",
"665af58d5b5349f1a85dd4493407020f"
]
},
"id": "sIP3VGZmiK9s",
"outputId": "2f4e0a13-f379-4033-cca7-92dfc0155cd5"
},
"execution_count": 12,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading (…)\"pytorch_model.bin\";: 0%| | 0.00/440M [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "371154699498422189229c97ccbfa508"
}
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stderr",
"text": [
"Some weights of the model checkpoint at bert-base-uncased were not used when initializing BertForSequenceClassification: ['cls.predictions.bias', 'cls.predictions.transform.LayerNorm.weight', 'cls.predictions.transform.LayerNorm.bias', 'cls.predictions.transform.dense.weight', 'cls.seq_relationship.bias', 'cls.seq_relationship.weight', 'cls.predictions.decoder.weight', 'cls.predictions.transform.dense.bias']\n",
"- This IS expected if you are initializing BertForSequenceClassification from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n",
"- This IS NOT expected if you are initializing BertForSequenceClassification from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n",
"Some weights of BertForSequenceClassification were not initialized from the model checkpoint at bert-base-uncased and are newly initialized: ['classifier.weight', 'classifier.bias']\n",
"You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"BertForSequenceClassification(\n",
" (bert): BertModel(\n",
" (embeddings): BertEmbeddings(\n",
" (word_embeddings): Embedding(30522, 768, padding_idx=0)\n",
" (position_embeddings): Embedding(512, 768)\n",
" (token_type_embeddings): Embedding(2, 768)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (encoder): BertEncoder(\n",
" (layer): ModuleList(\n",
" (0): BertLayer(\n",
" (attention): BertAttention(\n",
" (self): BertSelfAttention(\n",
" (query): Linear(in_features=768, out_features=768, bias=True)\n",
" (key): Linear(in_features=768, out_features=768, bias=True)\n",
" (value): Linear(in_features=768, out_features=768, bias=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (output): BertSelfOutput(\n",
" (dense): Linear(in_features=768, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (intermediate): BertIntermediate(\n",
" (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
" (intermediate_act_fn): GELUActivation()\n",
" )\n",
" (output): BertOutput(\n",
" (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (1): BertLayer(\n",
" (attention): BertAttention(\n",
" (self): BertSelfAttention(\n",
" (query): Linear(in_features=768, out_features=768, bias=True)\n",
" (key): Linear(in_features=768, out_features=768, bias=True)\n",
" (value): Linear(in_features=768, out_features=768, bias=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (output): BertSelfOutput(\n",
" (dense): Linear(in_features=768, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (intermediate): BertIntermediate(\n",
" (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
" (intermediate_act_fn): GELUActivation()\n",
" )\n",
" (output): BertOutput(\n",
" (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (2): BertLayer(\n",
" (attention): BertAttention(\n",
" (self): BertSelfAttention(\n",
" (query): Linear(in_features=768, out_features=768, bias=True)\n",
" (key): Linear(in_features=768, out_features=768, bias=True)\n",
" (value): Linear(in_features=768, out_features=768, bias=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (output): BertSelfOutput(\n",
" (dense): Linear(in_features=768, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (intermediate): BertIntermediate(\n",
" (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
" (intermediate_act_fn): GELUActivation()\n",
" )\n",
" (output): BertOutput(\n",
" (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (3): BertLayer(\n",
" (attention): BertAttention(\n",
" (self): BertSelfAttention(\n",
" (query): Linear(in_features=768, out_features=768, bias=True)\n",
" (key): Linear(in_features=768, out_features=768, bias=True)\n",
" (value): Linear(in_features=768, out_features=768, bias=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (output): BertSelfOutput(\n",
" (dense): Linear(in_features=768, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (intermediate): BertIntermediate(\n",
" (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
" (intermediate_act_fn): GELUActivation()\n",
" )\n",
" (output): BertOutput(\n",
" (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (4): BertLayer(\n",
" (attention): BertAttention(\n",
" (self): BertSelfAttention(\n",
" (query): Linear(in_features=768, out_features=768, bias=True)\n",
" (key): Linear(in_features=768, out_features=768, bias=True)\n",
" (value): Linear(in_features=768, out_features=768, bias=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (output): BertSelfOutput(\n",
" (dense): Linear(in_features=768, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (intermediate): BertIntermediate(\n",
" (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
" (intermediate_act_fn): GELUActivation()\n",
" )\n",
" (output): BertOutput(\n",
" (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (5): BertLayer(\n",
" (attention): BertAttention(\n",
" (self): BertSelfAttention(\n",
" (query): Linear(in_features=768, out_features=768, bias=True)\n",
" (key): Linear(in_features=768, out_features=768, bias=True)\n",
" (value): Linear(in_features=768, out_features=768, bias=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (output): BertSelfOutput(\n",
" (dense): Linear(in_features=768, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (intermediate): BertIntermediate(\n",
" (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
" (intermediate_act_fn): GELUActivation()\n",
" )\n",
" (output): BertOutput(\n",
" (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (6): BertLayer(\n",
" (attention): BertAttention(\n",
" (self): BertSelfAttention(\n",
" (query): Linear(in_features=768, out_features=768, bias=True)\n",
" (key): Linear(in_features=768, out_features=768, bias=True)\n",
" (value): Linear(in_features=768, out_features=768, bias=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (output): BertSelfOutput(\n",
" (dense): Linear(in_features=768, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (intermediate): BertIntermediate(\n",
" (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
" (intermediate_act_fn): GELUActivation()\n",
" )\n",
" (output): BertOutput(\n",
" (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (7): BertLayer(\n",
" (attention): BertAttention(\n",
" (self): BertSelfAttention(\n",
" (query): Linear(in_features=768, out_features=768, bias=True)\n",
" (key): Linear(in_features=768, out_features=768, bias=True)\n",
" (value): Linear(in_features=768, out_features=768, bias=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (output): BertSelfOutput(\n",
" (dense): Linear(in_features=768, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (intermediate): BertIntermediate(\n",
" (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
" (intermediate_act_fn): GELUActivation()\n",
" )\n",
" (output): BertOutput(\n",
" (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (8): BertLayer(\n",
" (attention): BertAttention(\n",
" (self): BertSelfAttention(\n",
" (query): Linear(in_features=768, out_features=768, bias=True)\n",
" (key): Linear(in_features=768, out_features=768, bias=True)\n",
" (value): Linear(in_features=768, out_features=768, bias=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (output): BertSelfOutput(\n",
" (dense): Linear(in_features=768, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (intermediate): BertIntermediate(\n",
" (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
" (intermediate_act_fn): GELUActivation()\n",
" )\n",
" (output): BertOutput(\n",
" (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (9): BertLayer(\n",
" (attention): BertAttention(\n",
" (self): BertSelfAttention(\n",
" (query): Linear(in_features=768, out_features=768, bias=True)\n",
" (key): Linear(in_features=768, out_features=768, bias=True)\n",
" (value): Linear(in_features=768, out_features=768, bias=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (output): BertSelfOutput(\n",
" (dense): Linear(in_features=768, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (intermediate): BertIntermediate(\n",
" (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
" (intermediate_act_fn): GELUActivation()\n",
" )\n",
" (output): BertOutput(\n",
" (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (10): BertLayer(\n",
" (attention): BertAttention(\n",
" (self): BertSelfAttention(\n",
" (query): Linear(in_features=768, out_features=768, bias=True)\n",
" (key): Linear(in_features=768, out_features=768, bias=True)\n",
" (value): Linear(in_features=768, out_features=768, bias=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (output): BertSelfOutput(\n",
" (dense): Linear(in_features=768, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (intermediate): BertIntermediate(\n",
" (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
" (intermediate_act_fn): GELUActivation()\n",
" )\n",
" (output): BertOutput(\n",
" (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (11): BertLayer(\n",
" (attention): BertAttention(\n",
" (self): BertSelfAttention(\n",
" (query): Linear(in_features=768, out_features=768, bias=True)\n",
" (key): Linear(in_features=768, out_features=768, bias=True)\n",
" (value): Linear(in_features=768, out_features=768, bias=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (output): BertSelfOutput(\n",
" (dense): Linear(in_features=768, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" (intermediate): BertIntermediate(\n",
" (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
" (intermediate_act_fn): GELUActivation()\n",
" )\n",
" (output): BertOutput(\n",
" (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
" (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" )\n",
" (pooler): BertPooler(\n",
" (dense): Linear(in_features=768, out_features=768, bias=True)\n",
" (activation): Tanh()\n",
" )\n",
" )\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (classifier): Linear(in_features=768, out_features=2, bias=True)\n",
")"
]
},
"metadata": {},
"execution_count": 12
}
]
},
{
"cell_type": "markdown",
"source": [
"# Model architecture"
],
"metadata": {
"id": "l5WEUOO_igvM"
}
},
{
"cell_type": "code",
"source": [
"params = list(model.named_parameters())\n",
"\n",
"print('The BERT model has {:} different named parameters.\\n'.format(len(params)))\n",
"\n",
"print('==== Embedding Layer ====\\n')\n",
"\n",
"for p in params[0:5]:\n",
" print(\"{:<55} {:>12}\".format(p[0], str(tuple(p[1].size()))))\n",
"\n",
"print('\\n==== First Transformer ====\\n')\n",
"\n",
"for p in params[5:21]:\n",
" print(\"{:<55} {:>12}\".format(p[0], str(tuple(p[1].size()))))\n",
"\n",
"print('\\n==== Output Layer ====\\n')\n",
"\n",
"for p in params[-4:]:\n",
" print(\"{:<55} {:>12}\".format(p[0], str(tuple(p[1].size()))))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "QRAQLbNuigcW",
"outputId": "b01b3fc8-1c72-4529-bd88-cc019c097361"
},
"execution_count": 13,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"The BERT model has 201 different named parameters.\n",
"\n",
"==== Embedding Layer ====\n",
"\n",
"bert.embeddings.word_embeddings.weight (30522, 768)\n",
"bert.embeddings.position_embeddings.weight (512, 768)\n",
"bert.embeddings.token_type_embeddings.weight (2, 768)\n",
"bert.embeddings.LayerNorm.weight (768,)\n",
"bert.embeddings.LayerNorm.bias (768,)\n",
"\n",
"==== First Transformer ====\n",
"\n",
"bert.encoder.layer.0.attention.self.query.weight (768, 768)\n",
"bert.encoder.layer.0.attention.self.query.bias (768,)\n",
"bert.encoder.layer.0.attention.self.key.weight (768, 768)\n",
"bert.encoder.layer.0.attention.self.key.bias (768,)\n",
"bert.encoder.layer.0.attention.self.value.weight (768, 768)\n",
"bert.encoder.layer.0.attention.self.value.bias (768,)\n",
"bert.encoder.layer.0.attention.output.dense.weight (768, 768)\n",
"bert.encoder.layer.0.attention.output.dense.bias (768,)\n",
"bert.encoder.layer.0.attention.output.LayerNorm.weight (768,)\n",
"bert.encoder.layer.0.attention.output.LayerNorm.bias (768,)\n",
"bert.encoder.layer.0.intermediate.dense.weight (3072, 768)\n",
"bert.encoder.layer.0.intermediate.dense.bias (3072,)\n",
"bert.encoder.layer.0.output.dense.weight (768, 3072)\n",
"bert.encoder.layer.0.output.dense.bias (768,)\n",
"bert.encoder.layer.0.output.LayerNorm.weight (768,)\n",
"bert.encoder.layer.0.output.LayerNorm.bias (768,)\n",
"\n",
"==== Output Layer ====\n",
"\n",
"bert.pooler.dense.weight (768, 768)\n",
"bert.pooler.dense.bias (768,)\n",
"classifier.weight (2, 768)\n",
"classifier.bias (2,)\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# Init training parameters"
],
"metadata": {
"id": "NZDC4iiQizdX"
}
},
{
"cell_type": "code",
"source": [
"optimizer = torch.optim.AdamW(model.parameters(),\n",
" lr = 2e-5,\n",
" eps = 1e-8\n",
" )\n",
"\n",
"epochs = 4\n",
"\n",
"total_steps = len(train_dataloader) * epochs\n",
"\n",
"scheduler = get_linear_schedule_with_warmup(optimizer, \n",
" num_warmup_steps = 0,\n",
" num_training_steps = total_steps)"
],
"metadata": {
"id": "_uffUPNEi3S5"
},
"execution_count": 14,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Helper functions"
],
"metadata": {
"id": "bnAwgfZekeYD"
}
},
{
"cell_type": "code",
"source": [
"def flat_accuracy(preds, labels):\n",
" pred_flat = np.argmax(preds, axis=1).flatten()\n",
" labels_flat = labels.flatten()\n",
" return np.sum(pred_flat == labels_flat) / len(labels_flat)\n",
"\n",
"def format_time(elapsed):\n",
" '''\n",
" Takes a time in seconds and returns a string hh:mm:ss\n",
" '''\n",
" elapsed_rounded = int(round((elapsed)))\n",
" \n",
" return str(datetime.timedelta(seconds=elapsed_rounded))"
],
"metadata": {
"id": "Z3XSZuFmkgVr"
},
"execution_count": 15,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Training"
],
"metadata": {
"id": "L-ZeLPfbkqy9"
}
},
{
"cell_type": "code",
"source": [
"# This training code is based on the `run_glue.py` script here:\n",
"# https://github.com/huggingface/transformers/blob/5bfcd0485ece086ebcbed2d008813037968a9e58/examples/run_glue.py#L128\n",
"\n",
"seed_val = 42\n",
"\n",
"random.seed(seed_val)\n",
"np.random.seed(seed_val)\n",
"torch.manual_seed(seed_val)\n",
"torch.cuda.manual_seed_all(seed_val)\n",
"\n",
"training_stats = []\n",
"total_t0 = time.time()\n",
"\n",
"for epoch_i in range(0, epochs):\n",
" \n",
" # ========================================\n",
" # Training\n",
" # ========================================\n",
"\n",
" print(\"\")\n",
" print('======== Epoch {:} / {:} ========'.format(epoch_i + 1, epochs))\n",
" print('Training...')\n",
"\n",
" t0 = time.time()\n",
" total_train_loss = 0\n",
"\n",
" model.train()\n",
"\n",
" for step, batch in enumerate(train_dataloader):\n",
" if step % 40 == 0 and not step == 0:\n",
" elapsed = format_time(time.time() - t0)\n",
" print(' Batch {:>5,} of {:>5,}. Elapsed: {:}.'.format(step, len(train_dataloader), elapsed))\n",
"\n",
" b_input_ids = batch[0].to(device)\n",
" b_input_mask = batch[1].to(device)\n",
" b_labels = batch[2].to(device)\n",
"\n",
" model.zero_grad() \n",
"\n",
" outputs = model(b_input_ids, \n",
" token_type_ids=None, \n",
" attention_mask=b_input_mask, \n",
" labels=b_labels)\n",
"\n",
" loss = outputs['loss']\n",
" total_train_loss += loss.item()\n",
"\n",
" loss.backward()\n",
" torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)\n",
"\n",
" optimizer.step()\n",
" scheduler.step()\n",
"\n",
" avg_train_loss = total_train_loss / len(train_dataloader) \n",
" training_time = format_time(time.time() - t0)\n",
"\n",
" print(\"\")\n",
" print(\" Average training loss: {0:.2f}\".format(avg_train_loss))\n",
" print(\" Training epcoh took: {:}\".format(training_time))\n",
" \n",
" # ========================================\n",
" # Validation\n",
" # ========================================\n",
"\n",
" print(\"\")\n",
" print(\"Running Validation...\")\n",
"\n",
" t0 = time.time()\n",
" model.eval()\n",
"\n",
" total_eval_accuracy = 0\n",
" total_eval_loss = 0\n",
" nb_eval_steps = 0\n",
"\n",
" for batch in validation_dataloader:\n",
" b_input_ids = batch[0].to(device)\n",
" b_input_mask = batch[1].to(device)\n",
" b_labels = batch[2].to(device)\n",
" \n",
" with torch.no_grad(): \n",
" outputs = model(b_input_ids, \n",
" token_type_ids=None, \n",
" attention_mask=b_input_mask,\n",
" labels=b_labels)\n",
" loss = outputs['loss']\n",
" logits = outputs['logits']\n",
" \n",
" total_eval_loss += loss.item()\n",
"\n",
" logits = logits.detach().cpu().numpy()\n",
" label_ids = b_labels.to('cpu').numpy()\n",
"\n",
" total_eval_accuracy += flat_accuracy(logits, label_ids)\n",
" \n",
"\n",
" avg_val_accuracy = total_eval_accuracy / len(validation_dataloader)\n",
" print(\" Accuracy: {0:.2f}\".format(avg_val_accuracy))\n",
"\n",
" avg_val_loss = total_eval_loss / len(validation_dataloader)\n",
" validation_time = format_time(time.time() - t0)\n",
" \n",
" print(\" Validation Loss: {0:.2f}\".format(avg_val_loss))\n",
" print(\" Validation took: {:}\".format(validation_time))\n",
"\n",
" training_stats.append(\n",
" {\n",
" 'epoch': epoch_i + 1,\n",
" 'Training Loss': avg_train_loss,\n",
" 'Valid. Loss': avg_val_loss,\n",
" 'Valid. Accur.': avg_val_accuracy,\n",
" 'Training Time': training_time,\n",
" 'Validation Time': validation_time\n",
" }\n",
" )\n",
"\n",
"print(\"\")\n",
"print(\"Training complete!\")\n",
"\n",
"print(\"Total training took {:} (h:mm:ss)\".format(format_time(time.time()-total_t0)))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "QZ9H2EJNksT_",
"outputId": "7c5d39fb-13d3-48c0-8d04-1dba8740bfcd"
},
"execution_count": 16,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\n",
"======== Epoch 1 / 4 ========\n",
"Training...\n",
" Batch 40 of 129. Elapsed: 0:00:49.\n",
" Batch 80 of 129. Elapsed: 0:01:34.\n",
" Batch 120 of 129. Elapsed: 0:02:19.\n",
"\n",
" Average training loss: 0.11\n",
" Training epcoh took: 0:02:29\n",
"\n",
"Running Validation...\n",
" Accuracy: 0.99\n",
" Validation Loss: 0.07\n",
" Validation took: 0:00:06\n",
"\n",
"======== Epoch 2 / 4 ========\n",
"Training...\n",
" Batch 40 of 129. Elapsed: 0:00:46.\n",
" Batch 80 of 129. Elapsed: 0:01:30.\n",
" Batch 120 of 129. Elapsed: 0:02:15.\n",
"\n",
" Average training loss: 0.02\n",
" Training epcoh took: 0:02:25\n",
"\n",
"Running Validation...\n",
" Accuracy: 0.99\n",
" Validation Loss: 0.08\n",
" Validation took: 0:00:06\n",
"\n",
"======== Epoch 3 / 4 ========\n",
"Training...\n",
" Batch 40 of 129. Elapsed: 0:00:45.\n",
" Batch 80 of 129. Elapsed: 0:01:30.\n",
" Batch 120 of 129. Elapsed: 0:02:15.\n",
"\n",
" Average training loss: 0.00\n",
" Training epcoh took: 0:02:25\n",
"\n",
"Running Validation...\n",
" Accuracy: 0.98\n",
" Validation Loss: 0.10\n",
" Validation took: 0:00:06\n",
"\n",
"======== Epoch 4 / 4 ========\n",
"Training...\n",
" Batch 40 of 129. Elapsed: 0:00:45.\n",
" Batch 80 of 129. Elapsed: 0:01:30.\n",
" Batch 120 of 129. Elapsed: 0:02:15.\n",
"\n",
" Average training loss: 0.00\n",
" Training epcoh took: 0:02:25\n",
"\n",
"Running Validation...\n",
" Accuracy: 0.99\n",
" Validation Loss: 0.09\n",
" Validation took: 0:00:06\n",
"\n",
"Training complete!\n",
"Total training took 0:10:06 (h:mm:ss)\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# Train summary"
],
"metadata": {
"id": "eZ1fmJMjrRgc"
}
},
{
"cell_type": "code",
"source": [
"import pandas as pd\n",
"\n",
"pd.set_option('precision', 2)\n",
"df_stats = pd.DataFrame(data=training_stats)\n",
"\n",
"df_stats = df_stats.set_index('epoch')\n",
"df_stats"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"id": "w4ov2mClrLGW",
"outputId": "ad5057e3-f0e5-44c0-8c5a-bf4d69c600ab"
},
"execution_count": 17,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Training Loss Valid. Loss Valid. Accur. Training Time Validation Time\n",
"epoch \n",
"1 1.07e-01 0.07 0.99 0:02:29 0:00:06\n",
"2 1.89e-02 0.08 0.99 0:02:25 0:00:06\n",
"3 4.73e-03 0.10 0.98 0:02:25 0:00:06\n",
"4 1.93e-03 0.09 0.99 0:02:25 0:00:06"
],
"text/html": [
"\n",
" <div id=\"df-ee4b2d83-3992-4ef7-9181-ffeb684a31a1\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Training Loss</th>\n",
" <th>Valid. Loss</th>\n",
" <th>Valid. Accur.</th>\n",
" <th>Training Time</th>\n",
" <th>Validation Time</th>\n",
" </tr>\n",
" <tr>\n",
" <th>epoch</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1.07e-01</td>\n",
" <td>0.07</td>\n",
" <td>0.99</td>\n",
" <td>0:02:29</td>\n",
" <td>0:00:06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1.89e-02</td>\n",
" <td>0.08</td>\n",
" <td>0.99</td>\n",
" <td>0:02:25</td>\n",
" <td>0:00:06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4.73e-03</td>\n",
" <td>0.10</td>\n",
" <td>0.98</td>\n",
" <td>0:02:25</td>\n",
" <td>0:00:06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1.93e-03</td>\n",
" <td>0.09</td>\n",
" <td>0.99</td>\n",
" <td>0:02:25</td>\n",
" <td>0:00:06</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-ee4b2d83-3992-4ef7-9181-ffeb684a31a1')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-ee4b2d83-3992-4ef7-9181-ffeb684a31a1 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-ee4b2d83-3992-4ef7-9181-ffeb684a31a1');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 17
}
]
},
{
"cell_type": "code",
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"\n",
"import seaborn as sns\n",
"\n",
"sns.set(style='darkgrid')\n",
"\n",
"sns.set(font_scale=1.5)\n",
"plt.rcParams[\"figure.figsize\"] = (12,6)\n",
"\n",
"plt.plot(df_stats['Training Loss'], 'b-o', label=\"Training\")\n",
"plt.plot(df_stats['Valid. Loss'], 'g-o', label=\"Validation\")\n",
"\n",
"plt.title(\"Training & Validation Loss\")\n",
"plt.xlabel(\"Epoch\")\n",
"plt.ylabel(\"Loss\")\n",
"plt.legend()\n",
"plt.xticks([1, 2, 3, 4])\n",
"\n",
"plt.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 427
},
"id": "4Jg3MOeZrTf9",
"outputId": "1782176d-be6e-43c8-8903-d1e698d3d700"
},
"execution_count": 18,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 864x432 with 1 Axes>"
],
"image/png": "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Z6NXr16IjIzE0KFDsXr1apSXl9vsq9Fo8Pbbb2PAgAGIiIhA7969MW3aNBw+fNhm35ycHLz00kvo2bMnOnfujOeeew6XLl1qkOsmIrJX7IEnImrmSkpKcP36dZt2uVwOpVJp+f2BAweQnp6OiRMnwsfHBwcOHMCnn36KzMxMvPfee5b9zpw5g0mTJkEqlVr2PXjwIJYuXYqUlBR88MEHln0zMjLw9NNPIy8vDyNHjkRERARKSkpw+vRpHDlyBH369LHsW1xcjGeeeQadO3fGwoULkZGRgfXr12PWrFnYvn07JBJJA/0JERHZFwZ4IqJmLiYmBjExMTbt/fr1w+eff275fUpKCjZv3ozw8HAAwDPPPIM5c+YgNjYW48ePR5cuXQAA77zzDgwGA7799luEhYVZ9l2wYAG2b9+OsWPHonfv3gCAf//738jNzcWaNWvw8MMPW53fZDJZ/f7GjRt47rnnMH36dEubl5cXlixZgiNHjtgcT0TUVDHAExE1c+PHj0d0dLRNu5eXl9XvH3roIUt4BwCRSITnn38e+/btw969e9GlSxfk5eXh5MmTGDRokCW8V+774osvYteuXdi7dy969+6N/Px8/PLLL3j44YerDd+3v0QrFottZs158MEHAQCXL19mgCeiZoMBnoiomQsODsZDDz101/1CQkJs2tq1awcASE9PB1AxJObW9lu1bdsWYrHYsu+VK1dgNpvRqVOnWtXp6+sLhUJh1ebh4QEAyM/Pr9VnEBE1BXyJlYiIHMKdxribzeZGrISISFgM8EREVCupqak2bRcuXAAABAUFAQACAwOt2m918eJFmEwmy76tWrWCSCRCcnJyQ5VMRNQkMcATEVGtHDlyBGfPnrX83mw2Y82aNQCAgQMHAgC8vb3RtWtXHDx4EOfPn7fad9WqVQCAQYMGAagY/vLII4/g0KFDOHLkiM352KtORFQ9joEnImrmkpKSEB8fX+22ymAOAGFhYZgyZQomTpwItVqN/fv348iRIxg5ciS6du1q2W/RokWYNGkSJk6ciAkTJkCtVuPgwYP49ddfMWzYMMsMNADwz3/+E0lJSZg+fTpGjRqF8PBw6PV6nD59Gi1btsTf//73hrtwIiIHxQBPRNTMbd++Hdu3b6922549eyxjzx977DG0adMGn3/+OS5dugRvb2/MmjULs2bNsjomMjIS3377LT755BP873//Q3FxMYKCgvDyyy/j2Weftdo3KCgIW7ZswfLly3Ho0CHEx8fDzc0NYWFhGD9+fMNcMBGRgxOZ+YySiIjuICMjAwMGDMCcOXMwd+5cocshImr2OAaeiIiIiMiBMMATERERETkQBngiIiIiIgfCMfBERERERA6EPfBERERERA6EAZ6IiIiIyIEwwBMRERERORAGeCIiIiIiB8IAT0RERETkQBjgiYiIiIgcyP8HWCG5ih+5mMkAAAAASUVORK5CYII=\n"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"source": [
"# Create test loader"
],
"metadata": {
"id": "kn87qhtR9MP4"
}
},
{
"cell_type": "code",
"source": [
"prediction_dataloader = DataLoader(\n",
" test_dataset,\n",
" sampler = SequentialSampler(test_dataset),\n",
" batch_size = batch_size\n",
" )"
],
"metadata": {
"id": "ENqiBZio9a7a"
},
"execution_count": 19,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Evaluate on test dataset"
],
"metadata": {
"id": "dAF9Iqol-kAP"
}
},
{
"cell_type": "code",
"source": [
"print('Predicting labels for {:,} test sentences...'.format(len(test_dataset)))\n",
"\n",
"model.eval()\n",
"predictions , true_labels = [], []\n",
"\n",
"for batch in prediction_dataloader:\n",
" batch = tuple(t.to(device) for t in batch)\n",
" \n",
" b_input_ids, b_input_mask, b_labels = batch\n",
" \n",
" with torch.no_grad():\n",
" outputs = model(b_input_ids, token_type_ids=None, \n",
" attention_mask=b_input_mask)\n",
"\n",
" logits = outputs['logits']\n",
"\n",
" logits = logits.detach().cpu().numpy()\n",
" label_ids = b_labels.to('cpu').numpy()\n",
" \n",
" predictions.append(logits)\n",
" true_labels.append(label_ids)\n",
"\n",
"print(' DONE.')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "XXCWIk8c9Oun",
"outputId": "ad95fd9e-f132-4cef-d848-57d126687d8b"
},
"execution_count": 20,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Predicting labels for 1,000 test sentences...\n",
" DONE.\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"results_ok = 0\n",
"results_false = 0\n",
"for idx, true_labels_batch in enumerate(true_labels):\n",
" predictions_i = np.argmax(predictions[idx], axis=1).flatten()\n",
" for bidx, true_label in enumerate(true_labels_batch):\n",
" if true_label == predictions_i[bidx]:\n",
" results_ok += 1\n",
" else:\n",
" results_false += 1\n",
"\n",
"print(\"Correct predictions: {}, incorrect results: {}, accuracy: {}\".format(results_ok, results_false, float(results_ok) / (results_ok + results_false)))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "TVIFBFmFEwNv",
"outputId": "8d0a7751-cb1b-40ed-a705-40944ec75309"
},
"execution_count": 21,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Correct predictions: 994, incorrect results: 6, accuracy: 0.994\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# MCC Score"
],
"metadata": {
"id": "6gTgKchs_OXY"
}
},
{
"cell_type": "code",
"source": [
"from sklearn.metrics import matthews_corrcoef\n",
"\n",
"matthews_set = []\n",
"print('Calculating Matthews Corr. Coef. for each batch...')\n",
"\n",
"for i in range(len(true_labels)):\n",
" pred_labels_i = np.argmax(predictions[i], axis=1).flatten()\n",
"\n",
" matthews = matthews_corrcoef(true_labels[i], pred_labels_i) \n",
" matthews_set.append(matthews)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "hOelDEdn_QDE",
"outputId": "022d5656-09cb-4279-878e-13611ceb68fc"
},
"execution_count": 22,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Calculating Matthews Corr. Coef. for each batch...\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"ax = sns.barplot(x=list(range(len(matthews_set))), y=matthews_set, ci=None)\n",
"\n",
"plt.title('MCC Score per Batch')\n",
"plt.ylabel('MCC Score (-1 to +1)')\n",
"plt.xlabel('Batch #')\n",
"\n",
"plt.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 427
},
"id": "cF34A88N_UgQ",
"outputId": "439ba21c-94a3-4a7b-bbc8-c2b828dbc6ba"
},
"execution_count": 23,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 864x432 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAuUAAAGaCAYAAACopj13AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzde3yMZ/7/8ffkLAkSaaKKoIg4xbGUUqVo1JlQiji0qNJt9asbtr92d7vdUlR10RZtldAqkkixDqXdHpyLChWKOoRsmSIhiUgk8/vDV76NScYkmXGTvJ6Ph8fKdd/X5/5MJmbfuXvNNSaLxWIRAAAAAMO4GN0AAAAAUNYRygEAAACDEcoBAAAAgxHKAQAAAIMRygEAAACDEcoBAAAAgxHKAQC4SwwbNkydOnUyug0ABnAzugEAKKmdO3cqMjJSkjRkyBC9/vrrVudcuHBBHTp0UHZ2tlq1aqXo6Gircw4cOKBly5Zp9+7dMpvNcnFxUbVq1dSmTRsNGjRItWvXznf+1atX9cUXX2jTpk06duyY0tPTVbFiRTVs2FDdunVTr1695OZm+2X2ypUrio6O1saNG3X27Fnl5OTI399foaGh6tixowYMGFCC7wxu1alTJ509ezbva5PJpICAANWqVUuDBw9W9+7di1178+bNSkxM1AsvvOCIVgGUMYRyAKWGp6en1q5dq8mTJ8vDwyPfsfj4eFkslkJD8ty5czV37lz5+/urR48eqlOnjnJzc3Xs2DGtX79ey5Yt065du+Tr6ytJOnXqlMaMGaOTJ0+qbdu2GjNmjPz9/XXhwgVt375dU6ZM0bFjx/TnP/+50H7T0tIUERGhpKQkPfHEE+rfv7/c3d2VlJSkvXv3asmSJYRyJ7j//vv18ssvS5Jyc3N17tw5xcXF6eWXX5bZbNaIESOKVXfz5s2Ki4sjlAMoFkI5gFKjS5cuWrt2rTZv3qwnn3wy37HY2Fg9+uij2rFjh9W8VatWac6cOWrdurXmzZun8uXL5zv+yiuvaO7cuXlfZ2ZmauzYsTpz5ozmzJmjrl275jt/zJgxSkhI0IEDB2z2u2LFCp08eVJ/+ctfNHz4cKvjZrP5to/ZGdLS0vJ++biXWCwWZWRkyMfHx+Z55cuXV+/evfONPfXUU2rfvr1iY2OLHcoBoCRYUw6g1GjQoIHq1aun2NjYfOMJCQk6evSo+vfvbzUnKytLs2fPlre3t2bPnm0VyCXJy8tLkyZNyguqK1eu1IkTJzRy5EirQH5TWFiYhgwZYrPfkydPSpLatGlT4PHAwECrsVOnTmnKlCl69NFH1ahRI7Vr107jxo3TwYMH8523efNmDRo0SE2bNlWzZs00aNAgbd682apep06dNGzYMB06dEjPPPOMWrRooV69euXr8ZVXXlG7du3UqFEjderUSW+//bYyMjJsPrZb6//888+KjIxUs2bN1KpVK0VFRenChQtW52dlZenDDz9U9+7d1bhxY7Vs2VLPPfecDh06lO+8nTt35j3Xy5Yt05NPPqnGjRvrk08+sauvW1WsWFEeHh5yd3fPN56QkKDJkyfriSeeUJMmTfK+l1999VW+84YNG6a4uDhJUr169fL+/PFn0Ww2680339Tjjz+uRo0aqU2bNho5cqS2bt1q1c+5c+f08ssv66GHHlKTJk30zDPP6MSJE8V6bADuDdwpB1Cq9O/fX9OmTdO5c+dUuXJlSTfuhAcEBOixxx6zOn/v3r0ym83q3bu3KlWqZNc1Nm7cKOnG3dWSCA4OlnTjLv6kSZNuu/78wIEDGjFihK5fv66IiAjVrVtXqamp2rVrl/bt26dGjRpJkpYtW6Y33nhDDz74oJ5//nlJUlxcnMaPH6833njDqu/k5GQNHz5c4eHh6tq1a17gPnjwoIYPH64KFSroqaeeUuXKlXX48GFFR0dr3759io6OtgqxBfntt980YsQIde3aVU888YQOHTqkmJgYHTx4UKtWrVK5cuUkSdnZ2XrmmWe0b98+9e7dW0OGDFFaWppWrFihwYMHa+nSpWrcuHG+2osXL1ZKSooGDBigwMBA3X///bftJycnRxcvXpR0Y/mK2WzWkiVLlJ6erkGDBuU796uvvtKvv/6q8PBwVa1aVSkpKYqLi9OECRM0c+ZM9ezZU5L03HPPKTc3Vz/++KOmT5+eN7958+aSpDNnzmjw4MG6cOGCevfurUaNGunq1avav3+/tm3bpkceeSRvTkZGhoYOHaomTZpo4sSJOnPmjJYsWaLnn39ea9eulaur620fI4B7kAUA7nE7duywhISEWD766CPLxYsXLQ0bNrR88MEHFovFYrl69aqlRYsWlmnTplksFouladOmlqFDh+bNXbJkiSUkJMTyySef2H29Vq1aWZo3b17ivlNSUiwdOnSwhISEWNq0aWN54YUXLPPnz7fs3r3bkpOTk+/c3NxcS/fu3S2NGjWyJCYmWtW6eX5KSoqladOmls6dO1uuXLmSd/zKlSuWxx9/3NK0aVNLampq3njHjh0tISEhlhUrVljV7Nmzp+WJJ57IV8disVg2bdpkCQkJscTExNz2Md6sv2jRonzjixYtsoSEhFjmz59vNfbdd9/lO/fKlSuWDh065Hvebj7nDz30kOX333+/bR+39nPrn8aNG1uWL19udX56errVWEZGhqVr166Wbt265RuPioqyhISEFHjdZ599tsDHZrFY8j3XQ4cOtYSEhFgWLFiQ75yFCxcWOh9A6cDyFQClir+/vzp16pS3lGDTpk26cuVKgUtXpBvrpyUVaQ11Wlrabdct26NixYqKjY3V6NGjVb58eW3cuFHvvPOOhgwZos6dO+uHH37IOzcxMVFHjx5Vv379FBoaalXLxeXGy/nWrVuVkZGhYcOG5XtMvr6+GjZsmDIyMrRt27Z8c/38/NSvX798Y0eOHNGRI0fUo0cPZWVl6eLFi3l/WrRoIW9v7wKXXRTE19dXTz/9dL6xp59+Wr6+vvmWgXz55Zd68MEH1bBhw3zXy8rKUtu2bbVnzx5lZmbmq9O7d28FBATY1cdNVatW1aJFi7Ro0SJ98sknmjZtmpo0aaK//e1viomJyXeut7d33t+vXr2qS5cu6erVq3r44Yd1/PjxvJ8fW1JSUvT999+rffv2at++vdXxm8/dH7++uZvQTQ8//LCkG8uXAJROLF8BUOr0799fY8aM0Y8//qiYmBiFhYWpTp06BZ57M7imp6fbXd/X17dI59tSqVIlTZo0SZMmTdKlS5f0008/af369fryyy81YcIExcfHq0aNGnnrzxs0aGCz3pkzZyRJdevWtTp2cywpKSnfePXq1a2WRBw/flySNGfOHM2ZM6fAa/3++++3f4D/W//W3XA8PDxUvXr1fL0cP35cmZmZha6xl6RLly6pSpUqeV/XrFnTrh7+yNvbW23bts031rNnT/Xt21dvvvmmOnXqJH9/f0k3ttKcPXu2tmzZUuAa+MuXL9/2F7rTp0/LYrHc9rm7KSgoSJ6envnG/Pz8JN0I+ABKJ0I5gFKnXbt2qly5subNm6edO3fqb3/7W6Hn3gyqt76R0Ja6detq9+7dSkpKUvXq1Uvabh5/f3917NhRHTt2VJUqVfThhx9q3bp1eevCneXmmu6CjBo1qsC7u5JUoUIFh/ZhsVgUEhKiKVOmFHrOrev+bfVeFG5ubnr44Ye1ZMkSJSQkqEOHDrJYLBo1apSOHz+uyMhINWrUSOXLl5erq6tiYmK0du1a5ebmOuT6f2RrzbjFYnH49QDcHQjlAEodV1dX9enTR/Pnz5eXl5d69OhR6LnNmzdXYGCgNm/erEuXLuXdIbWla9eu2r17t1auXJm337WjNWnSRNKNXTgkqVatWpJuLGOx5eYvCUePHrW643zs2LF859hSo0YNSTeWUtx6V7mokpKSlJWVle9ueVZWlpKSkvTggw/mu+alS5f08MMPWy3puBOuX78u6f/+q8mRI0d0+PBhjR8/Xn/605/ynbty5Uqr+SaTqcC6wcHBMplMt33uAJRtrCkHUCoNGjRIEyZM0N///nebyws8PDz00ksvKT09XRMnTixwjfC1a9c0a9asvGMDBgxQrVq19MknnxS4zaB0Y+eSZcuW2exx3759unz5coHHbta9uewmNDRUdevWVUxMjI4ePWp1/s07qI888oi8vb21dOnSfI8lLS1NS5culbe3d76dPgrToEEDhYSEaPny5VbLXaQbAdbepRRpaWn67LPP8o199tlnSktLU+fOnfPG+vTpI7PZrEWLFhVYx97lMsVx7do1ff/995L+b4nQzV8Mbr07/csvv1htiSj93/rzW78vfn5+evTRR/Xdd99ZrecvqD6Asok75QBKpQceeMDuT1aMiIjQb7/9prlz56pr1675PtHz+PHj2rBhgy5evKgxY8ZIurFkYv78+RozZozGjx+vdu3aqW3btvLz89PFixe1c+dO/fDDD3r22WdtXnfNmjWKjY1Vhw4dFBYWJj8/P6WkpOjbb7/Vzp07VadOnbw3qJpMJr311lsaMWKEBgwYkLcl4uXLl7V79261b99ew4YNU4UKFTRp0iS98cYbGjhwoPr27SvpxpaIp06d0htvvFHgXuy3MplMmj59uoYPH65evXqpf//+qlOnjjIzM3Xq1Cl99dVXevnll63eIFqQ4OBgzZs3T0ePHlXDhg31888/KyYmRg8++KCGDRuWd15kZKS2bdum6dOna8eOHXr44Yfl6+ur5ORk7dixQx4eHoqOjr7t9W7nypUrio+P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d999RSpWtWpV/eUvf9Ho0aNve25CQoLWrVunKVOmaMSIEZKkPn36qEePHpo5c6aWLVtW6Nxly5YpMDBQixcvloeHhyRp4MCBevzxxxUfH08oBwAAwD2l0N1XihrI/ygwMPC252zYsEHu7u75ArSnp6ciIiK0Z88enT9/vtC5aWlpqlixYl4glyQPDw9VrFiR9ewAAAC45xi2JWJiYqJq1aolHx+ffONhYWGyWCxKTEwsdG6rVq109OhRzZ49W6dPn9bp06c1e/ZsnTx5UqNGjXJ26wAAAIBD2b0l4u1888032rRpk6ZOnWrX+WazWZUrV7Yav3mX3dad8ueee06nT5/Whx9+qA8++ECS5O3trffff1+PPPJIMboHAAAAjOOwUH748GGtXr3a7lCemZkpd3d3q/Gby0+uXbtW6FwPDw/VrFlT4eHh6tKli3JycrRixQq99NJL+vTTTxUWFlbk/gMCfIs8pzCBgeUdVqus17wXeqQmNalZdmreCz1Sk5rUvDtr3q6ew0J5UXl5eSk7O9tq/GYYt7U2/B//+IcOHDigVatWycXlxgqcbt26qUePHnrrrbe0fPnyIvdz4UKaw4K52Xwl7++OekLLas0/1ivLNe/W54ea1CxrNXn9oCY1qVmSei4upkLzps1QHhkZafeFkpOTi9RYYGBggUtUzGazJCkoKKjAeVlZWVq1apXGjh2bF8glyd3dXe3bt9fnn3+u69evy83NsN83AAAAgCKxmVx37dolNze3ApeZ3Or69etFunBoaKiio6OVnp6e782e+/fvzztekJSUFF2/fl05OTkF9nD9+vVCP3kUAAAAuBvZ3H2lcuXKateunfbt23fbP+PGjSvShcPDw5Wdna2VK1fmjWVlZSk2NlbNmzfPexNocnKyjh8/nndOQECAKlSooK+++irf8pf09HR98803CgkJseuXCAAAAOBuYfNOeYMGDXTgwAG7CplMpiJduEmTJgoPD9fMmTNlNpsVHBysuLg4JScn53uzaFRUlHbt2qUjR45IklxdXTVq1CjNnj1bTz31lHr16qXc3FytWrVKv/32m6KioorUBwAAAGA0m6G8YcOG+uabb3Tu3LkCty/8o/Lly6tKlSpFuvj06dM1e/ZsxcfHKzU1VfXq1dOCBQvUokULm/PGjRunatWqacmSJZo3b56ysrJUr149zZ07V126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U1hYmAYOHKjt27cXqYYkjR49WvXq1dM///nPIs8FAAAAjGZ3KG/btq1WrVpVYDA/duyYYmJi1LZt2yJdfPLkyVq8eLF69eqlV199VS4uLho9erT27dtnd43//Oc/+vHHH4t0XQAAAOBuYveWiOPGjdOmTZsUERGh/v37q379+pKkxMRExcTEyN3dXc8//7zdF05ISNC6des0ZcoUjRgxQpLUp08f9ejRQzNnzrS508tNWVlZmjp1qp555hk+TRQAAAD3LLtDeXBwsD799FNNmTJFn332Wb5jdevW1VtvvaWaNWvafeENGzbI3d1dAwYMyBvz9PRURESE3n33XZ0/f15BQUE2ayxZskSZmZmEcgAAANzTivThQY0bN9batWuVmJiokydPSpJq1aql0NDQIl84MTFRtWrVko+PT77xsLAwWSwWJSYm2gzlZrNZ77//vl5//XWVK1euyNcHAAAA7hZF/kRPSapfv37e8pXiMpvNqly5stV4YGCgJOn8+fM258+aNUu1atVS7969S9QHAAAAYLRihXJJSkpK0rp163Tu3DnVqVNH/fv3l5eXl93zMzMz5e7ubjXu6ekpSbp27VqhcxMSErR69WpFR0fLZDIVvfkCBAT4OqSOJAUGlndYrbJe817okZrUpGbZqXkv9EhNalLz7qx5u3o2Q/nKlSsVHR2tRYsWKSAgIG9869atmjBhgjIzM2WxWGQymbR8+XItX77cajlKYby8vJSdnW01fjOM3wznt7JYLPrnP/+prl27qmXLlnZdyx4XLqQ5LJibzVfy/u6oJ7Ss1vxjvbJc8259fqhJzbJWk9cPalKTmiWp5+JiKjRv2twS8T//+Y98fHzyBXKLxaLXX39dmZmZGjNmjD744AP17dtXR48e1aeffmp3Y4GBgQUuUTGbzZJU6Hryr776SgkJCRo8eLDOnDmT90eS0tLSdObMGWVmZtrdBwAAAGA0m3fKDx8+rG7duuUb27t3r86ePas+ffpo4sSJkqSOHTvq7Nmz2rJli8aPH2/XhUNDQxUdHa309PR8d9f379+fd7wgycnJys3N1fDhw62OxcbGKjY2VgsXLtSjjz5qVx8AAACA0WyG8osXL6p69er5xvbu3SuTyWQV1jt06KB58+bZfeHw8HB98sknWrlyZd4+5VlZWYqNjVXz5s3z3gSanJysq1evqnbt2pKk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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"flat_predictions = np.concatenate(predictions, axis=0)\n",
"\n",
"flat_predictions = np.argmax(flat_predictions, axis=1).flatten()\n",
"flat_true_labels = np.concatenate(true_labels, axis=0)\n",
"\n",
"mcc = matthews_corrcoef(flat_true_labels, flat_predictions)\n",
"\n",
"print('Total MCC: %.3f' % mcc)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "vx_SM19o_XqD",
"outputId": "a37b67e7-4b48-4c69-cef1-21dbb0513829"
},
"execution_count": 24,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Total MCC: 0.973\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# Save model"
],
"metadata": {
"id": "ZE7xxmFJ-oBM"
}
},
{
"cell_type": "code",
"source": [
"from google.colab import drive\n",
"\n",
"drive.mount('/content/gdrive/', force_remount=True)\n",
"\n",
"output_dir = '/content/gdrive/My Drive/UAM/Przetwarzanie-tekstu/BERT_Model'\n",
"print(\"Saving model to %s\" % output_dir)\n",
"\n",
"model_to_save = model.module if hasattr(model, 'module') else model\n",
"model_to_save.save_pretrained(output_dir)\n",
"tokenizer.save_pretrained(output_dir)\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "fJAqcU8F-p2Z",
"outputId": "329483d2-97dd-4f1e-ee10-b94869c8e5ac"
},
"execution_count": 25,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Mounted at /content/gdrive/\n",
"Saving model to /content/gdrive/My Drive/UAM/Przetwarzanie-tekstu/BERT_Model\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"('/content/gdrive/My Drive/UAM/Przetwarzanie-tekstu/BERT_Model/tokenizer_config.json',\n",
" '/content/gdrive/My Drive/UAM/Przetwarzanie-tekstu/BERT_Model/special_tokens_map.json',\n",
" '/content/gdrive/My Drive/UAM/Przetwarzanie-tekstu/BERT_Model/vocab.txt',\n",
" '/content/gdrive/My Drive/UAM/Przetwarzanie-tekstu/BERT_Model/added_tokens.json')"
]
},
"metadata": {},
"execution_count": 25
}
]
},
{
"cell_type": "markdown",
"source": [
"# Bibliografia\n",
"https://mccormickml.com/2019/07/22/BERT-fine-tuning/#a1-saving--loading-fine-tuned-model"
],
"metadata": {
"id": "6pFz8n_aHca9"
}
}
]
}