diff --git a/Transformers_2.ipynb b/Transformers_2.ipynb
new file mode 100644
index 0000000..36c2a81
--- /dev/null
+++ b/Transformers_2.ipynb
@@ -0,0 +1,4001 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "provenance": [],
+ "gpuType": "T4",
+ "authorship_tag": "ABX9TyOt90/WyRyyOQaNP2+agQaA",
+ "include_colab_link": true
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ },
+ "language_info": {
+ "name": "python"
+ },
+ "accelerator": "GPU",
+ "widgets": {
+ "application/vnd.jupyter.widget-state+json": {
+ "0ad112e40250417e85f106bffa14df8f": {
+ "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_7ab245d570624afba3926b35cc875b8e",
+ "IPY_MODEL_da6859c90d2745c88632291a4ccd3d9e",
+ "IPY_MODEL_327ed7c84f3346eca8af68188dcdf365"
+ ],
+ "layout": "IPY_MODEL_3cf0fd0b5af147fb8a99132a155513ea"
+ }
+ },
+ "7ab245d570624afba3926b35cc875b8e": {
+ "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_d1374a3155744320b7f7f3ba961706fa",
+ "placeholder": "",
+ "style": "IPY_MODEL_327bc27bfb1648c69f92721827768bc1",
+ "value": "Downloading (…)solve/main/vocab.txt: 100%"
+ }
+ },
+ "da6859c90d2745c88632291a4ccd3d9e": {
+ "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_a6d43b466c844c9eae33583736916af2",
+ "max": 231508,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_c501c3a920174a2ea2c9a5bfcb6b7a3b",
+ "value": 231508
+ }
+ },
+ "327ed7c84f3346eca8af68188dcdf365": {
+ "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_b1cd42c159864367a1853ef3d1a49d13",
+ "placeholder": "",
+ "style": "IPY_MODEL_d137a213a2164e928a6d28c9e71d6e1a",
+ "value": " 232k/232k [00:00<00:00, 4.93MB/s]"
+ }
+ },
+ "3cf0fd0b5af147fb8a99132a155513ea": {
+ "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
+ }
+ },
+ "d1374a3155744320b7f7f3ba961706fa": {
+ "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
+ }
+ },
+ "327bc27bfb1648c69f92721827768bc1": {
+ "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": ""
+ }
+ },
+ "a6d43b466c844c9eae33583736916af2": {
+ "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
+ }
+ },
+ "c501c3a920174a2ea2c9a5bfcb6b7a3b": {
+ "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": ""
+ }
+ },
+ "b1cd42c159864367a1853ef3d1a49d13": {
+ "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
+ }
+ },
+ "d137a213a2164e928a6d28c9e71d6e1a": {
+ "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": ""
+ }
+ },
+ "3f323bc887d8491c9c27cb51141e1f37": {
+ "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_2b7f6d4e6e2a4c10b294ebcf1e713091",
+ "IPY_MODEL_07c73767acfb41378ae4ad9521f1b12e",
+ "IPY_MODEL_a0275bf80859495aa4c930dda180fcd8"
+ ],
+ "layout": "IPY_MODEL_14c595fa8fa74d5097595c26e679601d"
+ }
+ },
+ "2b7f6d4e6e2a4c10b294ebcf1e713091": {
+ "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_016ca35dedbd4058adccee79b6d85c48",
+ "placeholder": "",
+ "style": "IPY_MODEL_9a2412467f9942ec931d5c9a5f4d1a1f",
+ "value": "Downloading (…)okenizer_config.json: 100%"
+ }
+ },
+ "07c73767acfb41378ae4ad9521f1b12e": {
+ "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_e66c88b720934062af8813019e7a6a97",
+ "max": 28,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_f2f938ef23c747789bfe4e3f06430f15",
+ "value": 28
+ }
+ },
+ "a0275bf80859495aa4c930dda180fcd8": {
+ "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_c8530a14813e4283bb08e764cc27cfff",
+ "placeholder": "",
+ "style": "IPY_MODEL_c5821978dab8402a83286767f2d7b616",
+ "value": " 28.0/28.0 [00:00<00:00, 1.73kB/s]"
+ }
+ },
+ "14c595fa8fa74d5097595c26e679601d": {
+ "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
+ }
+ },
+ "016ca35dedbd4058adccee79b6d85c48": {
+ "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
+ }
+ },
+ "9a2412467f9942ec931d5c9a5f4d1a1f": {
+ "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": ""
+ }
+ },
+ "e66c88b720934062af8813019e7a6a97": {
+ "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
+ }
+ },
+ "f2f938ef23c747789bfe4e3f06430f15": {
+ "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": ""
+ }
+ },
+ "c8530a14813e4283bb08e764cc27cfff": {
+ "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
+ }
+ },
+ "c5821978dab8402a83286767f2d7b616": {
+ "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": ""
+ }
+ },
+ "2a4fc261dd2744be80de392346b77a13": {
+ "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_904a8a6cdf7242a4b55d0f1440212275",
+ "IPY_MODEL_b5ece9f04eab43d592afa62f96cb2c63",
+ "IPY_MODEL_d777dbb81ace4eca97a21fb16d554b7b"
+ ],
+ "layout": "IPY_MODEL_32c19886fff849529aaf960cac7efb1a"
+ }
+ },
+ "904a8a6cdf7242a4b55d0f1440212275": {
+ "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_2742b24a126743a5ac88260b1e102124",
+ "placeholder": "",
+ "style": "IPY_MODEL_874129ba70634c40aeb1588d2e6224be",
+ "value": "Downloading (…)lve/main/config.json: 100%"
+ }
+ },
+ "b5ece9f04eab43d592afa62f96cb2c63": {
+ "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_4d690563273a4eaa8bce398a9bd8dcb0",
+ "max": 483,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_73adbaf455914f20bc4f6ac8529554ac",
+ "value": 483
+ }
+ },
+ "d777dbb81ace4eca97a21fb16d554b7b": {
+ "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_196c83b6729b4f2287fdec3e9946ceef",
+ "placeholder": "",
+ "style": "IPY_MODEL_f56709e754e841b2bd064ad57b9d7d94",
+ "value": " 483/483 [00:00<00:00, 32.2kB/s]"
+ }
+ },
+ "32c19886fff849529aaf960cac7efb1a": {
+ "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
+ }
+ },
+ "2742b24a126743a5ac88260b1e102124": {
+ "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
+ }
+ },
+ "874129ba70634c40aeb1588d2e6224be": {
+ "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": ""
+ }
+ },
+ "4d690563273a4eaa8bce398a9bd8dcb0": {
+ "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
+ }
+ },
+ "73adbaf455914f20bc4f6ac8529554ac": {
+ "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": ""
+ }
+ },
+ "196c83b6729b4f2287fdec3e9946ceef": {
+ "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
+ }
+ },
+ "f56709e754e841b2bd064ad57b9d7d94": {
+ "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": ""
+ }
+ },
+ "cf1b0f77ef2b453a8f76ae1119745524": {
+ "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_a46d242751a44eccb1437dda335d28ed",
+ "IPY_MODEL_05ea026dde10494fb1226c5d6c3f46df",
+ "IPY_MODEL_66711c0ed00d425a89506ec809328673"
+ ],
+ "layout": "IPY_MODEL_10f4b09c00334451adc198d1dd2259e2"
+ }
+ },
+ "a46d242751a44eccb1437dda335d28ed": {
+ "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_e1c5e918e422440191a2c3686bc36127",
+ "placeholder": "",
+ "style": "IPY_MODEL_62c96581fb2c44a1b11ba5894e3ee209",
+ "value": "Downloading model.safetensors: 100%"
+ }
+ },
+ "05ea026dde10494fb1226c5d6c3f46df": {
+ "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_2f31bd12b4d544119a9253aa4af77433",
+ "max": 267954768,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_83720b19c7754f7ba71f165a5f6dcc3a",
+ "value": 267954768
+ }
+ },
+ "66711c0ed00d425a89506ec809328673": {
+ "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_1a1e4affd3f94008b10e888fc0c8624a",
+ "placeholder": "",
+ "style": "IPY_MODEL_3356c02482b04a4abc17e604f0853624",
+ "value": " 268M/268M [00:01<00:00, 200MB/s]"
+ }
+ },
+ "10f4b09c00334451adc198d1dd2259e2": {
+ "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
+ }
+ },
+ "e1c5e918e422440191a2c3686bc36127": {
+ "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
+ }
+ },
+ "62c96581fb2c44a1b11ba5894e3ee209": {
+ "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": ""
+ }
+ },
+ "2f31bd12b4d544119a9253aa4af77433": {
+ "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
+ }
+ },
+ "83720b19c7754f7ba71f165a5f6dcc3a": {
+ "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": ""
+ }
+ },
+ "1a1e4affd3f94008b10e888fc0c8624a": {
+ "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
+ }
+ },
+ "3356c02482b04a4abc17e604f0853624": {
+ "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",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ "
"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "sM-JvLYHo8m1",
+ "outputId": "9bcd2467-cd51-4474-8622-da5baeed937d"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Collecting git+https://github.com/huggingface/transformers.git\n",
+ " Cloning https://github.com/huggingface/transformers.git to /tmp/pip-req-build-l73f6ika\n",
+ " Running command git clone --filter=blob:none --quiet https://github.com/huggingface/transformers.git /tmp/pip-req-build-l73f6ika\n",
+ " Resolved https://github.com/huggingface/transformers.git to commit d8e13b3e04da9e61c6f16df43815656f59688abd\n",
+ " Installing build dependencies ... \u001b[?25l\u001b[?25hdone\n",
+ " Getting requirements to build wheel ... \u001b[?25l\u001b[?25hdone\n",
+ " Preparing metadata (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n",
+ "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from transformers==4.34.0.dev0) (3.12.2)\n",
+ "Collecting huggingface-hub<1.0,>=0.15.1 (from transformers==4.34.0.dev0)\n",
+ " Downloading huggingface_hub-0.16.4-py3-none-any.whl (268 kB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m268.8/268.8 kB\u001b[0m \u001b[31m2.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hRequirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from transformers==4.34.0.dev0) (1.23.5)\n",
+ "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from transformers==4.34.0.dev0) (23.1)\n",
+ "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from transformers==4.34.0.dev0) (6.0.1)\n",
+ "Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.10/dist-packages (from transformers==4.34.0.dev0) (2023.6.3)\n",
+ "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from transformers==4.34.0.dev0) (2.31.0)\n",
+ "Collecting tokenizers!=0.11.3,<0.14,>=0.11.1 (from transformers==4.34.0.dev0)\n",
+ " Downloading tokenizers-0.13.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.8 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.8/7.8 MB\u001b[0m \u001b[31m16.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hCollecting safetensors>=0.3.1 (from transformers==4.34.0.dev0)\n",
+ " Downloading safetensors-0.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.3/1.3 MB\u001b[0m \u001b[31m35.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hRequirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.10/dist-packages (from transformers==4.34.0.dev0) (4.66.1)\n",
+ "Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.15.1->transformers==4.34.0.dev0) (2023.6.0)\n",
+ "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.15.1->transformers==4.34.0.dev0) (4.7.1)\n",
+ "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->transformers==4.34.0.dev0) (3.2.0)\n",
+ "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->transformers==4.34.0.dev0) (3.4)\n",
+ "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->transformers==4.34.0.dev0) (2.0.4)\n",
+ "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->transformers==4.34.0.dev0) (2023.7.22)\n",
+ "Building wheels for collected packages: transformers\n",
+ " Building wheel for transformers (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n",
+ " Created wheel for transformers: filename=transformers-4.34.0.dev0-py3-none-any.whl size=7636963 sha256=598e414880f7fba25c31ca8276e5cc6c8784c2176b24d95c42b240c776e1bb98\n",
+ " Stored in directory: /tmp/pip-ephem-wheel-cache-yvj1k71d/wheels/e7/9c/5b/e1a9c8007c343041e61cc484433d512ea9274272e3fcbe7c16\n",
+ "Successfully built transformers\n",
+ "Installing collected packages: tokenizers, safetensors, huggingface-hub, transformers\n",
+ "Successfully installed huggingface-hub-0.16.4 safetensors-0.3.3 tokenizers-0.13.3 transformers-4.34.0.dev0\n"
+ ]
+ }
+ ],
+ "source": [
+ "!pip install git+https://github.com/huggingface/transformers.git"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "from transformers import DistilBertTokenizer\n",
+ "from transformers import TFDistilBertForSequenceClassification\n",
+ "import tensorflow as tf\n",
+ "import pandas as pd\n",
+ "import json\n",
+ "import gc"
+ ],
+ "metadata": {
+ "id": "okhDX1H4pO-z"
+ },
+ "execution_count": 43,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "from google.colab import drive\n",
+ "drive.mount('/content/drive/')"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "7IMpFSAGpSOh",
+ "outputId": "315c2ba5-2b2f-4281-b0eb-929e018d1783"
+ },
+ "execution_count": 3,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Mounted at /content/drive/\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "#Navigate to the file directory and read the pokemon file in your Google Drive\n",
+ "\n",
+ "inventory_df = pd.read_excel(\"/content/drive/MyDrive/Inventory/data_test.xlsx\")\n",
+ "inventory_df.head()"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 206
+ },
+ "id": "fk4YppMspc0L",
+ "outputId": "bb70faed-eed9-40b3-da02-6c0ebfed8853"
+ },
+ "execution_count": 4,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ " Task Plan Description Category\n",
+ "0 ADM-EOP-0001 Seplat Soccer Tournament Service\n",
+ "1 ADM-EOP-0002 Seplat Decluttering Exercise Service\n",
+ "2 AST-FFE-0001 Independent Fire Water Systems Material\n",
+ "3 AST-FFE-0002 Fire Extinguishers Material\n",
+ "4 AST-FFE-0003 Mobilisation Unlabelled"
+ ],
+ "text/html": [
+ "\n",
+ "
\n",
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Task Plan | \n",
+ " Description | \n",
+ " Category | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " ADM-EOP-0001 | \n",
+ " Seplat Soccer Tournament | \n",
+ " Service | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " ADM-EOP-0002 | \n",
+ " Seplat Decluttering Exercise | \n",
+ " Service | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " AST-FFE-0001 | \n",
+ " Independent Fire Water Systems | \n",
+ " Material | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " AST-FFE-0002 | \n",
+ " Fire Extinguishers | \n",
+ " Material | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " AST-FFE-0003 | \n",
+ " Mobilisation | \n",
+ " Unlabelled | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 4
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "#Filter Out the Unlabelled Values\n",
+ "inventory_df = inventory_df[(inventory_df['Category'] == 'Material') | (inventory_df['Category'] == 'Service')]"
+ ],
+ "metadata": {
+ "id": "TRiBW7e5pfjY"
+ },
+ "execution_count": 5,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "inventory_df['Category'].unique()"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "eVm9vvT6pmsK",
+ "outputId": "55bfcdff-d2ed-4cfb-bd5b-da537978a1e3"
+ },
+ "execution_count": 44,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "array(['Service', 'Material'], dtype=object)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 44
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "inventory_df['encoded_cat'] = inventory_df['Category'].astype('category').cat.codes\n",
+ "inventory_df.head()"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 206
+ },
+ "id": "Qkh_AKS7pswh",
+ "outputId": "fea41077-bf17-4520-ae77-eb52bcdd08f3"
+ },
+ "execution_count": 7,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ " Task Plan Description Category encoded_cat\n",
+ "0 ADM-EOP-0001 Seplat Soccer Tournament Service 1\n",
+ "1 ADM-EOP-0002 Seplat Decluttering Exercise Service 1\n",
+ "2 AST-FFE-0001 Independent Fire Water Systems Material 0\n",
+ "3 AST-FFE-0002 Fire Extinguishers Material 0\n",
+ "5 AST-FFE-0004 Engineering Design Service 1"
+ ],
+ "text/html": [
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Task Plan | \n",
+ " Description | \n",
+ " Category | \n",
+ " encoded_cat | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " ADM-EOP-0001 | \n",
+ " Seplat Soccer Tournament | \n",
+ " Service | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " ADM-EOP-0002 | \n",
+ " Seplat Decluttering Exercise | \n",
+ " Service | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " AST-FFE-0001 | \n",
+ " Independent Fire Water Systems | \n",
+ " Material | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " AST-FFE-0002 | \n",
+ " Fire Extinguishers | \n",
+ " Material | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " AST-FFE-0004 | \n",
+ " Engineering Design | \n",
+ " Service | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 7
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "#inventory_df.drop(['Task Plan'], 1, inplace=True) XXX\n",
+ "inventory_df = inventory_df.drop(columns='Task Plan') # Pandas official way of dropping columns\n",
+ "inventory_df.head(20)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 676
+ },
+ "id": "ge0oIK1Qp680",
+ "outputId": "64eae5d3-989d-48d0-bafe-01b86c511b88"
+ },
+ "execution_count": 8,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ " Description Category encoded_cat\n",
+ "0 Seplat Soccer Tournament Service 1\n",
+ "1 Seplat Decluttering Exercise Service 1\n",
+ "2 Independent Fire Water Systems Material 0\n",
+ "3 Fire Extinguishers Material 0\n",
+ "5 Engineering Design Service 1\n",
+ "7 Supply and installation of Braithwaite Pitched... Service 1\n",
+ "8 Foundation & Structural Works Service 1\n",
+ "9 Borehole Drilling & Pipe Works Service 1\n",
+ "10 Procurement & Installation - Submersible Pump Service 1\n",
+ "11 Procurement & Installation - Booster Pump Service 1\n",
+ "12 Performance & Quality Testing Service 1\n",
+ "14 Shield, Citadel Fencing, Gates & Barb wires Material 0\n",
+ "15 Pre-Commissioning & Commissioning Service 1\n",
+ "16 Cashes Material 0\n",
+ "17 Demobilisation Service 1\n",
+ "18 Materials Material 0\n",
+ "19 Fire Fighting Equipment/Facilities Material 0\n",
+ "20 Purchase of fire truck Service 1\n",
+ "21 Purchase of water tanker Service 1\n",
+ "22 Fire Truck Material 0"
+ ],
+ "text/html": [
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Description | \n",
+ " Category | \n",
+ " encoded_cat | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " Seplat Soccer Tournament | \n",
+ " Service | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " Seplat Decluttering Exercise | \n",
+ " Service | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " Independent Fire Water Systems | \n",
+ " Material | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " Fire Extinguishers | \n",
+ " Material | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " Engineering Design | \n",
+ " Service | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " Supply and installation of Braithwaite Pitched... | \n",
+ " Service | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " Foundation & Structural Works | \n",
+ " Service | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " Borehole Drilling & Pipe Works | \n",
+ " Service | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 10 | \n",
+ " Procurement & Installation - Submersible Pump | \n",
+ " Service | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 11 | \n",
+ " Procurement & Installation - Booster Pump | \n",
+ " Service | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " Performance & Quality Testing | \n",
+ " Service | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 14 | \n",
+ " Shield, Citadel Fencing, Gates & Barb wires | \n",
+ " Material | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 15 | \n",
+ " Pre-Commissioning & Commissioning | \n",
+ " Service | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 16 | \n",
+ " Cashes | \n",
+ " Material | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 17 | \n",
+ " Demobilisation | \n",
+ " Service | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 18 | \n",
+ " Materials | \n",
+ " Material | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 19 | \n",
+ " Fire Fighting Equipment/Facilities | \n",
+ " Material | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 20 | \n",
+ " Purchase of fire truck | \n",
+ " Service | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 21 | \n",
+ " Purchase of water tanker | \n",
+ " Service | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 22 | \n",
+ " Fire Truck | \n",
+ " Material | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 8
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "data_texts = inventory_df[\"Description\"].to_list() # Features (not-tokenized yet)\n",
+ "data_labels = inventory_df[\"encoded_cat\"].to_list() # Lables"
+ ],
+ "metadata": {
+ "id": "tosKqNrXqFuo"
+ },
+ "execution_count": 9,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "from sklearn.model_selection import train_test_split\n",
+ "\n",
+ "# Split Train and Validation data\n",
+ "train_texts, val_texts, train_labels, val_labels = train_test_split(data_texts, data_labels, test_size=0.2, random_state=0, shuffle=True)\n",
+ "\n",
+ "# Keep some data for inference (testing)\n",
+ "train_texts, test_texts, train_labels, test_labels = train_test_split(train_texts, train_labels, test_size=0.01, random_state=0, shuffle=True)"
+ ],
+ "metadata": {
+ "id": "uKO-tVvjqPMw"
+ },
+ "execution_count": 10,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "tokenizer = DistilBertTokenizer.from_pretrained('distilbert-base-uncased')\n",
+ "train_encodings = tokenizer(train_texts, truncation=True, padding=True)\n",
+ "val_encodings = tokenizer(val_texts, truncation=True, padding=True)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 113,
+ "referenced_widgets": [
+ "0ad112e40250417e85f106bffa14df8f",
+ "7ab245d570624afba3926b35cc875b8e",
+ "da6859c90d2745c88632291a4ccd3d9e",
+ "327ed7c84f3346eca8af68188dcdf365",
+ "3cf0fd0b5af147fb8a99132a155513ea",
+ "d1374a3155744320b7f7f3ba961706fa",
+ "327bc27bfb1648c69f92721827768bc1",
+ "a6d43b466c844c9eae33583736916af2",
+ "c501c3a920174a2ea2c9a5bfcb6b7a3b",
+ "b1cd42c159864367a1853ef3d1a49d13",
+ "d137a213a2164e928a6d28c9e71d6e1a",
+ "3f323bc887d8491c9c27cb51141e1f37",
+ "2b7f6d4e6e2a4c10b294ebcf1e713091",
+ "07c73767acfb41378ae4ad9521f1b12e",
+ "a0275bf80859495aa4c930dda180fcd8",
+ "14c595fa8fa74d5097595c26e679601d",
+ "016ca35dedbd4058adccee79b6d85c48",
+ "9a2412467f9942ec931d5c9a5f4d1a1f",
+ "e66c88b720934062af8813019e7a6a97",
+ "f2f938ef23c747789bfe4e3f06430f15",
+ "c8530a14813e4283bb08e764cc27cfff",
+ "c5821978dab8402a83286767f2d7b616",
+ "2a4fc261dd2744be80de392346b77a13",
+ "904a8a6cdf7242a4b55d0f1440212275",
+ "b5ece9f04eab43d592afa62f96cb2c63",
+ "d777dbb81ace4eca97a21fb16d554b7b",
+ "32c19886fff849529aaf960cac7efb1a",
+ "2742b24a126743a5ac88260b1e102124",
+ "874129ba70634c40aeb1588d2e6224be",
+ "4d690563273a4eaa8bce398a9bd8dcb0",
+ "73adbaf455914f20bc4f6ac8529554ac",
+ "196c83b6729b4f2287fdec3e9946ceef",
+ "f56709e754e841b2bd064ad57b9d7d94"
+ ]
+ },
+ "id": "5mer7B1ZqWAz",
+ "outputId": "53fe23ee-c27e-4f4a-924c-1a94a05c018c"
+ },
+ "execution_count": 11,
+ "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": "0ad112e40250417e85f106bffa14df8f"
+ }
+ },
+ "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": "3f323bc887d8491c9c27cb51141e1f37"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "Downloading (…)lve/main/config.json: 0%| | 0.00/483 [00:00, ?B/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "2a4fc261dd2744be80de392346b77a13"
+ }
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "train_dataset = tf.data.Dataset.from_tensor_slices((\n",
+ " dict(train_encodings),\n",
+ " train_labels\n",
+ "))\n",
+ "val_dataset = tf.data.Dataset.from_tensor_slices((\n",
+ " dict(val_encodings),\n",
+ " val_labels\n",
+ "))"
+ ],
+ "metadata": {
+ "id": "-tDCGhDJqeJy"
+ },
+ "execution_count": 12,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "model = TFDistilBertForSequenceClassification.from_pretrained('distilbert-base-uncased', num_labels=5)\n",
+ "\n",
+ "#optimizer = tf.keras.optimizers.Adam(learning_rate=5e-5)\n",
+ "#model.compile(optimizer=optimizer, loss=model.compute_loss, metrics=['accuracy'])\n",
+ "\n",
+ "optimizer = tf.keras.optimizers.Adam(learning_rate=5e-5, epsilon=1e-08)\n",
+ "model.compile(optimizer=optimizer, loss=model.hf_compute_loss, metrics=['accuracy'])"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 156,
+ "referenced_widgets": [
+ "cf1b0f77ef2b453a8f76ae1119745524",
+ "a46d242751a44eccb1437dda335d28ed",
+ "05ea026dde10494fb1226c5d6c3f46df",
+ "66711c0ed00d425a89506ec809328673",
+ "10f4b09c00334451adc198d1dd2259e2",
+ "e1c5e918e422440191a2c3686bc36127",
+ "62c96581fb2c44a1b11ba5894e3ee209",
+ "2f31bd12b4d544119a9253aa4af77433",
+ "83720b19c7754f7ba71f165a5f6dcc3a",
+ "1a1e4affd3f94008b10e888fc0c8624a",
+ "3356c02482b04a4abc17e604f0853624"
+ ]
+ },
+ "id": "8OrrVtCwqjQE",
+ "outputId": "0b1439fc-2e13-4bd4-88c1-ed5cb0c13ee0"
+ },
+ "execution_count": 13,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "Downloading model.safetensors: 0%| | 0.00/268M [00:00, ?B/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "cf1b0f77ef2b453a8f76ae1119745524"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "Some weights of the PyTorch model were not used when initializing the TF 2.0 model TFDistilBertForSequenceClassification: ['vocab_projector.bias', 'vocab_layer_norm.bias', 'vocab_transform.weight', 'vocab_transform.bias', 'vocab_layer_norm.weight']\n",
+ "- This IS expected if you are initializing TFDistilBertForSequenceClassification from a PyTorch model trained on another task or with another architecture (e.g. initializing a TFBertForSequenceClassification model from a BertForPreTraining model).\n",
+ "- This IS NOT expected if you are initializing TFDistilBertForSequenceClassification from a PyTorch model that you expect to be exactly identical (e.g. initializing a TFBertForSequenceClassification model from a BertForSequenceClassification model).\n",
+ "Some weights or buffers of the TF 2.0 model TFDistilBertForSequenceClassification were not initialized from the PyTorch model and are newly initialized: ['pre_classifier.weight', 'pre_classifier.bias', '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"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "model.fit(train_dataset.shuffle(1000).batch(16), epochs=1, batch_size=16,\n",
+ " validation_data=val_dataset.shuffle(1000).batch(16))"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "NcAC1MRmqoMs",
+ "outputId": "49916d6b-e8e2-4d31-b54d-69d1c32c158e"
+ },
+ "execution_count": 40,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "1468/1468 [==============================] - 162s 110ms/step - loss: 0.0377 - accuracy: 0.9872 - val_loss: 0.1014 - val_accuracy: 0.9742\n"
+ ]
+ },
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "execution_count": 40
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "from tensorflow.keras.callbacks import EarlyStopping\n",
+ "\n",
+ "early_stopping = EarlyStopping(monitor='val_loss', patience=3, restore_best_weights=True)\n",
+ "\n",
+ "model.fit(train_dataset.shuffle(1000).batch(16),\n",
+ " epochs=3,\n",
+ " batch_size=16,\n",
+ " validation_data=val_dataset.shuffle(1000).batch(16),\n",
+ " callbacks=[early_stopping])\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "-xPU5Hqo6BmG",
+ "outputId": "a851c373-cbb3-41ea-d4a1-448f3f2d3ec1"
+ },
+ "execution_count": 46,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Epoch 1/3\n",
+ "1468/1468 [==============================] - 160s 109ms/step - loss: 0.0285 - accuracy: 0.9908 - val_loss: 0.1021 - val_accuracy: 0.9764\n",
+ "Epoch 2/3\n",
+ "1468/1468 [==============================] - 160s 109ms/step - loss: 0.0254 - accuracy: 0.9915 - val_loss: 0.0947 - val_accuracy: 0.9757\n",
+ "Epoch 3/3\n",
+ "1468/1468 [==============================] - 161s 110ms/step - loss: 0.0221 - accuracy: 0.9924 - val_loss: 0.1318 - val_accuracy: 0.9755\n"
+ ]
+ },
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "execution_count": 46
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# Display the model's architecture\n",
+ "model.summary()"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "Rv2UrAcczgQn",
+ "outputId": "a07b4512-2ed2-4dc5-b0b4-85142736424a"
+ },
+ "execution_count": 47,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Model: \"tf_distil_bert_for_sequence_classification\"\n",
+ "_________________________________________________________________\n",
+ " Layer (type) Output Shape Param # \n",
+ "=================================================================\n",
+ " distilbert (TFDistilBertMai multiple 66362880 \n",
+ " nLayer) \n",
+ " \n",
+ " pre_classifier (Dense) multiple 590592 \n",
+ " \n",
+ " classifier (Dense) multiple 3845 \n",
+ " \n",
+ " dropout_19 (Dropout) multiple 0 \n",
+ " \n",
+ "=================================================================\n",
+ "Total params: 66,957,317\n",
+ "Trainable params: 66,957,317\n",
+ "Non-trainable params: 0\n",
+ "_________________________________________________________________\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "from tensorflow.keras.models import load_model"
+ ],
+ "metadata": {
+ "id": "7RZZH0Rh0dfM"
+ },
+ "execution_count": 48,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "save_directory = \"/content/drive/MyDrive/Inventory/tensorflow_model_3\" # change this to your preferred location\n",
+ "\n",
+ "model.save_pretrained(save_directory)\n",
+ "tokenizer.save_pretrained(save_directory)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "lVtrG2kp0qPA",
+ "outputId": "f3b1a00e-314b-4892-cca1-23dda0c86cfc"
+ },
+ "execution_count": 49,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "('/content/drive/MyDrive/Inventory/tensorflow_model_3/tokenizer_config.json',\n",
+ " '/content/drive/MyDrive/Inventory/tensorflow_model_3/special_tokens_map.json',\n",
+ " '/content/drive/MyDrive/Inventory/tensorflow_model_3/vocab.txt',\n",
+ " '/content/drive/MyDrive/Inventory/tensorflow_model_3/added_tokens.json')"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 49
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "loaded_tokenizer = DistilBertTokenizer.from_pretrained(save_directory)\n",
+ "loaded_model = TFDistilBertForSequenceClassification.from_pretrained(save_directory)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "aU3bCMwJ07Qt",
+ "outputId": "08ae763b-4557-4023-de26-fb145d9eec02"
+ },
+ "execution_count": 50,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "Some layers from the model checkpoint at /content/drive/MyDrive/Inventory/tensorflow_model_3 were not used when initializing TFDistilBertForSequenceClassification: ['dropout_19']\n",
+ "- This IS expected if you are initializing TFDistilBertForSequenceClassification 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 TFDistilBertForSequenceClassification from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n",
+ "Some layers of TFDistilBertForSequenceClassification were not initialized from the model checkpoint at /content/drive/MyDrive/Inventory/tensorflow_model_3 and are newly initialized: ['dropout_59']\n",
+ "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "test_text = test_texts[10]\n",
+ "test_text"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ },
+ "id": "-lSXb0Z31Xgm",
+ "outputId": "36b6e1b6-0a4e-4d20-ee28-1e3aafa6de99"
+ },
+ "execution_count": 51,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "'Provide, Mix, Place And Compact Grade 40 Concrete Pile'"
+ ],
+ "application/vnd.google.colaboratory.intrinsic+json": {
+ "type": "string"
+ }
+ },
+ "metadata": {},
+ "execution_count": 51
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "test_text = ['Fire Truck']"
+ ],
+ "metadata": {
+ "id": "jxF2ph_v6jcd"
+ },
+ "execution_count": 60,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "predict_input = loaded_tokenizer.encode(test_text,\n",
+ " truncation=True,\n",
+ " padding=True,\n",
+ " return_tensors=\"tf\")\n",
+ "\n",
+ "output = loaded_model(predict_input)[0]\n",
+ "\n",
+ "prediction_value = tf.argmax(output, axis=1).numpy()[0]\n",
+ "prediction_value"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "lxDdupZ41rO5",
+ "outputId": "59fd370b-2ca2-4093-ee26-eda44cdbe91c"
+ },
+ "execution_count": 61,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "1"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 61
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "predict_input = loaded_tokenizer.encode(test_text,\n",
+ " truncation=True,\n",
+ " padding=True,\n",
+ " return_tensors=\"tf\")\n",
+ "\n",
+ "output = loaded_model(predict_input)[0]\n",
+ "\n",
+ "prediction_value = tf.argmax(output, axis=1).numpy()[0]\n",
+ "\n",
+ "# Convert numeric prediction to category label\n",
+ "if prediction_value == 0:\n",
+ " prediction_label = \"Material\"\n",
+ "else:\n",
+ " prediction_label = \"Service\" # Handle unexpected values if necessary\n",
+ "\n",
+ "print(\"Predicted Category:\", prediction_label)\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "QeTzY6Dr3CoQ",
+ "outputId": "a0b7bdca-1734-489f-8d42-d77b577eed2c"
+ },
+ "execution_count": 62,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Predicted Category: Service\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "def predict_category(text):\n",
+ "\n",
+ " predict_input = loaded_tokenizer.encode(text,\n",
+ " truncation=True,\n",
+ " padding=True,\n",
+ " return_tensors=\"tf\")\n",
+ "\n",
+ " output = loaded_model(predict_input)[0]\n",
+ "\n",
+ " prediction_value = tf.argmax(output, axis=1).numpy()[0]\n",
+ "\n",
+ " return prediction_value\n",
+ "# -----------------------------------------------------\n",
+ "y_pred = []\n",
+ "for texts in test_texts:\n",
+ " y_pred.append(predict_category(texts))\n",
+ "# -------------------------------------------\n",
+ "from sklearn.metrics import confusion_matrix\n",
+ "from sklearn.metrics import classification_report\n",
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "\n",
+ "confusion = confusion_matrix(test_labels, y_pred)\n",
+ "\n",
+ "plt.figure(figsize=(8, 6))\n",
+ "sns.set(font_scale=1.2)\n",
+ "sns.heatmap(confusion, annot=True, fmt=\"d\", cmap=\"Blues\", cbar=False, square=True,\n",
+ " xticklabels=[\"Material\", \"Service\"], yticklabels=[\"Material\", \"Service\"])\n",
+ "plt.xlabel('Predicted')\n",
+ "plt.ylabel('True')\n",
+ "plt.title('Confusion Matrix')\n",
+ "plt.show()"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 578
+ },
+ "id": "i1YHMGYpAnjj",
+ "outputId": "b5ebd2f8-a567-4dcb-9ae6-8bb42d5646a5"
+ },
+ "execution_count": 63,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhkAAAIxCAYAAADg5arQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABFJklEQVR4nO3deXxN1/7/8feRiCCGxJwQgp4TxBjzkBKqVTTmWyrodKsVbsdbWh1uJ7+2OhFVbl0zrSnGltZQU81cQ1FKDYmpSUwhkWn//nBzvj1yEJGdc1Kv5+PRR5211t77cyLkba2197EYhmEIAAAgjxVydQEAAOCviZABAABMQcgAAACmIGQAAABTEDIAAIApCBkAAMAUhAwAAGAKQgYAADAFIQMAAJiCkAHcg6ZNm6aHH35Y9erVk81m05QpU0y/Znh4uMLDw02/zr3AZrMpMjLS1WUAt0XIAEx05MgRvfvuu+rSpYtCQ0MVEhKi1q1b6+9//7vmzp2r1NTUfK9p2bJlev/991WkSBENHDhQUVFRatCgQb7X4Q7Cw8Nls9lks9m0adOmm44bMWKEfdzYsWPv6ppbtmzJk/MABYGnqwsA/qqio6M1btw4ZWZmqmHDhurevbuKFSum+Ph4bd26VSNHjtTs2bO1YMGCfK1rzZo1kqSvvvpKFSpUyLfr5sdsSW55enpq3rx5atGiRba+pKQkff/99/L09FR6eroLqsvuu+++U9GiRV1dBnBbhAzABF999ZXGjh2rSpUq6YsvvlD9+vWzjVmzZo3+85//5Htt586dk6R8DRiSFBgYmK/XuxNt27bVDz/8oPPnz8vX19ehb/HixUpOTtYDDzygH3/80UUVOqpRo4arSwByhOUSII/FxsYqOjpahQsX1sSJE50GDElq166dJk2alK39u+++02OPPabQ0FDVq1dPXbt21YQJE5wurWTtc7h69ao+/PBDtW3bViEhIXrggQc0ceJE/flDlseOHSubzaYtW7ZIkn3632az2eu22WwaPny403ojIyPtY7MYhqGYmBg9+uijat68uerWrav7779fTz75pL777juntd4oNTVVEydOVNeuXVW/fn01atRI/fr1y3b8jTXGxsbqhRdeULNmzVS3bl316NHDPktzp/r06aPU1FQtWrQoW9/cuXNVqVIltWnTxumxv//+u0aPHq0ePXqoefPm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/R48eFB///vf1aRJE4WGhkq6+Z6MWbNm6cknn1RYWJhCQkLUokULDR06VIcOHcr9Fw3IJ8eOHZMktWjRwml/uXLlHF6fOHFCw4cPV+vWrRUSEqKwsDC9/fbbSkxMdBg3duxY2Ww2/fbbb/roo4/Url071a1bV99//7369u2r0NBQpaSkZLve6dOnVatWLb3yyiv2tpvtyTh48KBefPFFey1t2rTRs88+q3379uWqZuQPZjKQ53r37q3XXntNv/76q2w2myRp0aJFysjIUM+ePbV161aH8Vu3btWWLVvUtm1bVa5cWampqVq7dq0++ugjnTx5Um+//bak67Mk6enp+uqrr/S3v/3NHgjKli1rP9eYMWM0btw4NWvWTFFRUSpSpIg2bNigkSNH6vjx43r55Zcdrn369GlFRkaqQ4cOevHFFxUfH3/L9/b111+rfv36euyxx+Tr66tjx45p3rx52rhxoxYuXKjAwMC7/fIBpsn6/lywYIFefvlleXre/EfAgQMHFBkZKW9vb/Xs2VMBAQE6duyYZs+erU2bNmnevHkqUaKEwzEvv/yyPDw81K9fPxUrVkxBQUHq0aOHRo4cqR9++EGPPPKIw/iYmBhlZmaqR48et6x77dq1ioqKUuHChdWrVy9Vr15dFy5c0LZt27Rr1y6FhITkumaYzADywObNmw2r1WqMGzfOuHLlitGwYUPjvffes/c//PDDxhNPPGEYhmH079/fqFWrlr3vypUrTs/54osvGrVq1TLOnTuX7Trz58/PNv6XX34xbDab8e6772bre+edd4zg4GDjxIkT9rZ27doZVqvVmDVrVrbxJ0+eNKxWqzFmzBiHdme1Hjp0yKhTp47x9ttvO7T379/faNeundP3BrjCiRMnjNDQUMNqtRotWrQwhg4dakycONHYvn27kZGR4TA2IiLCCA8PN86fP+/Qvnv3bqNWrVrG2LFj7W1jxowxrFar0bdvXyM1NdVh/OXLl4369esbgwYNylbPAw88YLRr187IzMy0t7Vr187o37+//fXVq1eN5s2bG6GhoQ5/frP8ue47qRn5g+US5LlixYqpc+fOWrx4sVJTU7Vz50799ttv6tWr103HZ0lNTdWFCxeUmJioNm3aKCMjI9t06M0sWbJEhmGoV69eSkxMdPgvPDxcmZmZ+vnnnx2OKV26tPr06XNH7026fqdM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\n"
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "print(classification_report(test_labels, y_pred))"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "JsW6r9DnCrfV",
+ "outputId": "fea175c7-4c8e-4b47-abbb-5305c7762067"
+ },
+ "execution_count": 66,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " precision recall f1-score support\n",
+ "\n",
+ " 0 1.00 0.98 0.99 95\n",
+ " 1 0.99 1.00 0.99 143\n",
+ "\n",
+ " accuracy 0.99 238\n",
+ " macro avg 0.99 0.99 0.99 238\n",
+ "weighted avg 0.99 0.99 0.99 238\n",
+ "\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# Create a new column in the original DataFrame\n",
+ "inventory_df['Predictions'] = prediction_value"
+ ],
+ "metadata": {
+ "id": "7-0ABls45jfC"
+ },
+ "execution_count": 67,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "inventory_df.head(50)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ },
+ "id": "ZXxMG3rxEriH",
+ "outputId": "802b6258-93d6-42ef-dc20-52db3046d192"
+ },
+ "execution_count": 69,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ " Description Category encoded_cat \\\n",
+ "0 Seplat Soccer Tournament Service 1 \n",
+ "1 Seplat Decluttering Exercise Service 1 \n",
+ "2 Independent Fire Water Systems Material 0 \n",
+ "3 Fire Extinguishers Material 0 \n",
+ "5 Engineering Design Service 1 \n",
+ "7 Supply and installation of Braithwaite Pitched... Service 1 \n",
+ "8 Foundation & Structural Works Service 1 \n",
+ "9 Borehole Drilling & Pipe Works Service 1 \n",
+ "10 Procurement & Installation - Submersible Pump Service 1 \n",
+ "11 Procurement & Installation - Booster Pump Service 1 \n",
+ "12 Performance & Quality Testing Service 1 \n",
+ "14 Shield, Citadel Fencing, Gates & Barb wires Material 0 \n",
+ "15 Pre-Commissioning & Commissioning Service 1 \n",
+ "16 Cashes Material 0 \n",
+ "17 Demobilisation Service 1 \n",
+ "18 Materials Material 0 \n",
+ "19 Fire Fighting Equipment/Facilities Material 0 \n",
+ "20 Purchase of fire truck Service 1 \n",
+ "21 Purchase of water tanker Service 1 \n",
+ "22 Fire Truck Material 0 \n",
+ "23 Rapid Intervention Vehicle Material 0 \n",
+ "24 Water tanker Material 0 \n",
+ "25 Custom & Excise duties (if applicable) Service 1 \n",
+ "26 Frieighting/Shipping Cost (if applicable) Service 1 \n",
+ "27 Factory Acceptance Test Service 1 \n",
+ "28 Location Acceptance Test Service 1 \n",
+ "29 Two years maintenance spares (note 1) Service 1 \n",
+ "30 Other Taxes (if applicable) Service 1 \n",
+ "31 Fire Hose Material 0 \n",
+ "32 Diffuser branch pipe Material 0 \n",
+ "33 Foam making branch pipe Material 0 \n",
+ "34 Fire Bat Material 0 \n",
+ "35 Procure – 6kg DCP Fire Extinguisher Service 1 \n",
+ "36 Procure – 9kg DCP Fire Extinguisher Service 1 \n",
+ "37 Procure – 50kg DCP Fire Extinguisher Service 1 \n",
+ "38 Procure – 75kg DCP Fire Extinguisher Service 1 \n",
+ "39 Procure – 5kg CO2 Fire Extinguisher Service 1 \n",
+ "40 Procure – 12kg DCP Fire Extinguisher Service 1 \n",
+ "41 Uninterrupted Power Supply (UPS) Material 0 \n",
+ "42 Conventional smoke detector Material 0 \n",
+ "43 Conventional heat detector Material 0 \n",
+ "44 Conventional MCP ( Manual Call Point ) Material 0 \n",
+ "45 Conventional sounder strobe/ bell Material 0 \n",
+ "46 Fire resistant cable for the installation/ int... Material 0 \n",
+ "48 Screw nails for fixing of trucking Material 0 \n",
+ "49 Fishing peg for fixing of trucking Material 0 \n",
+ "50 Termination boxes for alarm connection Material 0 \n",
+ "51 Conventional 4 zone GST fire alarm panel Material 0 \n",
+ "52 Purchase of new manual winding alarm siring bl... Service 1 \n",
+ "54 25 meters Automatic retractable Fire hose reel Material 0 \n",
+ "\n",
+ " Predictions \n",
+ "0 1 \n",
+ "1 1 \n",
+ "2 1 \n",
+ "3 1 \n",
+ "5 1 \n",
+ "7 1 \n",
+ "8 1 \n",
+ "9 1 \n",
+ "10 1 \n",
+ "11 1 \n",
+ "12 1 \n",
+ "14 1 \n",
+ "15 1 \n",
+ "16 1 \n",
+ "17 1 \n",
+ "18 1 \n",
+ "19 1 \n",
+ "20 1 \n",
+ "21 1 \n",
+ "22 1 \n",
+ "23 1 \n",
+ "24 1 \n",
+ "25 1 \n",
+ "26 1 \n",
+ "27 1 \n",
+ "28 1 \n",
+ "29 1 \n",
+ "30 1 \n",
+ "31 1 \n",
+ "32 1 \n",
+ "33 1 \n",
+ "34 1 \n",
+ "35 1 \n",
+ "36 1 \n",
+ "37 1 \n",
+ "38 1 \n",
+ "39 1 \n",
+ "40 1 \n",
+ "41 1 \n",
+ "42 1 \n",
+ "43 1 \n",
+ "44 1 \n",
+ "45 1 \n",
+ "46 1 \n",
+ "48 1 \n",
+ "49 1 \n",
+ "50 1 \n",
+ "51 1 \n",
+ "52 1 \n",
+ "54 1 "
+ ],
+ "text/html": [
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Description | \n",
+ " Category | \n",
+ " encoded_cat | \n",
+ " Predictions | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " Seplat Soccer Tournament | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " Seplat Decluttering Exercise | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " Independent Fire Water Systems | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " Fire Extinguishers | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " Engineering Design | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " Supply and installation of Braithwaite Pitched... | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " Foundation & Structural Works | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " Borehole Drilling & Pipe Works | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 10 | \n",
+ " Procurement & Installation - Submersible Pump | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 11 | \n",
+ " Procurement & Installation - Booster Pump | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " Performance & Quality Testing | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 14 | \n",
+ " Shield, Citadel Fencing, Gates & Barb wires | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 15 | \n",
+ " Pre-Commissioning & Commissioning | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 16 | \n",
+ " Cashes | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 17 | \n",
+ " Demobilisation | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 18 | \n",
+ " Materials | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 19 | \n",
+ " Fire Fighting Equipment/Facilities | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 20 | \n",
+ " Purchase of fire truck | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 21 | \n",
+ " Purchase of water tanker | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 22 | \n",
+ " Fire Truck | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 23 | \n",
+ " Rapid Intervention Vehicle | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 24 | \n",
+ " Water tanker | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 25 | \n",
+ " Custom & Excise duties (if applicable) | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 26 | \n",
+ " Frieighting/Shipping Cost (if applicable) | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 27 | \n",
+ " Factory Acceptance Test | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 28 | \n",
+ " Location Acceptance Test | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 29 | \n",
+ " Two years maintenance spares (note 1) | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 30 | \n",
+ " Other Taxes (if applicable) | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 31 | \n",
+ " Fire Hose | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 32 | \n",
+ " Diffuser branch pipe | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 33 | \n",
+ " Foam making branch pipe | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 34 | \n",
+ " Fire Bat | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 35 | \n",
+ " Procure – 6kg DCP Fire Extinguisher | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 36 | \n",
+ " Procure – 9kg DCP Fire Extinguisher | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 37 | \n",
+ " Procure – 50kg DCP Fire Extinguisher | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 38 | \n",
+ " Procure – 75kg DCP Fire Extinguisher | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 39 | \n",
+ " Procure – 5kg CO2 Fire Extinguisher | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 40 | \n",
+ " Procure – 12kg DCP Fire Extinguisher | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 41 | \n",
+ " Uninterrupted Power Supply (UPS) | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 42 | \n",
+ " Conventional smoke detector | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 43 | \n",
+ " Conventional heat detector | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 44 | \n",
+ " Conventional MCP ( Manual Call Point ) | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 45 | \n",
+ " Conventional sounder strobe/ bell | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 46 | \n",
+ " Fire resistant cable for the installation/ int... | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 48 | \n",
+ " Screw nails for fixing of trucking | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 49 | \n",
+ " Fishing peg for fixing of trucking | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 50 | \n",
+ " Termination boxes for alarm connection | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 51 | \n",
+ " Conventional 4 zone GST fire alarm panel | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 52 | \n",
+ " Purchase of new manual winding alarm siring bl... | \n",
+ " Service | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 54 | \n",
+ " 25 meters Automatic retractable Fire hose reel | \n",
+ " Material | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 69
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "from transformers import TFDistilBertForSequenceClassification, TFTrainer, TFTrainingArguments\n",
+ "\n",
+ "training_args = TFTrainingArguments(\n",
+ " output_dir='./results', # output directory\n",
+ " num_train_epochs=3, # total number of training epochs\n",
+ " per_device_train_batch_size=16, # batch size per device during training\n",
+ " per_device_eval_batch_size=64, # batch size for evaluation\n",
+ " warmup_steps=500, # number of warmup steps for learning rate scheduler\n",
+ " weight_decay=0.01, # strength of weight decay\n",
+ " eval_steps = 10,\n",
+ " logging_dir='./logs', # directory for storing logs\n",
+ ")\n",
+ "\n",
+ "with training_args.strategy.scope():\n",
+ " trainer_model = TFDistilBertForSequenceClassification.from_pretrained(\"distilbert-base-uncased\", num_labels=2)\n",
+ "\n",
+ "trainer = TFTrainer(\n",
+ " model=trainer_model, # the instantiated 🤗 Transformers model to be trained\n",
+ " args=training_args, # training arguments, defined above\n",
+ " train_dataset=train_dataset, # training dataset\n",
+ " eval_dataset=val_dataset, # evaluation dataset\n",
+ ")"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "zs8uB4PpF-_F",
+ "outputId": "13e5614d-32bf-4f31-987c-9cc386fcf248"
+ },
+ "execution_count": 74,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "Some weights of the PyTorch model were not used when initializing the TF 2.0 model TFDistilBertForSequenceClassification: ['vocab_projector.bias', 'vocab_layer_norm.bias', 'vocab_transform.weight', 'vocab_transform.bias', 'vocab_layer_norm.weight']\n",
+ "- This IS expected if you are initializing TFDistilBertForSequenceClassification from a PyTorch model trained on another task or with another architecture (e.g. initializing a TFBertForSequenceClassification model from a BertForPreTraining model).\n",
+ "- This IS NOT expected if you are initializing TFDistilBertForSequenceClassification from a PyTorch model that you expect to be exactly identical (e.g. initializing a TFBertForSequenceClassification model from a BertForSequenceClassification model).\n",
+ "Some weights or buffers of the TF 2.0 model TFDistilBertForSequenceClassification were not initialized from the PyTorch model and are newly initialized: ['pre_classifier.weight', 'pre_classifier.bias', '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"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "trainer.train()"
+ ],
+ "metadata": {
+ "id": "4HzbWwdLF_r8"
+ },
+ "execution_count": 75,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "trainer.evaluate()"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "zzlYOo3DIoSi",
+ "outputId": "22167e9f-b636-4c2d-8c66-4bb80054a8e4"
+ },
+ "execution_count": 76,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "{'eval_loss': 0.06668269249700731}"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 76
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "save_directory = \"/content/drive/MyDrive/Inventory/transformers_model_1\" # change this to your preferred location\n",
+ "\n",
+ "model.save_pretrained(save_directory)\n",
+ "tokenizer.save_pretrained(save_directory)"
+ ],
+ "metadata": {
+ "id": "_U5tIDqVIu9E"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "loaded_tokenizer = DistilBertTokenizer.from_pretrained(save_directory)\n",
+ "loaded_model = TFDistilBertForSequenceClassification.from_pretrained(save_directory)"
+ ],
+ "metadata": {
+ "id": "P9v0bRnuIxnP"
+ },
+ "execution_count": null,
+ "outputs": []
+ }
+ ]
+}
\ No newline at end of file