{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "trusted": true }, "outputs": [], "source": [ "import numpy as np # linear algebra\n", "import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T11:57:55.701415Z", "iopub.status.busy": "2025-05-23T11:57:55.700778Z", "iopub.status.idle": "2025-05-23T11:58:26.605745Z", "shell.execute_reply": "2025-05-23T11:58:26.604872Z", "shell.execute_reply.started": "2025-05-23T11:57:55.701388Z" }, "trusted": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Merge complete.\n" ] } ], "source": [ "# import os\n", "# import shutil\n", "# from pathlib import Path\n", "\n", "# # Define paths\n", "# source_dirs = [\n", "# './Digital Knee X-ray Images/Digital Knee X-ray Images/Knee X-ray Images/MedicalExpert-I/MedicalExpert-I',\n", "# './Digital Knee X-ray Images/Digital Knee X-ray Images/Knee X-ray Images/MedicalExpert-II/MedicalExpert-II'\n", "# ]\n", "# target_root = './merged_dataset'\n", "\n", "# # Create target root directory if it doesn't exist\n", "# os.makedirs(target_root, exist_ok=True)\n", "\n", "# # Merge subfolders\n", "# for source_dir in source_dirs:\n", "# for class_name in os.listdir(source_dir):\n", "# class_src_path = os.path.join(source_dir, class_name)\n", "# class_dst_path = os.path.join(target_root, class_name)\n", "\n", "# if os.path.isdir(class_src_path):\n", "# os.makedirs(class_dst_path, exist_ok=True)\n", "# for filename in os.listdir(class_src_path):\n", "# src_file = os.path.join(class_src_path, filename)\n", "# dst_file = os.path.join(class_dst_path, f\"{Path(source_dir).name}_{filename}\")\n", "# shutil.copy2(src_file, dst_file)\n", "\n", "# print(\"Merge complete.\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T11:58:26.606811Z", "iopub.status.busy": "2025-05-23T11:58:26.606552Z", "iopub.status.idle": "2025-05-23T11:58:26.727666Z", "shell.execute_reply": "2025-05-23T11:58:26.726964Z", "shell.execute_reply.started": "2025-05-23T11:58:26.606789Z" }, "trusted": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m\u001b[34m0Normal\u001b[m\u001b[m \u001b[1m\u001b[34m1Doubtful\u001b[m\u001b[m \u001b[1m\u001b[34m2Mild\u001b[m\u001b[m \u001b[1m\u001b[34m3Moderate\u001b[m\u001b[m \u001b[1m\u001b[34m4Severe\u001b[m\u001b[m\n" ] } ], "source": [ "!ls ./merged_dataset" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T11:58:26.728979Z", "iopub.status.busy": "2025-05-23T11:58:26.728764Z", "iopub.status.idle": "2025-05-23T11:58:40.649053Z", "shell.execute_reply": "2025-05-23T11:58:40.648489Z", "shell.execute_reply.started": "2025-05-23T11:58:26.728958Z" }, "trusted": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/captain-mac/Documents/Code/kaggle/.venv/lib/python3.9/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", " warnings.warn(\n" ] } ], "source": [ "import keras\n", "import tensorflow as tf\n", "import numpy as np\n", "import PIL\n", "import plotly.express as px\n", "import plotly.graph_objects as go\n", "from plotly.subplots import make_subplots" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T11:58:40.651277Z", "iopub.status.busy": "2025-05-23T11:58:40.650783Z", "iopub.status.idle": "2025-05-23T11:58:43.677330Z", "shell.execute_reply": "2025-05-23T11:58:43.676757Z", "shell.execute_reply.started": "2025-05-23T11:58:40.651225Z" }, "trusted": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 3300 files belonging to 5 classes.\n", "Using 2640 files for training.\n", "Found 3300 files belonging to 5 classes.\n", "Using 660 files for validation.\n" ] }, { "data": { "text/plain": [ "(<_PrefetchDataset element_spec=(TensorSpec(shape=(None, 162, 300, 1), dtype=tf.float32, name=None), TensorSpec(shape=(None, 5), dtype=tf.float32, name=None))>,\n", " <_PrefetchDataset element_spec=(TensorSpec(shape=(None, 162, 300, 1), dtype=tf.float32, name=None), TensorSpec(shape=(None, 5), dtype=tf.float32, name=None))>)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_ds = keras.utils.image_dataset_from_directory(\n", " target_root,\n", " labels='inferred',\n", " label_mode='categorical',\n", " color_mode='grayscale',\n", " image_size=(162, 300),\n", " seed=42,\n", " validation_split=0.2, \n", " subset='training',\n", ")\n", "\n", "val_ds = keras.utils.image_dataset_from_directory(\n", " target_root,\n", " labels='inferred',\n", " label_mode='categorical',\n", " color_mode='grayscale',\n", " image_size=(162, 300),\n", " seed=42,\n", " validation_split=0.2, \n", " subset='validation',\n", ")\n", "\n", "train_ds, val_ds" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T11:58:43.678171Z", "iopub.status.busy": "2025-05-23T11:58:43.677958Z", "iopub.status.idle": "2025-05-23T11:58:43.682946Z", "shell.execute_reply": "2025-05-23T11:58:43.682407Z", "shell.execute_reply.started": "2025-05-23T11:58:43.678156Z" }, "trusted": true }, "outputs": [ { "data": { "text/plain": [ "['0Normal', '1Doubtful', '2Mild', '3Moderate', '4Severe']" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_ds.class_names" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T12:08:35.531957Z", "iopub.status.busy": "2025-05-23T12:08:35.531414Z", "iopub.status.idle": "2025-05-23T12:08:35.810268Z", "shell.execute_reply": "2025-05-23T12:08:35.809570Z", "shell.execute_reply.started": "2025-05-23T12:08:35.531937Z" }, "trusted": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABJ4AAACWCAYAAACfD0KUAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOydCbCt2VmWdw9JOgNJd6cnekiThBiIwWjhBBoBiYiAigJOWGAYpBQ1FUdABQQEFVFEQSgUUXDAgCMIlJaIIorBAYVAQiDz0HMSIHP3sd6d+5w89+3v3/fc2+em9773/6r22fv8w/rX8I3v+tb6rzg6OjrarLTSSiuttNJKK6200korrbTSSiuttNIp05WnXeBKK6200korrbTSSiuttNJKK6200korhVbgaaWVVlpppZVWWmmllVZaaaWVVlpppYtCK/C00korrbTSSiuttNJKK6200korrbTSRaEVeFpppZVWWmmllVZaaaWVVlpppZVWWumi0Ao8rbTSSiuttNJKK6200korrbTSSiutdFFoBZ5WWmmllVZaaaWVVlpppZVWWmmllVa6KLQCTyuttNJKK6200korrbTSSiuttNJKK10UWoGnlVZaaaWVVlpppZVWWmmllVZaaaWVLgqtwNNKK6200korrbTSSiuttNJKK6200koXhVbg6RHSq1/96s0VV1yx+et//a+fWpn/6T/9p22Z+d5X+kN/6A9tPuRDPuSsY6nzl3/5l5/z3lyTa1da6TTpcpXFQ6BV5lcyrbJ6Ojb4SU960iMu5wd+4Ac2v/JX/srNNddcs+2/t7zlLec9jt/+7d/+iOux0mHRKsOPnFYZXunRolV+Hzmt8nthdFkCTxmgDNSP//iPby5F+hf/4l9sfu/v/b2bZzzjGZsnPOEJm2c/+9mbP/Wn/tTIzOmHfD7v8z5vLOvP//k/f3zNvffe+wGo/UqXE13qshh6wxvesPk9v+f3bK699trNk5/85M3v/J2/c/PzP//zo/HI53u+53sWgZtVBld6tOhSl9WXv/zlmxe/+MWbj/7ojz52ACOXEyGr+Vx99dWb66+/fvORH/mRmxe96EWbl73sZZt9ore//e1b/TEFA/fdd99WNz3+8Y/ffOM3fuPmO77jOzZPfOITH5V6rnTxaZXh99MqwysdGq3y+35a5fdw6epHuwIrnT794T/8hze33nrr5g/+wT+4edrTnrb5f//v/23+zt/5O5t/9+/+3eZ//a//tWVwUwQ8we43fdM3bR772Meede6f/tN/uj3/zne+86zj3/qt37p56KGHPiDtWWmlQ6Vf/MVf3Hzcx33c5q1vfevmS77kSzaPecxjNn/zb/7Nzcd8zMds/s//+T+bpz71qQ+75yu+4is2v/t3/+41Q2illT6A9N/+23/bfMM3fMPmOc95zubDP/zDt/K5i37Lb/ktm8/6rM/aHB0dbeX7J37iJzb/8B/+w60d/at/9a9u/uSf/JObfXF6/9Jf+kvb3x/7sR971rmXvvSlm1/4hV/YfOVXfuXmBS94waNUw5VWOh1aZXiV4ZUOl1b5fcHmcqAVeLoE6bu/+7sfxtxBgj/7sz9784//8T9+WHbTJ37iJ27+zb/5N5vv//7v32ZjQD/6oz+6edWrXrX5tE/7tIdlYSSAXmmllXZTDODP/uzPbv7H//gfm1/za37N9thv+22/bfPc5z5383Vf93Wbr/7qrz7r+qTbxtj+y3/5L7fg08WiX/qlX7rkZ1VWWul86Hf8jt+xzQr+oA/6oO3yg3M5vb/sl/2y7eSO6a/8lb+y+e2//bdvM4w/7MM+bPNJn/RJm32mu+++e/udbMyVVjp0WmV4pZUOl1b5vTzoslxqdxJ697vfvfnSL/3SLWDzlKc8ZRukPf/5z9/80A/90OI9yWS48847txlFyWj4yZ/8yYdd8zM/8zObT//0T9+mBSaT6Ff/6l+9BX1Ogpjm3pMstWnQKfS7ftfv2n7/9E//9MPO3XbbbZvf9Jt+0+af/JN/ctbxgFQf8REfsQ2ST7LH00Q/8iM/sg2409ZnPvOZm2/5lm855z0rrXSpyGJA4PA/oFMoxvDjP/7jN//8n//zh13/+37f79sa02Q9ZRbnXPSSl7xk2y9p5w033LA1wlnaN61D/7mf+7mtEY5R/8zP/MztuWRV/bE/9se25WSWKeV81Ed91DZLMhR5/dAP/dBt/0SvdNrzf/kv/2XzGZ/xGdvMysc97nGbO+64Y5sq/Y53vOOcdV/p0qNDltWUHdl4JJQMxn/2z/7ZNvX/L//lv/wwB/NzP/dzNzfffPO2Dc973vO2s7Mn2SNj1z4OWbb7W3/rb932dTKdrTty34033rj9nRlXliYk7T/ynMmoUPRTjkdXhGLb+W3KPZN/sdKlQ6sMrzK80uHSKr+r/O47rcDTAr3tbW/b/L2/9/e2A5yUvTDJPffcs2WuCYX9R//oH21TBL/wC79w88Vf/MVbwf3Nv/k3b+66667ja37qp35q8+t//a/fgj9f9EVftM14CKN+6qd+6jbDYRclYyKph1kydyH05je/efud4HSiP/AH/sDm3/7bf7tdGhR673vfuw1Gc/xCKcHrJ3zCJ2yFPf33whe+cPNlX/Zl52zrSitdCrKYpaj/9//+362Bbvq1v/bXboGgpNiarrrqqs1f+At/YZsyfK56xABmbXju+Zqv+ZrN53/+52/3d/uNv/E3Pmw/t8hz+uumm27aziQli9HgUWaHYgDTt+mTT/mUT9muN08//tE/+kc3f+bP/JltGvTnfM7nnFVudEQciz/yR/7I5m//7b+9fUa+k/680uVHhyqrp0kBYeO8//f//t+3/REKEJs+yf4NAX2/9mu/dhsUxLH8W3/rb13wsx588MFtxnIc6b/21/7aNtiIjc0nFIf37/7dv3s8+ZTn55NsyuzfmGX5oTjKOf4FX/AFp9IHKx0urTK8yvBKh0ur/K7yu/d0dBnSP/gH/yBQ5NFLX/rSxWve+973Hr3rXe8669gDDzxwdPPNNx99zud8zvGxV73qVduyHv/4xx+9/vWvPz7+Yz/2Y9vjL37xi4+PffzHf/zRR3zERxy9853vPD720EMPHX30R3/00bOe9azjYz/0Qz+0vTfffezLvuzLLqjNn/u5n3t01VVXHb3iFa8463jK/MIv/MKj+++//+ixj33s0Xd8x3dsj3/f933f0RVXXHH06le/evvMXHfPPfcc3/fZn/3ZR3feeefDynL9PvVTP/XommuuOXrNa15zfOxlL3vZth6XKeutdBnJYuQl133FV3zFw8594zd+4/bcz/zMz5xV96/92q/dtjd1eN7znretU6hl8N3vfvfRTTfddPTc5z736B3veMdxud/7vd+7ve5Lv/RLz5LVHPuiL/qih9Ujxx/3uMdtnw99y7d8y/b4LbfccvS2t73t+PgXf/EXb4/72re//e0PK/NrvuZrtrrDck/9VzpcupRltSly2Lw+2c0letGLXrS95id+4ie2/3/913/99v/v/M7vPL4mMvxRH/VRR0960pOO5Wxqg/srY9By/cf/+B8/q18++ZM/eWvL0RXooakPlsY0tj3lN33Mx3zM9rOrXivtL60y/H5aZXi5XivtJ63y+35a5fdw5XfNeFqgZBGw0XYyF+6///5t1kCyF7JBd1OQ3yxZc0bDr/t1v267oXco9//H//gftxkKyXJI2mE+2dE+SHT2geklMqYgtZG1oNfnS1lC9/f//t/fZjU861nPGq+57rrrtqhtNhPnnrxZIOmXF4oC/+AP/uC2X4I+Q0G+096VVrrUZZHlZlmC1pQ0X1+zlPX0r/7VvxrLzltNkkmYbCTKCn3yJ3/ydinf933f9z3snmQlTZRlf142m74KJSvKac8c9xv5/KKC7BuVfozeSP/87//9v8fnrXTp0qHK6mkTr1gmozHtueWWWza///f//rP2SfwTf+JPbLOMf/iHf/iCn5WlshBLZ7Pc4j/8h//wiNqw0uVJqwy/j1YZXukQaZXf99Eqv/tLK/C0g7L281f8il+xDeyybjQpcwnosnt+0wToZK8W9kR55StfuRW+v/gX/+K2HH9IyWOTsdOkLKPJmtYoiF7v2pRldf/+3//7zWtf+9ptwPtIltkltTNB9dQvz372sy+43JUuTzpEWQSUede73vWwc7wlst8wCSUVOHsrLe319JrXvGZRlgI8cR7Kevfbb799fJaB4VDSj0PZr2k6/sADDxwfi65IqnLW5sfQpw+T4hyaxmalS58OUVZPm1iyDnAbeUxbr7zybJcrEzGcvxBKec94xjMe1n+hpddQr7TSuWiV4VWGVzpcWuV3ld99pvWtdgv0nd/5nduAKmhw9jfJ3ijspZK9Wc6XgjyH/vSf/tOLGT8JNE+TkjGRtwRkc/Bscpzgcxfl2mRnZK+XBMtBuFda6dGmQ5XFgDGRpze96U0PO8exbEQ4EVlPafe//tf/+hHXJfVog+tnnc9xgLBkNeZ1tpkR+3N/7s9tAa+s+8/sV+pNP690+dChyuppU/bJSLuf/vSnn9d9mS2dKLL2gaRd9VjSCytdGrTK8PtoleGVDpFW+X0frfK7v7QCTwsUoCYoZjbrNQOA8DYl3bDpFa94xfESFhDRpPa94AUv2FxsioLJ0rkonaQYkna4i5J9EWUVxZVXvi9tRH4SChqe8qZ+efnLX37B5a50+dGhymKAnrwVMsvimn7sx35sW49db/DIG+q+6qu+avsmjIDCJpbARpayEaQpxy50iez5vjwg/ZrZNW8mnqzJlS5POlRZPU1KFmDS9vN2SOQ78pgXDcSJNwCct/1wniXvoX45wNJsbMrL0ldmWOm/EH245MDuotSj60A9enZ3pUuLVhleZXilw6VVflf53Xdal9otEIiil7kkWMybnSbK0jSvc81O/rk+AE4oAFDWuub15FMGRJamndYrKfMGu7xNLsKVfZZ4leNJKKh2FFTSKh9p/wUdT79ECUB5K0LqtNJKl4Ms5vWzL33pS88CnwIMZc38Z3zGZ+y8l6ynvImkX1ub9fppxzd/8zeftZTv+7//+7cylr2eHo1xye9H8oaQlQ6bDllWT4OS/Zc9JDIrmTfWQJ/0SZ+0tcvf9V3fdXws+27kDZCZFGJ5apzf9OF//s//+axyv+mbvmnxmX5bUPo9/ydIyN5toSc84Qnb78mJXaJnPvOZ2zcCZZ8K6Hu/93s3r3vd605cxkqHSasMrzK80uHSKr+r/O47XdYZT9/2bd+2+YEf+IGHHX/Ri160fZ14EOO8/jBB3Kte9aptkPec5zzneO1opxrmNebZwDeB4Nd//ddv19b+2T/7Z4+vyevJc02yIPLq86CWeWVlFMLrX//67dK4JYoy+LiP+7gtKHSuTdqS6RQENs/+kR/5ke0HyisfszxmiZ73vOdtP6dBydRI/z7/+c/fboKMkP/yX/7Lt8jzSitd6rIYvv/Wb/3Wbb0D6sYY/Y2/8Te2cpjN/s9F2evpK7/yKx/2GtyUk1flvvCFL9wazBja1D+gT2ZZXvziF28uNmVpXYxj2hXH5clPfvLme77ne87aA2qlS48uVVnN/hexT6H/+l//6/Y7DuS11167/XgDUWY1kx0cRzOvbE49XvKSl2zbGRmPHYbyyuQ47lkC8T//5//cymhmpvOctJlZ2eyjFkA69cgsaeQrzubSHhrZwyNjkeXx2RA2wHP28viSL/mS4wmnZB6n/+NwZ1Y2S4Cz/D6fJfq8z/u8bf3Shiy5TwZ12pr6rHT4tMrw+2iV4ZUOkVb5fR+t8nugdHQZEq8vXPq87nWv274S8au/+qu3rzTM68Z/1a/6VdtXlef1hjkG+TXoX/d1X3d0xx13bK9//vOff/waR9PP/dzPHX3WZ33W9lXlj3nMY45uu+22o0/5lE85+u7v/u5TeyXlrrb5NYwneSXl9Cr3UPcDZXX9fviHf/joIz/yI7evlnzGM55x9M3f/M3rq9VXumxkMZQ2fPqnf/rRk5/85O1rW/OMn/3Znz3rGtd9Vx9ZBkPf9V3fte2PtPP6668/+szP/MyzXo0bSj898YlPHOs2yf9SXWj3S17ykuNjL3vZy45e8IIXbNt1ww03HH3+53/+tq/79a6rzB8+XeqySp2mz2Tr+Fx55ZVH11577bateYXzT/3UT43l33XXXUcvfOELt3ISe5jXU0+vQI6Mf9qnfdrRE57whKPrrrvu6Au+4AuOfvInf3J8lXPkOn3zCZ/wCdvr88rstPXBBx88q8wf/dEfPbbD7o9dr+fOuKSfMy6/4Tf8hqMf//EfvyRe5Xw50yrD76dVhs/us1WG959W+X0/rfJ7uPJ7Rf482uDXSiuttNJKK6200korrbTSSiuttNJKlx6tezyttNJKK6200korrbTSSiuttNJKK610UWgFnlZaaaWVVlpppZVWWmmllVZaaaWVVrootAJPK6200korrbTSSiuttNJKK6200korXRRagaeVVlpppZVWWmmllVZaaaWVVlpppZUuCq3A00orrbTSSiuttNJKK6200korrbTSSheFVuBppZVWWmmllVZaaaWVVlpppZVWWmmli0Ir8LTSSiuttNJKK6200korrbTSSiuttNJFoatPeuEnfuInbh772Mdurrzyyu3n6quv3lx11VWbK6644vh3PjmXY6ajo6Pt8cc85jGbJz7xiZsnP/nJm8c//vHb/3NPyn3CE56wLYfyU8ZDDz10/P8HfdAHbW6++ebNk570pM0111yzefDBBzdvectbNu95z3u216asd7/73cf35NjjHve47f/vfe97t8fyO3XJuVybZ+ca6kg5OZZ7UnY+uTbn8uG425vvHE+d+NDmfHJ/Pmkf5YTSpnx+8Rd/cfPOd77zuJz0DX3MPSkv59KG0Nvf/vbjevzSL/3S8TWMR8rINfk/fUb78/9TnvKUbR1zX46lbvfff//2HH2XsnIuzwjxmzbTJ9SH79zXlGN5HvXPd+5PefmdD89jjPhNf/Kb8n2Nnz0d536exRhSB8YnY5DPO97xju0n45LjJ6Wp7ftE3/7t337Mf+GRUPolYxrycfczvMP19LNlPb/hv3ynTMY9H+5lrLmPskKMr/nKMuP+vf766ze33nrrlrcjs5aPfOe+fOe+jDHtRD+Yz0LWI+GB/IZn801bqSPH8k25PsZzUg/a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GJ0CYzuYtp+B7Wnwi09Qn4RMFIv7jTzi2dNYOUeybeZGUqjnPsLcguH0j/732esjtaqh87Fxfm3Jxub1hzo/7tFgcemE8a945rXTKbjmOGoVyImn2055tHZS+0NXQfXi+ZPvtoMBpzEu79be1v6yZZOMcg3c6DnZPPayWzwIWFWfwxqVtQZO8Kxn1B84t4HS8h07WPtywunl8dojdnDHEnr+DsBYjUSea1+NoQryX323xG7eYGeJ21DjF1uPVS/P95O/oB87XuHZiw/5Q3u1RAsCtq0uv50+5bvn6Cv/9Vak/aabbrrppptuuummm2666aabbrrppjdFb6c2+aabbrrppptuuummm2666aabbrrppjdFd+Dppptuuummm2666aabbrrppptuuummL4XuwNNNN91000033XTTTTfddNNNN910001fCt2Bp5tuuummm2666aabbrrppptuuummm74UugNPN91000033XTTTTfddNNNN9100003fSl0B55uuummm2666aabbrrppptuuummm276UugOPN1000033XTTTTfddNNNN91000033fSl0B14uummm2666aabbrrppptuuummm2666UuhO/B000033XTTTTfddNNNN91000033XTTJ18G/X9FWjtnz15JogAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "for images, labels in train_ds.take(1):\n", " plt.figure(figsize=(15, 5))\n", " for i in range(5):\n", " ax = plt.subplot(1, 5, i + 1)\n", " plt.imshow(images[i].numpy().squeeze(), cmap='gray') # For grayscale\n", " plt.title(f\"Label: {train_ds.class_names[np.argmax(labels[i].numpy())]}\")\n", " plt.axis(\"off\")\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training class distribution:\n", " 0Normal: 822 images\n", " 1Doubtful: 766 images\n", " 2Mild: 383 images\n", " 3Moderate: 350 images\n", " 4Severe: 319 images\n", "Validation class distribution:\n", " 0Normal: 195 images\n", " 1Doubtful: 199 images\n", " 2Mild: 81 images\n", " 3Moderate: 92 images\n", " 4Severe: 93 images\n" ] }, { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "text": { "bdata": "AAAAANcjP0AAAADAHgU9QAAAAMAeBS1AAAAAwB6FKkAAAADA9SgoQA==", "dtype": "f8" }, "type": "bar", "x": [ "0Normal", "1Doubtful", "2Mild", "3Moderate", "4Severe" ], "y": [ 822, 766, 383, 350, 319 ] } ], "layout": { "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermap": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermap" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Training Set Class Distribution" }, "xaxis": { "title": { "text": "Classes" } }, "yaxis": { "title": { "text": "Number of Images" } } } } }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "text": { "bdata": "AAAAwMyMPUAAAABgZiY+QAAAAIA9iihAAAAAoEfhK0AAAACAFC4sQA==", "dtype": "f8" }, "type": "bar", "x": [ "0Normal", "1Doubtful", "2Mild", "3Moderate", "4Severe" ], "y": [ 195, 199, 81, 92, 93 ] } ], "layout": { "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermap": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermap" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Validation Set Class Distribution" }, "xaxis": { "title": { "text": "Classes" } }, "yaxis": { "title": { "text": "Number of Images" } } } } }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# First, analyze your class distribution\n", "for ds_name, ds in [(\"Training\", train_ds), (\"Validation\", val_ds)]:\n", " class_counts = {}\n", " for _, labels in ds:\n", " for i in range(len(ds.class_names)):\n", " class_counts[ds.class_names[i]] = class_counts.get(\n", " ds.class_names[i], 0\n", " ) + np.sum(labels[:, i])\n", "\n", " print(f\"{ds_name} class distribution:\")\n", " for cls, count in class_counts.items():\n", " print(f\" {cls}: {int(count)} images\")\n", "\n", "\n", "# plotting the class distribution\n", "def plot_class_distribution(ds, title):\n", " class_counts = {cls: 0 for cls in ds.class_names}\n", " for _, labels in ds:\n", " for i in range(len(ds.class_names)):\n", " class_counts[ds.class_names[i]] += np.sum(labels[:, i])\n", "\n", " fig = go.Figure(\n", " data=[\n", " go.Bar(\n", " x=list(class_counts.keys()),\n", " y=list(class_counts.values()),\n", " text=np.round(\n", " (list(class_counts.values()) / np.sum(list(class_counts.values()))) * 100,\n", " 2,\n", " ),\n", " )\n", " ]\n", " )\n", " fig.update_layout(\n", " title=title, xaxis_title=\"Classes\", yaxis_title=\"Number of Images\"\n", " )\n", " fig.show()\n", "\n", "\n", "plot_class_distribution(train_ds, \"Training Set Class Distribution\")\n", "plot_class_distribution(val_ds, \"Validation Set Class Distribution\")" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Class weights: {0: np.float64(0.6423357664233577), 1: np.float64(0.6892950391644909), 2: np.float64(1.3785900783289817), 3: np.float64(1.5085714285714287), 4: np.float64(1.6551724137931034)}\n" ] } ], "source": [ "# adding class weights\n", "from sklearn.utils.class_weight import compute_class_weight\n", "\n", "# Get training labels\n", "train_labels = []\n", "for _, labels_batch in train_ds:\n", " train_labels.extend(np.argmax(labels_batch, axis=1))\n", "\n", "# Compute class weights\n", "class_weights = compute_class_weight(\n", " class_weight=\"balanced\", classes=np.unique(train_labels), y=train_labels\n", ")\n", "class_weights_dict = {i: weight for i, weight in enumerate(class_weights)}\n", "print(\"Class weights:\", class_weights_dict)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T12:45:42.742871Z", "iopub.status.busy": "2025-05-23T12:45:42.742412Z", "iopub.status.idle": "2025-05-23T12:45:42.851882Z", "shell.execute_reply": "2025-05-23T12:45:42.851364Z", "shell.execute_reply.started": "2025-05-23T12:45:42.742853Z" }, "trusted": true }, "outputs": [ { "data": { "text/html": [ "
Model: \"sequential\"\n",
       "
