From b3c95a095e89b5c370a4094a29b25c2b7edaaf60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=A2=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D1=88=D0=BA=D0=B8=D0=BD?= Date: Fri, 21 Aug 2020 17:02:20 +0300 Subject: [PATCH 1/8] Example of applying different calibration methods --- examples/calibration_example.ipynb | 2361 ++++++++++++++++++++++++++++ examples/calibrator.py | 211 +++ 2 files changed, 2572 insertions(+) create mode 100644 examples/calibration_example.ipynb create mode 100644 examples/calibrator.py diff --git a/examples/calibration_example.ipynb b/examples/calibration_example.ipynb new file mode 100644 index 0000000..f9e6227 --- /dev/null +++ b/examples/calibration_example.ipynb @@ -0,0 +1,2361 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "s0rU2DMvB2rL", + "outputId": "b11f83ea-ae50-4f8e-92a4-0d585da2f5be" + }, + "outputs": [], + "source": [ + "from sklearn.metrics import accuracy_score\n", + "from scipy.special import softmax\n", + "import calibrator\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn.neural_network import MLPClassifier\n", + "from sklearn.calibration import calibration_curve\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000, + "referenced_widgets": [ + "2605521ec37f472ebaeb2799fc46089a", + "f4c70bba269d41cb96b367a43a631101", + "90e51de3af9d4229954ab79f37c54cc6", + "2021df306ed24407a4ff1bd82e76e362", + "c2c2b28ffcae4bf29973bb229a663da3", + "94fe1defabd84e3a8d31f398aeaf1455", + "74fe43c41e4e44e2a056ad4be5049b15", + "03a97f04bff24445aabefab880090c1d", + "98f2dec55ec849159f11c39d8e571a21", + "52ad99e656bc4250860c3a1311d2a9f7", + "c27bad5e677145ddbde522c60e2ed8dc", + "2b1ca6e174244613a6f0d28cae86e062", + "23306e469c1342b9921883cf33502298", + "9263135419074499a42e519958ed514a", + "d0f0ddf54ce44f1c94102f4e2886577b", + "0fb8018df1aa494fad22dc2c7d5b362a", + "3029888588d147b39e6b4f717deae371", + "b69493770ce146cf95021c5eb5485663", + "53bb10ce211e4f95ba6b86ba2a4d95a6", + "703ccda695f942fba0a3258aa898f6c6", + "de3041298f1e496d93a8d58259cd7009", + "b6689d61d6604d8981d446c538fbd44f", + "bf4b53705de44e05b212085a8723ae31", + "095c7234f6624fd090682345c3419461", + "8311832c092341c1963e71eecd0c9f3e", + "6260bc4300cb4ef38a897da8ec8503ef", + "831c246f4c684b468a9962bcf52efe39", + "b41feee7e2264f8c9ad76a5784ec7cf6", + "fb2bc264a3ae41028b3d7bcabdfcc009", + "05f0a259a8d643c1ae85ecde57be4981", + "a62076915dff4b0abcc3307a2b3b4ffc", + "2413687b3e824347b33462e8222a230e", + "07f3a89ab0bb42b996823d214108165f", + "4c4a321ee4404abf8c383f0f00c53c47", + "3e383346a83d4c749f370c07f1e8fc77", + "d6ad79f1ff934926884a149184ea2731", + "f95b3d10c84f400faa38c4396870d859", + "c5fbb54c30174247a4b890e22a96cd15", + "b88c1492f693487fac766549af9c01b2", + "0a2030350dfd4acf99ee17c4eed68e2f", + "0ad831aad7824ec091425990a06637e8", + "e19703e30eb64365905ffbc76f8a84b5", + "d249b11abfcd49bbbf94e62b5947bd23", + "4b0772320cf84e36b406a1dd5fd813fe", + "59f6ddd1dfcb445a8fa9f2cc9a9eaf8b", + "a4bc6f0e24fb4242b5536d0906810dc1", + "547d771bf7d146a19ef02a463c28a496", + "3d828824ed0e4471bdf68091ef28fbe6", + "1ac9045696724c06bf4642af013d36e4", + "94c46ff9437b46899e8876c09d0c82fe", + "d416605b18cc46658e89c1d4cb42fe46", + "f441a485f679429c84c099e17e945da3", + "29afad3a94774993a0f437e4ac2f9e2a", + "f7f30d82a72146be891adeb94eeabfc3", + "8cf16a3e63e3413a9b873711757595d0", + "3f677cdc4469460c852fe4d9a6979869" + ] + }, + "colab_type": "code", + "id": "ygJyUrpkB2rR", + "outputId": "2eb7ae89-c6a2-454f-8f91-ca05c6a6cf3c" + }, + "outputs": [], + "source": [ + "test_data = pd.read_csv('mnist_test.csv')\n", + "train_data = pd.read_csv('mnist_train.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "I5XO9RDjB2rU" + }, + "outputs": [], + "source": [ + "y_test = test_data['label']\n", + "y_train = train_data['label'][0:48000]\n", + "X_test = test_data.drop(columns=['label'])\n", + "X_train = train_data.drop(columns=['label'])\n", + "X_train = X_train[0:48000][:]\n", + "cal = train_data[48000:][:]\n", + "y_cal = cal['label']\n", + "X_cal = cal.drop(columns=['label'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 153 + }, + "colab_type": "code", + "id": "8qM2NebHB2ra", + "outputId": "eaea1671-b680-489a-8cb6-68a734ab759e" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "MLPClassifier(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9,\n", + " beta_2=0.999, early_stopping=False, epsilon=1e-08,\n", + " hidden_layer_sizes=(100, 100), learning_rate='constant',\n", + " learning_rate_init=0.001, max_fun=15000, max_iter=300,\n", + " momentum=0.9, n_iter_no_change=10, nesterovs_momentum=True,\n", + " power_t=0.5, random_state=1, shuffle=True, solver='adam',\n", + " tol=0.0001, validation_fraction=0.1, verbose=False,\n", + " warm_start=False)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "clf = MLPClassifier((100, 100,), max_iter=300, random_state=1)\n", + "clf.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "5hBUkdNCHyAs" + }, + "outputs": [], + "source": [ + "clf.out_activation_ = 'identity'\n", + "logits = clf.predict_proba(X_cal)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "0Qp6L3N8IC-c" + }, + "outputs": [], + "source": [ + "calibr = calibrator.Calibrator(logits, y_cal)" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "nkE0lL29Jo6T", + "outputId": "9e845720-4268-4709-ef4e-e7b0998f61f2" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([0.0244])" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test_logits = clf.predict_proba(X_test)\n", + "test_preds = softmax(test_logits, axis=1)\n", + "calibr.compute_ece(15, test_logits, y_test.to_numpy(), len(y_test))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "McvVpiIqR6Nj", + "outputId": "ed044e56-c766-457d-942a-7af91ac419f8" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor(0.0211, dtype=torch.float64)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calibr.ComputeTace(0.9, test_data, test_logits, 15, 'label')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([0.0025])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calibr.compute_sce(15, 'label', test_logits, test_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor(0.0251, dtype=torch.float64)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calibr.ComputeAce(15, test_data, 'label', test_logits)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "rUPNsBe5WHet", + "outputId": "52673060-ebb3-4b6f-8dc9-f3d38ed980ef" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([0.0148])" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calibr.TemperatureScaling()\n", + "new_logits = calibr.scale_logits_with_temperature(test_logits).detach().numpy()\n", + "calibr.compute_ece(15, new_logits, y_test.to_numpy(), len(y_test))" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor(0.0092, dtype=torch.float64)" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calibr.ComputeTace(0.9, test_data, new_logits, 15, 'label')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor(0.0231, dtype=torch.float64)" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calibr.ComputeAce(15, test_data, 'label', new_logits)" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([0.0021])" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calibr.compute_sce(15, 'label', new_logits, test_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.01349574089747102" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_probs = calibrator.multiclass_histogram_binning(15, logits, y_cal.to_numpy(), test_logits)\n", + "\n", + "def SplitIntoBins(m, preds, labels):\n", + " bins = []\n", + " true_labels_for_bins = []\n", + " for i in range(m):\n", + " bins.append([])\n", + " true_labels_for_bins.append([])\n", + " for j in range(len(labels)):\n", + " max_p = max(preds[j])\n", + " for i in range(m):\n", + " if i/m < max_p and max_p <= (i+1)/m:\n", + " bins[i].append((preds[j]))\n", + " true_labels_for_bins[i].append(labels[j])\n", + " return bins, true_labels_for_bins\n", + "\n", + "def ComputeEce(m, preds, labels):\n", + " bins, true_labels_for_bins = SplitIntoBins(m, preds, labels)\n", + " accuracies = []\n", + " confidences = []\n", + " ece = 0\n", + " bins = list(filter(None, bins))\n", + " true_labels_for_bins = list(filter(None, true_labels_for_bins))\n", + " for i in range(len(bins)):\n", + " accuracy = accuracy_score(true_labels_for_bins[i], np.argmax(bins[i], axis=1))\n", + " accuracies.append(accuracy)\n", + " max_pi = sum(np.amax(bins[i], axis = 1))\n", + " confidences.append(max_pi/len(bins[i]))\n", + " ece += len(bins[i]) * abs(accuracies[i] - confidences[i])/2897\n", + " return ece\n", + "ComputeEce(15, new_probs, y_test.to_numpy())" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 85 + }, + "colab_type": "code", + "id": "uUSoNf8XoWHp", + "outputId": "0a716825-bf17-4344-92c6-54dec28aba40" + }, + "outputs": [], + "source": [ + "y_true = []\n", + "for i in range(10):\n", + " y_true.append([])\n", + "for i in range(10):\n", + " for label in y_test:\n", + " if label == i:\n", + " y_true[i].append(1)\n", + " else:\n", + " y_true[i].append(0) " + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "gpigDxzW1NzT", + "outputId": "ee75b408-7706-4a8d-b897-9d2b5e951606" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "new_predictions = np.transpose(softmax(new_logits, axis=1))\n", + "for i in range(10):\n", + " fop, mpv = calibration_curve(y_true[i], new_predictions[i])\n", + " plt.plot([0, 1], [0, 1], linestyle='--')\n", + " plt.plot(mpv, fop, marker='.')\n", + " plt.show() " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calibr.MatrixScaling()\n", + "new_logits = calibr.matrix_scaling_logits(test_logits).detach().numpy()\n", + "calibr.compute_ece(15, new_logits, y_test.to_numpy(), len(y_test))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calibr.VectorScaling()\n", + "new_logits = calibr.vector_scaling_logits(test_logits).detach().numpy()\n", + "calibr.compute_ece(15, new_logits, y_test.to_numpy(), len(y_test))" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [], + "name": "test_2.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "03a97f04bff24445aabefab880090c1d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "05f0a259a8d643c1ae85ecde57be4981": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "07f3a89ab0bb42b996823d214108165f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_3e383346a83d4c749f370c07f1e8fc77", + "IPY_MODEL_d6ad79f1ff934926884a149184ea2731" + ], + "layout": "IPY_MODEL_4c4a321ee4404abf8c383f0f00c53c47" + } + }, + "095c7234f6624fd090682345c3419461": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0a2030350dfd4acf99ee17c4eed68e2f": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0ad831aad7824ec091425990a06637e8": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_d249b11abfcd49bbbf94e62b5947bd23", + "IPY_MODEL_4b0772320cf84e36b406a1dd5fd813fe" + ], + "layout": "IPY_MODEL_e19703e30eb64365905ffbc76f8a84b5" + } + }, + "0fb8018df1aa494fad22dc2c7d5b362a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1ac9045696724c06bf4642af013d36e4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_d416605b18cc46658e89c1d4cb42fe46", + "IPY_MODEL_f441a485f679429c84c099e17e945da3" + ], + "layout": "IPY_MODEL_94c46ff9437b46899e8876c09d0c82fe" + } + }, + "2021df306ed24407a4ff1bd82e76e362": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_03a97f04bff24445aabefab880090c1d", + "placeholder": "​", + "style": "IPY_MODEL_74fe43c41e4e44e2a056ad4be5049b15", + "value": " 1/1 [00:08<00:00, 8.31s/ url]" + } + }, + "23306e469c1342b9921883cf33502298": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "initial" + } + }, + "2413687b3e824347b33462e8222a230e": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2605521ec37f472ebaeb2799fc46089a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_90e51de3af9d4229954ab79f37c54cc6", + "IPY_MODEL_2021df306ed24407a4ff1bd82e76e362" + ], + "layout": "IPY_MODEL_f4c70bba269d41cb96b367a43a631101" + } + }, + "29afad3a94774993a0f437e4ac2f9e2a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "initial" + } + }, + "2b1ca6e174244613a6f0d28cae86e062": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0fb8018df1aa494fad22dc2c7d5b362a", + "placeholder": "​", + "style": "IPY_MODEL_d0f0ddf54ce44f1c94102f4e2886577b", + "value": " 162/162 [00:08<00:00, 19.57 MiB/s]" + } + }, + "3029888588d147b39e6b4f717deae371": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_53bb10ce211e4f95ba6b86ba2a4d95a6", + "IPY_MODEL_703ccda695f942fba0a3258aa898f6c6" + ], + "layout": "IPY_MODEL_b69493770ce146cf95021c5eb5485663" + } + }, + "3d828824ed0e4471bdf68091ef28fbe6": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3e383346a83d4c749f370c07f1e8fc77": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "danger", + "description": " 93%", + "description_tooltip": null, + "layout": "IPY_MODEL_c5fbb54c30174247a4b890e22a96cd15", + "max": 50000, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f95b3d10c84f400faa38c4396870d859", + "value": 46587 + } + }, + "3f677cdc4469460c852fe4d9a6979869": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4b0772320cf84e36b406a1dd5fd813fe": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3d828824ed0e4471bdf68091ef28fbe6", + "placeholder": "​", + "style": "IPY_MODEL_547d771bf7d146a19ef02a463c28a496", + "value": " 10000/0 [00:05<00:00, 1932.34 examples/s]" + } + }, + "4c4a321ee4404abf8c383f0f00c53c47": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "52ad99e656bc4250860c3a1311d2a9f7": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "53bb10ce211e4f95ba6b86ba2a4d95a6": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "Extraction completed...: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_b6689d61d6604d8981d446c538fbd44f", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_de3041298f1e496d93a8d58259cd7009", + "value": 1 + } + }, + "547d771bf7d146a19ef02a463c28a496": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "59f6ddd1dfcb445a8fa9f2cc9a9eaf8b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "initial" + } + }, + "6260bc4300cb4ef38a897da8ec8503ef": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "703ccda695f942fba0a3258aa898f6c6": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_095c7234f6624fd090682345c3419461", + "placeholder": "​", + "style": "IPY_MODEL_bf4b53705de44e05b212085a8723ae31", + "value": " 1/1 [00:08<00:00, 8.24s/ file]" + } + }, + "74fe43c41e4e44e2a056ad4be5049b15": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "8311832c092341c1963e71eecd0c9f3e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_831c246f4c684b468a9962bcf52efe39", + "IPY_MODEL_b41feee7e2264f8c9ad76a5784ec7cf6" + ], + "layout": "IPY_MODEL_6260bc4300cb4ef38a897da8ec8503ef" + } + }, + "831c246f4c684b468a9962bcf52efe39": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "info", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_05f0a259a8d643c1ae85ecde57be4981", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_fb2bc264a3ae41028b3d7bcabdfcc009", + "value": 1 + } + }, + "8cf16a3e63e3413a9b873711757595d0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "90e51de3af9d4229954ab79f37c54cc6": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "Dl Completed...: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_94fe1defabd84e3a8d31f398aeaf1455", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c2c2b28ffcae4bf29973bb229a663da3", + "value": 1 + } + }, + "9263135419074499a42e519958ed514a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "94c46ff9437b46899e8876c09d0c82fe": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "94fe1defabd84e3a8d31f398aeaf1455": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "98f2dec55ec849159f11c39d8e571a21": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c27bad5e677145ddbde522c60e2ed8dc", + "IPY_MODEL_2b1ca6e174244613a6f0d28cae86e062" + ], + "layout": "IPY_MODEL_52ad99e656bc4250860c3a1311d2a9f7" + } + }, + "a4bc6f0e24fb4242b5536d0906810dc1": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a62076915dff4b0abcc3307a2b3b4ffc": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "b41feee7e2264f8c9ad76a5784ec7cf6": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_2413687b3e824347b33462e8222a230e", + "placeholder": "​", + "style": "IPY_MODEL_a62076915dff4b0abcc3307a2b3b4ffc", + "value": " 50000/0 [00:40<00:00, 1950.23 examples/s]" + } + }, + "b6689d61d6604d8981d446c538fbd44f": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b69493770ce146cf95021c5eb5485663": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b88c1492f693487fac766549af9c01b2": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "bf4b53705de44e05b212085a8723ae31": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "c27bad5e677145ddbde522c60e2ed8dc": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "Dl Size...: 100%", + "description_tooltip": null, + "layout": "IPY_MODEL_9263135419074499a42e519958ed514a", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_23306e469c1342b9921883cf33502298", + "value": 1 + } + }, + "c2c2b28ffcae4bf29973bb229a663da3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "initial" + } + }, + "c5fbb54c30174247a4b890e22a96cd15": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d0f0ddf54ce44f1c94102f4e2886577b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d249b11abfcd49bbbf94e62b5947bd23": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "info", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a4bc6f0e24fb4242b5536d0906810dc1", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_59f6ddd1dfcb445a8fa9f2cc9a9eaf8b", + "value": 1 + } + }, + "d416605b18cc46658e89c1d4cb42fe46": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "danger", + "description": " 0%", + "description_tooltip": null, + "layout": "IPY_MODEL_f7f30d82a72146be891adeb94eeabfc3", + "max": 10000, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_29afad3a94774993a0f437e4ac2f9e2a", + "value": 0 + } + }, + "d6ad79f1ff934926884a149184ea2731": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0a2030350dfd4acf99ee17c4eed68e2f", + "placeholder": "​", + "style": "IPY_MODEL_b88c1492f693487fac766549af9c01b2", + "value": " 46587/50000 [00:00<00:00, 101478.06 examples/s]" + } + }, + "de3041298f1e496d93a8d58259cd7009": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "initial" + } + }, + "e19703e30eb64365905ffbc76f8a84b5": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f441a485f679429c84c099e17e945da3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3f677cdc4469460c852fe4d9a6979869", + "placeholder": "​", + "style": "IPY_MODEL_8cf16a3e63e3413a9b873711757595d0", + "value": " 0/10000 [00:00<?, ? examples/s]" + } + }, + "f4c70bba269d41cb96b367a43a631101": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f7f30d82a72146be891adeb94eeabfc3": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f95b3d10c84f400faa38c4396870d859": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "initial" + } + }, + "fb2bc264a3ae41028b3d7bcabdfcc009": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "initial" + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/calibrator.py b/examples/calibrator.py new file mode 100644 index 0000000..03d038d --- /dev/null +++ b/examples/calibrator.py @@ -0,0 +1,211 @@ +import sklearn +import numpy as np + +import math +from torch.nn import functional as f +import torch +from torch import nn, optim +import math +from scipy.special import softmax + + +class Calibrator(): + def __init__(self, logits, labels): + self.temperature = torch.ones(1, requires_grad=True) + self.logits = logits + self.labels = labels + self.W = torch.diag(torch.ones(logits.shape[1])) + self.W.requires_grad_() + self.b = torch.zeros(logits.shape[1], requires_grad=True) + self.W_diag = torch.cat((torch.ones(logits.shape[1]), torch.zeros(logits.shape[1])), dim=0) + self.W_diag.requires_grad_() + + def split_into_bins(self, n_bins, logits, labels): + bins = [] + true_labels_for_bins = [] + + for i in range(n_bins): + bins.append([]) + true_labels_for_bins.append([]) + + for j in range(len(labels)): + max_p = max(softmax(logits[j])) + for i in range(n_bins): + if i / n_bins < max_p and max_p <= (i + 1) / n_bins: + bins[i].append((logits[j])) + true_labels_for_bins[i].append(labels[j]) + return np.array(bins), np.array(true_labels_for_bins) + + def compute_ece(self, n_bins, logits, labels, len_dataset): + bins, true_labels_for_bins = self.split_into_bins(n_bins, logits, labels) + bins = list(filter(None, bins)) + true_labels_for_bins = list(filter(None, true_labels_for_bins)) + ece = torch.zeros(1) + for i in range(len(bins)): + softmaxes = f.softmax(torch.from_numpy(np.array(bins[i])), dim=1) + confidences, predictions = torch.max(softmaxes, dim=1) + accuracy = sklearn.metrics.accuracy_score(true_labels_for_bins[i], predictions) + confidence = torch.sum(confidences) / len(bins[i]) + ece += len(bins[i]) * torch.abs(accuracy - confidence) / len_dataset + return ece + + def split_into_classes(self, dataset, column_label, logits): + by_column = dataset.groupby(column_label) + datasets = {} + class_logits = [] + dict_class_logits = {} + n_classes = len(set(dataset[column_label])) + for i in range(n_classes): + class_logits.append([]) + for groups, data in by_column: + datasets[groups] = data + for ind, label in enumerate(dataset[column_label].to_numpy()): + for i in range(n_classes): + if label == i: + class_logits[i].append(logits[ind]) + for i in range(n_classes): + dict_class_logits[i] = class_logits[i] + return datasets, dict_class_logits + + def compute_sce(self, nbins, column_label, logits, dataset): + ece_values_for_each_class = [] + datasets, dict_class_logits = self.split_into_classes(dataset, column_label, logits) + for item in datasets.keys(): + ece_values_for_each_class.append( + self.compute_ece(nbins, dict_class_logits[item], datasets[item][column_label].to_numpy(), len(dataset))) + return sum(ece_values_for_each_class) / len(datasets.keys()) + + def SplitIntoRanges(self, R, logits, labels): + N = len(logits) + bins = [] + true_labels = [] + for i in range(R): + bins.append([]) + true_labels.append([]) + for j in range(R): + for i in range(j * math.floor(N / R), (j + 1) * math.floor(N / R)): + bins[j].append(logits[i]) + true_labels[j].append(labels[i]) + return np.array(bins), np.array(true_labels) + + def ComputeAce(self, R, dataset, target, logits): + datasets, dict_class_logits = self.split_into_classes(dataset, target, logits) + summa = 0 + for dataset in datasets.keys(): + data = datasets[dataset] + class_labels = data[target].to_numpy() + class_logits = dict_class_logits[dataset] + bins, true_labels = self.SplitIntoRanges(R, class_logits, class_labels) + for binn, bin_labels in zip(bins, true_labels): + softmaxes = f.softmax(torch.from_numpy(binn), dim=1) + accuracy = sklearn.metrics.accuracy_score(torch.from_numpy(bin_labels), np.argmax(softmaxes, axis=1)) + conf_array = torch.max(softmaxes, dim=1)[0] + confidence = torch.sum(conf_array) / len(conf_array) + substraction = abs(accuracy - confidence) + summa += substraction + ACE = summa / (len(datasets.keys()) * R) + return ACE + + def ChooseData(self, threshold, dataset, logits): + arr = torch.max(f.softmax(torch.from_numpy(logits), dim=1), dim=1)[0] + arr.numpy() + arr_with_indices = list(enumerate(arr)) + arr_with_indices.sort(key=lambda x: x[1]) + thr_array = [] + for pair in arr_with_indices: + if pair[1] > threshold: + thr_array.append(pair) + indices = [] + for pair in thr_array: + indices.append(pair[0]) + chosen_data = dataset.iloc[indices] + chosen_logits = logits[indices] + return chosen_data, chosen_logits + + def ComputeTace(self, threshold, dataset, logits, R, target): + chosen_data, chosen_logits = self.ChooseData(threshold, dataset, logits) + return self.ComputeAce(R, chosen_data, target, chosen_logits) + + def NumberOfClasses(self, dataset, target): + by_column = dataset.groupby(target) + datasets = {} + for groups, data in by_column: + datasets[groups] = data + return len(datasets) + + def matrix_scaling_logits(self, logits): + self.b.unsqueeze(0).expand(logits.shape[0], -1) + return torch.mm(torch.from_numpy(logits), self.W) + self.b + + def vector_scaling_logits(self, logits): + W = torch.diag(self.W_diag[:logits.shape[1]]) + b = self.W_diag[logits.shape[1]:] + b = b.unsqueeze(0).expand(logits.shape[0], -1) + return torch.mm(torch.from_numpy(logits), W) + b + + def scale_logits_with_temperature(self, logits): + self.temperature.unsqueeze(1).expand(logits.shape[0], logits.shape[1]) + return torch.true_divide(torch.from_numpy(logits), self.temperature) + + def TemperatureScaling(self): + nll = nn.CrossEntropyLoss() + optimizer = optim.LBFGS([self.temperature], lr=0.0001, max_iter=500) + + def eval(): + loss = nll(self.scale_logits_with_temperature(self.logits), torch.from_numpy(np.array(self.labels))) + loss.backward() + return loss + + optimizer.step(eval) + return self + + def MatrixScaling(self): + + nll = nn.CrossEntropyLoss() + optimizer = optim.LBFGS([self.W, self.b], lr=0.0001, max_iter=1000) + + def eval(): + loss = nll(self.matrix_scaling_logits(self.logits), torch.from_numpy(np.array(self.labels))) + loss.backward() + return loss + + optimizer.step(eval) + return self + + def VectorScaling(self): + nll = nn.CrossEntropyLoss() + optimizer = optim.LBFGS([self.W_diag], lr=0.000001, max_iter=9000) + + def eval(): + loss = nll(self.vector_scaling_logits(self.logits), torch.from_numpy(np.array(self.labels))) + loss.backward() + return loss + + optimizer.step(eval) + return self + + +def binary_histogram_binning(num_bins, probs, labels, probs_to_calibrate): + bins = np.linspace(0, 1, num=num_bins) + indexes_list = np.digitize(probs, bins) - 1 + theta = np.zeros(num_bins) + for i in range(len(bins)): + binn = (indexes_list == i) + binn_len = np.sum(binn) + if binn_len != 0: + theta[i] = np.sum(labels[binn]) / binn_len + else: + theta[i] = bins[i] + return list(map(lambda x: theta[np.digitize(x, bins) - 1], probs_to_calibrate)) + + +def multiclass_histogram_binning(num_bins, logits, labels, logits_to_calibrate): + probs = softmax(logits, axis=1) + probs_to_calibrate = softmax(logits_to_calibrate, axis=1) + binning_res = [] + for k in range(np.shape(probs)[1]): + binning_res.append(binary_histogram_binning(num_bins, probs[:, k], labels == k, probs_to_calibrate[:, k])) + binning_res = np.vstack(binning_res).T + cal_confs = binning_res / (np.sum(binning_res, axis=1)[:, None]) + return cal_confs + From a8a8e4910c57270f1049c6d31b5fff35f2ead001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=A2=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D1=88=D0=BA=D0=B8=D0=BD?= Date: Sun, 6 Sep 2020 16:58:10 +0300 Subject: [PATCH 2/8] Change names of methods --- alpaca/calibrator.py | 232 +++++++++++++++++++++++++++++ examples/calibration_example.ipynb | 25 +++- 2 files changed, 254 insertions(+), 3 deletions(-) create mode 100644 alpaca/calibrator.py diff --git a/alpaca/calibrator.py b/alpaca/calibrator.py new file mode 100644 index 0000000..2bf5328 --- /dev/null +++ b/alpaca/calibrator.py @@ -0,0 +1,232 @@ +from sklearn.metrics import accuracy_score +import numpy as np +import math +from torch.nn import functional as f +import torch +from torch import nn, optim +from scipy.special import softmax +import pandas as pd + + +def _split_into_bins(n_bins, probs, labels): + bins = [] + true_labels_for_bins = [] + + for i in range(n_bins): + bins.append([]) + true_labels_for_bins.append([]) + + for j in range(len(labels)): + max_p = max(probs[j]) + for i in range(n_bins): + if i / n_bins < max_p and max_p <= (i + 1) / n_bins: + bins[i].append((probs[j])) + true_labels_for_bins[i].append(labels[j]) + return np.array(bins, dtype=object), np.array(true_labels_for_bins, dtype=object) + + +def compute_ece(n_bins, probs, labels, len_dataset): + bins, true_labels_for_bins = _split_into_bins(n_bins, probs, labels) + bins = list(filter(None, bins)) + true_labels_for_bins = list(filter(None, true_labels_for_bins)) + ece = torch.zeros(1) + for i in range(len(bins)): + softmaxes = torch.from_numpy(np.array(bins[i])) + confidences, predictions = torch.max(softmaxes, dim=1) + accuracy = accuracy_score(true_labels_for_bins[i], predictions) + confidence = torch.sum(confidences) / len(bins[i]) + ece += len(bins[i]) * torch.abs(accuracy - confidence) / len_dataset + return ece + + +def _split_into_classes(labels, probs): + class_probs = [] + dict_class_probs = {} + n_classes = np.shape(probs)[1] + for i in range(n_classes): + class_probs.append([]) + for ind, label in enumerate(labels): + for i in range(n_classes): + if label == i: + class_probs[i].append(probs[ind]) + for i in range(n_classes): + dict_class_probs[i] = class_probs[i] + return dict_class_probs + + +def compute_sce(nbins, probs, labels): + ece_values_for_each_class = [] + dict_class_probs = _split_into_classes(labels, probs) + for item in dict_class_probs.keys(): + ece_values_for_each_class.append( + compute_ece(nbins, dict_class_probs[item], np.array([item] * np.shape(dict_class_probs[item])[0]), + len(labels))) + return sum(ece_values_for_each_class) / len(dict_class_probs.keys()) + + +def _split_into_ranges(R, probs, labels): + N = len(probs) + bins = [] + true_labels = [] + for i in range(R): + bins.append([]) + true_labels.append([]) + for j in range(R): + for i in range(j * math.floor(N / R), (j + 1) * math.floor(N / R)): + bins[j].append(probs[i]) + true_labels[j].append(labels[i]) + return np.array(bins, dtype=object), np.array(true_labels, dtype=object) + + +def compute_ace(R, labels, probs): + dict_class_probs = _split_into_classes(labels, probs) + summa = 0 + for item in dict_class_probs.keys(): + class_labels = np.array([item] * np.shape(dict_class_probs[item])[0]) + class_probs = dict_class_probs[item] + bins, true_labels = _split_into_ranges(R, class_probs, class_labels) + for binn, bin_labels in zip(bins, true_labels): + conf_array, predictions = torch.max(torch.from_numpy(binn), dim=1) + accuracy = accuracy_score(bin_labels, predictions.numpy()) + confidence = torch.sum(conf_array) / len(conf_array) + substraction = abs(accuracy - confidence) + summa += substraction + ACE = summa / (len(dict_class_probs.keys()) * R) + return ACE + + +def _choose_data(threshold, labels, probs): + arr = torch.max(torch.from_numpy(np.array(probs)), dim=1)[0] + arr.numpy() + arr_with_indices = list(enumerate(arr)) + arr_with_indices.sort(key=lambda x: x[1]) + thr_array = [] + for pair in arr_with_indices: + if pair[1] > threshold: + thr_array.append(pair) + indices = [] + for pair in thr_array: + indices.append(pair[0]) + chosen_labels = labels[indices] + chosen_probs = probs[indices] + return chosen_labels, chosen_probs + + +def compute_tace(threshold, labels, probs, R): + if isinstance(labels, pd.DataFrame) or isinstance(labels, pd.Series): + labels = labels.to_numpy() + chosen_labels, chosen_probs = _choose_data(threshold, labels, probs) + return compute_ace(R, chosen_labels, chosen_probs) + + +class ModelWithTempScaling(nn.Module): + + def __init__(self, model, logits, labels): + super(ModelWithTempScaling, self).__init__() + self.model = model + self.temperature = nn.Parameter(torch.ones(1)) + self.logits = logits + self.labels = labels + + def forward(self, input): + logits = self.model(input) + return torch.true_divide(logits, self.temperature) + + def scaling(self, lr=0.01, max_iter=50): + nll = nn.CrossEntropyLoss() + optimizer = optim.LBFGS([self.temperature], lr=lr, max_iter=max_iter) + + def eval(): + loss = nll(torch.true_divide(self.logits, self.temperature), self.labels) + loss.backward() + return loss + + optimizer.step(eval) + return self + + +class ModelWithVectScaling(nn.Module): + def __init__(self, model, logits, labels): + super(ModelWithVectScaling, self).__init__() + self.model = model + self.logits = logits.float() + self.labels = labels + self.W_and_b = nn.Parameter( + torch.cat((torch.ones(logits.shape[1]), torch.zeros(logits.shape[1])), dim=0)) + + def forward(self, input): + logits = self.model(input) + return self.scaling_logits(logits) + + def scaling_logits(self, logits): + W = torch.diag(self.W_and_b[:logits.shape[1]]) + b = self.W_and_b[logits.shape[1]:] + b = b.unsqueeze(0).expand(logits.shape[0], -1) + return torch.mm(logits, W) + b + + def scaling(self, lr=0.00001, max_iter=3500): + nll = nn.CrossEntropyLoss() + optimizer = optim.LBFGS([self.W_and_b], lr=lr, max_iter=max_iter) + + def eval(): + loss = nll(self.vector_scaling_logits(self.logits), self.labels) + loss.backward() + return loss + + optimizer.step(eval) + return self + + +class ModelWithMatrScaling(nn.Module): + def __init__(self, model, logits, labels): + super(ModelWithMatrScaling, self).__init__() + self.model = model + self.logits = logits.float() + self.labels = labels + self.W = nn.Parameter(torch.diag(torch.ones(logits.shape[1]))) + self.b = nn.Parameter(torch.zeros(logits.shape[1])) + + def forward(self, input): + logits = self.model(input) + return self.scaling_logits(logits) + + def scaling_logits(self, logits): + self.b.unsqueeze(0).expand(logits.shape[0], -1) + return torch.mm(logits, self.W) + self.b + + def scaling(self, lr=0.001, max_iter=100): + nll = nn.CrossEntropyLoss() + optimizer = optim.LBFGS([self.W, self.b], lr=lr, max_iter=max_iter) + + def eval(): + loss = nll(self.matrix_scaling_logits(self.logits), self.labels) + loss.backward() + return loss + + optimizer.step(eval) + return self + + +def binary_histogram_binning(num_bins, probs, labels, probs_to_calibrate): + bins = np.linspace(0, 1, num=num_bins) + indexes_list = np.digitize(probs, bins) - 1 + theta = np.zeros(num_bins) + for i in range(len(bins)): + binn = (indexes_list == i) + binn_len = np.sum(binn) + if binn_len != 0: + theta[i] = np.sum(labels[binn]) / binn_len + else: + theta[i] = bins[i] + return list(map(lambda x: theta[np.digitize(x, bins) - 1], probs_to_calibrate)) + + +def multiclass_histogram_binning(num_bins, logits, labels, logits_to_calibrate): + probs = softmax(logits, axis=1) + probs_to_calibrate = softmax(logits_to_calibrate, axis=1) + binning_res = [] + for k in range(np.shape(probs)[1]): + binning_res.append(binary_histogram_binning(num_bins, probs[:, k], labels == k, probs_to_calibrate[:, k])) + binning_res = np.vstack(binning_res).T + cal_confs = binning_res / (np.sum(binning_res, axis=1)[:, None]) + return cal_confs diff --git a/examples/calibration_example.ipynb b/examples/calibration_example.ipynb index f9e6227..3dc355d 100644 --- a/examples/calibration_example.ipynb +++ b/examples/calibration_example.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 50, + "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -94,7 +94,26 @@ "id": "ygJyUrpkB2rR", "outputId": "2eb7ae89-c6a2-454f-8f91-ca05c6a6cf3c" }, - "outputs": [], + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "[Errno 2] File b'mnist_test.csv' does not exist: b'mnist_test.csv'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtest_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'mnist_test.csv'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mtrain_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'mnist_train.csv'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/PycharmProjects/untitled1/venv/lib/python3.6/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36mparser_f\u001b[0;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, dialect, error_bad_lines, warn_bad_lines, delim_whitespace, low_memory, memory_map, float_precision)\u001b[0m\n\u001b[1;32m 683\u001b[0m )\n\u001b[1;32m 684\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 685\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 686\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 687\u001b[0m \u001b[0mparser_f\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/PycharmProjects/untitled1/venv/lib/python3.6/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m_read\u001b[0;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[1;32m 455\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 456\u001b[0m \u001b[0;31m# Create the parser.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 457\u001b[0;31m \u001b[0mparser\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mTextFileReader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfp_or_buf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 458\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 459\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mchunksize\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0miterator\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/PycharmProjects/untitled1/venv/lib/python3.6/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[1;32m 893\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"has_index_names\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"has_index_names\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 894\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 895\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_make_engine\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mengine\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 896\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 897\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/PycharmProjects/untitled1/venv/lib/python3.6/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m_make_engine\u001b[0;34m(self, engine)\u001b[0m\n\u001b[1;32m 1133\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_make_engine\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mengine\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"c\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1134\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mengine\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"c\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1135\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mCParserWrapper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1136\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1137\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mengine\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"python\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/PycharmProjects/untitled1/venv/lib/python3.6/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, src, **kwds)\u001b[0m\n\u001b[1;32m 1915\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"usecols\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0musecols\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1916\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1917\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_reader\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparsers\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTextReader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msrc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1918\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munnamed_cols\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_reader\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munnamed_cols\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1919\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32mpandas/_libs/parsers.pyx\u001b[0m in \u001b[0;36mpandas._libs.parsers.TextReader.__cinit__\u001b[0;34m()\u001b[0m\n", + "\u001b[0;32mpandas/_libs/parsers.pyx\u001b[0m in \u001b[0;36mpandas._libs.parsers.TextReader._setup_parser_source\u001b[0;34m()\u001b[0m\n", + "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] File b'mnist_test.csv' does not exist: b'mnist_test.csv'" + ] + } + ], "source": [ "test_data = pd.read_csv('mnist_test.csv')\n", "train_data = pd.read_csv('mnist_train.csv')" @@ -634,7 +653,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.6.2" }, "widgets": { "application/vnd.jupyter.widget-state+json": { From e59f0df258abaae2ccd98f577cd15fe3bdf758af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=A2=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D1=88=D0=BA=D0=B8=D0=BD?= Date: Sun, 6 Sep 2020 18:56:19 +0300 Subject: [PATCH 3/8] Add function "compute_errors" --- examples/calibration_example.ipynb | 726 +++++++++++++++-------------- 1 file changed, 384 insertions(+), 342 deletions(-) diff --git a/examples/calibration_example.ipynb b/examples/calibration_example.ipynb index 3dc355d..27fd811 100644 --- a/examples/calibration_example.ipynb +++ b/examples/calibration_example.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 85, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -19,14 +19,47 @@ "import calibrator\n", "import numpy as np\n", "import pandas as pd\n", - "from sklearn.neural_network import MLPClassifier\n", - "from sklearn.calibration import calibration_curve\n", - "import matplotlib.pyplot as plt" + "from alpaca.dataloader.builder import build_dataset" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 86, + "metadata": {}, + "outputs": [], + "source": [ + "import sklearn\n", + "import math\n", + "from torch.nn import functional as f\n", + "import torch\n", + "from torch import nn, optim\n", + "from torch.utils.data import TensorDataset, DataLoader" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [], + "source": [ + "def compute_errors(n_bins, probs, labels, len_dataset, threshold):\n", + " ece = calibrator.compute_ece(n_bins, probs, labels, len_dataset)\n", + " sce = calibrator.compute_sce(n_bins, probs, labels)\n", + " ace = calibrator.compute_ace(n_bins, labels, probs)\n", + " tace = calibrator.compute_tace(threshold, labels, probs, n_bins)\n", + " errors = {\n", + " 'ece' : ece,\n", + " 'sce' : sce,\n", + " 'ace' : ace,\n", + " 'tace' : tace\n", + " }\n", + " for error in errors.items():\n", + " print(str(error[0]), ' = ', error[1])" + ] + }, + { + "cell_type": "code", + "execution_count": 74, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -94,54 +127,81 @@ "id": "ygJyUrpkB2rR", "outputId": "2eb7ae89-c6a2-454f-8f91-ca05c6a6cf3c" }, + "outputs": [], + "source": [ + "mnist = build_dataset('mnist', val_size=10_000)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, "outputs": [ { - "ename": "FileNotFoundError", - "evalue": "[Errno 2] File b'mnist_test.csv' does not exist: b'mnist_test.csv'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtest_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'mnist_test.csv'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mtrain_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'mnist_train.csv'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/PycharmProjects/untitled1/venv/lib/python3.6/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36mparser_f\u001b[0;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, dialect, error_bad_lines, warn_bad_lines, delim_whitespace, low_memory, memory_map, float_precision)\u001b[0m\n\u001b[1;32m 683\u001b[0m )\n\u001b[1;32m 684\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 685\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 686\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 687\u001b[0m \u001b[0mparser_f\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/PycharmProjects/untitled1/venv/lib/python3.6/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m_read\u001b[0;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[1;32m 455\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 456\u001b[0m \u001b[0;31m# Create the parser.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 457\u001b[0;31m \u001b[0mparser\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mTextFileReader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfp_or_buf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 458\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 459\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mchunksize\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0miterator\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/PycharmProjects/untitled1/venv/lib/python3.6/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[1;32m 893\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"has_index_names\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"has_index_names\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 894\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 895\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_make_engine\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mengine\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 896\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 897\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/PycharmProjects/untitled1/venv/lib/python3.6/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m_make_engine\u001b[0;34m(self, engine)\u001b[0m\n\u001b[1;32m 1133\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_make_engine\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mengine\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"c\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1134\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mengine\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"c\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1135\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mCParserWrapper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1136\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1137\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mengine\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"python\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/PycharmProjects/untitled1/venv/lib/python3.6/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, src, **kwds)\u001b[0m\n\u001b[1;32m 1915\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"usecols\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0musecols\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1916\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1917\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_reader\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparsers\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTextReader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msrc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1918\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munnamed_cols\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_reader\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munnamed_cols\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1919\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32mpandas/_libs/parsers.pyx\u001b[0m in \u001b[0;36mpandas._libs.parsers.TextReader.__cinit__\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32mpandas/_libs/parsers.pyx\u001b[0m in \u001b[0;36mpandas._libs.parsers.TextReader._setup_parser_source\u001b[0;34m()\u001b[0m\n", - "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] File b'mnist_test.csv' does not exist: b'mnist_test.csv'" - ] + "data": { + "text/plain": [ + "(10000, 784)" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "test_data = pd.read_csv('mnist_test.csv')\n", - "train_data = pd.read_csv('mnist_train.csv')" + "X_train, y_train = mnist.dataset('train')\n", + "X_val, y_val = mnist.dataset('val')\n", + "X_cal = X_train[48000:][:]\n", + "X_train = X_train[0:48000][:]\n", + "y_cal = y_train[48000:][:]\n", + "y_train = y_train[0:48000][:]\n", + "\n", + "x_shape = (-1, 1, 28, 28)\n", + "\n", + "train_ds = TensorDataset(torch.FloatTensor(X_train.reshape(x_shape)), torch.LongTensor(y_train))\n", + "val_ds = TensorDataset(torch.FloatTensor(X_val.reshape(x_shape)), torch.LongTensor(y_val))\n", + "train_loader = DataLoader(train_ds, batch_size=512)\n", + "val_loader = DataLoader(val_ds, batch_size=512)\n", + "cal_ds = TensorDataset(torch.FloatTensor(X_cal.reshape(x_shape)), torch.LongTensor(y_cal))\n", + "cal_loader = DataLoader(cal_ds, batch_size=512)\n", + "X_val.shape" ] }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "I5XO9RDjB2rU" - }, + "execution_count": 76, + "metadata": {}, "outputs": [], "source": [ - "y_test = test_data['label']\n", - "y_train = train_data['label'][0:48000]\n", - "X_test = test_data.drop(columns=['label'])\n", - "X_train = train_data.drop(columns=['label'])\n", - "X_train = X_train[0:48000][:]\n", - "cal = train_data[48000:][:]\n", - "y_cal = cal['label']\n", - "X_cal = cal.drop(columns=['label'])" + "class Net(nn.Module): \n", + " def __init__(self):\n", + " super(Net, self).__init__()\n", + "\n", + " self.cnn_layers = nn.Sequential(\n", + " nn.Conv2d(1, 4, kernel_size=3, stride=1, padding=1),\n", + " nn.BatchNorm2d(4),\n", + " nn.ReLU(inplace=True),\n", + " nn.MaxPool2d(kernel_size=2, stride=2),\n", + " nn.Conv2d(4, 4, kernel_size=3, stride=1, padding=1),\n", + " nn.BatchNorm2d(4),\n", + " nn.ReLU(inplace=True),\n", + " nn.MaxPool2d(kernel_size=2, stride=2),\n", + " )\n", + "\n", + " self.linear_layers = nn.Sequential(\n", + " nn.Linear(4 * 7 * 7, 10)\n", + " )\n", + " \n", + " def forward(self, x):\n", + " x = self.cnn_layers(x)\n", + " x = x.view(x.size(0), -1)\n", + " x = self.linear_layers(x)\n", + " return x" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 77, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -151,483 +211,465 @@ "id": "8qM2NebHB2ra", "outputId": "eaea1671-b680-489a-8cb6-68a734ab759e" }, + "outputs": [], + "source": [ + "model = Net()\n", + "criterion = nn.CrossEntropyLoss()\n", + "optimizer = torch.optim.Adam(model.parameters())" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "..............................................................................................\n", + "Train loss on last batch 0.5379677414894104\n", + "..............................................................................................\n", + "Train loss on last batch 0.3088064193725586\n", + "..............................................................................................\n", + "Train loss on last batch 0.22927790880203247\n", + "..............................................................................................\n", + "Train loss on last batch 0.18548454344272614\n", + "..............................................................................................\n", + "Train loss on last batch 0.15679685771465302\n", + "Accuracy 0.962890625\n" + ] + } + ], + "source": [ + "for epoch in range(5):\n", + " for x_batch, y_batch in train_loader: # Train for one epoch\n", + " print('.', end='')\n", + " prediction = model(x_batch)\n", + " optimizer.zero_grad()\n", + " loss = criterion(prediction, y_batch)\n", + " loss.backward()\n", + " optimizer.step()\n", + " print('\\nTrain loss on last batch', loss.item())\n", + "\n", + "# Check accuracy\n", + "x_batch, y_batch = next(iter(val_loader))\n", + "\n", + "\n", + "class_preds = f.softmax(model(x_batch), dim=-1).detach().numpy()\n", + "predictions = np.argmax(class_preds, axis=-1)\n", + "print('Accuracy', accuracy_score(predictions, y_batch))" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "MLPClassifier(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9,\n", - " beta_2=0.999, early_stopping=False, epsilon=1e-08,\n", - " hidden_layer_sizes=(100, 100), learning_rate='constant',\n", - " learning_rate_init=0.001, max_fun=15000, max_iter=300,\n", - " momentum=0.9, n_iter_no_change=10, nesterovs_momentum=True,\n", - " power_t=0.5, random_state=1, shuffle=True, solver='adam',\n", - " tol=0.0001, validation_fraction=0.1, verbose=False,\n", - " warm_start=False)" + "tensor([[-6.1167, -8.9871, 3.8799, ..., -7.2181, 7.8800, -6.4360],\n", + " [-0.1971, 4.4322, -0.6775, ..., -2.8865, 2.0842, -4.1036],\n", + " [-3.9227, -3.9793, -0.0458, ..., -0.7269, -1.2891, -0.3848],\n", + " ...,\n", + " [-4.0691, -1.3082, -3.1546, ..., -0.4103, -2.4649, 1.1635],\n", + " [10.0700, -8.9821, -1.3832, ..., -5.1656, 2.8142, 0.3769],\n", + " [-7.6608, -3.4758, -6.1055, ..., -0.1984, 0.0988, 6.5401]])" ] }, - "execution_count": 5, + "execution_count": 88, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "clf = MLPClassifier((100, 100,), max_iter=300, random_state=1)\n", - "clf.fit(X_train, y_train)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "5hBUkdNCHyAs" - }, - "outputs": [], - "source": [ - "clf.out_activation_ = 'identity'\n", - "logits = clf.predict_proba(X_cal)" + "logits_list = []\n", + "labels_list = []\n", + "for x_batch, y_batch in cal_loader:\n", + " logits_list.append(model(x_batch))\n", + " labels_list.append(y_batch)\n", + "logits = torch.cat(logits_list)\n", + "labels = torch.cat(labels_list)\n", + "logits.detach_()\n" ] }, { "cell_type": "code", - "execution_count": 51, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "0Qp6L3N8IC-c" - }, + "execution_count": 89, + "metadata": {}, "outputs": [], "source": [ - "calibr = calibrator.Calibrator(logits, y_cal)" + "calibr = calibrator.ModelWithTempScaling(model, logits, labels)" ] }, { "cell_type": "code", - "execution_count": 57, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - }, - "colab_type": "code", - "id": "nkE0lL29Jo6T", - "outputId": "9e845720-4268-4709-ef4e-e7b0998f61f2" - }, + "execution_count": 90, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "tensor([0.0244])" + "ModelWithTempScaling(\n", + " (model): Net(\n", + " (cnn_layers): Sequential(\n", + " (0): Conv2d(1, 4, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " (1): BatchNorm2d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " (2): ReLU(inplace=True)\n", + " (3): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", + " (4): Conv2d(4, 4, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " (5): BatchNorm2d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " (6): ReLU(inplace=True)\n", + " (7): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", + " )\n", + " (linear_layers): Sequential(\n", + " (0): Linear(in_features=196, out_features=10, bias=True)\n", + " )\n", + " )\n", + ")" ] }, - "execution_count": 57, + "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "test_logits = clf.predict_proba(X_test)\n", - "test_preds = softmax(test_logits, axis=1)\n", - "calibr.compute_ece(15, test_logits, y_test.to_numpy(), len(y_test))" + "calibr.temperature_scaling()" ] }, { "cell_type": "code", - "execution_count": 11, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - }, - "colab_type": "code", - "id": "McvVpiIqR6Nj", - "outputId": "ed044e56-c766-457d-942a-7af91ac419f8" - }, + "execution_count": 91, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "tensor(0.0211, dtype=torch.float64)" + "tensor([[-5.7242, -2.0955, -2.2245, ..., 9.8173, -0.7770, 0.8910],\n", + " [ 3.1985, -2.7507, 0.3069, ..., -4.4638, -1.2120, -2.2296],\n", + " [-2.6328, -4.6969, 7.7340, ..., -3.8817, -2.4001, -3.3600],\n", + " ...,\n", + " [-0.9659, -0.9615, -2.7335, ..., -0.5133, 1.3431, -1.5266],\n", + " [-2.0694, -3.1440, 3.9460, ..., 0.5145, 0.2711, -1.3649],\n", + " [-0.1192, -1.5945, 0.3817, ..., -4.0632, -0.5899, -1.9224]])" ] }, - "execution_count": 11, + "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "calibr.ComputeTace(0.9, test_data, test_logits, 15, 'label')" + "val_logits_list = []\n", + "val_labels_list = []\n", + "for x_batch, y_batch in val_loader:\n", + " val_logits_list.append(model(x_batch))\n", + " val_labels_list.append(y_batch)\n", + "val_logits = torch.cat(val_logits_list)\n", + "val_labels = torch.cat(val_labels_list)\n", + "val_logits.detach_()" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 93, + "metadata": {}, + "outputs": [], + "source": [ + "probs = f.softmax(val_logits, dim=-1)" + ] + }, + { + "cell_type": "code", + "execution_count": 94, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "tensor([0.0025])" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "ece = tensor([0.0296])\n", + "sce = tensor([0.0033])\n", + "ace = tensor(0.0310)\n", + "tace = tensor(0.0147)\n" + ] } ], "source": [ - "calibr.compute_sce(15, 'label', test_logits, test_data)" + "compute_errors(n_bins=15, probs=probs.numpy(), labels=val_labels.numpy(),\n", + " len_dataset=np.shape(probs)[0], threshold=0.9)" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 95, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "tensor(0.0251, dtype=torch.float64)" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "Parameter containing:\n", + "tensor([0.6217], requires_grad=True)\n" + ] + } + ], + "source": [ + "print(calibr.temperature)" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [], + "source": [ + "temp_scaling_logits = torch.true_divide(val_logits, calibr.temperature)\n", + "temp_scaling_probs = f.softmax(temp_scaling_logits, dim=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ece = tensor([0.0085])\n", + "sce = tensor([0.0015])\n", + "ace = tensor(0.0182)\n", + "tace = tensor(0.0070)\n" + ] } ], "source": [ - "calibr.ComputeAce(15, test_data, 'label', test_logits)" + "compute_errors(n_bins=15, probs=temp_scaling_probs.detach().numpy(), labels=val_labels.numpy(),\n", + " len_dataset=np.shape(probs)[0], threshold=0.9)" ] }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 98, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 34 }, "colab_type": "code", - "id": "rUPNsBe5WHet", - "outputId": "52673060-ebb3-4b6f-8dc9-f3d38ed980ef" + "id": "McvVpiIqR6Nj", + "outputId": "ed044e56-c766-457d-942a-7af91ac419f8" }, "outputs": [ { "data": { "text/plain": [ - "tensor([0.0148])" + "torch.int64" ] }, - "execution_count": 40, + "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "calibr.TemperatureScaling()\n", - "new_logits = calibr.scale_logits_with_temperature(test_logits).detach().numpy()\n", - "calibr.compute_ece(15, new_logits, y_test.to_numpy(), len(y_test))" + "calibr = calibrator.ModelWithVectScaling(model, logits, labels).float()\n", + "labels.dtype" ] }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 99, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "tensor(0.0092, dtype=torch.float64)" + "ModelWithVectScaling(\n", + " (model): Net(\n", + " (cnn_layers): Sequential(\n", + " (0): Conv2d(1, 4, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " (1): BatchNorm2d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " (2): ReLU(inplace=True)\n", + " (3): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", + " (4): Conv2d(4, 4, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " (5): BatchNorm2d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " (6): ReLU(inplace=True)\n", + " (7): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", + " )\n", + " (linear_layers): Sequential(\n", + " (0): Linear(in_features=196, out_features=10, bias=True)\n", + " )\n", + " )\n", + ")" ] }, - "execution_count": 58, + "execution_count": 99, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "calibr.ComputeTace(0.9, test_data, new_logits, 15, 'label')\n" + "calibr.vector_scaling(lr=0.01, max_iter=50)" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [], + "source": [ + "vect_scaling_logits = calibr.vector_scaling_logits(val_logits)\n", + "vect_scaling_probs = f.softmax(vect_scaling_logits, dim=1)" ] }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 101, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "tensor(0.0231, dtype=torch.float64)" - ] - }, - "execution_count": 59, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "ece = tensor([0.0183])\n", + "sce = tensor([0.0024])\n", + "ace = tensor(0.0224)\n", + "tace = tensor(0.0110)\n" + ] } ], "source": [ - "calibr.ComputeAce(15, test_data, 'label', new_logits)" + "compute_errors(n_bins=15, probs=vect_scaling_probs.detach().numpy(), labels=val_labels.numpy(),\n", + " len_dataset=np.shape(probs)[0], threshold=0.9)" ] }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 102, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "tensor([0.0021])" + "Parameter containing:\n", + "tensor([ 1.0942e+00, 1.0579e+00, 1.0807e+00, 1.0858e+00, 1.1143e+00,\n", + " 1.0998e+00, 1.0911e+00, 1.1073e+00, 1.0508e+00, 1.1783e+00,\n", + " -9.8967e-04, 1.2546e-03, -7.5154e-03, 7.0824e-03, 2.1402e-03,\n", + " -1.2270e-02, -2.2263e-03, 9.1528e-03, -1.4546e-02, 1.7918e-02],\n", + " requires_grad=True)" ] }, - "execution_count": 60, + "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "calibr.compute_sce(15, 'label', new_logits, test_data)" + "calibr.W_and_b" ] }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 103, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "0.01349574089747102" + "ModelWithMatrScaling(\n", + " (model): Net(\n", + " (cnn_layers): Sequential(\n", + " (0): Conv2d(1, 4, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " (1): BatchNorm2d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " (2): ReLU(inplace=True)\n", + " (3): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", + " (4): Conv2d(4, 4, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " (5): BatchNorm2d(4, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", + " (6): ReLU(inplace=True)\n", + " (7): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", + " )\n", + " (linear_layers): Sequential(\n", + " (0): Linear(in_features=196, out_features=10, bias=True)\n", + " )\n", + " )\n", + ")" ] }, - "execution_count": 37, + "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "new_probs = calibrator.multiclass_histogram_binning(15, logits, y_cal.to_numpy(), test_logits)\n", - "\n", - "def SplitIntoBins(m, preds, labels):\n", - " bins = []\n", - " true_labels_for_bins = []\n", - " for i in range(m):\n", - " bins.append([])\n", - " true_labels_for_bins.append([])\n", - " for j in range(len(labels)):\n", - " max_p = max(preds[j])\n", - " for i in range(m):\n", - " if i/m < max_p and max_p <= (i+1)/m:\n", - " bins[i].append((preds[j]))\n", - " true_labels_for_bins[i].append(labels[j])\n", - " return bins, true_labels_for_bins\n", - "\n", - "def ComputeEce(m, preds, labels):\n", - " bins, true_labels_for_bins = SplitIntoBins(m, preds, labels)\n", - " accuracies = []\n", - " confidences = []\n", - " ece = 0\n", - " bins = list(filter(None, bins))\n", - " true_labels_for_bins = list(filter(None, true_labels_for_bins))\n", - " for i in range(len(bins)):\n", - " accuracy = accuracy_score(true_labels_for_bins[i], np.argmax(bins[i], axis=1))\n", - " accuracies.append(accuracy)\n", - " max_pi = sum(np.amax(bins[i], axis = 1))\n", - " confidences.append(max_pi/len(bins[i]))\n", - " ece += len(bins[i]) * abs(accuracies[i] - confidences[i])/2897\n", - " return ece\n", - "ComputeEce(15, new_probs, y_test.to_numpy())" + "calibr = calibrator.ModelWithMatrScaling(model, logits, labels).float()\n", + "calibr.matrix_scaling(lr=0.0001, max_iter=1000)" ] }, { "cell_type": "code", - "execution_count": 41, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 85 - }, - "colab_type": "code", - "id": "uUSoNf8XoWHp", - "outputId": "0a716825-bf17-4344-92c6-54dec28aba40" - }, + "execution_count": 104, + "metadata": {}, "outputs": [], "source": [ - "y_true = []\n", - "for i in range(10):\n", - " y_true.append([])\n", - "for i in range(10):\n", - " for label in y_test:\n", - " if label == i:\n", - " y_true[i].append(1)\n", - " else:\n", - " y_true[i].append(0) " + "matr_scaling_logits = calibr.matrix_scaling_logits(val_logits)\n", + "matr_scaling_probs = f.softmax(matr_scaling_logits, dim=1)" ] }, { "cell_type": "code", - "execution_count": 45, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - }, - "colab_type": "code", - "id": "gpigDxzW1NzT", - "outputId": "ee75b408-7706-4a8d-b897-9d2b5e951606" - }, + "execution_count": 105, + "metadata": {}, "outputs": [ { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" + "name": "stdout", + "output_type": "stream", + "text": [ + "ece = tensor([0.0051])\n", + "sce = tensor([0.0014])\n", + "ace = tensor(0.0167)\n", + "tace = tensor(0.0061)\n" + ] } ], "source": [ - "new_predictions = np.transpose(softmax(new_logits, axis=1))\n", - "for i in range(10):\n", - " fop, mpv = calibration_curve(y_true[i], new_predictions[i])\n", - " plt.plot([0, 1], [0, 1], linestyle='--')\n", - " plt.plot(mpv, fop, marker='.')\n", - " plt.show() " + "compute_errors(n_bins=15, probs=matr_scaling_probs.detach().numpy(), labels=val_labels.numpy(),\n", + " len_dataset=np.shape(probs)[0], threshold=0.9)" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, + "execution_count": 106, + "metadata": { + "scrolled": true + }, "outputs": [], "source": [ - "calibr.MatrixScaling()\n", - "new_logits = calibr.matrix_scaling_logits(test_logits).detach().numpy()\n", - "calibr.compute_ece(15, new_logits, y_test.to_numpy(), len(y_test))" + "hist_binning_probs = calibrator.multiclass_histogram_binning(15, logits.numpy(), labels.numpy(), val_logits)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 108, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ece = tensor([0.0069])\n", + "sce = tensor([0.0016])\n", + "ace = tensor(0.0177, dtype=torch.float64)\n", + "tace = tensor(0.0129, dtype=torch.float64)\n" + ] + } + ], "source": [ - "calibr.VectorScaling()\n", - "new_logits = calibr.vector_scaling_logits(test_logits).detach().numpy()\n", - "calibr.compute_ece(15, new_logits, y_test.to_numpy(), len(y_test))" + "compute_errors(n_bins=15, probs=hist_binning_probs, labels=val_labels.numpy(),\n", + " len_dataset=np.shape(probs)[0], threshold=0.9)" ] } ], @@ -653,7 +695,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.2" + "version": "3.7.4" }, "widgets": { "application/vnd.jupyter.widget-state+json": { From 2602f28365481f428cd4dd0e34c73ca5960bc272 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=A2=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D1=88=D0=BA=D0=B8=D0=BD?= Date: Sun, 6 Sep 2020 19:39:19 +0300 Subject: [PATCH 4/8] Add function compute_erros, change names of methods --- examples/calibration_example.ipynb | 62 +++++++++++++++--------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/examples/calibration_example.ipynb b/examples/calibration_example.ipynb index 27fd811..b83060b 100644 --- a/examples/calibration_example.ipynb +++ b/examples/calibration_example.ipynb @@ -6,7 +6,7 @@ "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 34 + "height": 34.0 }, "colab_type": "code", "id": "s0rU2DMvB2rL", @@ -16,7 +16,7 @@ "source": [ "from sklearn.metrics import accuracy_score\n", "from scipy.special import softmax\n", - "import calibrator\n", + "import alpaca.calibrator as calibrator\n", "import numpy as np\n", "import pandas as pd\n", "from alpaca.dataloader.builder import build_dataset" @@ -63,7 +63,7 @@ "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 1000, + "height": 1000.0, "referenced_widgets": [ "2605521ec37f472ebaeb2799fc46089a", "f4c70bba269d41cb96b367a43a631101", @@ -205,7 +205,7 @@ "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 153 + "height": 153.0 }, "colab_type": "code", "id": "8qM2NebHB2ra", @@ -336,7 +336,7 @@ } ], "source": [ - "calibr.temperature_scaling()" + "calibr.scaling()" ] }, { @@ -457,7 +457,7 @@ "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 34 + "height": 34.0 }, "colab_type": "code", "id": "McvVpiIqR6Nj", @@ -513,7 +513,7 @@ } ], "source": [ - "calibr.vector_scaling(lr=0.01, max_iter=50)" + "calibr.scaling(lr=0.01, max_iter=50)" ] }, { @@ -522,7 +522,7 @@ "metadata": {}, "outputs": [], "source": [ - "vect_scaling_logits = calibr.vector_scaling_logits(val_logits)\n", + "vect_scaling_logits = calibr.scaling_logits(val_logits)\n", "vect_scaling_probs = f.softmax(vect_scaling_logits, dim=1)" ] }, @@ -606,7 +606,7 @@ ], "source": [ "calibr = calibrator.ModelWithMatrScaling(model, logits, labels).float()\n", - "calibr.matrix_scaling(lr=0.0001, max_iter=1000)" + "calibr.scaling(lr=0.0001, max_iter=1000)" ] }, { @@ -615,7 +615,7 @@ "metadata": {}, "outputs": [], "source": [ - "matr_scaling_logits = calibr.matrix_scaling_logits(val_logits)\n", + "matr_scaling_logits = calibr.scaling_logits(val_logits)\n", "matr_scaling_probs = f.softmax(matr_scaling_logits, dim=1)" ] }, @@ -1242,11 +1242,11 @@ "description": " 93%", "description_tooltip": null, "layout": "IPY_MODEL_c5fbb54c30174247a4b890e22a96cd15", - "max": 50000, - "min": 0, + "max": 50000.0, + "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_f95b3d10c84f400faa38c4396870d859", - "value": 46587 + "value": 46587.0 } }, "3f677cdc4469460c852fe4d9a6979869": { @@ -1438,11 +1438,11 @@ "description": "Extraction completed...: 100%", "description_tooltip": null, "layout": "IPY_MODEL_b6689d61d6604d8981d446c538fbd44f", - "max": 1, - "min": 0, + "max": 1.0, + "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_de3041298f1e496d93a8d58259cd7009", - "value": 1 + "value": 1.0 } }, "547d771bf7d146a19ef02a463c28a496": { @@ -1595,11 +1595,11 @@ "description": "", "description_tooltip": null, "layout": "IPY_MODEL_05f0a259a8d643c1ae85ecde57be4981", - "max": 1, - "min": 0, + "max": 1.0, + "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_fb2bc264a3ae41028b3d7bcabdfcc009", - "value": 1 + "value": 1.0 } }, "8cf16a3e63e3413a9b873711757595d0": { @@ -1632,11 +1632,11 @@ "description": "Dl Completed...: 100%", "description_tooltip": null, "layout": "IPY_MODEL_94fe1defabd84e3a8d31f398aeaf1455", - "max": 1, - "min": 0, + "max": 1.0, + "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_c2c2b28ffcae4bf29973bb229a663da3", - "value": 1 + "value": 1.0 } }, "9263135419074499a42e519958ed514a": { @@ -2043,11 +2043,11 @@ "description": "Dl Size...: 100%", "description_tooltip": null, "layout": "IPY_MODEL_9263135419074499a42e519958ed514a", - "max": 1, - "min": 0, + "max": 1.0, + "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_23306e469c1342b9921883cf33502298", - "value": 1 + "value": 1.0 } }, "c2c2b28ffcae4bf29973bb229a663da3": { @@ -2146,11 +2146,11 @@ "description": "", "description_tooltip": null, "layout": "IPY_MODEL_a4bc6f0e24fb4242b5536d0906810dc1", - "max": 1, - "min": 0, + "max": 1.0, + "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_59f6ddd1dfcb445a8fa9f2cc9a9eaf8b", - "value": 1 + "value": 1.0 } }, "d416605b18cc46658e89c1d4cb42fe46": { @@ -2169,11 +2169,11 @@ "description": " 0%", "description_tooltip": null, "layout": "IPY_MODEL_f7f30d82a72146be891adeb94eeabfc3", - "max": 10000, - "min": 0, + "max": 10000.0, + "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_29afad3a94774993a0f437e4ac2f9e2a", - "value": 0 + "value": 0.0 } }, "d6ad79f1ff934926884a149184ea2731": { From 21f82c45e074db1b37bf7d129fdd0599c8e39761 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=A2=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D1=88=D0=BA=D0=B8=D0=BD?= Date: Sun, 6 Sep 2020 19:40:51 +0300 Subject: [PATCH 5/8] change names of methods --- alpaca/calibrator.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/alpaca/calibrator.py b/alpaca/calibrator.py index 2bf5328..58ef953 100644 --- a/alpaca/calibrator.py +++ b/alpaca/calibrator.py @@ -22,7 +22,7 @@ def _split_into_bins(n_bins, probs, labels): if i / n_bins < max_p and max_p <= (i + 1) / n_bins: bins[i].append((probs[j])) true_labels_for_bins[i].append(labels[j]) - return np.array(bins, dtype=object), np.array(true_labels_for_bins, dtype=object) + return np.array(bins), np.array(true_labels_for_bins) def compute_ece(n_bins, probs, labels, len_dataset): @@ -75,7 +75,7 @@ def _split_into_ranges(R, probs, labels): for i in range(j * math.floor(N / R), (j + 1) * math.floor(N / R)): bins[j].append(probs[i]) true_labels[j].append(labels[i]) - return np.array(bins, dtype=object), np.array(true_labels, dtype=object) + return np.array(bins), np.array(true_labels) def compute_ace(R, labels, probs): @@ -169,7 +169,7 @@ def scaling(self, lr=0.00001, max_iter=3500): optimizer = optim.LBFGS([self.W_and_b], lr=lr, max_iter=max_iter) def eval(): - loss = nll(self.vector_scaling_logits(self.logits), self.labels) + loss = nll(self.scaling_logits(self.logits), self.labels) loss.backward() return loss @@ -199,7 +199,7 @@ def scaling(self, lr=0.001, max_iter=100): optimizer = optim.LBFGS([self.W, self.b], lr=lr, max_iter=max_iter) def eval(): - loss = nll(self.matrix_scaling_logits(self.logits), self.labels) + loss = nll(self.scaling_logits(self.logits), self.labels) loss.backward() return loss From 8a02b47c02db699bab79179b3f8700bd6dfcdd38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=A2=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D1=88=D0=BA=D0=B8=D0=BD?= Date: Sat, 19 Sep 2020 18:55:39 +0300 Subject: [PATCH 6/8] Change "forward" in classes and arguments in "scaling" method, add docstring --- alpaca/calibrator.py | 90 ++++++++++++++++++++++++++++++-------------- 1 file changed, 61 insertions(+), 29 deletions(-) diff --git a/alpaca/calibrator.py b/alpaca/calibrator.py index 58ef953..1a42d9d 100644 --- a/alpaca/calibrator.py +++ b/alpaca/calibrator.py @@ -78,7 +78,7 @@ def _split_into_ranges(R, probs, labels): return np.array(bins), np.array(true_labels) -def compute_ace(R, labels, probs): +def compute_ace(R, probs, labels): dict_class_probs = _split_into_classes(labels, probs) summa = 0 for item in dict_class_probs.keys(): @@ -95,7 +95,7 @@ def compute_ace(R, labels, probs): return ACE -def _choose_data(threshold, labels, probs): +def _choose_data(threshold, probs, labels): arr = torch.max(torch.from_numpy(np.array(probs)), dim=1)[0] arr.numpy() arr_with_indices = list(enumerate(arr)) @@ -112,32 +112,35 @@ def _choose_data(threshold, labels, probs): return chosen_labels, chosen_probs -def compute_tace(threshold, labels, probs, R): +def compute_tace(threshold, probs, labels, R): if isinstance(labels, pd.DataFrame) or isinstance(labels, pd.Series): labels = labels.to_numpy() - chosen_labels, chosen_probs = _choose_data(threshold, labels, probs) - return compute_ace(R, chosen_labels, chosen_probs) - + chosen_labels, chosen_probs = _choose_data(threshold, probs, labels) + return compute_ace(R, chosen_probs, chosen_labels) class ModelWithTempScaling(nn.Module): + """ + A wrapper for a model with temperature scaling - def __init__(self, model, logits, labels): + model: a classification neural network + n_classes: number of classes in the dataset + """ + def __init__(self, model): super(ModelWithTempScaling, self).__init__() self.model = model self.temperature = nn.Parameter(torch.ones(1)) - self.logits = logits - self.labels = labels def forward(self, input): logits = self.model(input) - return torch.true_divide(logits, self.temperature) + return f.softmax(torch.true_divide(logits, self.temperature), dim=1) - def scaling(self, lr=0.01, max_iter=50): + def scaling(self, logits, labels, lr=0.01, max_iter=50): + # logits and labels must be from calibration dataset nll = nn.CrossEntropyLoss() optimizer = optim.LBFGS([self.temperature], lr=lr, max_iter=max_iter) def eval(): - loss = nll(torch.true_divide(self.logits, self.temperature), self.labels) + loss = nll(torch.true_divide(logits, self.temperature), labels) loss.backward() return loss @@ -146,30 +149,38 @@ def eval(): class ModelWithVectScaling(nn.Module): - def __init__(self, model, logits, labels): + + """ + A wrapper for a model with vector scaling + + model: a classification neural network + n_classes: number of classes in the dataset + + """ + + def __init__(self, model, n_classes): super(ModelWithVectScaling, self).__init__() self.model = model - self.logits = logits.float() - self.labels = labels self.W_and_b = nn.Parameter( - torch.cat((torch.ones(logits.shape[1]), torch.zeros(logits.shape[1])), dim=0)) + torch.cat((torch.ones(n_classes), torch.zeros(n_classes)), dim=0)) def forward(self, input): logits = self.model(input) - return self.scaling_logits(logits) + return f.softmax(self.scaling_logits(logits), dim=1) def scaling_logits(self, logits): + # logits and labels must be from calibration dataset W = torch.diag(self.W_and_b[:logits.shape[1]]) b = self.W_and_b[logits.shape[1]:] b = b.unsqueeze(0).expand(logits.shape[0], -1) - return torch.mm(logits, W) + b + return torch.mm(logits.float(), W) + b - def scaling(self, lr=0.00001, max_iter=3500): + def scaling(self, logits, labels, lr=0.00001, max_iter=3500): nll = nn.CrossEntropyLoss() optimizer = optim.LBFGS([self.W_and_b], lr=lr, max_iter=max_iter) def eval(): - loss = nll(self.scaling_logits(self.logits), self.labels) + loss = nll(self.scaling_logits(logits), labels) loss.backward() return loss @@ -178,28 +189,33 @@ def eval(): class ModelWithMatrScaling(nn.Module): - def __init__(self, model, logits, labels): + """ + A wrapper for a model with matrix scaling + + model: a classification neural network + n_classes: number of classes in the dataset + """ + def __init__(self, model, n_classes): super(ModelWithMatrScaling, self).__init__() self.model = model - self.logits = logits.float() - self.labels = labels - self.W = nn.Parameter(torch.diag(torch.ones(logits.shape[1]))) - self.b = nn.Parameter(torch.zeros(logits.shape[1])) + self.W = nn.Parameter(torch.diag(torch.ones(n_classes))) + self.b = nn.Parameter(torch.zeros(n_classes)) def forward(self, input): logits = self.model(input) - return self.scaling_logits(logits) + return f.softmax(self.scaling_logits(logits), dim=1) def scaling_logits(self, logits): self.b.unsqueeze(0).expand(logits.shape[0], -1) - return torch.mm(logits, self.W) + self.b + return torch.mm(logits.float(), self.W) + self.b - def scaling(self, lr=0.001, max_iter=100): + def scaling(self, logits, labels, lr=0.001, max_iter=100): + # logits and labels must be from calibration dataset nll = nn.CrossEntropyLoss() optimizer = optim.LBFGS([self.W, self.b], lr=lr, max_iter=max_iter) def eval(): - loss = nll(self.scaling_logits(self.logits), self.labels) + loss = nll(self.scaling_logits(logits), labels) loss.backward() return loss @@ -208,6 +224,14 @@ def eval(): def binary_histogram_binning(num_bins, probs, labels, probs_to_calibrate): + """ + histogram binning for binary classification + :param num_bins: number of bins + :param probs: probabilities on calibration dataset + :param labels: labels of calibration dataset + :param probs_to_calibrate: initial probabilities on test dataset (which need to be calibrated) + :return: calibrated probabilities on test dataset + """ bins = np.linspace(0, 1, num=num_bins) indexes_list = np.digitize(probs, bins) - 1 theta = np.zeros(num_bins) @@ -222,6 +246,14 @@ def binary_histogram_binning(num_bins, probs, labels, probs_to_calibrate): def multiclass_histogram_binning(num_bins, logits, labels, logits_to_calibrate): + """ + histogram binning for multiclass classification + :param num_bins: number of bins + :param logits: logits on calibration dataset + :param labels: labels on calibration dataset + :param logits_to_calibrate: initial logits on test dataset (which need to be calibrated) + :return: calibrated probabilities on test dataset + """ probs = softmax(logits, axis=1) probs_to_calibrate = softmax(logits_to_calibrate, axis=1) binning_res = [] From 95506080df9daa370c405b07f5b1c031723dac76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=A2=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D1=88=D0=BA=D0=B8=D0=BD?= Date: Sat, 19 Sep 2020 18:57:26 +0300 Subject: [PATCH 7/8] Use forward instead of scaling_logits --- examples/calibration_example.ipynb | 285 +++++++++++++++-------------- 1 file changed, 144 insertions(+), 141 deletions(-) diff --git a/examples/calibration_example.ipynb b/examples/calibration_example.ipynb index b83060b..76c555f 100644 --- a/examples/calibration_example.ipynb +++ b/examples/calibration_example.ipynb @@ -2,11 +2,11 @@ "cells": [ { "cell_type": "code", - "execution_count": 85, + "execution_count": 52, "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 34.0 + "height": 34 }, "colab_type": "code", "id": "s0rU2DMvB2rL", @@ -16,7 +16,7 @@ "source": [ "from sklearn.metrics import accuracy_score\n", "from scipy.special import softmax\n", - "import alpaca.calibrator as calibrator\n", + "import alpaca.calibrator as calibrator\n", "import numpy as np\n", "import pandas as pd\n", "from alpaca.dataloader.builder import build_dataset" @@ -24,7 +24,7 @@ }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -38,15 +38,15 @@ }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def compute_errors(n_bins, probs, labels, len_dataset, threshold):\n", " ece = calibrator.compute_ece(n_bins, probs, labels, len_dataset)\n", " sce = calibrator.compute_sce(n_bins, probs, labels)\n", - " ace = calibrator.compute_ace(n_bins, labels, probs)\n", - " tace = calibrator.compute_tace(threshold, labels, probs, n_bins)\n", + " ace = calibrator.compute_ace(n_bins, probs, labels)\n", + " tace = calibrator.compute_tace(threshold, probs, labels, n_bins)\n", " errors = {\n", " 'ece' : ece,\n", " 'sce' : sce,\n", @@ -59,11 +59,11 @@ }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 1000.0, + "height": 1000, "referenced_widgets": [ "2605521ec37f472ebaeb2799fc46089a", "f4c70bba269d41cb96b367a43a631101", @@ -134,7 +134,7 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -143,7 +143,7 @@ "(10000, 784)" ] }, - "execution_count": 75, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -169,7 +169,7 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -201,11 +201,11 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 7, "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 153.0 + "height": 153 }, "colab_type": "code", "id": "8qM2NebHB2ra", @@ -220,7 +220,7 @@ }, { "cell_type": "code", - "execution_count": 78, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -228,21 +228,25 @@ "output_type": "stream", "text": [ "..............................................................................................\n", - "Train loss on last batch 0.5379677414894104\n", + "Train loss on last batch 0.6062002182006836\n", "..............................................................................................\n", - "Train loss on last batch 0.3088064193725586\n", + "Train loss on last batch 0.27029111981391907\n", "..............................................................................................\n", - "Train loss on last batch 0.22927790880203247\n", + "Train loss on last batch 0.17512232065200806\n", "..............................................................................................\n", - "Train loss on last batch 0.18548454344272614\n", + "Train loss on last batch 0.137984961271286\n", "..............................................................................................\n", - "Train loss on last batch 0.15679685771465302\n", - "Accuracy 0.962890625\n" + "Train loss on last batch 0.11777593940496445\n", + "..............................................................................................\n", + "Train loss on last batch 0.10504749417304993\n", + "..............................................................................................\n", + "Train loss on last batch 0.09596506506204605\n", + "Accuracy 0.974609375\n" ] } ], "source": [ - "for epoch in range(5):\n", + "for epoch in range(7):\n", " for x_batch, y_batch in train_loader: # Train for one epoch\n", " print('.', end='')\n", " prediction = model(x_batch)\n", @@ -263,22 +267,22 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "tensor([[-6.1167, -8.9871, 3.8799, ..., -7.2181, 7.8800, -6.4360],\n", - " [-0.1971, 4.4322, -0.6775, ..., -2.8865, 2.0842, -4.1036],\n", - " [-3.9227, -3.9793, -0.0458, ..., -0.7269, -1.2891, -0.3848],\n", + "tensor([[ 8.9512, -4.2500, 0.6798, ..., -2.8549, -0.2391, -2.0600],\n", + " [ 0.3614, -6.6645, -3.0572, ..., -5.0718, -0.3500, -2.2592],\n", + " [-1.1534, -2.4635, -4.5541, ..., -3.0422, 4.0586, 0.1374],\n", " ...,\n", - " [-4.0691, -1.3082, -3.1546, ..., -0.4103, -2.4649, 1.1635],\n", - " [10.0700, -8.9821, -1.3832, ..., -5.1656, 2.8142, 0.3769],\n", - " [-7.6608, -3.4758, -6.1055, ..., -0.1984, 0.0988, 6.5401]])" + " [-1.9714, 6.2411, -1.3644, ..., -0.1338, -0.8241, -1.2896],\n", + " [-4.3371, -0.0501, -3.0126, ..., -5.5163, -2.3426, 0.7490],\n", + " [-1.5622, -3.2278, 1.4504, ..., -2.4797, -1.2854, -0.3554]])" ] }, - "execution_count": 88, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -296,16 +300,16 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 53, "metadata": {}, "outputs": [], "source": [ - "calibr = calibrator.ModelWithTempScaling(model, logits, labels)" + "calibr = calibrator.ModelWithTempScaling(model)" ] }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 54, "metadata": {}, "outputs": [ { @@ -330,33 +334,39 @@ ")" ] }, - "execution_count": 90, + "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "calibr.scaling()" + "calibr.scaling(logits, labels)" ] }, { "cell_type": "code", - "execution_count": 91, + "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "tensor([[-5.7242, -2.0955, -2.2245, ..., 9.8173, -0.7770, 0.8910],\n", - " [ 3.1985, -2.7507, 0.3069, ..., -4.4638, -1.2120, -2.2296],\n", - " [-2.6328, -4.6969, 7.7340, ..., -3.8817, -2.4001, -3.3600],\n", + "tensor([[-5.9499e+00, -2.4130e+00, 3.5374e+00, ..., -2.5871e+00,\n", + " -1.1915e-02, -1.4973e+00],\n", + " [-1.7524e+00, 6.0652e+00, -6.6139e-01, ..., -1.5802e+00,\n", + " -9.0216e-01, -1.8846e+00],\n", + " [-3.2816e+00, -4.0238e+00, -4.9135e+00, ..., 1.6583e+00,\n", + " -1.2195e+00, 7.1447e+00],\n", " ...,\n", - " [-0.9659, -0.9615, -2.7335, ..., -0.5133, 1.3431, -1.5266],\n", - " [-2.0694, -3.1440, 3.9460, ..., 0.5145, 0.2711, -1.3649],\n", - " [-0.1192, -1.5945, 0.3817, ..., -4.0632, -0.5899, -1.9224]])" + " [-6.3742e+00, -5.2211e+00, -5.5002e+00, ..., 2.3404e+00,\n", + " 6.5512e-01, 5.1969e+00],\n", + " [-2.6708e+00, 7.7116e+00, 5.5328e-01, ..., 1.7785e-01,\n", + " 1.3387e-01, -3.4737e+00],\n", + " [-1.3014e+00, 7.1492e+00, 1.6999e-01, ..., -1.9588e+00,\n", + " 1.4840e-03, -3.1460e+00]])" ] }, - "execution_count": 91, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -374,26 +384,26 @@ }, { "cell_type": "code", - "execution_count": 93, + "execution_count": 56, "metadata": {}, "outputs": [], "source": [ - "probs = f.softmax(val_logits, dim=-1)" + "probs = f.softmax(val_logits, dim=-1)\n" ] }, { "cell_type": "code", - "execution_count": 94, + "execution_count": 57, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "ece = tensor([0.0296])\n", - "sce = tensor([0.0033])\n", - "ace = tensor(0.0310)\n", - "tace = tensor(0.0147)\n" + "ece = tensor([0.0197])\n", + "sce = tensor([0.0024])\n", + "ace = tensor(0.0221)\n", + "tace = tensor(0.0119)\n" ] } ], @@ -404,7 +414,7 @@ }, { "cell_type": "code", - "execution_count": 95, + "execution_count": 58, "metadata": {}, "outputs": [ { @@ -412,7 +422,7 @@ "output_type": "stream", "text": [ "Parameter containing:\n", - "tensor([0.6217], requires_grad=True)\n" + "tensor([0.6368], requires_grad=True)\n" ] } ], @@ -422,67 +432,49 @@ }, { "cell_type": "code", - "execution_count": 96, - "metadata": {}, - "outputs": [], - "source": [ - "temp_scaling_logits = torch.true_divide(val_logits, calibr.temperature)\n", - "temp_scaling_probs = f.softmax(temp_scaling_logits, dim=1)" - ] - }, - { - "cell_type": "code", - "execution_count": 97, + "execution_count": 59, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "ece = tensor([0.0085])\n", - "sce = tensor([0.0015])\n", - "ace = tensor(0.0182)\n", - "tace = tensor(0.0070)\n" + "ece = tensor([0.0076])\n", + "sce = tensor([0.0014])\n", + "ace = tensor(0.0151)\n", + "tace = tensor(0.0056)\n" ] } ], "source": [ + "temp_scaling_probs_list = []\n", + "for x_batch, y_batch in val_loader:\n", + " temp_scaling_probs_list.append(calibr.forward(x_batch))\n", + "temp_scaling_probs = torch.cat(temp_scaling_probs_list)\n", "compute_errors(n_bins=15, probs=temp_scaling_probs.detach().numpy(), labels=val_labels.numpy(),\n", " len_dataset=np.shape(probs)[0], threshold=0.9)" ] }, { "cell_type": "code", - "execution_count": 98, + "execution_count": 60, "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 34.0 + "height": 34 }, "colab_type": "code", "id": "McvVpiIqR6Nj", "outputId": "ed044e56-c766-457d-942a-7af91ac419f8" }, - "outputs": [ - { - "data": { - "text/plain": [ - "torch.int64" - ] - }, - "execution_count": 98, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "calibr = calibrator.ModelWithVectScaling(model, logits, labels).float()\n", - "labels.dtype" + "calibr = calibrator.ModelWithVectScaling(model, n_classes=10).float()" ] }, { "cell_type": "code", - "execution_count": 99, + "execution_count": 61, "metadata": {}, "outputs": [ { @@ -507,38 +499,40 @@ ")" ] }, - "execution_count": 99, + "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "calibr.scaling(lr=0.01, max_iter=50)" + "calibr.scaling(logits, labels, lr=0.001, max_iter=300)" ] }, { "cell_type": "code", - "execution_count": 100, + "execution_count": 62, "metadata": {}, "outputs": [], "source": [ - "vect_scaling_logits = calibr.scaling_logits(val_logits)\n", - "vect_scaling_probs = f.softmax(vect_scaling_logits, dim=1)" + "vect_scaling_probs_list = []\n", + "for x_batch, y_batch in val_loader:\n", + " vect_scaling_probs_list.append(calibr.forward(x_batch))\n", + "vect_scaling_probs = torch.cat(vect_scaling_probs_list)" ] }, { "cell_type": "code", - "execution_count": 101, + "execution_count": 63, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "ece = tensor([0.0183])\n", - "sce = tensor([0.0024])\n", - "ace = tensor(0.0224)\n", - "tace = tensor(0.0110)\n" + "ece = tensor([0.0077])\n", + "sce = tensor([0.0014])\n", + "ace = tensor(0.0152)\n", + "tace = tensor(0.0074)\n" ] } ], @@ -549,21 +543,21 @@ }, { "cell_type": "code", - "execution_count": 102, - "metadata": {}, + "execution_count": 64, + "metadata": { + "scrolled": true + }, "outputs": [ { "data": { "text/plain": [ "Parameter containing:\n", - "tensor([ 1.0942e+00, 1.0579e+00, 1.0807e+00, 1.0858e+00, 1.1143e+00,\n", - " 1.0998e+00, 1.0911e+00, 1.1073e+00, 1.0508e+00, 1.1783e+00,\n", - " -9.8967e-04, 1.2546e-03, -7.5154e-03, 7.0824e-03, 2.1402e-03,\n", - " -1.2270e-02, -2.2263e-03, 9.1528e-03, -1.4546e-02, 1.7918e-02],\n", - " requires_grad=True)" + "tensor([ 1.0551, 1.0509, 1.1472, 1.3279, 1.2181, 1.1756, 1.3048, 1.2188,\n", + " 1.4252, 1.2829, -0.0386, -0.0513, -0.0233, 0.0380, -0.0419, -0.0182,\n", + " 0.0301, -0.0224, 0.1063, 0.0213], requires_grad=True)" ] }, - "execution_count": 102, + "execution_count": 64, "metadata": {}, "output_type": "execute_result" } @@ -574,7 +568,7 @@ }, { "cell_type": "code", - "execution_count": 103, + "execution_count": 65, "metadata": {}, "outputs": [ { @@ -599,39 +593,41 @@ ")" ] }, - "execution_count": 103, + "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "calibr = calibrator.ModelWithMatrScaling(model, logits, labels).float()\n", - "calibr.scaling(lr=0.0001, max_iter=1000)" + "calibr = calibrator.ModelWithMatrScaling(model, n_classes=10).float()\n", + "calibr.scaling(logits, labels, lr=0.0001, max_iter=1000)" ] }, { "cell_type": "code", - "execution_count": 104, + "execution_count": 66, "metadata": {}, "outputs": [], "source": [ - "matr_scaling_logits = calibr.scaling_logits(val_logits)\n", - "matr_scaling_probs = f.softmax(matr_scaling_logits, dim=1)" + "matr_scaling_probs_list = []\n", + "for x_batch, y_batch in val_loader:\n", + " matr_scaling_probs_list.append(calibr.forward(x_batch))\n", + "matr_scaling_probs = torch.cat(matr_scaling_probs_list)" ] }, { "cell_type": "code", - "execution_count": 105, + "execution_count": 67, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "ece = tensor([0.0051])\n", + "ece = tensor([0.0056])\n", "sce = tensor([0.0014])\n", - "ace = tensor(0.0167)\n", - "tace = tensor(0.0061)\n" + "ace = tensor(0.0149)\n", + "tace = tensor(0.0066)\n" ] } ], @@ -642,7 +638,7 @@ }, { "cell_type": "code", - "execution_count": 106, + "execution_count": 68, "metadata": { "scrolled": true }, @@ -653,17 +649,17 @@ }, { "cell_type": "code", - "execution_count": 108, + "execution_count": 69, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "ece = tensor([0.0069])\n", - "sce = tensor([0.0016])\n", - "ace = tensor(0.0177, dtype=torch.float64)\n", - "tace = tensor(0.0129, dtype=torch.float64)\n" + "ece = tensor([0.0077])\n", + "sce = tensor([0.0015])\n", + "ace = tensor(0.0145, dtype=torch.float64)\n", + "tace = tensor(0.0105, dtype=torch.float64)\n" ] } ], @@ -671,6 +667,13 @@ "compute_errors(n_bins=15, probs=hist_binning_probs, labels=val_labels.numpy(),\n", " len_dataset=np.shape(probs)[0], threshold=0.9)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -695,7 +698,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.4" + "version": "3.7.6" }, "widgets": { "application/vnd.jupyter.widget-state+json": { @@ -1242,11 +1245,11 @@ "description": " 93%", "description_tooltip": null, "layout": "IPY_MODEL_c5fbb54c30174247a4b890e22a96cd15", - "max": 50000.0, - "min": 0.0, + "max": 50000, + "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_f95b3d10c84f400faa38c4396870d859", - "value": 46587.0 + "value": 46587 } }, "3f677cdc4469460c852fe4d9a6979869": { @@ -1438,11 +1441,11 @@ "description": "Extraction completed...: 100%", "description_tooltip": null, "layout": "IPY_MODEL_b6689d61d6604d8981d446c538fbd44f", - "max": 1.0, - "min": 0.0, + "max": 1, + "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_de3041298f1e496d93a8d58259cd7009", - "value": 1.0 + "value": 1 } }, "547d771bf7d146a19ef02a463c28a496": { @@ -1595,11 +1598,11 @@ "description": "", "description_tooltip": null, "layout": "IPY_MODEL_05f0a259a8d643c1ae85ecde57be4981", - "max": 1.0, - "min": 0.0, + "max": 1, + "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_fb2bc264a3ae41028b3d7bcabdfcc009", - "value": 1.0 + "value": 1 } }, "8cf16a3e63e3413a9b873711757595d0": { @@ -1632,11 +1635,11 @@ "description": "Dl Completed...: 100%", "description_tooltip": null, "layout": "IPY_MODEL_94fe1defabd84e3a8d31f398aeaf1455", - "max": 1.0, - "min": 0.0, + "max": 1, + "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_c2c2b28ffcae4bf29973bb229a663da3", - "value": 1.0 + "value": 1 } }, "9263135419074499a42e519958ed514a": { @@ -2043,11 +2046,11 @@ "description": "Dl Size...: 100%", "description_tooltip": null, "layout": "IPY_MODEL_9263135419074499a42e519958ed514a", - "max": 1.0, - "min": 0.0, + "max": 1, + "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_23306e469c1342b9921883cf33502298", - "value": 1.0 + "value": 1 } }, "c2c2b28ffcae4bf29973bb229a663da3": { @@ -2146,11 +2149,11 @@ "description": "", "description_tooltip": null, "layout": "IPY_MODEL_a4bc6f0e24fb4242b5536d0906810dc1", - "max": 1.0, - "min": 0.0, + "max": 1, + "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_59f6ddd1dfcb445a8fa9f2cc9a9eaf8b", - "value": 1.0 + "value": 1 } }, "d416605b18cc46658e89c1d4cb42fe46": { @@ -2169,11 +2172,11 @@ "description": " 0%", "description_tooltip": null, "layout": "IPY_MODEL_f7f30d82a72146be891adeb94eeabfc3", - "max": 10000.0, - "min": 0.0, + "max": 10000, + "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_29afad3a94774993a0f437e4ac2f9e2a", - "value": 0.0 + "value": 0 } }, "d6ad79f1ff934926884a149184ea2731": { From ef8624a061cd7bad7ec0a4f472c90cc7c5270e54 Mon Sep 17 00:00:00 2001 From: mtereshkin <63161001+mtereshkin@users.noreply.github.com> Date: Sat, 19 Sep 2020 19:06:36 +0300 Subject: [PATCH 8/8] Delete old version of calibrator.py --- examples/calibrator.py | 211 ----------------------------------------- 1 file changed, 211 deletions(-) delete mode 100644 examples/calibrator.py diff --git a/examples/calibrator.py b/examples/calibrator.py deleted file mode 100644 index 03d038d..0000000 --- a/examples/calibrator.py +++ /dev/null @@ -1,211 +0,0 @@ -import sklearn -import numpy as np - -import math -from torch.nn import functional as f -import torch -from torch import nn, optim -import math -from scipy.special import softmax - - -class Calibrator(): - def __init__(self, logits, labels): - self.temperature = torch.ones(1, requires_grad=True) - self.logits = logits - self.labels = labels - self.W = torch.diag(torch.ones(logits.shape[1])) - self.W.requires_grad_() - self.b = torch.zeros(logits.shape[1], requires_grad=True) - self.W_diag = torch.cat((torch.ones(logits.shape[1]), torch.zeros(logits.shape[1])), dim=0) - self.W_diag.requires_grad_() - - def split_into_bins(self, n_bins, logits, labels): - bins = [] - true_labels_for_bins = [] - - for i in range(n_bins): - bins.append([]) - true_labels_for_bins.append([]) - - for j in range(len(labels)): - max_p = max(softmax(logits[j])) - for i in range(n_bins): - if i / n_bins < max_p and max_p <= (i + 1) / n_bins: - bins[i].append((logits[j])) - true_labels_for_bins[i].append(labels[j]) - return np.array(bins), np.array(true_labels_for_bins) - - def compute_ece(self, n_bins, logits, labels, len_dataset): - bins, true_labels_for_bins = self.split_into_bins(n_bins, logits, labels) - bins = list(filter(None, bins)) - true_labels_for_bins = list(filter(None, true_labels_for_bins)) - ece = torch.zeros(1) - for i in range(len(bins)): - softmaxes = f.softmax(torch.from_numpy(np.array(bins[i])), dim=1) - confidences, predictions = torch.max(softmaxes, dim=1) - accuracy = sklearn.metrics.accuracy_score(true_labels_for_bins[i], predictions) - confidence = torch.sum(confidences) / len(bins[i]) - ece += len(bins[i]) * torch.abs(accuracy - confidence) / len_dataset - return ece - - def split_into_classes(self, dataset, column_label, logits): - by_column = dataset.groupby(column_label) - datasets = {} - class_logits = [] - dict_class_logits = {} - n_classes = len(set(dataset[column_label])) - for i in range(n_classes): - class_logits.append([]) - for groups, data in by_column: - datasets[groups] = data - for ind, label in enumerate(dataset[column_label].to_numpy()): - for i in range(n_classes): - if label == i: - class_logits[i].append(logits[ind]) - for i in range(n_classes): - dict_class_logits[i] = class_logits[i] - return datasets, dict_class_logits - - def compute_sce(self, nbins, column_label, logits, dataset): - ece_values_for_each_class = [] - datasets, dict_class_logits = self.split_into_classes(dataset, column_label, logits) - for item in datasets.keys(): - ece_values_for_each_class.append( - self.compute_ece(nbins, dict_class_logits[item], datasets[item][column_label].to_numpy(), len(dataset))) - return sum(ece_values_for_each_class) / len(datasets.keys()) - - def SplitIntoRanges(self, R, logits, labels): - N = len(logits) - bins = [] - true_labels = [] - for i in range(R): - bins.append([]) - true_labels.append([]) - for j in range(R): - for i in range(j * math.floor(N / R), (j + 1) * math.floor(N / R)): - bins[j].append(logits[i]) - true_labels[j].append(labels[i]) - return np.array(bins), np.array(true_labels) - - def ComputeAce(self, R, dataset, target, logits): - datasets, dict_class_logits = self.split_into_classes(dataset, target, logits) - summa = 0 - for dataset in datasets.keys(): - data = datasets[dataset] - class_labels = data[target].to_numpy() - class_logits = dict_class_logits[dataset] - bins, true_labels = self.SplitIntoRanges(R, class_logits, class_labels) - for binn, bin_labels in zip(bins, true_labels): - softmaxes = f.softmax(torch.from_numpy(binn), dim=1) - accuracy = sklearn.metrics.accuracy_score(torch.from_numpy(bin_labels), np.argmax(softmaxes, axis=1)) - conf_array = torch.max(softmaxes, dim=1)[0] - confidence = torch.sum(conf_array) / len(conf_array) - substraction = abs(accuracy - confidence) - summa += substraction - ACE = summa / (len(datasets.keys()) * R) - return ACE - - def ChooseData(self, threshold, dataset, logits): - arr = torch.max(f.softmax(torch.from_numpy(logits), dim=1), dim=1)[0] - arr.numpy() - arr_with_indices = list(enumerate(arr)) - arr_with_indices.sort(key=lambda x: x[1]) - thr_array = [] - for pair in arr_with_indices: - if pair[1] > threshold: - thr_array.append(pair) - indices = [] - for pair in thr_array: - indices.append(pair[0]) - chosen_data = dataset.iloc[indices] - chosen_logits = logits[indices] - return chosen_data, chosen_logits - - def ComputeTace(self, threshold, dataset, logits, R, target): - chosen_data, chosen_logits = self.ChooseData(threshold, dataset, logits) - return self.ComputeAce(R, chosen_data, target, chosen_logits) - - def NumberOfClasses(self, dataset, target): - by_column = dataset.groupby(target) - datasets = {} - for groups, data in by_column: - datasets[groups] = data - return len(datasets) - - def matrix_scaling_logits(self, logits): - self.b.unsqueeze(0).expand(logits.shape[0], -1) - return torch.mm(torch.from_numpy(logits), self.W) + self.b - - def vector_scaling_logits(self, logits): - W = torch.diag(self.W_diag[:logits.shape[1]]) - b = self.W_diag[logits.shape[1]:] - b = b.unsqueeze(0).expand(logits.shape[0], -1) - return torch.mm(torch.from_numpy(logits), W) + b - - def scale_logits_with_temperature(self, logits): - self.temperature.unsqueeze(1).expand(logits.shape[0], logits.shape[1]) - return torch.true_divide(torch.from_numpy(logits), self.temperature) - - def TemperatureScaling(self): - nll = nn.CrossEntropyLoss() - optimizer = optim.LBFGS([self.temperature], lr=0.0001, max_iter=500) - - def eval(): - loss = nll(self.scale_logits_with_temperature(self.logits), torch.from_numpy(np.array(self.labels))) - loss.backward() - return loss - - optimizer.step(eval) - return self - - def MatrixScaling(self): - - nll = nn.CrossEntropyLoss() - optimizer = optim.LBFGS([self.W, self.b], lr=0.0001, max_iter=1000) - - def eval(): - loss = nll(self.matrix_scaling_logits(self.logits), torch.from_numpy(np.array(self.labels))) - loss.backward() - return loss - - optimizer.step(eval) - return self - - def VectorScaling(self): - nll = nn.CrossEntropyLoss() - optimizer = optim.LBFGS([self.W_diag], lr=0.000001, max_iter=9000) - - def eval(): - loss = nll(self.vector_scaling_logits(self.logits), torch.from_numpy(np.array(self.labels))) - loss.backward() - return loss - - optimizer.step(eval) - return self - - -def binary_histogram_binning(num_bins, probs, labels, probs_to_calibrate): - bins = np.linspace(0, 1, num=num_bins) - indexes_list = np.digitize(probs, bins) - 1 - theta = np.zeros(num_bins) - for i in range(len(bins)): - binn = (indexes_list == i) - binn_len = np.sum(binn) - if binn_len != 0: - theta[i] = np.sum(labels[binn]) / binn_len - else: - theta[i] = bins[i] - return list(map(lambda x: theta[np.digitize(x, bins) - 1], probs_to_calibrate)) - - -def multiclass_histogram_binning(num_bins, logits, labels, logits_to_calibrate): - probs = softmax(logits, axis=1) - probs_to_calibrate = softmax(logits_to_calibrate, axis=1) - binning_res = [] - for k in range(np.shape(probs)[1]): - binning_res.append(binary_histogram_binning(num_bins, probs[:, k], labels == k, probs_to_calibrate[:, k])) - binning_res = np.vstack(binning_res).T - cal_confs = binning_res / (np.sum(binning_res, axis=1)[:, None]) - return cal_confs -