\n" ], "text/plain": [ "\u001b[1mModel: \"sequential\"\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
       "┃ Layer (type)                     Output Shape                  Param # ┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
       "│ lambda (Lambda)                 │ (None, 162, 300, 3)    │             0 │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ lambda_1 (Lambda)               │ (None, 162, 300, 3)    │             0 │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ densenet121 (Functional)        │ (None, 5, 9, 1024)     │     7,037,504 │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ global_average_pooling2d        │ (None, 1024)           │             0 │\n",
       "│ (GlobalAveragePooling2D)        │                        │               │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ batch_normalization             │ (None, 1024)           │         4,096 │\n",
       "│ (BatchNormalization)            │                        │               │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense (Dense)                   │ (None, 256)            │       262,400 │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout (Dropout)               │ (None, 256)            │             0 │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_1 (Dense)                 │ (None, 5)              │         1,285 │\n",
       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
       "
\n" ], "text/plain": [ "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n", "┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n", "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n", "│ lambda (\u001b[38;5;33mLambda\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m162\u001b[0m, \u001b[38;5;34m300\u001b[0m, \u001b[38;5;34m3\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ lambda_1 (\u001b[38;5;33mLambda\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m162\u001b[0m, \u001b[38;5;34m300\u001b[0m, \u001b[38;5;34m3\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ densenet121 (\u001b[38;5;33mFunctional\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m5\u001b[0m, \u001b[38;5;34m9\u001b[0m, \u001b[38;5;34m1024\u001b[0m) │ \u001b[38;5;34m7,037,504\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ global_average_pooling2d │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1024\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "│ (\u001b[38;5;33mGlobalAveragePooling2D\u001b[0m) │ │ │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ batch_normalization │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1024\u001b[0m) │ \u001b[38;5;34m4,096\u001b[0m │\n", "│ (\u001b[38;5;33mBatchNormalization\u001b[0m) │ │ │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dense (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m256\u001b[0m) │ \u001b[38;5;34m262,400\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dropout (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m256\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dense_1 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m5\u001b[0m) │ \u001b[38;5;34m1,285\u001b[0m │\n", "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Total params: 7,305,285 (27.87 MB)\n",
       "
\n" ], "text/plain": [ "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m7,305,285\u001b[0m (27.87 MB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Trainable params: 265,733 (1.01 MB)\n",
       "
\n" ], "text/plain": [ "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m265,733\u001b[0m (1.01 MB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Non-trainable params: 7,039,552 (26.85 MB)\n",
       "
\n" ], "text/plain": [ "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m7,039,552\u001b[0m (26.85 MB)\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "img_height = 162\n", "img_width = 300\n", "num_classes = len(train_ds.class_names)\n", "\n", "# base model for transfer learning\n", "base_model = keras.applications.DenseNet121(\n", " input_shape=(img_height, img_width, 3),\n", " include_top=False,\n", ")\n", "base_model.trainable = False # Freeze the base model\n", "\n", "model = keras.models.Sequential(\n", " [\n", " keras.layers.Input((img_height, img_width, 1)),\n", " keras.layers.Lambda(\n", " lambda x: tf.repeat(\n", " x,\n", " 3,\n", " axis=3,\n", " )\n", " ), # Convert grayscale to RGB\n", " keras.layers.Lambda(keras.applications.densenet.preprocess_input),\n", " base_model,\n", " keras.layers.GlobalAveragePooling2D(),\n", " keras.layers.BatchNormalization(),\n", " keras.layers.Dense(256, activation=\"relu\"),\n", " keras.layers.Dropout(0.5),\n", " keras.layers.Dense(num_classes, activation=\"softmax\"),\n", " ]\n", ")\n", "\n", "model.compile(\n", " optimizer=keras.optimizers.Adam(learning_rate=0.001),\n", " loss=keras.losses.CategoricalFocalCrossentropy(),\n", " metrics=[\n", " keras.metrics.F1Score(average=\"weighted\"),\n", " keras.metrics.AUC(multi_label=True),\n", " ],\n", ")\n", "\n", "model.summary()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T12:46:00.759719Z", "iopub.status.busy": "2025-05-23T12:46:00.759450Z", "iopub.status.idle": "2025-05-23T12:50:34.882786Z", "shell.execute_reply": "2025-05-23T12:50:34.882199Z", "shell.execute_reply.started": "2025-05-23T12:46:00.759700Z" }, "trusted": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 484ms/step - auc: 0.7615 - f1_score: 0.4697 - loss: 0.2384\n", "Epoch 1: val_f1_score improved from -inf to 0.64083, saving model to best_model.keras\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m56s\u001b[0m 633ms/step - auc: 0.7625 - f1_score: 0.4709 - loss: 0.2377 - val_auc: 0.9031 - val_f1_score: 0.6408 - val_loss: 0.1187 - learning_rate: 0.0010\n", "Epoch 2/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 493ms/step - auc: 0.9376 - f1_score: 0.7358 - loss: 0.0780\n", "Epoch 2: val_f1_score improved from 0.64083 to 0.77151, saving model to best_model.keras\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m52s\u001b[0m 625ms/step - auc: 0.9376 - f1_score: 0.7360 - loss: 0.0779 - val_auc: 0.9492 - val_f1_score: 0.7715 - val_loss: 0.0717 - learning_rate: 0.0010\n", "Epoch 3/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 495ms/step - auc: 0.9708 - f1_score: 0.8370 - loss: 0.0429\n", "Epoch 3: val_f1_score improved from 0.77151 to 0.83718, saving model to best_model.keras\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m52s\u001b[0m 627ms/step - auc: 0.9708 - f1_score: 0.8372 - loss: 0.0428 - val_auc: 0.9705 - val_f1_score: 0.8372 - val_loss: 0.0488 - learning_rate: 0.0010\n", "Epoch 4/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 520ms/step - auc: 0.9807 - f1_score: 0.8669 - loss: 0.0318\n", "Epoch 4: val_f1_score improved from 0.83718 to 0.85766, saving model to best_model.keras\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m62s\u001b[0m 747ms/step - auc: 0.9807 - f1_score: 0.8669 - loss: 0.0318 - val_auc: 0.9782 - val_f1_score: 0.8577 - val_loss: 0.0394 - learning_rate: 0.0010\n", "Epoch 5/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 597ms/step - auc: 0.9841 - f1_score: 0.8867 - loss: 0.0280\n", "Epoch 5: val_f1_score improved from 0.85766 to 0.89697, saving model to best_model.keras\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m61s\u001b[0m 737ms/step - auc: 0.9842 - f1_score: 0.8868 - loss: 0.0280 - val_auc: 0.9842 - val_f1_score: 0.8970 - val_loss: 0.0306 - learning_rate: 0.0010\n", "Epoch 6/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 715ms/step - auc: 0.9896 - f1_score: 0.9025 - loss: 0.0221\n", "Epoch 6: val_f1_score did not improve from 0.89697\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m72s\u001b[0m 877ms/step - auc: 0.9896 - f1_score: 0.9026 - loss: 0.0220 - val_auc: 0.9844 - val_f1_score: 0.8959 - val_loss: 0.0308 - learning_rate: 0.0010\n", "Epoch 7/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 550ms/step - auc: 0.9929 - f1_score: 0.9314 - loss: 0.0164\n", "Epoch 7: val_f1_score improved from 0.89697 to 0.91051, saving model to best_model.keras\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m58s\u001b[0m 695ms/step - auc: 0.9929 - f1_score: 0.9315 - loss: 0.0164 - val_auc: 0.9879 - val_f1_score: 0.9105 - val_loss: 0.0268 - learning_rate: 0.0010\n", "Epoch 8/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 561ms/step - auc: 0.9936 - f1_score: 0.9288 - loss: 0.0153\n", "Epoch 8: val_f1_score improved from 0.91051 to 0.92416, saving model to best_model.keras\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m58s\u001b[0m 696ms/step - auc: 0.9937 - f1_score: 0.9288 - loss: 0.0153 - val_auc: 0.9908 - val_f1_score: 0.9242 - val_loss: 0.0231 - learning_rate: 0.0010\n", "Epoch 9/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 652ms/step - auc: 0.9946 - f1_score: 0.9378 - loss: 0.0142\n", "Epoch 9: val_f1_score did not improve from 0.92416\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m67s\u001b[0m 807ms/step - auc: 0.9946 - f1_score: 0.9378 - loss: 0.0142 - val_auc: 0.9918 - val_f1_score: 0.9232 - val_loss: 0.0216 - learning_rate: 0.0010\n", "Epoch 10/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 662ms/step - auc: 0.9964 - f1_score: 0.9480 - loss: 0.0112\n", "Epoch 10: val_f1_score improved from 0.92416 to 0.93071, saving model to best_model.keras\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m70s\u001b[0m 841ms/step - auc: 0.9964 - f1_score: 0.9480 - loss: 0.0112 - val_auc: 0.9920 - val_f1_score: 0.9307 - val_loss: 0.0211 - learning_rate: 0.0010\n", "Epoch 11/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 628ms/step - auc: 0.9961 - f1_score: 0.9425 - loss: 0.0109\n", "Epoch 11: val_f1_score did not improve from 0.93071\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m63s\u001b[0m 761ms/step - auc: 0.9961 - f1_score: 0.9425 - loss: 0.0109 - val_auc: 0.9918 - val_f1_score: 0.9232 - val_loss: 0.0232 - learning_rate: 0.0010\n", "Epoch 12/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 602ms/step - auc: 0.9965 - f1_score: 0.9558 - loss: 0.0117\n", "Epoch 12: val_f1_score did not improve from 0.93071\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m66s\u001b[0m 798ms/step - auc: 0.9965 - f1_score: 0.9558 - loss: 0.0117 - val_auc: 0.9925 - val_f1_score: 0.9290 - val_loss: 0.0211 - learning_rate: 0.0010\n", "Epoch 13/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 640ms/step - auc: 0.9972 - f1_score: 0.9623 - loss: 0.0097\n", "Epoch 13: val_f1_score did not improve from 0.93071\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m66s\u001b[0m 797ms/step - auc: 0.9972 - f1_score: 0.9623 - loss: 0.0097 - val_auc: 0.9901 - val_f1_score: 0.9248 - val_loss: 0.0272 - learning_rate: 0.0010\n", "Epoch 14/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 664ms/step - auc: 0.9963 - f1_score: 0.9497 - loss: 0.0104\n", "Epoch 14: val_f1_score improved from 0.93071 to 0.93800, saving model to best_model.keras\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m69s\u001b[0m 831ms/step - auc: 0.9963 - f1_score: 0.9498 - loss: 0.0104 - val_auc: 0.9925 - val_f1_score: 0.9380 - val_loss: 0.0225 - learning_rate: 0.0010\n", "Epoch 15/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 541ms/step - auc: 0.9962 - f1_score: 0.9564 - loss: 0.0115\n", "Epoch 15: val_f1_score did not improve from 0.93800\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m57s\u001b[0m 689ms/step - auc: 0.9962 - f1_score: 0.9564 - loss: 0.0115 - val_auc: 0.9906 - val_f1_score: 0.9244 - val_loss: 0.0240 - learning_rate: 0.0010\n", "Epoch 16/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 724ms/step - auc: 0.9979 - f1_score: 0.9671 - loss: 0.0072\n", "Epoch 16: val_f1_score did not improve from 0.93800\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m74s\u001b[0m 895ms/step - auc: 0.9979 - f1_score: 0.9671 - loss: 0.0072 - val_auc: 0.9926 - val_f1_score: 0.9259 - val_loss: 0.0233 - learning_rate: 0.0010\n", "Epoch 17/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 647ms/step - auc: 0.9977 - f1_score: 0.9574 - loss: 0.0080\n", "Epoch 17: val_f1_score improved from 0.93800 to 0.94396, saving model to best_model.keras\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m69s\u001b[0m 833ms/step - auc: 0.9977 - f1_score: 0.9574 - loss: 0.0080 - val_auc: 0.9919 - val_f1_score: 0.9440 - val_loss: 0.0244 - learning_rate: 0.0010\n", "Epoch 18/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 625ms/step - auc: 0.9985 - f1_score: 0.9682 - loss: 0.0067\n", "Epoch 18: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m66s\u001b[0m 796ms/step - auc: 0.9985 - f1_score: 0.9682 - loss: 0.0067 - val_auc: 0.9933 - val_f1_score: 0.9425 - val_loss: 0.0216 - learning_rate: 0.0010\n", "Epoch 19/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 595ms/step - auc: 0.9984 - f1_score: 0.9671 - loss: 0.0063\n", "Epoch 19: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m66s\u001b[0m 801ms/step - auc: 0.9984 - f1_score: 0.9671 - loss: 0.0063 - val_auc: 0.9912 - val_f1_score: 0.9335 - val_loss: 0.0276 - learning_rate: 0.0010\n", "Epoch 20/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 636ms/step - auc: 0.9983 - f1_score: 0.9696 - loss: 0.0068\n", "Epoch 20: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m66s\u001b[0m 799ms/step - auc: 0.9983 - f1_score: 0.9696 - loss: 0.0068 - val_auc: 0.9919 - val_f1_score: 0.9289 - val_loss: 0.0258 - learning_rate: 0.0010\n", "Epoch 21/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 665ms/step - auc: 0.9972 - f1_score: 0.9567 - loss: 0.0090\n", "Epoch 21: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m70s\u001b[0m 838ms/step - auc: 0.9972 - f1_score: 0.9568 - loss: 0.0090 - val_auc: 0.9920 - val_f1_score: 0.9395 - val_loss: 0.0239 - learning_rate: 0.0010\n", "Epoch 22/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 621ms/step - auc: 0.9984 - f1_score: 0.9709 - loss: 0.0058\n", "Epoch 22: ReduceLROnPlateau reducing learning rate to 0.0005000000237487257.\n", "\n", "Epoch 22: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m64s\u001b[0m 773ms/step - auc: 0.9984 - f1_score: 0.9709 - loss: 0.0058 - val_auc: 0.9928 - val_f1_score: 0.9336 - val_loss: 0.0248 - learning_rate: 0.0010\n", "Epoch 23/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 663ms/step - auc: 0.9983 - f1_score: 0.9747 - loss: 0.0062\n", "Epoch 23: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m68s\u001b[0m 818ms/step - auc: 0.9983 - f1_score: 0.9747 - loss: 0.0062 - val_auc: 0.9933 - val_f1_score: 0.9337 - val_loss: 0.0235 - learning_rate: 5.0000e-04\n", "Epoch 24/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 645ms/step - auc: 0.9989 - f1_score: 0.9783 - loss: 0.0045\n", "Epoch 24: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m67s\u001b[0m 809ms/step - auc: 0.9989 - f1_score: 0.9783 - loss: 0.0045 - val_auc: 0.9934 - val_f1_score: 0.9350 - val_loss: 0.0223 - learning_rate: 5.0000e-04\n", "Epoch 25/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 648ms/step - auc: 0.9991 - f1_score: 0.9727 - loss: 0.0050\n", "Epoch 25: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m66s\u001b[0m 798ms/step - auc: 0.9991 - f1_score: 0.9727 - loss: 0.0050 - val_auc: 0.9936 - val_f1_score: 0.9365 - val_loss: 0.0234 - learning_rate: 5.0000e-04\n", "Epoch 26/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 654ms/step - auc: 0.9994 - f1_score: 0.9826 - loss: 0.0035\n", "Epoch 26: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m67s\u001b[0m 808ms/step - auc: 0.9994 - f1_score: 0.9826 - loss: 0.0035 - val_auc: 0.9929 - val_f1_score: 0.9349 - val_loss: 0.0234 - learning_rate: 5.0000e-04\n", "Epoch 27/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 585ms/step - auc: 0.9994 - f1_score: 0.9837 - loss: 0.0035\n", "Epoch 27: ReduceLROnPlateau reducing learning rate to 0.0002500000118743628.\n", "\n", "Epoch 27: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m59s\u001b[0m 715ms/step - auc: 0.9994 - f1_score: 0.9837 - loss: 0.0035 - val_auc: 0.9937 - val_f1_score: 0.9350 - val_loss: 0.0244 - learning_rate: 5.0000e-04\n", "Epoch 28/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 489ms/step - auc: 0.9994 - f1_score: 0.9801 - loss: 0.0033\n", "Epoch 28: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m51s\u001b[0m 612ms/step - auc: 0.9994 - f1_score: 0.9801 - loss: 0.0033 - val_auc: 0.9934 - val_f1_score: 0.9380 - val_loss: 0.0240 - learning_rate: 2.5000e-04\n", "Epoch 29/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 628ms/step - auc: 0.9993 - f1_score: 0.9839 - loss: 0.0037\n", "Epoch 29: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m65s\u001b[0m 781ms/step - auc: 0.9993 - f1_score: 0.9840 - loss: 0.0037 - val_auc: 0.9936 - val_f1_score: 0.9349 - val_loss: 0.0231 - learning_rate: 2.5000e-04\n", "Epoch 30/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 624ms/step - auc: 0.9997 - f1_score: 0.9877 - loss: 0.0024\n", "Epoch 30: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m65s\u001b[0m 783ms/step - auc: 0.9997 - f1_score: 0.9877 - loss: 0.0024 - val_auc: 0.9936 - val_f1_score: 0.9349 - val_loss: 0.0235 - learning_rate: 2.5000e-04\n", "Epoch 31/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 636ms/step - auc: 0.9997 - f1_score: 0.9898 - loss: 0.0026\n", "Epoch 31: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m67s\u001b[0m 812ms/step - auc: 0.9997 - f1_score: 0.9898 - loss: 0.0026 - val_auc: 0.9941 - val_f1_score: 0.9349 - val_loss: 0.0235 - learning_rate: 2.5000e-04\n", "Epoch 32/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 688ms/step - auc: 0.9997 - f1_score: 0.9834 - loss: 0.0027\n", "Epoch 32: ReduceLROnPlateau reducing learning rate to 0.0001250000059371814.\n", "\n", "Epoch 32: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m70s\u001b[0m 841ms/step - auc: 0.9997 - f1_score: 0.9834 - loss: 0.0027 - val_auc: 0.9942 - val_f1_score: 0.9349 - val_loss: 0.0239 - learning_rate: 2.5000e-04\n", "Epoch 33/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 649ms/step - auc: 0.9999 - f1_score: 0.9901 - loss: 0.0018\n", "Epoch 33: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m66s\u001b[0m 801ms/step - auc: 0.9999 - f1_score: 0.9901 - loss: 0.0018 - val_auc: 0.9939 - val_f1_score: 0.9349 - val_loss: 0.0243 - learning_rate: 1.2500e-04\n", "Epoch 34/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 584ms/step - auc: 0.9974 - f1_score: 0.9885 - loss: 0.0019\n", "Epoch 34: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m61s\u001b[0m 737ms/step - auc: 0.9974 - f1_score: 0.9885 - loss: 0.0019 - val_auc: 0.9940 - val_f1_score: 0.9349 - val_loss: 0.0241 - learning_rate: 1.2500e-04\n", "Epoch 35/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 498ms/step - auc: 0.9996 - f1_score: 0.9849 - loss: 0.0026\n", "Epoch 35: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m52s\u001b[0m 626ms/step - auc: 0.9996 - f1_score: 0.9849 - loss: 0.0026 - val_auc: 0.9934 - val_f1_score: 0.9380 - val_loss: 0.0246 - learning_rate: 1.2500e-04\n", "Epoch 36/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 577ms/step - auc: 0.9974 - f1_score: 0.9886 - loss: 0.0020\n", "Epoch 36: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m58s\u001b[0m 701ms/step - auc: 0.9975 - f1_score: 0.9886 - loss: 0.0020 - val_auc: 0.9935 - val_f1_score: 0.9380 - val_loss: 0.0249 - learning_rate: 1.2500e-04\n", "Epoch 37/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 544ms/step - auc: 0.9998 - f1_score: 0.9896 - loss: 0.0018\n", "Epoch 37: ReduceLROnPlateau reducing learning rate to 6.25000029685907e-05.\n", "\n", "Epoch 37: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m56s\u001b[0m 674ms/step - auc: 0.9998 - f1_score: 0.9896 - loss: 0.0018 - val_auc: 0.9934 - val_f1_score: 0.9380 - val_loss: 0.0249 - learning_rate: 1.2500e-04\n", "Epoch 38/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 672ms/step - auc: 0.9998 - f1_score: 0.9848 - loss: 0.0022\n", "Epoch 38: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m68s\u001b[0m 821ms/step - auc: 0.9998 - f1_score: 0.9849 - loss: 0.0022 - val_auc: 0.9934 - val_f1_score: 0.9410 - val_loss: 0.0253 - learning_rate: 6.2500e-05\n", "Epoch 39/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 517ms/step - auc: 0.9996 - f1_score: 0.9866 - loss: 0.0024\n", "Epoch 39: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m54s\u001b[0m 648ms/step - auc: 0.9996 - f1_score: 0.9865 - loss: 0.0024 - val_auc: 0.9934 - val_f1_score: 0.9410 - val_loss: 0.0252 - learning_rate: 6.2500e-05\n", "Epoch 40/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 542ms/step - auc: 0.9998 - f1_score: 0.9885 - loss: 0.0020\n", "Epoch 40: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m56s\u001b[0m 675ms/step - auc: 0.9998 - f1_score: 0.9886 - loss: 0.0020 - val_auc: 0.9933 - val_f1_score: 0.9410 - val_loss: 0.0253 - learning_rate: 6.2500e-05\n", "Epoch 41/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 588ms/step - auc: 0.9999 - f1_score: 0.9894 - loss: 0.0018\n", "Epoch 41: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m64s\u001b[0m 774ms/step - auc: 0.9999 - f1_score: 0.9894 - loss: 0.0018 - val_auc: 0.9933 - val_f1_score: 0.9410 - val_loss: 0.0252 - learning_rate: 6.2500e-05\n", "Epoch 42/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 602ms/step - auc: 0.9999 - f1_score: 0.9896 - loss: 0.0016\n", "Epoch 42: ReduceLROnPlateau reducing learning rate to 3.125000148429535e-05.\n", "\n", "Epoch 42: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m61s\u001b[0m 738ms/step - auc: 0.9999 - f1_score: 0.9896 - loss: 0.0016 - val_auc: 0.9933 - val_f1_score: 0.9380 - val_loss: 0.0254 - learning_rate: 6.2500e-05\n", "Epoch 43/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 579ms/step - auc: 0.9997 - f1_score: 0.9847 - loss: 0.0023\n", "Epoch 43: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m60s\u001b[0m 727ms/step - auc: 0.9997 - f1_score: 0.9848 - loss: 0.0023 - val_auc: 0.9934 - val_f1_score: 0.9380 - val_loss: 0.0254 - learning_rate: 3.1250e-05\n", "Epoch 44/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 729ms/step - auc: 0.9998 - f1_score: 0.9908 - loss: 0.0018\n", "Epoch 44: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m75s\u001b[0m 906ms/step - auc: 0.9998 - f1_score: 0.9908 - loss: 0.0018 - val_auc: 0.9933 - val_f1_score: 0.9380 - val_loss: 0.0254 - learning_rate: 3.1250e-05\n", "Epoch 45/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 691ms/step - auc: 0.9998 - f1_score: 0.9879 - loss: 0.0024\n", "Epoch 45: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m70s\u001b[0m 845ms/step - auc: 0.9998 - f1_score: 0.9879 - loss: 0.0024 - val_auc: 0.9933 - val_f1_score: 0.9380 - val_loss: 0.0255 - learning_rate: 3.1250e-05\n", "Epoch 46/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 673ms/step - auc: 0.9998 - f1_score: 0.9887 - loss: 0.0018\n", "Epoch 46: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m69s\u001b[0m 831ms/step - auc: 0.9998 - f1_score: 0.9887 - loss: 0.0018 - val_auc: 0.9933 - val_f1_score: 0.9380 - val_loss: 0.0255 - learning_rate: 3.1250e-05\n", "Epoch 47/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 602ms/step - auc: 0.9999 - f1_score: 0.9898 - loss: 0.0017\n", "Epoch 47: ReduceLROnPlateau reducing learning rate to 1.5625000742147677e-05.\n", "\n", "Epoch 47: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m62s\u001b[0m 744ms/step - auc: 0.9999 - f1_score: 0.9898 - loss: 0.0017 - val_auc: 0.9933 - val_f1_score: 0.9380 - val_loss: 0.0256 - learning_rate: 3.1250e-05\n", "Epoch 48/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 492ms/step - auc: 0.9999 - f1_score: 0.9933 - loss: 0.0018\n", "Epoch 48: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m51s\u001b[0m 619ms/step - auc: 0.9999 - f1_score: 0.9932 - loss: 0.0018 - val_auc: 0.9933 - val_f1_score: 0.9380 - val_loss: 0.0256 - learning_rate: 1.5625e-05\n", "Epoch 49/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 494ms/step - auc: 0.9998 - f1_score: 0.9871 - loss: 0.0019\n", "Epoch 49: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m52s\u001b[0m 622ms/step - auc: 0.9998 - f1_score: 0.9871 - loss: 0.0019 - val_auc: 0.9933 - val_f1_score: 0.9380 - val_loss: 0.0257 - learning_rate: 1.5625e-05\n", "Epoch 50/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 632ms/step - auc: 0.9998 - f1_score: 0.9894 - loss: 0.0019\n", "Epoch 50: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m67s\u001b[0m 807ms/step - auc: 0.9998 - f1_score: 0.9894 - loss: 0.0019 - val_auc: 0.9933 - val_f1_score: 0.9380 - val_loss: 0.0257 - learning_rate: 1.5625e-05\n", "Epoch 51/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 608ms/step - auc: 0.9999 - f1_score: 0.9930 - loss: 0.0014\n", "Epoch 51: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m64s\u001b[0m 773ms/step - auc: 0.9999 - f1_score: 0.9930 - loss: 0.0014 - val_auc: 0.9933 - val_f1_score: 0.9380 - val_loss: 0.0257 - learning_rate: 1.5625e-05\n", "Epoch 52/100\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 670ms/step - auc: 0.9999 - f1_score: 0.9925 - loss: 0.0015\n", "Epoch 52: ReduceLROnPlateau reducing learning rate to 7.812500371073838e-06.\n", "\n", "Epoch 52: val_f1_score did not improve from 0.94396\n", "\u001b[1m83/83\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m69s\u001b[0m 828ms/step - auc: 0.9999 - f1_score: 0.9925 - loss: 0.0015 - val_auc: 0.9933 - val_f1_score: 0.9380 - val_loss: 0.0257 - learning_rate: 1.5625e-05\n", "Epoch 53/100\n", "\u001b[1m27/83\u001b[0m \u001b[32m━━━━━━\u001b[0m\u001b[37m━━━━━━━━━━━━━━\u001b[0m \u001b[1m34s\u001b[0m 621ms/step - auc: 0.9998 - f1_score: 0.9851 - loss: 0.0022" ] }, { "ename": "KeyboardInterrupt", "evalue": "", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[11], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m history \u001b[38;5;241m=\u001b[39m \u001b[43mmodel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 2\u001b[0m \u001b[43m \u001b[49m\u001b[43mtrain_ds\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[43m \u001b[49m\u001b[43mvalidation_data\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mval_ds\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 4\u001b[0m \u001b[43m \u001b[49m\u001b[43mepochs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m100\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 5\u001b[0m \u001b[43m \u001b[49m\u001b[43mclass_weight\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mclass_weights_dict\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 6\u001b[0m \u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m[\u001b[49m\n\u001b[1;32m 7\u001b[0m \u001b[43m \u001b[49m\u001b[43mkeras\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mEarlyStopping\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 8\u001b[0m \u001b[43m \u001b[49m\u001b[43mmonitor\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mf1_score\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 9\u001b[0m \u001b[43m \u001b[49m\u001b[43mpatience\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m10\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 10\u001b[0m \u001b[43m \u001b[49m\u001b[43mrestore_best_weights\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 11\u001b[0m \u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmax\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 12\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[43m \u001b[49m\u001b[43mkeras\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mReduceLROnPlateau\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 14\u001b[0m \u001b[43m \u001b[49m\u001b[43mmonitor\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mval_f1_score\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 15\u001b[0m \u001b[43m \u001b[49m\u001b[43mfactor\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0.5\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 16\u001b[0m \u001b[43m \u001b[49m\u001b[43mpatience\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m5\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 17\u001b[0m \u001b[43m \u001b[49m\u001b[43mmin_lr\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1e-6\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 18\u001b[0m \u001b[43m \u001b[49m\u001b[43mverbose\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 19\u001b[0m \u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmax\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 20\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 21\u001b[0m \u001b[43m \u001b[49m\u001b[43mkeras\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mModelCheckpoint\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 22\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mbest_model.keras\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 23\u001b[0m \u001b[43m \u001b[49m\u001b[43mmonitor\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mval_f1_score\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 24\u001b[0m \u001b[43m \u001b[49m\u001b[43msave_best_only\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 25\u001b[0m \u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmax\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 26\u001b[0m \u001b[43m \u001b[49m\u001b[43mverbose\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 27\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 28\u001b[0m \u001b[43m \u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 29\u001b[0m \u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/Documents/Code/kaggle/.venv/lib/python3.9/site-packages/keras/src/utils/traceback_utils.py:117\u001b[0m, in \u001b[0;36mfilter_traceback..error_handler\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 115\u001b[0m filtered_tb \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 116\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 117\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 118\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 119\u001b[0m filtered_tb \u001b[38;5;241m=\u001b[39m _process_traceback_frames(e\u001b[38;5;241m.\u001b[39m__traceback__)\n", "File \u001b[0;32m~/Documents/Code/kaggle/.venv/lib/python3.9/site-packages/keras/src/backend/tensorflow/trainer.py:371\u001b[0m, in \u001b[0;36mTensorFlowTrainer.fit\u001b[0;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq)\u001b[0m\n\u001b[1;32m 369\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m step, iterator \u001b[38;5;129;01min\u001b[39;00m epoch_iterator:\n\u001b[1;32m 370\u001b[0m callbacks\u001b[38;5;241m.\u001b[39mon_train_batch_begin(step)\n\u001b[0;32m--> 371\u001b[0m logs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtrain_function\u001b[49m\u001b[43m(\u001b[49m\u001b[43miterator\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 372\u001b[0m callbacks\u001b[38;5;241m.\u001b[39mon_train_batch_end(step, logs)\n\u001b[1;32m 373\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstop_training:\n", "File \u001b[0;32m~/Documents/Code/kaggle/.venv/lib/python3.9/site-packages/keras/src/backend/tensorflow/trainer.py:219\u001b[0m, in \u001b[0;36mTensorFlowTrainer._make_function..function\u001b[0;34m(iterator)\u001b[0m\n\u001b[1;32m 215\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mfunction\u001b[39m(iterator):\n\u001b[1;32m 216\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\n\u001b[1;32m 217\u001b[0m iterator, (tf\u001b[38;5;241m.\u001b[39mdata\u001b[38;5;241m.\u001b[39mIterator, tf\u001b[38;5;241m.\u001b[39mdistribute\u001b[38;5;241m.\u001b[39mDistributedIterator)\n\u001b[1;32m 218\u001b[0m ):\n\u001b[0;32m--> 219\u001b[0m opt_outputs \u001b[38;5;241m=\u001b[39m \u001b[43mmulti_step_on_iterator\u001b[49m\u001b[43m(\u001b[49m\u001b[43miterator\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 220\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m opt_outputs\u001b[38;5;241m.\u001b[39mhas_value():\n\u001b[1;32m 221\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m\n", "File \u001b[0;32m~/Documents/Code/kaggle/.venv/lib/python3.9/site-packages/tensorflow/python/util/traceback_utils.py:150\u001b[0m, in \u001b[0;36mfilter_traceback..error_handler\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 148\u001b[0m filtered_tb \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 149\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 150\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 151\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 152\u001b[0m filtered_tb \u001b[38;5;241m=\u001b[39m _process_traceback_frames(e\u001b[38;5;241m.\u001b[39m__traceback__)\n", "File \u001b[0;32m~/Documents/Code/kaggle/.venv/lib/python3.9/site-packages/tensorflow/python/eager/polymorphic_function/polymorphic_function.py:833\u001b[0m, in \u001b[0;36mFunction.__call__\u001b[0;34m(self, *args, **kwds)\u001b[0m\n\u001b[1;32m 830\u001b[0m compiler \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mxla\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_jit_compile \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnonXla\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 832\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m OptionalXlaContext(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_jit_compile):\n\u001b[0;32m--> 833\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwds\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 835\u001b[0m new_tracing_count \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mexperimental_get_tracing_count()\n\u001b[1;32m 836\u001b[0m without_tracing \u001b[38;5;241m=\u001b[39m (tracing_count \u001b[38;5;241m==\u001b[39m new_tracing_count)\n", "File \u001b[0;32m~/Documents/Code/kaggle/.venv/lib/python3.9/site-packages/tensorflow/python/eager/polymorphic_function/polymorphic_function.py:878\u001b[0m, in \u001b[0;36mFunction._call\u001b[0;34m(self, *args, **kwds)\u001b[0m\n\u001b[1;32m 875\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_lock\u001b[38;5;241m.\u001b[39mrelease()\n\u001b[1;32m 876\u001b[0m \u001b[38;5;66;03m# In this case we have not created variables on the first call. So we can\u001b[39;00m\n\u001b[1;32m 877\u001b[0m \u001b[38;5;66;03m# run the first trace but we should fail if variables are created.\u001b[39;00m\n\u001b[0;32m--> 878\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[43mtracing_compilation\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcall_function\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 879\u001b[0m \u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwds\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_variable_creation_config\u001b[49m\n\u001b[1;32m 880\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 881\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_created_variables:\n\u001b[1;32m 882\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCreating variables on a non-first call to a function\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 883\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m decorated with tf.function.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", "File \u001b[0;32m~/Documents/Code/kaggle/.venv/lib/python3.9/site-packages/tensorflow/python/eager/polymorphic_function/tracing_compilation.py:139\u001b[0m, in \u001b[0;36mcall_function\u001b[0;34m(args, kwargs, tracing_options)\u001b[0m\n\u001b[1;32m 137\u001b[0m bound_args \u001b[38;5;241m=\u001b[39m function\u001b[38;5;241m.\u001b[39mfunction_type\u001b[38;5;241m.\u001b[39mbind(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 138\u001b[0m flat_inputs \u001b[38;5;241m=\u001b[39m function\u001b[38;5;241m.\u001b[39mfunction_type\u001b[38;5;241m.\u001b[39munpack_inputs(bound_args)\n\u001b[0;32m--> 139\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunction\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_flat\u001b[49m\u001b[43m(\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# pylint: disable=protected-access\u001b[39;49;00m\n\u001b[1;32m 140\u001b[0m \u001b[43m \u001b[49m\u001b[43mflat_inputs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcaptured_inputs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfunction\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcaptured_inputs\u001b[49m\n\u001b[1;32m 141\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/Documents/Code/kaggle/.venv/lib/python3.9/site-packages/tensorflow/python/eager/polymorphic_function/concrete_function.py:1322\u001b[0m, in \u001b[0;36mConcreteFunction._call_flat\u001b[0;34m(self, tensor_inputs, captured_inputs)\u001b[0m\n\u001b[1;32m 1318\u001b[0m possible_gradient_type \u001b[38;5;241m=\u001b[39m gradients_util\u001b[38;5;241m.\u001b[39mPossibleTapeGradientTypes(args)\n\u001b[1;32m 1319\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (possible_gradient_type \u001b[38;5;241m==\u001b[39m gradients_util\u001b[38;5;241m.\u001b[39mPOSSIBLE_GRADIENT_TYPES_NONE\n\u001b[1;32m 1320\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m executing_eagerly):\n\u001b[1;32m 1321\u001b[0m \u001b[38;5;66;03m# No tape is watching; skip to running the function.\u001b[39;00m\n\u001b[0;32m-> 1322\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_inference_function\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcall_preflattened\u001b[49m\u001b[43m(\u001b[49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1323\u001b[0m forward_backward \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_select_forward_and_backward_functions(\n\u001b[1;32m 1324\u001b[0m args,\n\u001b[1;32m 1325\u001b[0m possible_gradient_type,\n\u001b[1;32m 1326\u001b[0m executing_eagerly)\n\u001b[1;32m 1327\u001b[0m forward_function, args_with_tangents \u001b[38;5;241m=\u001b[39m forward_backward\u001b[38;5;241m.\u001b[39mforward()\n", "File \u001b[0;32m~/Documents/Code/kaggle/.venv/lib/python3.9/site-packages/tensorflow/python/eager/polymorphic_function/atomic_function.py:216\u001b[0m, in \u001b[0;36mAtomicFunction.call_preflattened\u001b[0;34m(self, args)\u001b[0m\n\u001b[1;32m 214\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mcall_preflattened\u001b[39m(\u001b[38;5;28mself\u001b[39m, args: Sequence[core\u001b[38;5;241m.\u001b[39mTensor]) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Any:\n\u001b[1;32m 215\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Calls with flattened tensor inputs and returns the structured output.\"\"\"\u001b[39;00m\n\u001b[0;32m--> 216\u001b[0m flat_outputs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcall_flat\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 217\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfunction_type\u001b[38;5;241m.\u001b[39mpack_output(flat_outputs)\n", "File \u001b[0;32m~/Documents/Code/kaggle/.venv/lib/python3.9/site-packages/tensorflow/python/eager/polymorphic_function/atomic_function.py:251\u001b[0m, in \u001b[0;36mAtomicFunction.call_flat\u001b[0;34m(self, *args)\u001b[0m\n\u001b[1;32m 249\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m record\u001b[38;5;241m.\u001b[39mstop_recording():\n\u001b[1;32m 250\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_bound_context\u001b[38;5;241m.\u001b[39mexecuting_eagerly():\n\u001b[0;32m--> 251\u001b[0m outputs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_bound_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcall_function\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 252\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 253\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mlist\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 254\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfunction_type\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mflat_outputs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 255\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 256\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 257\u001b[0m outputs \u001b[38;5;241m=\u001b[39m make_call_op_in_graph(\n\u001b[1;32m 258\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 259\u001b[0m \u001b[38;5;28mlist\u001b[39m(args),\n\u001b[1;32m 260\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_bound_context\u001b[38;5;241m.\u001b[39mfunction_call_options\u001b[38;5;241m.\u001b[39mas_attrs(),\n\u001b[1;32m 261\u001b[0m )\n", "File \u001b[0;32m~/Documents/Code/kaggle/.venv/lib/python3.9/site-packages/tensorflow/python/eager/context.py:1688\u001b[0m, in \u001b[0;36mContext.call_function\u001b[0;34m(self, name, tensor_inputs, num_outputs)\u001b[0m\n\u001b[1;32m 1686\u001b[0m cancellation_context \u001b[38;5;241m=\u001b[39m cancellation\u001b[38;5;241m.\u001b[39mcontext()\n\u001b[1;32m 1687\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cancellation_context \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1688\u001b[0m outputs \u001b[38;5;241m=\u001b[39m \u001b[43mexecute\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexecute\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1689\u001b[0m \u001b[43m \u001b[49m\u001b[43mname\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdecode\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mutf-8\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1690\u001b[0m \u001b[43m \u001b[49m\u001b[43mnum_outputs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnum_outputs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1691\u001b[0m \u001b[43m \u001b[49m\u001b[43minputs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtensor_inputs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1692\u001b[0m \u001b[43m \u001b[49m\u001b[43mattrs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mattrs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1693\u001b[0m \u001b[43m \u001b[49m\u001b[43mctx\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1694\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1695\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1696\u001b[0m outputs \u001b[38;5;241m=\u001b[39m execute\u001b[38;5;241m.\u001b[39mexecute_with_cancellation(\n\u001b[1;32m 1697\u001b[0m name\u001b[38;5;241m.\u001b[39mdecode(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mutf-8\u001b[39m\u001b[38;5;124m\"\u001b[39m),\n\u001b[1;32m 1698\u001b[0m num_outputs\u001b[38;5;241m=\u001b[39mnum_outputs,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1702\u001b[0m cancellation_manager\u001b[38;5;241m=\u001b[39mcancellation_context,\n\u001b[1;32m 1703\u001b[0m )\n", "File \u001b[0;32m~/Documents/Code/kaggle/.venv/lib/python3.9/site-packages/tensorflow/python/eager/execute.py:53\u001b[0m, in \u001b[0;36mquick_execute\u001b[0;34m(op_name, num_outputs, inputs, attrs, ctx, name)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 52\u001b[0m ctx\u001b[38;5;241m.\u001b[39mensure_initialized()\n\u001b[0;32m---> 53\u001b[0m tensors \u001b[38;5;241m=\u001b[39m \u001b[43mpywrap_tfe\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mTFE_Py_Execute\u001b[49m\u001b[43m(\u001b[49m\u001b[43mctx\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_handle\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdevice_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mop_name\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 54\u001b[0m \u001b[43m \u001b[49m\u001b[43minputs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mattrs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnum_outputs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m core\u001b[38;5;241m.\u001b[39m_NotOkStatusException \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 56\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m name \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ], "source": [ "history = model.fit(\n", " train_ds,\n", " validation_data=val_ds,\n", " epochs=100,\n", " class_weight=class_weights_dict,\n", " callbacks=[\n", " keras.callbacks.EarlyStopping(\n", " monitor=\"f1_score\",\n", " patience=10,\n", " restore_best_weights=True,\n", " mode=\"max\",\n", " ),\n", " keras.callbacks.ReduceLROnPlateau(\n", " monitor=\"val_f1_score\",\n", " factor=0.5,\n", " patience=5,\n", " min_lr=1e-6,\n", " verbose=1,\n", " mode=\"max\",\n", " ),\n", " keras.callbacks.ModelCheckpoint(\n", " \"best_model.keras\",\n", " monitor=\"val_f1_score\",\n", " save_best_only=True,\n", " mode=\"max\",\n", " verbose=1,\n", " ),\n", " ],\n", ")" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T12:50:34.884472Z", "iopub.status.busy": "2025-05-23T12:50:34.884206Z", "iopub.status.idle": "2025-05-23T12:50:34.894479Z", "shell.execute_reply": "2025-05-23T12:50:34.893866Z", "shell.execute_reply.started": "2025-05-23T12:50:34.884455Z" }, "trusted": true }, "outputs": [ { "ename": "NameError", "evalue": "name 'history' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[12], line 5\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Convert tensor values to floats\u001b[39;00m\n\u001b[1;32m 4\u001b[0m clean_history \u001b[38;5;241m=\u001b[39m {}\n\u001b[0;32m----> 5\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m key, values \u001b[38;5;129;01min\u001b[39;00m \u001b[43mhistory\u001b[49m\u001b[38;5;241m.\u001b[39mhistory\u001b[38;5;241m.\u001b[39mitems():\n\u001b[1;32m 6\u001b[0m clean_history[key] \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 7\u001b[0m v\u001b[38;5;241m.\u001b[39mnumpy() \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(v, tf\u001b[38;5;241m.\u001b[39mTensor) \u001b[38;5;28;01melse\u001b[39;00m v\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m v \u001b[38;5;129;01min\u001b[39;00m values\n\u001b[1;32m 9\u001b[0m ]\n\u001b[1;32m 11\u001b[0m \u001b[38;5;66;03m# Create a cleaned DataFrame\u001b[39;00m\n", "\u001b[0;31mNameError\u001b[0m: name 'history' is not defined" ] } ], "source": [ "import pandas as pd\n", "\n", "# Convert tensor values to floats\n", "clean_history = {}\n", "for key, values in history.history.items():\n", " clean_history[key] = [\n", " v.numpy() if isinstance(v, tf.Tensor) else v\n", " for v in values\n", " ]\n", "\n", "# Create a cleaned DataFrame\n", "history_df = pd.DataFrame(clean_history)\n", "history_df.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T12:50:34.895311Z", "iopub.status.busy": "2025-05-23T12:50:34.895060Z", "iopub.status.idle": "2025-05-23T12:50:35.135414Z", "shell.execute_reply": "2025-05-23T12:50:35.134712Z", "shell.execute_reply.started": "2025-05-23T12:50:34.895294Z" }, "trusted": true }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.figure(figsize=(10, 6))\n", "\n", "for metric in [\n", " 'loss',\n", " 'f1_score',\n", " 'auc',\n", "]:\n", " plt.plot(history_df[metric], label=f'Training {metric}', marker='o')\n", " plt.plot(history_df[f'val_{metric}'], label=f'Validation {metric}', marker='o')\n", "\n", "plt.title('Metrics over Epochs')\n", "plt.xlabel('Epoch')\n", "plt.ylabel('Metrics')\n", "plt.legend()\n", "plt.grid(True)\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T12:22:30.330191Z", "iopub.status.busy": "2025-05-23T12:22:30.329706Z", "iopub.status.idle": "2025-05-23T12:22:30.490971Z", "shell.execute_reply": "2025-05-23T12:22:30.490225Z", "shell.execute_reply.started": "2025-05-23T12:22:30.330168Z" }, "trusted": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m\u001b[34m0\u001b[m\u001b[m \u001b[1m\u001b[34m1\u001b[m\u001b[m \u001b[1m\u001b[34m2\u001b[m\u001b[m \u001b[1m\u001b[34m3\u001b[m\u001b[m \u001b[1m\u001b[34m4\u001b[m\u001b[m\n" ] } ], "source": [ "!ls ./knee-osteoarthritis-dataset-with-severity-test" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T12:23:37.694090Z", "iopub.status.busy": "2025-05-23T12:23:37.693750Z", "iopub.status.idle": "2025-05-23T12:23:38.535201Z", "shell.execute_reply": "2025-05-23T12:23:38.534677Z", "shell.execute_reply.started": "2025-05-23T12:23:37.694066Z" }, "trusted": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 1526 files belonging to 5 classes.\n" ] } ], "source": [ "test_ds = tf.keras.utils.image_dataset_from_directory(\n", " './knee-osteoarthritis-dataset-with-severity-test',\n", " labels='inferred',\n", " label_mode='categorical',\n", " color_mode='grayscale',\n", " image_size=(162, 300),\n", " shuffle=False\n", ")" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "execution": { "iopub.execute_input": "2025-05-23T12:50:35.161070Z", "iopub.status.busy": "2025-05-23T12:50:35.160796Z", "iopub.status.idle": "2025-05-23T12:50:36.922301Z", "shell.execute_reply": "2025-05-23T12:50:36.921545Z", "shell.execute_reply.started": "2025-05-23T12:50:35.161047Z" }, "trusted": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m48/48\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m24s\u001b[0m 499ms/step - auc: 0.2136 - f1_score: 0.4166 - loss: 0.6778\n", "Test Loss (CategoricalFocalEntropy): 0.9007891416549683\n", "F1 Score: 0.2188677340745926\n", "AUC: 0.6021432876586914\n" ] } ], "source": [ "results = model.evaluate(test_ds)\n", "print(\"Test Loss (CategoricalFocalEntropy):\", results[0])\n", "print(\"F1 Score:\", results[1])\n", "print(\"AUC:\", results[2])" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1m48/48\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m27s\u001b[0m 571ms/step\n", "Test Class Weights: {0: np.float64(0.6423357664233577), 1: np.float64(0.6892950391644909), 2: np.float64(1.3785900783289817), 3: np.float64(1.5085714285714287), 4: np.float64(1.6551724137931034)}\n", "Classification Report:\n" ] }, { "data": { "text/plain": [ "' precision recall f1-score support\\n\\n 0 0.55 0.41 0.47 604\\n 1 0.16 0.07 0.09 275\\n 2 0.17 0.02 0.04 403\\n 3 0.31 0.02 0.04 200\\n 4 0.04 0.89 0.08 44\\n\\n accuracy 0.21 1526\\n macro avg 0.25 0.28 0.14 1526\\nweighted avg 0.33 0.21 0.22 1526\\n'" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.metrics import classification_report, confusion_matrix\n", "import seaborn as sns\n", "\n", "true_labels = np.concatenate([y.numpy() for _, y in test_ds], axis=0)\n", "predictions = model.predict(test_ds)\n", "predicted_labels = np.argmax(predictions, axis=1)\n", "\n", "# computing the class weights\n", "test_class_weights = compute_class_weight(\n", " class_weight='balanced',\n", " classes=np.unique(np.argmax(true_labels, axis=1)),\n", " y=np.argmax(true_labels, axis=1)\n", ")\n", "test_class_weights_dict = {i: weight for i, weight in enumerate(class_weights)}\n", "print(\"Test Class Weights:\", test_class_weights_dict)\n", "\n", "# weighted classification report\n", "print(\"Classification Report:\")\n", "classification_report(\n", " np.argmax(true_labels, axis=1),\n", " predicted_labels,\n", " target_names=test_ds.class_names,\n", " output_dict=False\n", ")" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
01234
024747303277
1941861156
2712885291
3381334142
4140039
\n", "
" ], "text/plain": [ " 0 1 2 3 4\n", "0 247 47 30 3 277\n", "1 94 18 6 1 156\n", "2 71 28 8 5 291\n", "3 38 13 3 4 142\n", "4 1 4 0 0 39" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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nvr169sSN5ORitkqV66sxx57zH5PMIHkhAyFDzBTxpq0uPmH6O6777azQ5hGvo4dO3p7aEiA2UD27t0bu79//377H49p0i1QoIBXx4aEKXOaNWuWFixYYNeiOHr0qD0eEhKitGnTent4iGf9+vVT48aN7d/lf/75x/7uf/jhBy1ZssTbQ0MCMH+nr+2HSp8+vbJmzUqfFJIdAgof8Mgjj9jpJF955RV7w2GmnFu8ePF1jdpI/szc9Pfee69bMGmYgHLmzJleHBkSaqEz45577nE7PmPGDD3xxBNeGhUSiil/ad++vY4cOWKDRrMmgQkm7rvvPm8PDQBuiXUoAAAAADhGDwUAAAAAxwgoAAAAADhGQAEAAADAMQIKAAAAAI4RUAAAAABwjIACAAAAgGMEFAAAAAAcI6AAAAAA4BgBBQDcJrNqdcuWLWP3zcrWL774YqKP44cffpCfn5/Onj2baK81qY4TAJB4CCgA+CRz42tuWs2WJk0aFStWTMOGDdPly5cT/Lm/+OILDR8+PEneXBcqVEjjx49PlOcCAKQMqbw9AABIKPfff79mzJihiIgIffPNN+rSpYtSp06tfv36XXftpUuXbOARH7JkyRIvjwMAQHJAhgKAzwoMDFSuXLlUsGBBPffcc2rQoIG++uort9KdV199VXny5FHJkiXt8b/++ksPP/ywMmXKZAODFi1a6M8//4x9zCtXrqhHjx72fNasWdW7d29FR0e7Pe+1JU8moOnTp4/y589vx2SyJe+//7593HvvvddekzlzZpupMOMyoqKiNGrUKBUuXFhp06ZVhQoVNG/ePLfnMUFSiRIl7HnzOK7jdMK8tk6dOsU+p3lPJkyYcMNrhw4dquzZsytjxozq3LmzDchixGXsAADfQYYCQIphbm5PnToVu798+XJ7Q7x06VK7HxkZqUaNGql69er68ccflSpVKo0YMcJmOrZs2WIzGG+88YZmzpyp6dOnq3Tp0nZ//vz5qlev3k2ft3379lq9erUmTpxob67379+vkydP2gDj888/V+vWrbV79247FjNGw9yQf/zxx5o6daqKFy+uVatWqV27dvYmvm7dujbwefDBB23W5ZlnntGGDRvUs2fP23p/TCCQL18+ffbZZzZY+uWXX+xj586d2wZZru9bUFCQLdcyQUzHjh3t9SY4i8vYAQA+JhoAfFCHDh2iW7RoYb+PioqKXrp0aXRgYGB0r169Ys/nzJkzOiIiIvZnPvroo+iSJUva62OY82nTpo1esmSJ3c+dO3f066+/Hns+MjIyOl++fLHPZdStWze6e/fu9vvdu3eb9IV9/hv5/vvv7fkzZ87EHgsPD49Oly5d9C+//OJ2badOnaLbtm1rv+/Xr190mTJl3M736dPnuse6VsGCBaPHjRsXHVddunSJbt26dey+ed+yZMkSHRoaGntsypQp0cHBwdFXrlyJ09hv9JoBAMkXGQoAPmvhwoUKDg62mQfz6fujjz6qIUOGxJ4vV66cW9/E5s2btXfvXmXIkMHtccLDw7Vv3z6dO3dOR44cUdWqVWPPmSxG5cqVryt7irFp0yYFBAR49Mm8GUNYWJjuu+8+t+OmrKhSpUr2+507d7qNwzCZldv19ttv2+zLwYMHdfHiRfucFStWdLvGZFnSpUvn9rwXLlywWRPz9b/GDgDwLQQUAHyW6SuYMmWKDRpMn4S5+XeVPn16t31zM3zXXXfpk08+ue6xTLmOEzElTJ4w4zAWLVqkvHnzup0zPRgJZfbs2erVq5ct4zJBggmsxowZo7Vr1yb5sQMAvIeAAoDPMgGDaYCOqzvvvFNz5sxRjhw5bD/DjZh+AnODXadOHbtvpqHduHGj/dkbMVkQkx1ZuXKlbQq/VkyGxDRExyhTpoy9+TZZgptlNkz/RkyDeYw1a9bodvz888+qUaOGnn/++dhjJjNzLZPJMdmLmGDJPK/JBJmeENPI/l9jBwD4FmZ5AoD/99hjjylbtmx2ZifTlG2ap03j8QsvvKBDhw7Za7p3767Ro0fryy+/1K5du+zN963WkDDrPnTo0EFPPvmk/ZmYx5w7d649b2agMrM7mfKsEydO2E/4TWbAZApeeuklffDBB/am/tdff9WkSZPsvmFmVtqzZ49efvll29A9a9Ys2yweF3///bctxXLdzpw5YxuoTXP3kiVL9Pvvv2vQoEFav379dT9vypfMbFA7duywM00NHjxYXbt2lb+/f5zGDgDwLQQUAPD/TF+AmZGoQIECdgYlkwUwN86mhyImY2FmUnr88cdtkBBTFtSqVatbPq4pu3rooYds8FGqVCk9/fTTCg0NtedMWZCZgrVv377KmTOnvTE3zMJ45obezJhkxmFmmjJlRGYqVsOM0cwQZYIU09NgZlQaOXJknF7n2LFjbT+D62Ye+9lnn7Wv+5FHHrH9GWZGLNdsRYz69evb4MNkacy1zZs3d+tN+a+xAwB8i5/pzPb2IAAAAAAkT2QoAAAAADhGQAEAAADAMQIKAAAAAI4RUAAAAABwjIACAAAAgGMEFAAAAAAcI6AAAAAA4BgBBQAAAADHCCgAAAAAOEZAAQAAAMAxAgoAAAAAcur/AHUgsGcD7Hn0AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "confusion_mtx = confusion_matrix(\n", " np.argmax(true_labels, axis=1),\n", " predicted_labels\n", ")\n", "display(pd.DataFrame(\n", " confusion_mtx,\n", " index=test_ds.class_names,\n", " columns=test_ds.class_names\n", "))\n", "plt.figure(figsize=(10, 8))\n", "sns.heatmap(\n", " confusion_mtx,\n", " annot=True,\n", " fmt='d',\n", " cmap='Blues',\n", " xticklabels=test_ds.class_names,\n", " yticklabels=test_ds.class_names\n", ")\n", "plt.xlabel('Predicted Label')\n", "plt.ylabel('True Label') \n", "plt.title('Confusion Matrix')\n", "plt.show()" ] } ], "metadata": { "kaggle": { "accelerator": "none", "dataSources": [ { "datasetId": 7088338, "sourceId": 11339916, "sourceType": "datasetVersion" } ], "dockerImageVersionId": 31040, "isGpuEnabled": false, "isInternetEnabled": true, "language": "python", "sourceType": "notebook" }, "kernelspec": { "display_name": ".venv", "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.9.6" } }, "nbformat": 4, "nbformat_minor": 4 }