diff --git a/.github/workflows/blank.yml b/.github/workflows/blank.yml
index 6e737461..61b10814 100644
--- a/.github/workflows/blank.yml
+++ b/.github/workflows/blank.yml
@@ -33,4 +33,4 @@ jobs:
- name: Run a multi-line script
run: |
echo Add other actions to build,
- echo test, and deploy your project.
+ echo test, and deploy your project.
\ No newline at end of file
diff --git a/.github/workflows/issue.yml b/.github/workflows/issue.yml
new file mode 100644
index 00000000..6d937608
--- /dev/null
+++ b/.github/workflows/issue.yml
@@ -0,0 +1,17 @@
+name: 'Close stale issues and PR'
+on:
+ schedule:
+ - cron: '30 1 * * *'
+
+jobs:
+ stale:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/stale@v8
+ with:
+ stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
+ stale-pr-message: 'This PR is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 10 days.'
+ close-issue-message: 'This issue was closed because it has been stalled for 5 days with no activity.'
+ days-before-stale: 30
+ days-before-close: 5
+ days-before-pr-close: -1
\ No newline at end of file
diff --git a/notebooks/Beginner_Example.ipynb b/notebooks/Beginner_Example.ipynb
index e1fd15bd..32b39537 100644
--- a/notebooks/Beginner_Example.ipynb
+++ b/notebooks/Beginner_Example.ipynb
@@ -33,8 +33,18 @@
"name": "#%%\n"
}
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/media/Zeus/haoc/miniconda/envs/test_semilearn_031/lib/python3.9/site-packages/tqdm/auto.py:22: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
+ " from .autonotebook import tqdm as notebook_tqdm\n"
+ ]
+ }
+ ],
"source": [
+ "import semilearn\n",
"from semilearn import get_dataset, get_data_loader, get_net_builder, get_algorithm, get_config, Trainer\n"
]
},
@@ -60,13 +70,6 @@
}
},
"outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "here 1\n"
- ]
- },
{
"name": "stderr",
"output_type": "stream",
@@ -83,10 +86,10 @@
" 'pretrain_path': 'https://github.com/microsoft/Semi-supervised-learning/releases/download/v.0.0.0/vit_tiny_patch2_32_mlp_im_1k_32.pth',\n",
"\n",
" # optimization configs\n",
- " 'epoch': 1, # set to 100\n",
- " 'num_train_iter': 5000, # set to 102400\n",
- " 'num_eval_iter': 500, # set to 1024\n",
- " 'num_log_iter': 50, # set to 256\n",
+ " 'epoch': 1, \n",
+ " 'num_train_iter': 5000, \n",
+ " 'num_eval_iter': 500, \n",
+ " 'num_log_iter': 50, \n",
" 'optim': 'AdamW',\n",
" 'lr': 5e-4,\n",
" 'layer_decay': 0.5,\n",
@@ -225,41 +228,306 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "Epoch: 0\n"
+ "Epoch: 0\n",
+ "50 iteration USE_EMA: True, train/sup_loss: 1.9210, train/unsup_loss: 0.0000, train/total_loss: 1.9210, train/util_ratio: 0.0000, train/run_time: 0.1366, lr: 0.0005, train/prefecth_time: 0.0040 \n",
+ "100 iteration USE_EMA: True, train/sup_loss: 0.9313, train/unsup_loss: 0.0000, train/total_loss: 0.9313, train/util_ratio: 0.0000, train/run_time: 0.1369, lr: 0.0005, train/prefecth_time: 0.0037 \n",
+ "150 iteration USE_EMA: True, train/sup_loss: 0.4322, train/unsup_loss: 0.0000, train/total_loss: 0.4322, train/util_ratio: 0.0000, train/run_time: 0.1365, lr: 0.0005, train/prefecth_time: 0.0037 \n",
+ "200 iteration USE_EMA: True, train/sup_loss: 0.2618, train/unsup_loss: 0.0000, train/total_loss: 0.2618, train/util_ratio: 0.0000, train/run_time: 0.1383, lr: 0.0005, train/prefecth_time: 0.0040 \n",
+ "250 iteration USE_EMA: True, train/sup_loss: 0.4954, train/unsup_loss: 0.0902, train/total_loss: 0.5856, train/util_ratio: 0.0938, train/run_time: 0.1384, lr: 0.0005, train/prefecth_time: 0.0038 \n",
+ "300 iteration USE_EMA: True, train/sup_loss: 0.1285, train/unsup_loss: 0.0065, train/total_loss: 0.1350, train/util_ratio: 0.0938, train/run_time: 0.1387, lr: 0.0005, train/prefecth_time: 0.0037 \n",
+ "350 iteration USE_EMA: True, train/sup_loss: 0.0994, train/unsup_loss: 0.0367, train/total_loss: 0.1361, train/util_ratio: 0.0938, train/run_time: 0.1388, lr: 0.0005, train/prefecth_time: 0.0040 \n",
+ "400 iteration USE_EMA: True, train/sup_loss: 0.0280, train/unsup_loss: 0.0182, train/total_loss: 0.0462, train/util_ratio: 0.1250, train/run_time: 0.1393, lr: 0.0005, train/prefecth_time: 0.0035 \n",
+ "450 iteration USE_EMA: True, train/sup_loss: 0.0223, train/unsup_loss: 0.3827, train/total_loss: 0.4050, train/util_ratio: 0.4062, train/run_time: 0.1398, lr: 0.0005, train/prefecth_time: 0.0039 \n",
+ "validating...\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/media/Zeus/haoc/miniconda/envs/test_semilearn_031/lib/python3.9/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
+ " _warn_prf(average, modifier, msg_start, len(result))\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "confusion matrix:\n",
+ "[[0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n",
+ " [0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n",
+ " [0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n",
+ " [0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n",
+ " [0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n",
+ " [0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n",
+ " [0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n",
+ " [0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n",
+ " [0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n",
+ " [0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]]\n",
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n",
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "500 iteration, USE_EMA: True, train/sup_loss: 0.0236, train/unsup_loss: 0.0640, train/total_loss: 0.0877, train/util_ratio: 0.2812, train/run_time: 0.1395, eval/loss: 5.5914, eval/top-1-acc: 0.1000, eval/balanced_acc: 0.1000, eval/precision: 0.0100, eval/recall: 0.1000, eval/F1: 0.0182, lr: 0.0005, train/prefecth_time: 0.0038 BEST_EVAL_ACC: 0.1000, at 500 iters\n",
+ "550 iteration USE_EMA: True, train/sup_loss: 0.0866, train/unsup_loss: 0.2069, train/total_loss: 0.2936, train/util_ratio: 0.2812, train/run_time: 0.1393, lr: 0.0005, train/prefecth_time: 0.0038 \n",
+ "600 iteration USE_EMA: True, train/sup_loss: 0.0649, train/unsup_loss: 0.0583, train/total_loss: 0.1232, train/util_ratio: 0.3750, train/run_time: 0.1393, lr: 0.0005, train/prefecth_time: 0.0035 \n",
+ "650 iteration USE_EMA: True, train/sup_loss: 0.0256, train/unsup_loss: 0.0846, train/total_loss: 0.1102, train/util_ratio: 0.5625, train/run_time: 0.1402, lr: 0.0005, train/prefecth_time: 0.0031 \n",
+ "700 iteration USE_EMA: True, train/sup_loss: 0.0195, train/unsup_loss: 0.2254, train/total_loss: 0.2449, train/util_ratio: 0.5938, train/run_time: 0.1409, lr: 0.0005, train/prefecth_time: 0.0038 \n",
+ "750 iteration USE_EMA: True, train/sup_loss: 0.0331, train/unsup_loss: 0.1504, train/total_loss: 0.1835, train/util_ratio: 0.6250, train/run_time: 0.1408, lr: 0.0005, train/prefecth_time: 0.0039 \n",
+ "800 iteration USE_EMA: True, train/sup_loss: 0.0006, train/unsup_loss: 0.0241, train/total_loss: 0.0247, train/util_ratio: 0.5938, train/run_time: 0.1414, lr: 0.0005, train/prefecth_time: 0.0037 \n",
+ "850 iteration USE_EMA: True, train/sup_loss: 0.0085, train/unsup_loss: 0.1780, train/total_loss: 0.1864, train/util_ratio: 0.5000, train/run_time: 0.1413, lr: 0.0005, train/prefecth_time: 0.0050 \n",
+ "900 iteration USE_EMA: True, train/sup_loss: 0.0268, train/unsup_loss: 0.5602, train/total_loss: 0.5870, train/util_ratio: 0.5312, train/run_time: 0.1402, lr: 0.0005, train/prefecth_time: 0.0037 \n",
+ "950 iteration USE_EMA: True, train/sup_loss: 0.0060, train/unsup_loss: 0.1938, train/total_loss: 0.1998, train/util_ratio: 0.5312, train/run_time: 0.1400, lr: 0.0005, train/prefecth_time: 0.0035 \n",
+ "validating...\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
- "/home/haoc/miniconda3/envs/test/lib/python3.8/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
- " _warn_prf(average, modifier, msg_start, len(result))\n",
- "[2022-12-18 14:01:08,644 INFO] confusion matrix\n",
- "[2022-12-18 14:01:08,646 INFO] [[0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]]\n",
- "[2022-12-18 14:01:08,649 INFO] evaluation metric\n",
- "[2022-12-18 14:01:08,650 INFO] acc: 0.1000\n",
- "[2022-12-18 14:01:08,652 INFO] precision: 0.0100\n",
- "[2022-12-18 14:01:08,652 INFO] recall: 0.1000\n",
- "[2022-12-18 14:01:08,653 INFO] f1: 0.0182\n",
- "[2022-12-18 14:01:09,174 INFO] Best acc 0.1000 at epoch 0\n",
- "[2022-12-18 14:01:09,176 INFO] Training finished.\n"
+ "/media/Zeus/haoc/miniconda/envs/test_semilearn_031/lib/python3.9/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
+ " _warn_prf(average, modifier, msg_start, len(result))\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
+ "confusion matrix:\n",
+ "[[0.127 0. 0. 0. 0.484 0. 0.367 0.007 0.004 0.011]\n",
+ " [0. 0.277 0. 0. 0.568 0. 0.049 0.039 0. 0.067]\n",
+ " [0. 0. 0. 0. 0.93 0. 0.066 0.004 0. 0. ]\n",
+ " [0. 0. 0. 0.002 0.92 0. 0.065 0.012 0. 0.001]\n",
+ " [0. 0. 0. 0. 0.995 0. 0.003 0.002 0. 0. ]\n",
+ " [0. 0. 0. 0. 0.955 0.002 0.034 0.009 0. 0. ]\n",
+ " [0. 0. 0. 0. 0.445 0. 0.555 0. 0. 0. ]\n",
+ " [0. 0. 0. 0. 0.847 0. 0.003 0.15 0. 0. ]\n",
+ " [0.002 0. 0. 0. 0.822 0. 0.142 0.009 0.014 0.011]\n",
+ " [0. 0. 0. 0. 0.446 0. 0.022 0.005 0. 0.527]]\n",
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n",
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "1000 iteration, USE_EMA: True, train/sup_loss: 0.0011, train/unsup_loss: 0.2126, train/total_loss: 0.2137, train/util_ratio: 0.7500, train/run_time: 0.1401, eval/loss: 2.2794, eval/top-1-acc: 0.2649, eval/balanced_acc: 0.2649, eval/precision: 0.6809, eval/recall: 0.2649, eval/F1: 0.2307, lr: 0.0005, train/prefecth_time: 0.0037 BEST_EVAL_ACC: 0.2649, at 1000 iters\n",
+ "1050 iteration USE_EMA: True, train/sup_loss: 0.0556, train/unsup_loss: 0.2425, train/total_loss: 0.2981, train/util_ratio: 0.6562, train/run_time: 0.1413, lr: 0.0005, train/prefecth_time: 0.0038 \n",
+ "1100 iteration USE_EMA: True, train/sup_loss: 0.0058, train/unsup_loss: 0.4130, train/total_loss: 0.4188, train/util_ratio: 0.7188, train/run_time: 0.1409, lr: 0.0005, train/prefecth_time: 0.0038 \n",
+ "1150 iteration USE_EMA: True, train/sup_loss: 0.0017, train/unsup_loss: 0.4102, train/total_loss: 0.4120, train/util_ratio: 0.6562, train/run_time: 0.1404, lr: 0.0005, train/prefecth_time: 0.0032 \n",
+ "1200 iteration USE_EMA: True, train/sup_loss: 0.0031, train/unsup_loss: 0.2593, train/total_loss: 0.2624, train/util_ratio: 0.6562, train/run_time: 0.1407, lr: 0.0005, train/prefecth_time: 0.0035 \n",
+ "1250 iteration USE_EMA: True, train/sup_loss: 0.0039, train/unsup_loss: 0.2743, train/total_loss: 0.2783, train/util_ratio: 0.7188, train/run_time: 0.1409, lr: 0.0005, train/prefecth_time: 0.0037 \n",
+ "1300 iteration USE_EMA: True, train/sup_loss: 0.0655, train/unsup_loss: 0.1830, train/total_loss: 0.2484, train/util_ratio: 0.6562, train/run_time: 0.1407, lr: 0.0005, train/prefecth_time: 0.0038 \n",
+ "1350 iteration USE_EMA: True, train/sup_loss: 0.0027, train/unsup_loss: 0.0781, train/total_loss: 0.0808, train/util_ratio: 0.5625, train/run_time: 0.1414, lr: 0.0005, train/prefecth_time: 0.0035 \n",
+ "1400 iteration USE_EMA: True, train/sup_loss: 0.0141, train/unsup_loss: 0.2426, train/total_loss: 0.2568, train/util_ratio: 0.7188, train/run_time: 0.1403, lr: 0.0005, train/prefecth_time: 0.0036 \n",
+ "1450 iteration USE_EMA: True, train/sup_loss: 0.0057, train/unsup_loss: 0.3173, train/total_loss: 0.3229, train/util_ratio: 0.8750, train/run_time: 0.1414, lr: 0.0005, train/prefecth_time: 0.0037 \n",
+ "validating...\n",
+ "confusion matrix:\n",
+ "[[0.922 0.001 0.001 0.001 0.005 0. 0.03 0.001 0.017 0.022]\n",
+ " [0.001 0.963 0. 0. 0.003 0. 0.001 0. 0.001 0.031]\n",
+ " [0.024 0. 0.436 0.002 0.419 0.005 0.1 0.014 0. 0. ]\n",
+ " [0.01 0.001 0.002 0.5 0.283 0.085 0.085 0.029 0.002 0.003]\n",
+ " [0. 0. 0. 0.001 0.981 0. 0.007 0.011 0. 0. ]\n",
+ " [0.001 0. 0. 0.015 0.214 0.692 0.024 0.054 0. 0. ]\n",
+ " [0.001 0. 0.001 0. 0.01 0.001 0.986 0. 0.001 0. ]\n",
+ " [0.005 0. 0. 0.006 0.374 0.008 0.002 0.605 0. 0. ]\n",
+ " [0.023 0.011 0. 0. 0.048 0. 0.025 0.002 0.865 0.026]\n",
+ " [0.003 0.012 0. 0. 0. 0. 0.002 0. 0.001 0.982]]\n",
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n",
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "1500 iteration, USE_EMA: True, train/sup_loss: 0.0110, train/unsup_loss: 0.1831, train/total_loss: 0.1942, train/util_ratio: 0.6250, train/run_time: 0.1408, eval/loss: 0.6494, eval/top-1-acc: 0.7932, eval/balanced_acc: 0.7932, eval/precision: 0.8668, eval/recall: 0.7932, eval/F1: 0.7963, lr: 0.0005, train/prefecth_time: 0.0036 BEST_EVAL_ACC: 0.7932, at 1500 iters\n",
+ "1550 iteration USE_EMA: True, train/sup_loss: 0.0835, train/unsup_loss: 0.3773, train/total_loss: 0.4608, train/util_ratio: 0.6875, train/run_time: 0.1409, lr: 0.0005, train/prefecth_time: 0.0039 \n",
+ "1600 iteration USE_EMA: True, train/sup_loss: 0.0115, train/unsup_loss: 0.5431, train/total_loss: 0.5546, train/util_ratio: 0.7812, train/run_time: 0.1409, lr: 0.0005, train/prefecth_time: 0.0040 \n",
+ "1650 iteration USE_EMA: True, train/sup_loss: 0.0255, train/unsup_loss: 0.1681, train/total_loss: 0.1937, train/util_ratio: 0.7188, train/run_time: 0.1412, lr: 0.0004, train/prefecth_time: 0.0039 \n",
+ "1700 iteration USE_EMA: True, train/sup_loss: 0.0012, train/unsup_loss: 0.1483, train/total_loss: 0.1495, train/util_ratio: 0.5625, train/run_time: 0.1412, lr: 0.0004, train/prefecth_time: 0.0039 \n",
+ "1750 iteration USE_EMA: True, train/sup_loss: 0.0016, train/unsup_loss: 0.0522, train/total_loss: 0.0538, train/util_ratio: 0.6250, train/run_time: 0.1405, lr: 0.0004, train/prefecth_time: 0.0041 \n",
+ "1800 iteration USE_EMA: True, train/sup_loss: 0.0082, train/unsup_loss: 0.2608, train/total_loss: 0.2690, train/util_ratio: 0.8125, train/run_time: 0.1415, lr: 0.0004, train/prefecth_time: 0.0037 \n",
+ "1850 iteration USE_EMA: True, train/sup_loss: 0.0011, train/unsup_loss: 0.1171, train/total_loss: 0.1182, train/util_ratio: 0.8438, train/run_time: 0.1412, lr: 0.0004, train/prefecth_time: 0.0042 \n",
+ "1900 iteration USE_EMA: True, train/sup_loss: 0.0348, train/unsup_loss: 0.1308, train/total_loss: 0.1656, train/util_ratio: 0.6562, train/run_time: 0.1411, lr: 0.0004, train/prefecth_time: 0.0037 \n",
+ "1950 iteration USE_EMA: True, train/sup_loss: 0.0104, train/unsup_loss: 0.0852, train/total_loss: 0.0956, train/util_ratio: 0.5625, train/run_time: 0.1412, lr: 0.0004, train/prefecth_time: 0.0040 \n",
+ "validating...\n",
+ "confusion matrix:\n",
+ "[[0.946 0.003 0.001 0.001 0.002 0. 0.007 0. 0.019 0.021]\n",
+ " [0. 0.979 0. 0. 0. 0. 0.001 0. 0.001 0.019]\n",
+ " [0.04 0. 0.701 0.006 0.177 0.012 0.048 0.016 0. 0. ]\n",
+ " [0.009 0.001 0.004 0.769 0.059 0.1 0.039 0.015 0.002 0.002]\n",
+ " [0. 0. 0.001 0.005 0.96 0.001 0.008 0.024 0.001 0. ]\n",
+ " [0.001 0. 0.001 0.024 0.015 0.915 0.007 0.037 0. 0. ]\n",
+ " [0.001 0. 0.003 0. 0.002 0.001 0.992 0. 0.001 0. ]\n",
+ " [0.005 0. 0.003 0.009 0.109 0.03 0.001 0.843 0. 0. ]\n",
+ " [0.03 0.007 0. 0. 0.005 0. 0.005 0.002 0.931 0.02 ]\n",
+ " [0.004 0.025 0. 0. 0. 0. 0. 0. 0.001 0.97 ]]\n",
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n",
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "2000 iteration, USE_EMA: True, train/sup_loss: 0.0046, train/unsup_loss: 0.1097, train/total_loss: 0.1143, train/util_ratio: 0.7500, train/run_time: 0.1419, eval/loss: 0.3166, eval/top-1-acc: 0.9006, eval/balanced_acc: 0.9006, eval/precision: 0.9099, eval/recall: 0.9006, eval/F1: 0.8998, lr: 0.0004, train/prefecth_time: 0.0040 BEST_EVAL_ACC: 0.9006, at 2000 iters\n",
+ "2050 iteration USE_EMA: True, train/sup_loss: 0.0362, train/unsup_loss: 0.0596, train/total_loss: 0.0959, train/util_ratio: 0.7812, train/run_time: 0.1412, lr: 0.0004, train/prefecth_time: 0.0040 \n",
+ "2100 iteration USE_EMA: True, train/sup_loss: 0.0052, train/unsup_loss: 0.2378, train/total_loss: 0.2430, train/util_ratio: 0.7500, train/run_time: 0.1412, lr: 0.0004, train/prefecth_time: 0.0039 \n",
+ "2150 iteration USE_EMA: True, train/sup_loss: 0.0005, train/unsup_loss: 0.1701, train/total_loss: 0.1707, train/util_ratio: 0.8125, train/run_time: 0.1414, lr: 0.0004, train/prefecth_time: 0.0036 \n",
+ "2200 iteration USE_EMA: True, train/sup_loss: 0.0006, train/unsup_loss: 0.0899, train/total_loss: 0.0905, train/util_ratio: 0.7500, train/run_time: 0.1408, lr: 0.0004, train/prefecth_time: 0.0036 \n",
+ "2250 iteration USE_EMA: True, train/sup_loss: 0.0319, train/unsup_loss: 0.1628, train/total_loss: 0.1947, train/util_ratio: 0.6562, train/run_time: 0.1414, lr: 0.0004, train/prefecth_time: 0.0034 \n",
+ "2300 iteration USE_EMA: True, train/sup_loss: 0.0542, train/unsup_loss: 0.0963, train/total_loss: 0.1504, train/util_ratio: 0.8125, train/run_time: 0.1405, lr: 0.0004, train/prefecth_time: 0.0035 \n",
+ "2350 iteration USE_EMA: True, train/sup_loss: 0.0023, train/unsup_loss: 0.0910, train/total_loss: 0.0934, train/util_ratio: 0.7812, train/run_time: 0.1412, lr: 0.0004, train/prefecth_time: 0.0038 \n",
+ "2400 iteration USE_EMA: True, train/sup_loss: 0.0260, train/unsup_loss: 0.0474, train/total_loss: 0.0733, train/util_ratio: 0.7188, train/run_time: 0.1413, lr: 0.0004, train/prefecth_time: 0.0037 \n",
+ "2450 iteration USE_EMA: True, train/sup_loss: 0.0037, train/unsup_loss: 0.1110, train/total_loss: 0.1147, train/util_ratio: 0.8125, train/run_time: 0.1419, lr: 0.0004, train/prefecth_time: 0.0035 \n",
+ "validating...\n",
+ "confusion matrix:\n",
+ "[[0.954 0.003 0.001 0.001 0. 0. 0.002 0. 0.021 0.018]\n",
+ " [0. 0.99 0. 0. 0. 0. 0. 0. 0. 0.01 ]\n",
+ " [0.042 0. 0.749 0.006 0.144 0.012 0.034 0.012 0. 0.001]\n",
+ " [0.006 0.001 0.001 0.826 0.03 0.096 0.027 0.007 0.003 0.003]\n",
+ " [0. 0. 0.001 0.006 0.954 0.003 0.006 0.029 0.001 0. ]\n",
+ " [0. 0. 0.001 0.021 0.009 0.947 0.004 0.018 0. 0. ]\n",
+ " [0.001 0. 0.003 0. 0.001 0.002 0.992 0. 0.001 0. ]\n",
+ " [0.007 0. 0.002 0.013 0.029 0.042 0. 0.907 0. 0. ]\n",
+ " [0.024 0.009 0. 0. 0.001 0. 0.001 0. 0.95 0.015]\n",
+ " [0.004 0.025 0. 0. 0. 0. 0. 0. 0.001 0.97 ]]\n",
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n",
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "2500 iteration, USE_EMA: True, train/sup_loss: 0.0010, train/unsup_loss: 0.1853, train/total_loss: 0.1862, train/util_ratio: 0.8750, train/run_time: 0.1411, eval/loss: 0.2508, eval/top-1-acc: 0.9239, eval/balanced_acc: 0.9239, eval/precision: 0.9281, eval/recall: 0.9239, eval/F1: 0.9230, lr: 0.0004, train/prefecth_time: 0.0039 BEST_EVAL_ACC: 0.9239, at 2500 iters\n",
+ "2550 iteration USE_EMA: True, train/sup_loss: 0.0608, train/unsup_loss: 0.1851, train/total_loss: 0.2459, train/util_ratio: 0.7188, train/run_time: 0.1410, lr: 0.0004, train/prefecth_time: 0.0036 \n",
+ "2600 iteration USE_EMA: True, train/sup_loss: 0.0012, train/unsup_loss: 0.1002, train/total_loss: 0.1014, train/util_ratio: 0.6875, train/run_time: 0.1412, lr: 0.0004, train/prefecth_time: 0.0039 \n",
+ "2650 iteration USE_EMA: True, train/sup_loss: 0.0130, train/unsup_loss: 0.0630, train/total_loss: 0.0761, train/util_ratio: 0.7500, train/run_time: 0.1410, lr: 0.0004, train/prefecth_time: 0.0035 \n",
+ "2700 iteration USE_EMA: True, train/sup_loss: 0.0062, train/unsup_loss: 0.1358, train/total_loss: 0.1421, train/util_ratio: 0.8750, train/run_time: 0.1408, lr: 0.0004, train/prefecth_time: 0.0039 \n",
+ "2750 iteration USE_EMA: True, train/sup_loss: 0.0571, train/unsup_loss: 0.1289, train/total_loss: 0.1860, train/util_ratio: 0.6875, train/run_time: 0.1406, lr: 0.0004, train/prefecth_time: 0.0035 \n",
+ "2800 iteration USE_EMA: True, train/sup_loss: 0.0753, train/unsup_loss: 0.1043, train/total_loss: 0.1796, train/util_ratio: 0.7812, train/run_time: 0.1414, lr: 0.0004, train/prefecth_time: 0.0039 \n",
+ "2850 iteration USE_EMA: True, train/sup_loss: 0.0027, train/unsup_loss: 0.0043, train/total_loss: 0.0070, train/util_ratio: 0.7188, train/run_time: 0.1410, lr: 0.0004, train/prefecth_time: 0.0037 \n",
+ "2900 iteration USE_EMA: True, train/sup_loss: 0.0065, train/unsup_loss: 0.1434, train/total_loss: 0.1499, train/util_ratio: 0.8438, train/run_time: 0.1423, lr: 0.0003, train/prefecth_time: 0.0036 \n",
+ "2950 iteration USE_EMA: True, train/sup_loss: 0.0813, train/unsup_loss: 0.3382, train/total_loss: 0.4195, train/util_ratio: 0.7500, train/run_time: 0.1412, lr: 0.0003, train/prefecth_time: 0.0037 \n",
+ "validating...\n",
+ "confusion matrix:\n",
+ "[[0.958 0.002 0.001 0.001 0. 0. 0.002 0. 0.022 0.014]\n",
+ " [0. 0.989 0. 0. 0. 0. 0. 0. 0.001 0.01 ]\n",
+ " [0.042 0. 0.764 0.007 0.14 0.012 0.024 0.01 0. 0.001]\n",
+ " [0.005 0.001 0.003 0.841 0.019 0.095 0.023 0.007 0.003 0.003]\n",
+ " [0. 0. 0.002 0.009 0.941 0.006 0.007 0.034 0.001 0. ]\n",
+ " [0. 0. 0.001 0.018 0.007 0.956 0.002 0.016 0. 0. ]\n",
+ " [0.001 0. 0.003 0. 0. 0.002 0.993 0. 0.001 0. ]\n",
+ " [0.005 0. 0.002 0.01 0.012 0.047 0. 0.924 0. 0. ]\n",
+ " [0.016 0.009 0. 0. 0. 0. 0.001 0. 0.964 0.01 ]\n",
+ " [0.004 0.027 0. 0. 0. 0. 0. 0. 0.001 0.968]]\n",
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n",
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "3000 iteration, USE_EMA: True, train/sup_loss: 0.0019, train/unsup_loss: 0.0714, train/total_loss: 0.0733, train/util_ratio: 0.7188, train/run_time: 0.1415, eval/loss: 0.2337, eval/top-1-acc: 0.9298, eval/balanced_acc: 0.9298, eval/precision: 0.9330, eval/recall: 0.9298, eval/F1: 0.9290, lr: 0.0003, train/prefecth_time: 0.0036 BEST_EVAL_ACC: 0.9298, at 3000 iters\n",
+ "3050 iteration USE_EMA: True, train/sup_loss: 0.0003, train/unsup_loss: 0.2654, train/total_loss: 0.2657, train/util_ratio: 0.6562, train/run_time: 0.1415, lr: 0.0003, train/prefecth_time: 0.0039 \n",
+ "3100 iteration USE_EMA: True, train/sup_loss: 0.0526, train/unsup_loss: 0.0743, train/total_loss: 0.1269, train/util_ratio: 0.7812, train/run_time: 0.1411, lr: 0.0003, train/prefecth_time: 0.0035 \n",
+ "3150 iteration USE_EMA: True, train/sup_loss: 0.0004, train/unsup_loss: 0.1189, train/total_loss: 0.1193, train/util_ratio: 0.8750, train/run_time: 0.1406, lr: 0.0003, train/prefecth_time: 0.0038 \n",
+ "3200 iteration USE_EMA: True, train/sup_loss: 0.0074, train/unsup_loss: 0.1950, train/total_loss: 0.2024, train/util_ratio: 0.6562, train/run_time: 0.1411, lr: 0.0003, train/prefecth_time: 0.0036 \n",
+ "3250 iteration USE_EMA: True, train/sup_loss: 0.0459, train/unsup_loss: 0.3374, train/total_loss: 0.3833, train/util_ratio: 0.8438, train/run_time: 0.1411, lr: 0.0003, train/prefecth_time: 0.0037 \n",
+ "3300 iteration USE_EMA: True, train/sup_loss: 0.0059, train/unsup_loss: 0.2219, train/total_loss: 0.2278, train/util_ratio: 0.8438, train/run_time: 0.1417, lr: 0.0003, train/prefecth_time: 0.0037 \n",
+ "3350 iteration USE_EMA: True, train/sup_loss: 0.0015, train/unsup_loss: 0.0706, train/total_loss: 0.0720, train/util_ratio: 0.7812, train/run_time: 0.1413, lr: 0.0003, train/prefecth_time: 0.0036 \n",
+ "3400 iteration USE_EMA: True, train/sup_loss: 0.2013, train/unsup_loss: 0.0645, train/total_loss: 0.2658, train/util_ratio: 0.7812, train/run_time: 0.1415, lr: 0.0003, train/prefecth_time: 0.0038 \n",
+ "3450 iteration USE_EMA: True, train/sup_loss: 0.0029, train/unsup_loss: 0.3704, train/total_loss: 0.3733, train/util_ratio: 0.9062, train/run_time: 0.1414, lr: 0.0003, train/prefecth_time: 0.0037 \n",
+ "validating...\n",
+ "confusion matrix:\n",
+ "[[0.957 0.002 0.002 0.001 0. 0. 0.001 0. 0.022 0.015]\n",
+ " [0. 0.988 0. 0. 0. 0. 0. 0. 0.001 0.011]\n",
+ " [0.043 0. 0.774 0.007 0.134 0.011 0.021 0.009 0. 0.001]\n",
+ " [0.003 0.001 0.003 0.862 0.016 0.083 0.023 0.004 0.003 0.002]\n",
+ " [0. 0. 0.003 0.01 0.936 0.007 0.008 0.035 0.001 0. ]\n",
+ " [0. 0. 0.001 0.022 0.006 0.955 0.002 0.014 0. 0. ]\n",
+ " [0.001 0. 0.004 0.001 0. 0.002 0.991 0. 0.001 0. ]\n",
+ " [0.005 0. 0.002 0.009 0.006 0.046 0. 0.932 0. 0. ]\n",
+ " [0.014 0.007 0. 0. 0. 0. 0.001 0. 0.969 0.009]\n",
+ " [0.004 0.028 0. 0. 0. 0. 0. 0. 0.002 0.966]]\n",
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n",
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "3500 iteration, USE_EMA: True, train/sup_loss: 0.0351, train/unsup_loss: 0.2334, train/total_loss: 0.2685, train/util_ratio: 0.8750, train/run_time: 0.1405, eval/loss: 0.2236, eval/top-1-acc: 0.9330, eval/balanced_acc: 0.9330, eval/precision: 0.9355, eval/recall: 0.9330, eval/F1: 0.9323, lr: 0.0003, train/prefecth_time: 0.0037 BEST_EVAL_ACC: 0.9330, at 3500 iters\n",
+ "3550 iteration USE_EMA: True, train/sup_loss: 0.0035, train/unsup_loss: 0.1521, train/total_loss: 0.1556, train/util_ratio: 0.7500, train/run_time: 0.1413, lr: 0.0003, train/prefecth_time: 0.0038 \n",
+ "3600 iteration USE_EMA: True, train/sup_loss: 0.0002, train/unsup_loss: 0.3567, train/total_loss: 0.3570, train/util_ratio: 0.8125, train/run_time: 0.1416, lr: 0.0003, train/prefecth_time: 0.0040 \n",
+ "3650 iteration USE_EMA: True, train/sup_loss: 0.0004, train/unsup_loss: 0.1816, train/total_loss: 0.1820, train/util_ratio: 0.6875, train/run_time: 0.1410, lr: 0.0003, train/prefecth_time: 0.0039 \n",
+ "3700 iteration USE_EMA: True, train/sup_loss: 0.0007, train/unsup_loss: 0.3171, train/total_loss: 0.3178, train/util_ratio: 0.7500, train/run_time: 0.1409, lr: 0.0003, train/prefecth_time: 0.0039 \n",
+ "3750 iteration USE_EMA: True, train/sup_loss: 0.0019, train/unsup_loss: 0.2061, train/total_loss: 0.2079, train/util_ratio: 0.8750, train/run_time: 0.1410, lr: 0.0003, train/prefecth_time: 0.0038 \n",
+ "3800 iteration USE_EMA: True, train/sup_loss: 0.0040, train/unsup_loss: 0.0473, train/total_loss: 0.0514, train/util_ratio: 0.8750, train/run_time: 0.1416, lr: 0.0003, train/prefecth_time: 0.0037 \n",
+ "3850 iteration USE_EMA: True, train/sup_loss: 0.0848, train/unsup_loss: 0.0998, train/total_loss: 0.1846, train/util_ratio: 0.9375, train/run_time: 0.1414, lr: 0.0002, train/prefecth_time: 0.0036 \n",
+ "3900 iteration USE_EMA: True, train/sup_loss: 0.0017, train/unsup_loss: 0.0173, train/total_loss: 0.0190, train/util_ratio: 0.7812, train/run_time: 0.1416, lr: 0.0002, train/prefecth_time: 0.0036 \n",
+ "3950 iteration USE_EMA: True, train/sup_loss: 0.0003, train/unsup_loss: 0.0839, train/total_loss: 0.0842, train/util_ratio: 0.6875, train/run_time: 0.1406, lr: 0.0002, train/prefecth_time: 0.0038 \n",
+ "validating...\n",
+ "confusion matrix:\n",
+ "[[0.957 0.002 0.002 0.001 0. 0. 0.001 0. 0.022 0.015]\n",
+ " [0. 0.988 0. 0. 0. 0. 0. 0. 0.001 0.011]\n",
+ " [0.041 0. 0.782 0.006 0.132 0.01 0.019 0.009 0. 0.001]\n",
+ " [0.003 0.001 0.003 0.861 0.019 0.084 0.022 0.002 0.003 0.002]\n",
+ " [0. 0. 0.003 0.008 0.938 0.008 0.007 0.035 0.001 0. ]\n",
+ " [0. 0. 0.001 0.021 0.006 0.956 0.002 0.014 0. 0. ]\n",
+ " [0.002 0. 0.003 0.001 0. 0.002 0.991 0. 0.001 0. ]\n",
+ " [0.004 0. 0.002 0.008 0.006 0.039 0. 0.94 0.001 0. ]\n",
+ " [0.011 0.006 0. 0. 0. 0. 0. 0. 0.972 0.011]\n",
+ " [0.003 0.03 0. 0. 0. 0. 0. 0. 0.002 0.965]]\n",
"model saved: ./saved_models/fixmatch/latest_model.pth\n",
- "model saved: ./saved_models/fixmatch/model_best.pth\n"
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "4000 iteration, USE_EMA: True, train/sup_loss: 0.0075, train/unsup_loss: 0.1623, train/total_loss: 0.1698, train/util_ratio: 0.9062, train/run_time: 0.1419, eval/loss: 0.2220, eval/top-1-acc: 0.9350, eval/balanced_acc: 0.9350, eval/precision: 0.9374, eval/recall: 0.9350, eval/F1: 0.9344, lr: 0.0002, train/prefecth_time: 0.0038 BEST_EVAL_ACC: 0.9350, at 4000 iters\n",
+ "4050 iteration USE_EMA: True, train/sup_loss: 0.0002, train/unsup_loss: 0.1693, train/total_loss: 0.1695, train/util_ratio: 0.6250, train/run_time: 0.1410, lr: 0.0002, train/prefecth_time: 0.0031 \n",
+ "4100 iteration USE_EMA: True, train/sup_loss: 0.0013, train/unsup_loss: 0.0134, train/total_loss: 0.0147, train/util_ratio: 0.6875, train/run_time: 0.1410, lr: 0.0002, train/prefecth_time: 0.0039 \n",
+ "4150 iteration USE_EMA: True, train/sup_loss: 0.0192, train/unsup_loss: 0.0331, train/total_loss: 0.0522, train/util_ratio: 0.5938, train/run_time: 0.1412, lr: 0.0002, train/prefecth_time: 0.0039 \n",
+ "4200 iteration USE_EMA: True, train/sup_loss: 0.0165, train/unsup_loss: 0.1861, train/total_loss: 0.2026, train/util_ratio: 0.7812, train/run_time: 0.1409, lr: 0.0002, train/prefecth_time: 0.0038 \n",
+ "4250 iteration USE_EMA: True, train/sup_loss: 0.0276, train/unsup_loss: 0.1913, train/total_loss: 0.2189, train/util_ratio: 0.8750, train/run_time: 0.1412, lr: 0.0002, train/prefecth_time: 0.0036 \n",
+ "4300 iteration USE_EMA: True, train/sup_loss: 0.0003, train/unsup_loss: 0.1182, train/total_loss: 0.1186, train/util_ratio: 0.6562, train/run_time: 0.1407, lr: 0.0002, train/prefecth_time: 0.0036 \n",
+ "4350 iteration USE_EMA: True, train/sup_loss: 0.0138, train/unsup_loss: 0.2013, train/total_loss: 0.2152, train/util_ratio: 0.7188, train/run_time: 0.1411, lr: 0.0002, train/prefecth_time: 0.0039 \n",
+ "4400 iteration USE_EMA: True, train/sup_loss: 0.0021, train/unsup_loss: 0.0658, train/total_loss: 0.0679, train/util_ratio: 0.8438, train/run_time: 0.1405, lr: 0.0002, train/prefecth_time: 0.0036 \n",
+ "4450 iteration USE_EMA: True, train/sup_loss: 0.0002, train/unsup_loss: 0.1821, train/total_loss: 0.1823, train/util_ratio: 0.6562, train/run_time: 0.1410, lr: 0.0002, train/prefecth_time: 0.0037 \n",
+ "validating...\n",
+ "confusion matrix:\n",
+ "[[0.957 0.002 0.002 0.001 0. 0. 0. 0. 0.022 0.016]\n",
+ " [0. 0.989 0. 0. 0. 0. 0. 0. 0.001 0.01 ]\n",
+ " [0.042 0. 0.782 0.006 0.134 0.01 0.019 0.006 0. 0.001]\n",
+ " [0.003 0.001 0.003 0.861 0.018 0.086 0.022 0.001 0.003 0.002]\n",
+ " [0. 0. 0.003 0.007 0.943 0.008 0.007 0.031 0.001 0. ]\n",
+ " [0. 0. 0.001 0.019 0.006 0.96 0.002 0.012 0. 0. ]\n",
+ " [0.002 0. 0.003 0.001 0. 0.002 0.991 0. 0.001 0. ]\n",
+ " [0.004 0. 0.002 0.007 0.006 0.039 0. 0.941 0.001 0. ]\n",
+ " [0.008 0.007 0. 0. 0. 0. 0. 0. 0.975 0.01 ]\n",
+ " [0.003 0.031 0. 0. 0. 0. 0. 0. 0.001 0.965]]\n",
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n",
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "4500 iteration, USE_EMA: True, train/sup_loss: 0.0618, train/unsup_loss: 0.2132, train/total_loss: 0.2750, train/util_ratio: 0.8750, train/run_time: 0.1411, eval/loss: 0.2234, eval/top-1-acc: 0.9364, eval/balanced_acc: 0.9364, eval/precision: 0.9390, eval/recall: 0.9364, eval/F1: 0.9358, lr: 0.0002, train/prefecth_time: 0.0038 BEST_EVAL_ACC: 0.9364, at 4500 iters\n",
+ "4550 iteration USE_EMA: True, train/sup_loss: 0.0178, train/unsup_loss: 0.0903, train/total_loss: 0.1081, train/util_ratio: 0.8438, train/run_time: 0.1419, lr: 0.0002, train/prefecth_time: 0.0038 \n",
+ "4600 iteration USE_EMA: True, train/sup_loss: 0.0589, train/unsup_loss: 0.3741, train/total_loss: 0.4330, train/util_ratio: 0.6875, train/run_time: 0.1414, lr: 0.0002, train/prefecth_time: 0.0036 \n",
+ "4650 iteration USE_EMA: True, train/sup_loss: 0.0009, train/unsup_loss: 0.0721, train/total_loss: 0.0730, train/util_ratio: 0.7500, train/run_time: 0.1405, lr: 0.0001, train/prefecth_time: 0.0035 \n",
+ "4700 iteration USE_EMA: True, train/sup_loss: 0.0007, train/unsup_loss: 0.2161, train/total_loss: 0.2168, train/util_ratio: 0.8750, train/run_time: 0.1413, lr: 0.0001, train/prefecth_time: 0.0040 \n",
+ "4750 iteration USE_EMA: True, train/sup_loss: 0.0015, train/unsup_loss: 0.1537, train/total_loss: 0.1552, train/util_ratio: 0.6875, train/run_time: 0.1407, lr: 0.0001, train/prefecth_time: 0.0039 \n",
+ "4800 iteration USE_EMA: True, train/sup_loss: 0.0409, train/unsup_loss: 0.2510, train/total_loss: 0.2919, train/util_ratio: 0.8125, train/run_time: 0.1408, lr: 0.0001, train/prefecth_time: 0.0036 \n",
+ "4850 iteration USE_EMA: True, train/sup_loss: 0.0002, train/unsup_loss: 0.2873, train/total_loss: 0.2875, train/util_ratio: 0.7812, train/run_time: 0.1418, lr: 0.0001, train/prefecth_time: 0.0039 \n",
+ "4900 iteration USE_EMA: True, train/sup_loss: 0.0004, train/unsup_loss: 0.0784, train/total_loss: 0.0788, train/util_ratio: 0.7812, train/run_time: 0.1412, lr: 0.0001, train/prefecth_time: 0.0037 \n",
+ "4950 iteration USE_EMA: True, train/sup_loss: 0.0006, train/unsup_loss: 0.1122, train/total_loss: 0.1128, train/util_ratio: 0.7812, train/run_time: 0.1413, lr: 0.0001, train/prefecth_time: 0.0039 \n",
+ "validating...\n",
+ "confusion matrix:\n",
+ "[[0.957 0.002 0.002 0.001 0. 0. 0. 0. 0.022 0.016]\n",
+ " [0. 0.989 0. 0. 0. 0. 0. 0. 0.001 0.01 ]\n",
+ " [0.043 0. 0.783 0.007 0.132 0.01 0.019 0.005 0. 0.001]\n",
+ " [0.003 0.001 0.003 0.871 0.016 0.077 0.024 0.001 0.002 0.002]\n",
+ " [0. 0. 0.003 0.007 0.947 0.007 0.007 0.028 0.001 0. ]\n",
+ " [0. 0. 0.001 0.019 0.006 0.96 0.002 0.012 0. 0. ]\n",
+ " [0.002 0. 0.003 0. 0. 0.002 0.992 0. 0.001 0. ]\n",
+ " [0.005 0. 0.002 0.005 0.006 0.032 0. 0.948 0.001 0.001]\n",
+ " [0.006 0.008 0. 0. 0. 0. 0. 0. 0.977 0.009]\n",
+ " [0.003 0.033 0. 0. 0. 0. 0. 0. 0.001 0.963]]\n",
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n",
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "5000 iteration, USE_EMA: True, train/sup_loss: 0.0005, train/unsup_loss: 0.2451, train/total_loss: 0.2457, train/util_ratio: 0.7500, train/run_time: 0.1409, eval/loss: 0.2223, eval/top-1-acc: 0.9387, eval/balanced_acc: 0.9387, eval/precision: 0.9410, eval/recall: 0.9387, eval/F1: 0.9380, lr: 0.0001, train/prefecth_time: 0.0034 BEST_EVAL_ACC: 0.9387, at 5000 iters\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "[2023-07-19 23:13:01,538 INFO] confusion matrix\n",
+ "[2023-07-19 23:13:01,540 INFO] [[0.956 0.004 0. 0.001 0. 0. 0. 0. 0.022 0.017]\n",
+ " [0. 0.99 0. 0. 0. 0. 0. 0. 0. 0.01 ]\n",
+ " [0.046 0. 0.77 0.01 0.134 0.016 0.018 0.004 0.001 0.001]\n",
+ " [0.003 0.002 0.002 0.872 0.015 0.079 0.023 0. 0.002 0.002]\n",
+ " [0. 0. 0.002 0.007 0.949 0.007 0.008 0.026 0.001 0. ]\n",
+ " [0. 0. 0.001 0.018 0.005 0.965 0.002 0.009 0. 0. ]\n",
+ " [0.002 0. 0.003 0.001 0. 0.002 0.991 0. 0.001 0. ]\n",
+ " [0.004 0. 0.002 0.005 0.005 0.03 0. 0.951 0.001 0.002]\n",
+ " [0.006 0.008 0. 0. 0. 0. 0. 0. 0.977 0.009]\n",
+ " [0.003 0.034 0. 0. 0. 0. 0. 0. 0.001 0.962]]\n",
+ "[2023-07-19 23:13:01,542 INFO] evaluation metric\n",
+ "[2023-07-19 23:13:01,543 INFO] acc: 0.9383\n",
+ "[2023-07-19 23:13:01,543 INFO] precision: 0.9409\n",
+ "[2023-07-19 23:13:01,544 INFO] recall: 0.9383\n",
+ "[2023-07-19 23:13:01,544 INFO] f1: 0.9375\n",
+ "[2023-07-19 23:13:02,617 INFO] Best acc 0.9387 at epoch 0\n",
+ "[2023-07-19 23:13:02,618 INFO] Training finished.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n"
]
}
],
@@ -294,30 +562,31 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "/home/haoc/miniconda3/envs/test/lib/python3.8/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
- " _warn_prf(average, modifier, msg_start, len(result))\n",
- "[2022-12-18 14:02:22,466 INFO] confusion matrix\n",
- "[2022-12-18 14:02:22,468 INFO] [[0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]]\n",
- "[2022-12-18 14:02:22,470 INFO] evaluation metric\n",
- "[2022-12-18 14:02:22,471 INFO] acc: 0.1000\n",
- "[2022-12-18 14:02:22,472 INFO] precision: 0.0100\n",
- "[2022-12-18 14:02:22,474 INFO] recall: 0.1000\n",
- "[2022-12-18 14:02:22,475 INFO] f1: 0.0182\n"
+ "[2023-07-19 23:14:07,511 INFO] confusion matrix\n",
+ "[2023-07-19 23:14:07,513 INFO] [[0.956 0.004 0. 0.001 0. 0. 0. 0. 0.022 0.017]\n",
+ " [0. 0.99 0. 0. 0. 0. 0. 0. 0. 0.01 ]\n",
+ " [0.046 0. 0.77 0.01 0.134 0.016 0.018 0.004 0.001 0.001]\n",
+ " [0.003 0.002 0.002 0.872 0.015 0.079 0.023 0. 0.002 0.002]\n",
+ " [0. 0. 0.002 0.007 0.949 0.007 0.008 0.026 0.001 0. ]\n",
+ " [0. 0. 0.001 0.018 0.005 0.965 0.002 0.009 0. 0. ]\n",
+ " [0.002 0. 0.003 0.001 0. 0.002 0.991 0. 0.001 0. ]\n",
+ " [0.004 0. 0.002 0.005 0.005 0.03 0. 0.951 0.001 0.002]\n",
+ " [0.006 0.008 0. 0. 0. 0. 0. 0. 0.977 0.009]\n",
+ " [0.003 0.034 0. 0. 0. 0. 0. 0. 0.001 0.962]]\n",
+ "[2023-07-19 23:14:07,515 INFO] evaluation metric\n",
+ "[2023-07-19 23:14:07,516 INFO] acc: 0.9383\n",
+ "[2023-07-19 23:14:07,517 INFO] precision: 0.9409\n",
+ "[2023-07-19 23:14:07,517 INFO] recall: 0.9383\n",
+ "[2023-07-19 23:14:07,518 INFO] f1: 0.9375\n"
]
},
{
"data": {
"text/plain": [
- "{'acc': 0.1, 'precision': 0.01, 'recall': 0.1, 'f1': 0.01818181818181818}"
+ "{'acc': 0.9383,\n",
+ " 'precision': 0.9408766240300274,\n",
+ " 'recall': 0.9382999999999999,\n",
+ " 'f1': 0.9375322532701483}"
]
},
"execution_count": 6,
@@ -350,16 +619,7 @@
"name": "#%%\n"
}
},
- "outputs": [
- {
- "ename": "",
- "evalue": "",
- "output_type": "error",
- "traceback": [
- "\u001b[1;31mThe Kernel crashed while executing code in the the current cell or a previous cell. Please review the code in the cell(s) to identify a possible cause of the failure. Click here for more info. View Jupyter log for further details."
- ]
- }
- ],
+ "outputs": [],
"source": [
"y_pred, y_logits = trainer.predict(eval_loader)"
]
@@ -381,7 +641,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.13"
+ "version": "3.9.17"
},
"vscode": {
"interpreter": {
diff --git a/notebooks/Custom_Algorithm.ipynb b/notebooks/Custom_Algorithm.ipynb
index 9d8853db..f4cfedfc 100644
--- a/notebooks/Custom_Algorithm.ipynb
+++ b/notebooks/Custom_Algorithm.ipynb
@@ -20,7 +20,16 @@
"cell_type": "code",
"execution_count": 1,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/media/Zeus/haoc/miniconda/envs/test_semilearn_031/lib/python3.9/site-packages/tqdm/auto.py:22: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
+ " from .autonotebook import tqdm as notebook_tqdm\n"
+ ]
+ }
+ ],
"source": [
"from semilearn import get_dataset, get_data_loader, get_net_builder, get_algorithm, get_config, Trainer\n"
]
@@ -148,13 +157,6 @@
"execution_count": 3,
"metadata": {},
"outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "here 1\n"
- ]
- },
{
"name": "stderr",
"output_type": "stream",
@@ -278,31 +280,297 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "Epoch: 0\n"
+ "Epoch: 0\n",
+ "50 iteration USE_EMA: True, train/sup_loss: 3.5051, train/unsup_loss: 0.0000, train/total_loss: 3.5051, train/util_ratio: 0.0000, train/run_time: 0.1370, lr: 0.0005, train/prefecth_time: 0.0036 \n",
+ "100 iteration USE_EMA: True, train/sup_loss: 1.0864, train/unsup_loss: 0.0000, train/total_loss: 1.0864, train/util_ratio: 0.0000, train/run_time: 0.1388, lr: 0.0005, train/prefecth_time: 0.0031 \n",
+ "150 iteration USE_EMA: True, train/sup_loss: 0.5159, train/unsup_loss: 0.0000, train/total_loss: 0.5159, train/util_ratio: 0.0000, train/run_time: 0.1384, lr: 0.0005, train/prefecth_time: 0.0035 \n",
+ "200 iteration USE_EMA: True, train/sup_loss: 0.5048, train/unsup_loss: 0.0000, train/total_loss: 0.5048, train/util_ratio: 0.0000, train/run_time: 0.1384, lr: 0.0005, train/prefecth_time: 0.0037 \n",
+ "250 iteration USE_EMA: True, train/sup_loss: 0.5692, train/unsup_loss: 0.1162, train/total_loss: 0.6854, train/util_ratio: 0.1562, train/run_time: 0.1395, lr: 0.0005, train/prefecth_time: 0.0037 \n",
+ "300 iteration USE_EMA: True, train/sup_loss: 0.1154, train/unsup_loss: 0.0059, train/total_loss: 0.1214, train/util_ratio: 0.0625, train/run_time: 0.1391, lr: 0.0005, train/prefecth_time: 0.0035 \n",
+ "350 iteration USE_EMA: True, train/sup_loss: 0.0512, train/unsup_loss: 0.0717, train/total_loss: 0.1230, train/util_ratio: 0.0938, train/run_time: 0.1396, lr: 0.0005, train/prefecth_time: 0.0036 \n",
+ "400 iteration USE_EMA: True, train/sup_loss: 0.1361, train/unsup_loss: 0.0063, train/total_loss: 0.1425, train/util_ratio: 0.1250, train/run_time: 0.1401, lr: 0.0005, train/prefecth_time: 0.0035 \n",
+ "450 iteration USE_EMA: True, train/sup_loss: 0.0383, train/unsup_loss: 0.0889, train/total_loss: 0.1272, train/util_ratio: 0.3125, train/run_time: 0.1403, lr: 0.0005, train/prefecth_time: 0.0037 \n",
+ "validating...\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/media/Zeus/haoc/miniconda/envs/test_semilearn_031/lib/python3.9/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
+ " _warn_prf(average, modifier, msg_start, len(result))\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "confusion matrix:\n",
+ "[[0. 0. 0. 0. 0. 0. 0. 1. 0. 0. ]\n",
+ " [0. 0. 0. 0. 0. 0. 0. 1. 0. 0. ]\n",
+ " [0. 0. 0. 0. 0. 0. 0. 1. 0. 0. ]\n",
+ " [0. 0. 0. 0.004 0. 0.001 0. 0.995 0. 0. ]\n",
+ " [0. 0. 0. 0.002 0. 0. 0. 0.998 0. 0. ]\n",
+ " [0. 0. 0. 0.001 0. 0.014 0. 0.985 0. 0. ]\n",
+ " [0. 0. 0. 0. 0. 0. 0. 1. 0. 0. ]\n",
+ " [0. 0. 0. 0. 0. 0. 0. 1. 0. 0. ]\n",
+ " [0. 0. 0. 0. 0. 0. 0. 1. 0. 0. ]\n",
+ " [0. 0. 0. 0. 0. 0. 0. 1. 0. 0. ]]\n",
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n",
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "500 iteration, USE_EMA: True, train/sup_loss: 0.0129, train/unsup_loss: 0.0249, train/total_loss: 0.0378, train/util_ratio: 0.1250, train/run_time: 0.1401, eval/loss: 5.5155, eval/top-1-acc: 0.1018, eval/balanced_acc: 0.1018, eval/precision: 0.1605, eval/recall: 0.1018, eval/F1: 0.0218, lr: 0.0005, train/prefecth_time: 0.0035 BEST_EVAL_ACC: 0.1018, at 500 iters\n",
+ "550 iteration USE_EMA: True, train/sup_loss: 0.0389, train/unsup_loss: 0.1663, train/total_loss: 0.2052, train/util_ratio: 0.3125, train/run_time: 0.1406, lr: 0.0005, train/prefecth_time: 0.0039 \n",
+ "600 iteration USE_EMA: True, train/sup_loss: 0.0373, train/unsup_loss: 0.1409, train/total_loss: 0.1782, train/util_ratio: 0.3438, train/run_time: 0.1402, lr: 0.0005, train/prefecth_time: 0.0038 \n",
+ "650 iteration USE_EMA: True, train/sup_loss: 0.0120, train/unsup_loss: 0.4798, train/total_loss: 0.4917, train/util_ratio: 0.4062, train/run_time: 0.1406, lr: 0.0005, train/prefecth_time: 0.0037 \n",
+ "700 iteration USE_EMA: True, train/sup_loss: 0.0063, train/unsup_loss: 0.1671, train/total_loss: 0.1734, train/util_ratio: 0.3438, train/run_time: 0.1410, lr: 0.0005, train/prefecth_time: 0.0036 \n",
+ "750 iteration USE_EMA: True, train/sup_loss: 0.1073, train/unsup_loss: 0.4499, train/total_loss: 0.5573, train/util_ratio: 0.4688, train/run_time: 0.1413, lr: 0.0005, train/prefecth_time: 0.0040 \n",
+ "800 iteration USE_EMA: True, train/sup_loss: 0.0048, train/unsup_loss: 0.3912, train/total_loss: 0.3960, train/util_ratio: 0.5938, train/run_time: 0.1408, lr: 0.0005, train/prefecth_time: 0.0035 \n",
+ "850 iteration USE_EMA: True, train/sup_loss: 0.0266, train/unsup_loss: 0.3070, train/total_loss: 0.3336, train/util_ratio: 0.5000, train/run_time: 0.1407, lr: 0.0005, train/prefecth_time: 0.0039 \n",
+ "900 iteration USE_EMA: True, train/sup_loss: 0.0046, train/unsup_loss: 0.0333, train/total_loss: 0.0378, train/util_ratio: 0.4375, train/run_time: 0.1407, lr: 0.0005, train/prefecth_time: 0.0039 \n",
+ "950 iteration USE_EMA: True, train/sup_loss: 0.0058, train/unsup_loss: 0.0415, train/total_loss: 0.0473, train/util_ratio: 0.4375, train/run_time: 0.1401, lr: 0.0005, train/prefecth_time: 0.0038 \n",
+ "validating...\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/media/Zeus/haoc/miniconda/envs/test_semilearn_031/lib/python3.9/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
+ " _warn_prf(average, modifier, msg_start, len(result))\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "confusion matrix:\n",
+ "[[0.303 0. 0.006 0.004 0. 0.003 0. 0.645 0. 0.039]\n",
+ " [0. 0.001 0. 0. 0. 0.001 0. 0.292 0. 0.706]\n",
+ " [0. 0. 0.506 0.018 0. 0.11 0. 0.361 0. 0.005]\n",
+ " [0. 0. 0.001 0.495 0. 0.263 0. 0.239 0. 0.002]\n",
+ " [0.001 0. 0.005 0.061 0. 0.123 0. 0.809 0. 0.001]\n",
+ " [0. 0. 0. 0.031 0. 0.78 0. 0.189 0. 0. ]\n",
+ " [0.001 0. 0.028 0.064 0. 0.231 0.002 0.67 0. 0.004]\n",
+ " [0. 0. 0. 0.004 0. 0.127 0. 0.868 0. 0.001]\n",
+ " [0.036 0. 0.004 0.004 0. 0.031 0. 0.677 0. 0.248]\n",
+ " [0. 0. 0. 0.002 0. 0.001 0. 0.121 0. 0.876]]\n",
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n",
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "1000 iteration, USE_EMA: True, train/sup_loss: 0.0189, train/unsup_loss: 0.2167, train/total_loss: 0.2356, train/util_ratio: 0.5000, train/run_time: 0.1406, eval/loss: 2.4450, eval/top-1-acc: 0.3831, eval/balanced_acc: 0.3831, eval/precision: 0.5644, eval/recall: 0.3831, eval/F1: 0.3187, lr: 0.0005, train/prefecth_time: 0.0036 BEST_EVAL_ACC: 0.3831, at 1000 iters\n",
+ "1050 iteration USE_EMA: True, train/sup_loss: 0.0346, train/unsup_loss: 0.0441, train/total_loss: 0.0788, train/util_ratio: 0.6875, train/run_time: 0.1408, lr: 0.0005, train/prefecth_time: 0.0038 \n",
+ "1100 iteration USE_EMA: True, train/sup_loss: 0.0026, train/unsup_loss: 0.3319, train/total_loss: 0.3345, train/util_ratio: 0.5938, train/run_time: 0.1411, lr: 0.0005, train/prefecth_time: 0.0035 \n",
+ "1150 iteration USE_EMA: True, train/sup_loss: 0.1744, train/unsup_loss: 0.3718, train/total_loss: 0.5462, train/util_ratio: 0.5312, train/run_time: 0.1416, lr: 0.0005, train/prefecth_time: 0.0040 \n",
+ "1200 iteration USE_EMA: True, train/sup_loss: 0.0111, train/unsup_loss: 0.1394, train/total_loss: 0.1504, train/util_ratio: 0.6250, train/run_time: 0.1416, lr: 0.0005, train/prefecth_time: 0.0040 \n",
+ "1250 iteration USE_EMA: True, train/sup_loss: 0.0191, train/unsup_loss: 0.2628, train/total_loss: 0.2818, train/util_ratio: 0.6250, train/run_time: 0.1412, lr: 0.0005, train/prefecth_time: 0.0036 \n",
+ "1300 iteration USE_EMA: True, train/sup_loss: 0.0078, train/unsup_loss: 0.1025, train/total_loss: 0.1103, train/util_ratio: 0.5625, train/run_time: 0.1416, lr: 0.0005, train/prefecth_time: 0.0038 \n",
+ "1350 iteration USE_EMA: True, train/sup_loss: 0.0248, train/unsup_loss: 0.6699, train/total_loss: 0.6947, train/util_ratio: 0.6562, train/run_time: 0.1408, lr: 0.0005, train/prefecth_time: 0.0039 \n",
+ "1400 iteration USE_EMA: True, train/sup_loss: 0.0063, train/unsup_loss: 0.3722, train/total_loss: 0.3785, train/util_ratio: 0.7188, train/run_time: 0.1411, lr: 0.0005, train/prefecth_time: 0.0034 \n",
+ "1450 iteration USE_EMA: True, train/sup_loss: 0.0029, train/unsup_loss: 0.0657, train/total_loss: 0.0686, train/util_ratio: 0.6875, train/run_time: 0.1409, lr: 0.0005, train/prefecth_time: 0.0038 \n",
+ "validating...\n",
+ "confusion matrix:\n",
+ "[[0.956 0. 0.003 0.002 0. 0.002 0.002 0.011 0.001 0.023]\n",
+ " [0. 0.88 0. 0. 0. 0. 0. 0. 0. 0.12 ]\n",
+ " [0.046 0. 0.669 0.017 0.003 0.117 0.005 0.137 0. 0.006]\n",
+ " [0.002 0.001 0.009 0.606 0.002 0.288 0.011 0.077 0.001 0.003]\n",
+ " [0.018 0. 0.012 0.039 0.387 0.081 0.003 0.46 0. 0. ]\n",
+ " [0. 0. 0. 0.044 0. 0.868 0. 0.088 0. 0. ]\n",
+ " [0.007 0. 0.023 0.005 0. 0.026 0.918 0.019 0. 0.002]\n",
+ " [0.001 0. 0.001 0.004 0.006 0.15 0. 0.836 0. 0.002]\n",
+ " [0.293 0.004 0.005 0.006 0. 0.012 0. 0.022 0.279 0.379]\n",
+ " [0.009 0.003 0. 0.001 0. 0. 0. 0. 0. 0.987]]\n",
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n",
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "1500 iteration, USE_EMA: True, train/sup_loss: 0.0016, train/unsup_loss: 0.1244, train/total_loss: 0.1260, train/util_ratio: 0.5938, train/run_time: 0.1409, eval/loss: 0.7701, eval/top-1-acc: 0.7386, eval/balanced_acc: 0.7386, eval/precision: 0.8133, eval/recall: 0.7386, eval/F1: 0.7264, lr: 0.0005, train/prefecth_time: 0.0034 BEST_EVAL_ACC: 0.7386, at 1500 iters\n",
+ "1550 iteration USE_EMA: True, train/sup_loss: 0.0057, train/unsup_loss: 0.2125, train/total_loss: 0.2182, train/util_ratio: 0.5938, train/run_time: 0.1414, lr: 0.0005, train/prefecth_time: 0.0144 \n",
+ "1600 iteration USE_EMA: True, train/sup_loss: 0.0051, train/unsup_loss: 0.4610, train/total_loss: 0.4661, train/util_ratio: 0.6875, train/run_time: 0.1409, lr: 0.0005, train/prefecth_time: 0.0031 \n",
+ "1650 iteration USE_EMA: True, train/sup_loss: 0.0011, train/unsup_loss: 0.2337, train/total_loss: 0.2348, train/util_ratio: 0.8438, train/run_time: 0.1416, lr: 0.0004, train/prefecth_time: 0.0029 \n",
+ "1700 iteration USE_EMA: True, train/sup_loss: 0.0014, train/unsup_loss: 0.1703, train/total_loss: 0.1717, train/util_ratio: 0.6562, train/run_time: 0.1406, lr: 0.0004, train/prefecth_time: 0.0035 \n",
+ "1750 iteration USE_EMA: True, train/sup_loss: 0.2324, train/unsup_loss: 0.1236, train/total_loss: 0.3560, train/util_ratio: 0.5938, train/run_time: 0.1411, lr: 0.0004, train/prefecth_time: 0.0034 \n",
+ "1800 iteration USE_EMA: True, train/sup_loss: 0.0040, train/unsup_loss: 0.1355, train/total_loss: 0.1395, train/util_ratio: 0.8125, train/run_time: 0.1422, lr: 0.0004, train/prefecth_time: 0.0043 \n",
+ "1850 iteration USE_EMA: True, train/sup_loss: 0.0004, train/unsup_loss: 0.2151, train/total_loss: 0.2155, train/util_ratio: 0.6875, train/run_time: 0.1405, lr: 0.0004, train/prefecth_time: 0.0032 \n",
+ "1900 iteration USE_EMA: True, train/sup_loss: 0.0412, train/unsup_loss: 0.0414, train/total_loss: 0.0826, train/util_ratio: 0.6562, train/run_time: 0.1419, lr: 0.0004, train/prefecth_time: 0.0061 \n",
+ "1950 iteration USE_EMA: True, train/sup_loss: 0.0033, train/unsup_loss: 0.2867, train/total_loss: 0.2899, train/util_ratio: 0.7188, train/run_time: 0.1408, lr: 0.0004, train/prefecth_time: 0.0026 \n",
+ "validating...\n",
+ "confusion matrix:\n",
+ "[[0.966 0.002 0.001 0.002 0. 0.001 0.002 0.001 0.008 0.017]\n",
+ " [0. 0.965 0. 0. 0. 0. 0. 0. 0. 0.035]\n",
+ " [0.055 0. 0.707 0.026 0.044 0.067 0.016 0.079 0. 0.006]\n",
+ " [0.005 0.001 0.006 0.759 0.005 0.163 0.021 0.037 0.002 0.001]\n",
+ " [0.006 0. 0.003 0.018 0.874 0.01 0.004 0.084 0.001 0. ]\n",
+ " [0. 0. 0.001 0.077 0.006 0.856 0.001 0.059 0. 0. ]\n",
+ " [0.004 0. 0.003 0.001 0. 0.002 0.987 0.003 0. 0. ]\n",
+ " [0.006 0. 0.001 0.009 0.07 0.101 0. 0.81 0. 0.003]\n",
+ " [0.076 0.014 0.001 0.004 0. 0. 0. 0.001 0.836 0.068]\n",
+ " [0.007 0.015 0. 0. 0. 0. 0. 0. 0.002 0.976]]\n",
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n",
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "2000 iteration, USE_EMA: True, train/sup_loss: 0.0084, train/unsup_loss: 0.6485, train/total_loss: 0.6569, train/util_ratio: 0.7812, train/run_time: 0.1408, eval/loss: 0.3931, eval/top-1-acc: 0.8736, eval/balanced_acc: 0.8736, eval/precision: 0.8818, eval/recall: 0.8736, eval/F1: 0.8734, lr: 0.0004, train/prefecth_time: 0.0031 BEST_EVAL_ACC: 0.8736, at 2000 iters\n",
+ "2050 iteration USE_EMA: True, train/sup_loss: 0.0020, train/unsup_loss: 0.1562, train/total_loss: 0.1582, train/util_ratio: 0.7500, train/run_time: 0.1408, lr: 0.0004, train/prefecth_time: 0.0034 \n",
+ "2100 iteration USE_EMA: True, train/sup_loss: 0.0022, train/unsup_loss: 0.3097, train/total_loss: 0.3120, train/util_ratio: 0.8438, train/run_time: 0.1409, lr: 0.0004, train/prefecth_time: 0.0032 \n",
+ "2150 iteration USE_EMA: True, train/sup_loss: 0.0062, train/unsup_loss: 0.1458, train/total_loss: 0.1520, train/util_ratio: 0.7188, train/run_time: 0.1410, lr: 0.0004, train/prefecth_time: 0.0033 \n",
+ "2200 iteration USE_EMA: True, train/sup_loss: 0.0148, train/unsup_loss: 0.2113, train/total_loss: 0.2261, train/util_ratio: 0.6875, train/run_time: 0.1407, lr: 0.0004, train/prefecth_time: 0.0034 \n",
+ "2250 iteration USE_EMA: True, train/sup_loss: 0.0108, train/unsup_loss: 0.2698, train/total_loss: 0.2806, train/util_ratio: 0.6250, train/run_time: 0.1403, lr: 0.0004, train/prefecth_time: 0.0031 \n",
+ "2300 iteration USE_EMA: True, train/sup_loss: 0.0005, train/unsup_loss: 0.1321, train/total_loss: 0.1326, train/util_ratio: 0.8125, train/run_time: 0.1406, lr: 0.0004, train/prefecth_time: 0.0032 \n",
+ "2350 iteration USE_EMA: True, train/sup_loss: 0.0099, train/unsup_loss: 0.3188, train/total_loss: 0.3287, train/util_ratio: 0.7812, train/run_time: 0.1407, lr: 0.0004, train/prefecth_time: 0.0032 \n",
+ "2400 iteration USE_EMA: True, train/sup_loss: 0.0007, train/unsup_loss: 0.0553, train/total_loss: 0.0560, train/util_ratio: 0.7188, train/run_time: 0.1409, lr: 0.0004, train/prefecth_time: 0.0033 \n",
+ "2450 iteration USE_EMA: True, train/sup_loss: 0.0005, train/unsup_loss: 0.3062, train/total_loss: 0.3067, train/util_ratio: 0.8125, train/run_time: 0.1406, lr: 0.0004, train/prefecth_time: 0.0032 \n",
+ "validating...\n",
+ "confusion matrix:\n",
+ "[[0.968 0.002 0.001 0.001 0. 0. 0.002 0.001 0.013 0.012]\n",
+ " [0. 0.979 0. 0. 0. 0. 0. 0. 0. 0.021]\n",
+ " [0.061 0. 0.72 0.028 0.084 0.043 0.019 0.042 0. 0.003]\n",
+ " [0.005 0.001 0.003 0.805 0.01 0.125 0.025 0.023 0.002 0.001]\n",
+ " [0.004 0. 0.002 0.009 0.926 0.002 0.004 0.052 0.001 0. ]\n",
+ " [0. 0. 0.001 0.077 0.01 0.866 0.001 0.045 0. 0. ]\n",
+ " [0.004 0. 0.002 0. 0. 0.002 0.991 0.001 0. 0. ]\n",
+ " [0.008 0. 0.001 0.007 0.124 0.077 0. 0.782 0. 0.001]\n",
+ " [0.036 0.008 0. 0. 0. 0. 0. 0. 0.931 0.025]\n",
+ " [0.007 0.018 0. 0. 0. 0. 0. 0. 0.002 0.973]]\n",
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n",
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "2500 iteration, USE_EMA: True, train/sup_loss: 0.0004, train/unsup_loss: 0.0543, train/total_loss: 0.0547, train/util_ratio: 0.5938, train/run_time: 0.1402, eval/loss: 0.3548, eval/top-1-acc: 0.8941, eval/balanced_acc: 0.8941, eval/precision: 0.8989, eval/recall: 0.8941, eval/F1: 0.8932, lr: 0.0004, train/prefecth_time: 0.0033 BEST_EVAL_ACC: 0.8941, at 2500 iters\n",
+ "2550 iteration USE_EMA: True, train/sup_loss: 0.0035, train/unsup_loss: 0.1280, train/total_loss: 0.1314, train/util_ratio: 0.7812, train/run_time: 0.1404, lr: 0.0004, train/prefecth_time: 0.0031 \n",
+ "2600 iteration USE_EMA: True, train/sup_loss: 0.0007, train/unsup_loss: 0.2929, train/total_loss: 0.2936, train/util_ratio: 0.8125, train/run_time: 0.1402, lr: 0.0004, train/prefecth_time: 0.0032 \n",
+ "2650 iteration USE_EMA: True, train/sup_loss: 0.0002, train/unsup_loss: 0.0830, train/total_loss: 0.0832, train/util_ratio: 0.6562, train/run_time: 0.1401, lr: 0.0004, train/prefecth_time: 0.0034 \n",
+ "2700 iteration USE_EMA: True, train/sup_loss: 0.0005, train/unsup_loss: 0.0310, train/total_loss: 0.0315, train/util_ratio: 0.7812, train/run_time: 0.1405, lr: 0.0004, train/prefecth_time: 0.0031 \n",
+ "2750 iteration USE_EMA: True, train/sup_loss: 0.0004, train/unsup_loss: 0.2103, train/total_loss: 0.2107, train/util_ratio: 0.6562, train/run_time: 0.1396, lr: 0.0004, train/prefecth_time: 0.0034 \n",
+ "2800 iteration USE_EMA: True, train/sup_loss: 0.0028, train/unsup_loss: 0.1549, train/total_loss: 0.1577, train/util_ratio: 0.7812, train/run_time: 0.1401, lr: 0.0004, train/prefecth_time: 0.0032 \n",
+ "2850 iteration USE_EMA: True, train/sup_loss: 0.0170, train/unsup_loss: 0.0704, train/total_loss: 0.0874, train/util_ratio: 0.7500, train/run_time: 0.1424, lr: 0.0004, train/prefecth_time: 0.0032 \n",
+ "2900 iteration USE_EMA: True, train/sup_loss: 0.0367, train/unsup_loss: 0.0295, train/total_loss: 0.0661, train/util_ratio: 0.7188, train/run_time: 0.1401, lr: 0.0003, train/prefecth_time: 0.0029 \n",
+ "2950 iteration USE_EMA: True, train/sup_loss: 0.0009, train/unsup_loss: 0.2047, train/total_loss: 0.2056, train/util_ratio: 0.8438, train/run_time: 0.1405, lr: 0.0003, train/prefecth_time: 0.0031 \n",
+ "validating...\n",
+ "confusion matrix:\n",
+ "[[0.968 0.002 0.001 0.001 0. 0. 0.001 0.001 0.016 0.01 ]\n",
+ " [0. 0.984 0. 0. 0. 0. 0. 0. 0. 0.016]\n",
+ " [0.065 0. 0.722 0.022 0.105 0.036 0.02 0.026 0. 0.004]\n",
+ " [0.004 0.001 0.003 0.829 0.009 0.106 0.024 0.02 0.003 0.001]\n",
+ " [0.003 0. 0. 0.005 0.946 0.001 0.005 0.039 0.001 0. ]\n",
+ " [0. 0. 0.001 0.08 0.01 0.87 0.002 0.037 0. 0. ]\n",
+ " [0.004 0. 0.002 0. 0. 0.002 0.992 0. 0. 0. ]\n",
+ " [0.009 0. 0.001 0.006 0.138 0.064 0. 0.781 0. 0.001]\n",
+ " [0.023 0.008 0. 0. 0. 0. 0. 0. 0.953 0.016]\n",
+ " [0.008 0.022 0. 0. 0. 0. 0. 0. 0.002 0.968]]\n",
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n",
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "3000 iteration, USE_EMA: True, train/sup_loss: 0.0026, train/unsup_loss: 0.1566, train/total_loss: 0.1592, train/util_ratio: 0.7812, train/run_time: 0.1406, eval/loss: 0.3531, eval/top-1-acc: 0.9013, eval/balanced_acc: 0.9013, eval/precision: 0.9062, eval/recall: 0.9013, eval/F1: 0.9003, lr: 0.0003, train/prefecth_time: 0.0031 BEST_EVAL_ACC: 0.9013, at 3000 iters\n",
+ "3050 iteration USE_EMA: True, train/sup_loss: 0.0004, train/unsup_loss: 0.3025, train/total_loss: 0.3029, train/util_ratio: 0.7500, train/run_time: 0.1398, lr: 0.0003, train/prefecth_time: 0.0033 \n",
+ "3100 iteration USE_EMA: True, train/sup_loss: 0.0382, train/unsup_loss: 0.1407, train/total_loss: 0.1789, train/util_ratio: 0.6562, train/run_time: 0.1406, lr: 0.0003, train/prefecth_time: 0.0033 \n",
+ "3150 iteration USE_EMA: True, train/sup_loss: 0.0020, train/unsup_loss: 0.0475, train/total_loss: 0.0495, train/util_ratio: 0.6875, train/run_time: 0.1407, lr: 0.0003, train/prefecth_time: 0.0033 \n",
+ "3200 iteration USE_EMA: True, train/sup_loss: 0.0009, train/unsup_loss: 0.1359, train/total_loss: 0.1368, train/util_ratio: 0.6875, train/run_time: 0.1404, lr: 0.0003, train/prefecth_time: 0.0035 \n",
+ "3250 iteration USE_EMA: True, train/sup_loss: 0.0066, train/unsup_loss: 0.1037, train/total_loss: 0.1103, train/util_ratio: 0.7812, train/run_time: 0.1404, lr: 0.0003, train/prefecth_time: 0.0033 \n",
+ "3300 iteration USE_EMA: True, train/sup_loss: 0.0005, train/unsup_loss: 0.0957, train/total_loss: 0.0963, train/util_ratio: 0.6562, train/run_time: 0.1397, lr: 0.0003, train/prefecth_time: 0.0031 \n",
+ "3350 iteration USE_EMA: True, train/sup_loss: 0.0005, train/unsup_loss: 0.0205, train/total_loss: 0.0210, train/util_ratio: 0.6562, train/run_time: 0.1402, lr: 0.0003, train/prefecth_time: 0.0033 \n",
+ "3400 iteration USE_EMA: True, train/sup_loss: 0.1098, train/unsup_loss: 0.0330, train/total_loss: 0.1428, train/util_ratio: 0.6875, train/run_time: 0.1400, lr: 0.0003, train/prefecth_time: 0.0059 \n",
+ "3450 iteration USE_EMA: True, train/sup_loss: 0.0017, train/unsup_loss: 0.1417, train/total_loss: 0.1435, train/util_ratio: 0.6875, train/run_time: 0.1410, lr: 0.0003, train/prefecth_time: 0.0031 \n",
+ "validating...\n",
+ "confusion matrix:\n",
+ "[[0.968 0.002 0.001 0.001 0. 0. 0.001 0.001 0.017 0.009]\n",
+ " [0. 0.986 0. 0. 0. 0. 0. 0. 0. 0.014]\n",
+ " [0.063 0. 0.728 0.02 0.111 0.035 0.02 0.021 0. 0.002]\n",
+ " [0.004 0.001 0.002 0.853 0.007 0.094 0.021 0.015 0.002 0.001]\n",
+ " [0.003 0. 0. 0.004 0.946 0.001 0.006 0.039 0.001 0. ]\n",
+ " [0. 0. 0.001 0.067 0.009 0.888 0.002 0.033 0. 0. ]\n",
+ " [0.004 0. 0.001 0. 0. 0.002 0.993 0. 0. 0. ]\n",
+ " [0.008 0. 0.002 0.007 0.132 0.064 0.001 0.785 0. 0.001]\n",
+ " [0.021 0.007 0. 0. 0. 0. 0. 0. 0.959 0.013]\n",
+ " [0.006 0.023 0. 0. 0. 0. 0. 0. 0.002 0.969]]\n",
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n",
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "3500 iteration, USE_EMA: True, train/sup_loss: 0.0006, train/unsup_loss: 0.0635, train/total_loss: 0.0642, train/util_ratio: 0.7188, train/run_time: 0.1406, eval/loss: 0.3464, eval/top-1-acc: 0.9075, eval/balanced_acc: 0.9075, eval/precision: 0.9124, eval/recall: 0.9075, eval/F1: 0.9066, lr: 0.0003, train/prefecth_time: 0.0033 BEST_EVAL_ACC: 0.9075, at 3500 iters\n",
+ "3550 iteration USE_EMA: True, train/sup_loss: 0.0207, train/unsup_loss: 0.1370, train/total_loss: 0.1577, train/util_ratio: 0.7188, train/run_time: 0.1400, lr: 0.0003, train/prefecth_time: 0.0034 \n",
+ "3600 iteration USE_EMA: True, train/sup_loss: 0.0003, train/unsup_loss: 0.2376, train/total_loss: 0.2379, train/util_ratio: 0.8125, train/run_time: 0.1406, lr: 0.0003, train/prefecth_time: 0.0034 \n",
+ "3650 iteration USE_EMA: True, train/sup_loss: 0.0203, train/unsup_loss: 0.0581, train/total_loss: 0.0784, train/util_ratio: 0.6875, train/run_time: 0.1405, lr: 0.0003, train/prefecth_time: 0.0034 \n",
+ "3700 iteration USE_EMA: True, train/sup_loss: 0.0291, train/unsup_loss: 0.1788, train/total_loss: 0.2078, train/util_ratio: 0.8438, train/run_time: 0.1406, lr: 0.0003, train/prefecth_time: 0.0032 \n",
+ "3750 iteration USE_EMA: True, train/sup_loss: 0.0020, train/unsup_loss: 0.0720, train/total_loss: 0.0739, train/util_ratio: 0.7500, train/run_time: 0.1400, lr: 0.0003, train/prefecth_time: 0.0034 \n",
+ "3800 iteration USE_EMA: True, train/sup_loss: 0.0145, train/unsup_loss: 0.1374, train/total_loss: 0.1519, train/util_ratio: 0.8750, train/run_time: 0.1407, lr: 0.0003, train/prefecth_time: 0.0033 \n",
+ "3850 iteration USE_EMA: True, train/sup_loss: 0.0262, train/unsup_loss: 0.0992, train/total_loss: 0.1254, train/util_ratio: 0.7188, train/run_time: 0.1410, lr: 0.0002, train/prefecth_time: 0.0030 \n",
+ "3900 iteration USE_EMA: True, train/sup_loss: 0.0003, train/unsup_loss: 0.3316, train/total_loss: 0.3319, train/util_ratio: 0.7812, train/run_time: 0.1407, lr: 0.0002, train/prefecth_time: 0.0033 \n",
+ "3950 iteration USE_EMA: True, train/sup_loss: 0.0112, train/unsup_loss: 0.1994, train/total_loss: 0.2106, train/util_ratio: 0.7188, train/run_time: 0.1408, lr: 0.0002, train/prefecth_time: 0.0031 \n",
+ "validating...\n",
+ "confusion matrix:\n",
+ "[[0.968 0.001 0.001 0.001 0. 0. 0.001 0.001 0.018 0.009]\n",
+ " [0. 0.988 0. 0. 0. 0. 0. 0. 0. 0.012]\n",
+ " [0.057 0. 0.749 0.015 0.118 0.023 0.021 0.015 0. 0.002]\n",
+ " [0.005 0.001 0.001 0.87 0.008 0.077 0.025 0.01 0.002 0.001]\n",
+ " [0.001 0. 0. 0.005 0.955 0. 0.008 0.03 0.001 0. ]\n",
+ " [0. 0. 0.001 0.068 0.01 0.887 0.003 0.031 0. 0. ]\n",
+ " [0.003 0. 0.001 0.001 0. 0.001 0.993 0. 0.001 0. ]\n",
+ " [0.008 0. 0.002 0.009 0.132 0.058 0.001 0.789 0. 0.001]\n",
+ " [0.017 0.007 0. 0. 0. 0. 0. 0. 0.967 0.009]\n",
+ " [0.006 0.025 0. 0. 0. 0. 0. 0. 0.002 0.967]]\n",
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n",
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "4000 iteration, USE_EMA: True, train/sup_loss: 0.0005, train/unsup_loss: 0.5238, train/total_loss: 0.5243, train/util_ratio: 0.9062, train/run_time: 0.1405, eval/loss: 0.3374, eval/top-1-acc: 0.9133, eval/balanced_acc: 0.9133, eval/precision: 0.9181, eval/recall: 0.9133, eval/F1: 0.9125, lr: 0.0002, train/prefecth_time: 0.0032 BEST_EVAL_ACC: 0.9133, at 4000 iters\n",
+ "4050 iteration USE_EMA: True, train/sup_loss: 0.0208, train/unsup_loss: 0.3388, train/total_loss: 0.3596, train/util_ratio: 0.6250, train/run_time: 0.1396, lr: 0.0002, train/prefecth_time: 0.0031 \n",
+ "4100 iteration USE_EMA: True, train/sup_loss: 0.3715, train/unsup_loss: 0.0317, train/total_loss: 0.4031, train/util_ratio: 0.8438, train/run_time: 0.1403, lr: 0.0002, train/prefecth_time: 0.0034 \n",
+ "4150 iteration USE_EMA: True, train/sup_loss: 0.0386, train/unsup_loss: 0.3697, train/total_loss: 0.4083, train/util_ratio: 0.6875, train/run_time: 0.1405, lr: 0.0002, train/prefecth_time: 0.0035 \n",
+ "4200 iteration USE_EMA: True, train/sup_loss: 0.0003, train/unsup_loss: 0.1447, train/total_loss: 0.1449, train/util_ratio: 0.8750, train/run_time: 0.1401, lr: 0.0002, train/prefecth_time: 0.0032 \n",
+ "4250 iteration USE_EMA: True, train/sup_loss: 0.0015, train/unsup_loss: 0.2502, train/total_loss: 0.2517, train/util_ratio: 0.8438, train/run_time: 0.1406, lr: 0.0002, train/prefecth_time: 0.0031 \n",
+ "4300 iteration USE_EMA: True, train/sup_loss: 0.0016, train/unsup_loss: 0.4713, train/total_loss: 0.4729, train/util_ratio: 0.6562, train/run_time: 0.1403, lr: 0.0002, train/prefecth_time: 0.0033 \n",
+ "4350 iteration USE_EMA: True, train/sup_loss: 0.0020, train/unsup_loss: 0.2388, train/total_loss: 0.2408, train/util_ratio: 0.7500, train/run_time: 0.1401, lr: 0.0002, train/prefecth_time: 0.0031 \n",
+ "4400 iteration USE_EMA: True, train/sup_loss: 0.0007, train/unsup_loss: 0.1646, train/total_loss: 0.1653, train/util_ratio: 0.9062, train/run_time: 0.1406, lr: 0.0002, train/prefecth_time: 0.0031 \n",
+ "4450 iteration USE_EMA: True, train/sup_loss: 0.0006, train/unsup_loss: 0.0542, train/total_loss: 0.0549, train/util_ratio: 0.8438, train/run_time: 0.1408, lr: 0.0002, train/prefecth_time: 0.0031 \n",
+ "validating...\n",
+ "confusion matrix:\n",
+ "[[0.967 0.001 0.001 0.001 0. 0. 0.001 0.001 0.019 0.009]\n",
+ " [0. 0.988 0. 0. 0. 0. 0. 0. 0. 0.012]\n",
+ " [0.052 0. 0.761 0.013 0.119 0.021 0.018 0.014 0. 0.002]\n",
+ " [0.005 0.001 0.001 0.881 0.008 0.068 0.025 0.008 0.002 0.001]\n",
+ " [0. 0. 0.001 0.005 0.962 0. 0.008 0.023 0.001 0. ]\n",
+ " [0. 0. 0.001 0.068 0.01 0.886 0.004 0.031 0. 0. ]\n",
+ " [0.003 0. 0.001 0.002 0. 0.001 0.992 0. 0.001 0. ]\n",
+ " [0.007 0. 0.002 0.01 0.127 0.057 0. 0.795 0. 0.002]\n",
+ " [0.014 0.007 0. 0. 0. 0. 0. 0. 0.97 0.009]\n",
+ " [0.005 0.025 0. 0. 0. 0. 0. 0. 0.002 0.968]]\n",
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n",
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "4500 iteration, USE_EMA: True, train/sup_loss: 0.0003, train/unsup_loss: 0.2390, train/total_loss: 0.2393, train/util_ratio: 0.7188, train/run_time: 0.1398, eval/loss: 0.3292, eval/top-1-acc: 0.9170, eval/balanced_acc: 0.9170, eval/precision: 0.9216, eval/recall: 0.9170, eval/F1: 0.9163, lr: 0.0002, train/prefecth_time: 0.0034 BEST_EVAL_ACC: 0.9170, at 4500 iters\n",
+ "4550 iteration USE_EMA: True, train/sup_loss: 0.0047, train/unsup_loss: 0.1983, train/total_loss: 0.2030, train/util_ratio: 0.7812, train/run_time: 0.1402, lr: 0.0002, train/prefecth_time: 0.0034 \n",
+ "4600 iteration USE_EMA: True, train/sup_loss: 0.1438, train/unsup_loss: 0.0164, train/total_loss: 0.1602, train/util_ratio: 0.6250, train/run_time: 0.1408, lr: 0.0002, train/prefecth_time: 0.0034 \n",
+ "4650 iteration USE_EMA: True, train/sup_loss: 0.0061, train/unsup_loss: 0.1227, train/total_loss: 0.1288, train/util_ratio: 0.7188, train/run_time: 0.1407, lr: 0.0001, train/prefecth_time: 0.0033 \n",
+ "4700 iteration USE_EMA: True, train/sup_loss: 0.0008, train/unsup_loss: 0.2121, train/total_loss: 0.2130, train/util_ratio: 0.7188, train/run_time: 0.1403, lr: 0.0001, train/prefecth_time: 0.0033 \n",
+ "4750 iteration USE_EMA: True, train/sup_loss: 0.0004, train/unsup_loss: 0.3475, train/total_loss: 0.3480, train/util_ratio: 0.8125, train/run_time: 0.1406, lr: 0.0001, train/prefecth_time: 0.0031 \n",
+ "4800 iteration USE_EMA: True, train/sup_loss: 0.0002, train/unsup_loss: 0.1207, train/total_loss: 0.1208, train/util_ratio: 0.7812, train/run_time: 0.1405, lr: 0.0001, train/prefecth_time: 0.0034 \n",
+ "4850 iteration USE_EMA: True, train/sup_loss: 0.0026, train/unsup_loss: 0.1368, train/total_loss: 0.1394, train/util_ratio: 0.7812, train/run_time: 0.1402, lr: 0.0001, train/prefecth_time: 0.0032 \n",
+ "4900 iteration USE_EMA: True, train/sup_loss: 0.0019, train/unsup_loss: 0.0960, train/total_loss: 0.0979, train/util_ratio: 0.5938, train/run_time: 0.1401, lr: 0.0001, train/prefecth_time: 0.0031 \n",
+ "4950 iteration USE_EMA: True, train/sup_loss: 0.0007, train/unsup_loss: 0.0922, train/total_loss: 0.0929, train/util_ratio: 0.7500, train/run_time: 0.1403, lr: 0.0001, train/prefecth_time: 0.0032 \n",
+ "validating...\n",
+ "confusion matrix:\n",
+ "[[0.968 0.001 0. 0.001 0. 0. 0.001 0.001 0.019 0.009]\n",
+ " [0. 0.988 0. 0. 0. 0. 0. 0. 0. 0.012]\n",
+ " [0.05 0. 0.774 0.008 0.119 0.02 0.018 0.01 0. 0.001]\n",
+ " [0.004 0.001 0.003 0.874 0.011 0.07 0.026 0.008 0.002 0.001]\n",
+ " [0. 0. 0.001 0.003 0.965 0.001 0.008 0.021 0.001 0. ]\n",
+ " [0. 0. 0.001 0.061 0.01 0.895 0.004 0.029 0. 0. ]\n",
+ " [0.003 0. 0.001 0.001 0.001 0.001 0.992 0. 0.001 0. ]\n",
+ " [0.007 0. 0.002 0.009 0.126 0.058 0. 0.796 0. 0.002]\n",
+ " [0.014 0.007 0. 0. 0. 0. 0. 0. 0.972 0.007]\n",
+ " [0.005 0.023 0. 0. 0. 0. 0. 0. 0.002 0.97 ]]\n",
+ "model saved: ./saved_models/fixmatch/latest_model.pth\n",
+ "model saved: ./saved_models/fixmatch/model_best.pth\n",
+ "5000 iteration, USE_EMA: True, train/sup_loss: 0.0012, train/unsup_loss: 0.1903, train/total_loss: 0.1915, train/util_ratio: 0.7188, train/run_time: 0.1399, eval/loss: 0.3270, eval/top-1-acc: 0.9194, eval/balanced_acc: 0.9194, eval/precision: 0.9241, eval/recall: 0.9194, eval/F1: 0.9188, lr: 0.0001, train/prefecth_time: 0.0028 BEST_EVAL_ACC: 0.9194, at 5000 iters\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
- "/home/haoc/miniconda3/envs/test/lib/python3.8/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
- " _warn_prf(average, modifier, msg_start, len(result))\n",
- "[2022-12-18 16:02:52,476 INFO] confusion matrix\n",
- "[2022-12-18 16:02:52,478 INFO] [[0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]]\n",
- "[2022-12-18 16:02:52,481 INFO] evaluation metric\n",
- "[2022-12-18 16:02:52,483 INFO] acc: 0.1000\n",
- "[2022-12-18 16:02:52,484 INFO] precision: 0.0100\n",
- "[2022-12-18 16:02:52,485 INFO] recall: 0.1000\n",
- "[2022-12-18 16:02:52,486 INFO] f1: 0.0182\n"
+ "[2023-07-19 23:45:48,260 INFO] confusion matrix\n",
+ "[2023-07-19 23:45:48,261 INFO] [[0.969 0.001 0. 0.001 0. 0. 0.001 0.001 0.018 0.009]\n",
+ " [0. 0.987 0. 0. 0. 0. 0. 0. 0. 0.013]\n",
+ " [0.049 0. 0.776 0.007 0.127 0.017 0.016 0.007 0. 0.001]\n",
+ " [0.003 0.001 0.006 0.869 0.013 0.072 0.027 0.006 0.002 0.001]\n",
+ " [0. 0. 0. 0.002 0.974 0.001 0.004 0.018 0.001 0. ]\n",
+ " [0. 0. 0.001 0.045 0.011 0.916 0.003 0.024 0. 0. ]\n",
+ " [0.004 0. 0.001 0.001 0.001 0.001 0.991 0. 0.001 0. ]\n",
+ " [0.006 0. 0.002 0.006 0.127 0.059 0. 0.798 0. 0.002]\n",
+ " [0.014 0.007 0. 0. 0. 0. 0. 0. 0.973 0.006]\n",
+ " [0.005 0.018 0. 0. 0. 0. 0. 0. 0.002 0.975]]\n",
+ "[2023-07-19 23:45:48,264 INFO] evaluation metric\n",
+ "[2023-07-19 23:45:48,264 INFO] acc: 0.9228\n",
+ "[2023-07-19 23:45:48,265 INFO] precision: 0.9283\n",
+ "[2023-07-19 23:45:48,266 INFO] recall: 0.9228\n",
+ "[2023-07-19 23:45:48,266 INFO] f1: 0.9223\n"
]
},
{
@@ -316,8 +584,8 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "[2022-12-18 16:02:53,467 INFO] Best acc 0.1000 at epoch 0\n",
- "[2022-12-18 16:02:53,468 INFO] Training finished.\n"
+ "[2023-07-19 23:45:50,377 INFO] Best acc 0.9228 at epoch 0\n",
+ "[2023-07-19 23:45:50,378 INFO] Training finished.\n"
]
},
{
@@ -331,30 +599,31 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "/home/haoc/miniconda3/envs/test/lib/python3.8/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
- " _warn_prf(average, modifier, msg_start, len(result))\n",
- "[2022-12-18 16:04:06,346 INFO] confusion matrix\n",
- "[2022-12-18 16:04:06,348 INFO] [[0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
- " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]]\n",
- "[2022-12-18 16:04:06,351 INFO] evaluation metric\n",
- "[2022-12-18 16:04:06,352 INFO] acc: 0.1000\n",
- "[2022-12-18 16:04:06,353 INFO] precision: 0.0100\n",
- "[2022-12-18 16:04:06,354 INFO] recall: 0.1000\n",
- "[2022-12-18 16:04:06,354 INFO] f1: 0.0182\n"
+ "[2023-07-19 23:46:52,956 INFO] confusion matrix\n",
+ "[2023-07-19 23:46:52,958 INFO] [[0.969 0.001 0. 0.001 0. 0. 0.001 0.001 0.018 0.009]\n",
+ " [0. 0.987 0. 0. 0. 0. 0. 0. 0. 0.013]\n",
+ " [0.049 0. 0.776 0.007 0.127 0.017 0.016 0.007 0. 0.001]\n",
+ " [0.003 0.001 0.006 0.869 0.013 0.072 0.027 0.006 0.002 0.001]\n",
+ " [0. 0. 0. 0.002 0.974 0.001 0.004 0.018 0.001 0. ]\n",
+ " [0. 0. 0.001 0.045 0.011 0.916 0.003 0.024 0. 0. ]\n",
+ " [0.004 0. 0.001 0.001 0.001 0.001 0.991 0. 0.001 0. ]\n",
+ " [0.006 0. 0.002 0.006 0.127 0.059 0. 0.798 0. 0.002]\n",
+ " [0.014 0.007 0. 0. 0. 0. 0. 0. 0.973 0.006]\n",
+ " [0.005 0.018 0. 0. 0. 0. 0. 0. 0.002 0.975]]\n",
+ "[2023-07-19 23:46:52,961 INFO] evaluation metric\n",
+ "[2023-07-19 23:46:52,961 INFO] acc: 0.9228\n",
+ "[2023-07-19 23:46:52,962 INFO] precision: 0.9283\n",
+ "[2023-07-19 23:46:52,963 INFO] recall: 0.9228\n",
+ "[2023-07-19 23:46:52,963 INFO] f1: 0.9223\n"
]
},
{
"data": {
"text/plain": [
- "{'acc': 0.1, 'precision': 0.01, 'recall': 0.1, 'f1': 0.01818181818181818}"
+ "{'acc': 0.9228,\n",
+ " 'precision': 0.928316578833672,\n",
+ " 'recall': 0.9228,\n",
+ " 'f1': 0.9223419792678316}"
]
},
"execution_count": 6,
@@ -386,7 +655,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.13"
+ "version": "3.9.17"
},
"vscode": {
"interpreter": {
diff --git a/notebooks/Custom_Dataset.ipynb b/notebooks/Custom_Dataset.ipynb
index dd4b470a..7ab467cd 100644
--- a/notebooks/Custom_Dataset.ipynb
+++ b/notebooks/Custom_Dataset.ipynb
@@ -33,7 +33,16 @@
"name": "#%%\n"
}
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/media/Zeus/haoc/miniconda/envs/test_semilearn_031/lib/python3.9/site-packages/tqdm/auto.py:22: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
+ " from .autonotebook import tqdm as notebook_tqdm\n"
+ ]
+ }
+ ],
"source": [
"import numpy as np\n",
"from torchvision import transforms\n",
@@ -55,7 +64,7 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 3,
"metadata": {
"collapsed": false,
"pycharm": {
@@ -63,13 +72,6 @@
}
},
"outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "here 1\n"
- ]
- },
{
"name": "stderr",
"output_type": "stream",
@@ -87,10 +89,10 @@
" 'pretrain_path': 'https://github.com/microsoft/Semi-supervised-learning/releases/download/v.0.0.0/vit_tiny_patch2_32_mlp_im_1k_32.pth',\n",
"\n",
" # optimization configs\n",
- " 'epoch': 5, # set to 100\n",
- " 'num_train_iter': 5000, # set to 102400\n",
- " 'num_eval_iter': 1000, # set to 1024\n",
- " 'num_log_iter': 50, # set to 256\n",
+ " 'epoch': 1, \n",
+ " 'num_train_iter': 1000, \n",
+ " 'num_eval_iter': 500, \n",
+ " 'num_log_iter': 50, \n",
" 'optim': 'AdamW',\n",
" 'lr': 5e-4,\n",
" 'layer_decay': 0.5,\n",
@@ -121,7 +123,7 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 4,
"metadata": {
"collapsed": false,
"pycharm": {
@@ -157,7 +159,7 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 5,
"metadata": {
"collapsed": false,
"pycharm": {
@@ -189,7 +191,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 6,
"metadata": {
"collapsed": false,
"pycharm": {
@@ -212,7 +214,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 7,
"metadata": {
"collapsed": false,
"pycharm": {
@@ -241,7 +243,7 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 8,
"metadata": {
"collapsed": false,
"pycharm": {
@@ -253,204 +255,27 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "Epoch: 0\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/haoc/miniconda3/envs/test/lib/python3.8/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
- " _warn_prf(average, modifier, msg_start, len(result))\n",
- "[2022-12-18 15:24:18,639 INFO] confusion matrix\n",
- "[2022-12-18 15:24:18,641 INFO] [[0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]]\n",
- "[2022-12-18 15:24:18,644 INFO] evaluation metric\n",
- "[2022-12-18 15:24:18,644 INFO] acc: 0.1000\n",
- "[2022-12-18 15:24:18,646 INFO] precision: 0.0100\n",
- "[2022-12-18 15:24:18,647 INFO] recall: 0.1000\n",
- "[2022-12-18 15:24:18,648 INFO] f1: 0.0182\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "model saved: ./saved_models/fixmatch/latest_model.pth\n",
- "model saved: ./saved_models/fixmatch/model_best.pth\n",
- "Epoch: 1\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/haoc/miniconda3/envs/test/lib/python3.8/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
- " _warn_prf(average, modifier, msg_start, len(result))\n",
- "[2022-12-18 15:25:34,196 INFO] confusion matrix\n",
- "[2022-12-18 15:25:34,198 INFO] [[0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]]\n",
- "[2022-12-18 15:25:34,201 INFO] evaluation metric\n",
- "[2022-12-18 15:25:34,203 INFO] acc: 0.1000\n",
- "[2022-12-18 15:25:34,204 INFO] precision: 0.0100\n",
- "[2022-12-18 15:25:34,204 INFO] recall: 0.1000\n",
- "[2022-12-18 15:25:34,205 INFO] f1: 0.0182\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "model saved: ./saved_models/fixmatch/latest_model.pth\n",
- "Epoch: 2\n"
+ "Epoch: 0\n",
+ "50 iteration USE_EMA: True, train/sup_loss: 2.3674, train/unsup_loss: 0.0000, train/total_loss: 2.3674, train/util_ratio: 0.0000, train/run_time: 0.1369, lr: 0.0005, train/prefecth_time: 0.0040 \n",
+ "100 iteration USE_EMA: True, train/sup_loss: 2.3490, train/unsup_loss: 0.0000, train/total_loss: 2.3490, train/util_ratio: 0.0000, train/run_time: 0.1373, lr: 0.0005, train/prefecth_time: 0.0038 \n",
+ "150 iteration USE_EMA: True, train/sup_loss: 2.3455, train/unsup_loss: 0.0000, train/total_loss: 2.3455, train/util_ratio: 0.0000, train/run_time: 0.1377, lr: 0.0005, train/prefecth_time: 0.0037 \n"
]
},
{
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/haoc/miniconda3/envs/test/lib/python3.8/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
- " _warn_prf(average, modifier, msg_start, len(result))\n",
- "[2022-12-18 15:26:49,069 INFO] confusion matrix\n",
- "[2022-12-18 15:26:49,071 INFO] [[0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]]\n",
- "[2022-12-18 15:26:49,073 INFO] evaluation metric\n",
- "[2022-12-18 15:26:49,073 INFO] acc: 0.1000\n",
- "[2022-12-18 15:26:49,075 INFO] precision: 0.0100\n",
- "[2022-12-18 15:26:49,075 INFO] recall: 0.1000\n",
- "[2022-12-18 15:26:49,077 INFO] f1: 0.0182\n"
+ "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[8], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[39m# training and evaluation\u001b[39;00m\n\u001b[1;32m 2\u001b[0m trainer \u001b[39m=\u001b[39m Trainer(config, algorithm)\n\u001b[0;32m----> 3\u001b[0m trainer\u001b[39m.\u001b[39;49mfit(train_lb_loader, train_ulb_loader, eval_loader)\n\u001b[1;32m 4\u001b[0m trainer\u001b[39m.\u001b[39mevaluate(eval_loader)\n",
+ "File \u001b[0;32m/media/Zeus/haoc/Semi-supervised-learning/semilearn/lighting/trainer.py:63\u001b[0m, in \u001b[0;36mTrainer.fit\u001b[0;34m(self, train_lb_loader, train_ulb_loader, eval_loader)\u001b[0m\n\u001b[1;32m 61\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39malgorithm\u001b[39m.\u001b[39mout_dict \u001b[39m=\u001b[39m out_dict\n\u001b[1;32m 62\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39malgorithm\u001b[39m.\u001b[39mlog_dict \u001b[39m=\u001b[39m log_dict\n\u001b[0;32m---> 63\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49malgorithm\u001b[39m.\u001b[39;49mcall_hook(\u001b[39m\"\u001b[39;49m\u001b[39mafter_train_step\u001b[39;49m\u001b[39m\"\u001b[39;49m)\n\u001b[1;32m 65\u001b[0m bar\u001b[39m.\u001b[39msuffix \u001b[39m=\u001b[39m (\u001b[39m\"\u001b[39m\u001b[39mIter: \u001b[39m\u001b[39m{batch:4}\u001b[39;00m\u001b[39m/\u001b[39m\u001b[39m{iter:4}\u001b[39;00m\u001b[39m.\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m.\u001b[39mformat(batch\u001b[39m=\u001b[39m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39malgorithm\u001b[39m.\u001b[39mit, \u001b[39miter\u001b[39m\u001b[39m=\u001b[39m\u001b[39mlen\u001b[39m(train_lb_loader)))\n\u001b[1;32m 66\u001b[0m bar\u001b[39m.\u001b[39mnext()\n",
+ "File \u001b[0;32m/media/Zeus/haoc/Semi-supervised-learning/semilearn/core/algorithmbase.py:490\u001b[0m, in \u001b[0;36mAlgorithmBase.call_hook\u001b[0;34m(self, fn_name, hook_name, *args, **kwargs)\u001b[0m\n\u001b[1;32m 488\u001b[0m \u001b[39mfor\u001b[39;00m hook \u001b[39min\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mhooks_dict\u001b[39m.\u001b[39mvalues():\n\u001b[1;32m 489\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mhasattr\u001b[39m(hook, fn_name):\n\u001b[0;32m--> 490\u001b[0m \u001b[39mgetattr\u001b[39;49m(hook, fn_name)(\u001b[39mself\u001b[39;49m, \u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n",
+ "File \u001b[0;32m/media/Zeus/haoc/Semi-supervised-learning/semilearn/core/hooks/param_update.py:33\u001b[0m, in \u001b[0;36mParamUpdateHook.after_train_step\u001b[0;34m(self, algorithm)\u001b[0m\n\u001b[1;32m 31\u001b[0m algorithm\u001b[39m.\u001b[39mloss_scaler\u001b[39m.\u001b[39mupdate()\n\u001b[1;32m 32\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m---> 33\u001b[0m loss\u001b[39m.\u001b[39;49mbackward()\n\u001b[1;32m 34\u001b[0m \u001b[39mif\u001b[39;00m (algorithm\u001b[39m.\u001b[39mclip_grad \u001b[39m>\u001b[39m \u001b[39m0\u001b[39m):\n\u001b[1;32m 35\u001b[0m torch\u001b[39m.\u001b[39mnn\u001b[39m.\u001b[39mutils\u001b[39m.\u001b[39mclip_grad_norm_(algorithm\u001b[39m.\u001b[39mmodel\u001b[39m.\u001b[39mparameters(), algorithm\u001b[39m.\u001b[39mclip_grad)\n",
+ "File \u001b[0;32m/media/Zeus/haoc/miniconda/envs/test_semilearn_031/lib/python3.9/site-packages/torch/_tensor.py:487\u001b[0m, in \u001b[0;36mTensor.backward\u001b[0;34m(self, gradient, retain_graph, create_graph, inputs)\u001b[0m\n\u001b[1;32m 477\u001b[0m \u001b[39mif\u001b[39;00m has_torch_function_unary(\u001b[39mself\u001b[39m):\n\u001b[1;32m 478\u001b[0m \u001b[39mreturn\u001b[39;00m handle_torch_function(\n\u001b[1;32m 479\u001b[0m Tensor\u001b[39m.\u001b[39mbackward,\n\u001b[1;32m 480\u001b[0m (\u001b[39mself\u001b[39m,),\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 485\u001b[0m inputs\u001b[39m=\u001b[39minputs,\n\u001b[1;32m 486\u001b[0m )\n\u001b[0;32m--> 487\u001b[0m torch\u001b[39m.\u001b[39;49mautograd\u001b[39m.\u001b[39;49mbackward(\n\u001b[1;32m 488\u001b[0m \u001b[39mself\u001b[39;49m, gradient, retain_graph, create_graph, inputs\u001b[39m=\u001b[39;49minputs\n\u001b[1;32m 489\u001b[0m )\n",
+ "File \u001b[0;32m/media/Zeus/haoc/miniconda/envs/test_semilearn_031/lib/python3.9/site-packages/torch/autograd/__init__.py:200\u001b[0m, in \u001b[0;36mbackward\u001b[0;34m(tensors, grad_tensors, retain_graph, create_graph, grad_variables, inputs)\u001b[0m\n\u001b[1;32m 195\u001b[0m retain_graph \u001b[39m=\u001b[39m create_graph\n\u001b[1;32m 197\u001b[0m \u001b[39m# The reason we repeat same the comment below is that\u001b[39;00m\n\u001b[1;32m 198\u001b[0m \u001b[39m# some Python versions print out the first line of a multi-line function\u001b[39;00m\n\u001b[1;32m 199\u001b[0m \u001b[39m# calls in the traceback and some print out the last line\u001b[39;00m\n\u001b[0;32m--> 200\u001b[0m Variable\u001b[39m.\u001b[39;49m_execution_engine\u001b[39m.\u001b[39;49mrun_backward( \u001b[39m# Calls into the C++ engine to run the backward pass\u001b[39;49;00m\n\u001b[1;32m 201\u001b[0m tensors, grad_tensors_, retain_graph, create_graph, inputs,\n\u001b[1;32m 202\u001b[0m allow_unreachable\u001b[39m=\u001b[39;49m\u001b[39mTrue\u001b[39;49;00m, accumulate_grad\u001b[39m=\u001b[39;49m\u001b[39mTrue\u001b[39;49;00m)\n",
+ "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "model saved: ./saved_models/fixmatch/latest_model.pth\n",
- "Epoch: 3\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/haoc/miniconda3/envs/test/lib/python3.8/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
- " _warn_prf(average, modifier, msg_start, len(result))\n",
- "[2022-12-18 15:28:04,448 INFO] confusion matrix\n",
- "[2022-12-18 15:28:04,450 INFO] [[0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]]\n",
- "[2022-12-18 15:28:04,453 INFO] evaluation metric\n",
- "[2022-12-18 15:28:04,454 INFO] acc: 0.1000\n",
- "[2022-12-18 15:28:04,455 INFO] precision: 0.0100\n",
- "[2022-12-18 15:28:04,456 INFO] recall: 0.1000\n",
- "[2022-12-18 15:28:04,457 INFO] f1: 0.0182\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "model saved: ./saved_models/fixmatch/latest_model.pth\n",
- "Epoch: 4\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/haoc/miniconda3/envs/test/lib/python3.8/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
- " _warn_prf(average, modifier, msg_start, len(result))\n",
- "[2022-12-18 15:29:19,589 INFO] confusion matrix\n",
- "[2022-12-18 15:29:19,591 INFO] [[0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]]\n",
- "[2022-12-18 15:29:19,594 INFO] evaluation metric\n",
- "[2022-12-18 15:29:19,595 INFO] acc: 0.1000\n",
- "[2022-12-18 15:29:19,597 INFO] precision: 0.0100\n",
- "[2022-12-18 15:29:19,598 INFO] recall: 0.1000\n",
- "[2022-12-18 15:29:19,599 INFO] f1: 0.0182\n",
- "[2022-12-18 15:29:20,143 INFO] Best acc 0.1000 at epoch 0\n",
- "[2022-12-18 15:29:20,145 INFO] Training finished.\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "model saved: ./saved_models/fixmatch/latest_model.pth\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/haoc/miniconda3/envs/test/lib/python3.8/site-packages/sklearn/metrics/_classification.py:1318: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
- " _warn_prf(average, modifier, msg_start, len(result))\n",
- "[2022-12-18 15:29:35,164 INFO] confusion matrix\n",
- "[2022-12-18 15:29:35,166 INFO] [[0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
- " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]]\n",
- "[2022-12-18 15:29:35,169 INFO] evaluation metric\n",
- "[2022-12-18 15:29:35,170 INFO] acc: 0.1000\n",
- "[2022-12-18 15:29:35,171 INFO] precision: 0.0100\n",
- "[2022-12-18 15:29:35,172 INFO] recall: 0.1000\n",
- "[2022-12-18 15:29:35,173 INFO] f1: 0.0182\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "{'acc': 0.1, 'precision': 0.01, 'recall': 0.1, 'f1': 0.01818181818181818}"
- ]
- },
- "execution_count": 7,
- "metadata": {},
- "output_type": "execute_result"
}
],
"source": [
@@ -477,7 +302,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.13 (default, Mar 28 2022, 11:38:47) \n[GCC 7.5.0]"
+ "version": "3.9.17"
},
"vscode": {
"interpreter": {
diff --git a/requirements.txt b/requirements.txt
index f17d670a..9b5701c7 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -16,9 +16,6 @@ joblib==1.2.0
kiwisolver==1.4.3
Markdown==3.3.7
matplotlib==3.5.2
-mkl-fft>=1.3.0
-mkl-random==1.2.2
-mkl-service==2.4.0
networkx==2.6.3
numpy
oauthlib==3.2.1
diff --git a/semilearn/algorithms/meanteacher/meanteacher.py b/semilearn/algorithms/meanteacher/meanteacher.py
index f776a843..9fd51530 100644
--- a/semilearn/algorithms/meanteacher/meanteacher.py
+++ b/semilearn/algorithms/meanteacher/meanteacher.py
@@ -52,8 +52,8 @@ def train_step(self, x_lb, y_lb, x_ulb_w, x_ulb_s):
self.bn_controller.freeze_bn(self.model)
outs_x_ulb_s = self.model(x_ulb_s)
- logits_x_ulb_s = outs_x_ulb_w['logits']
- feats_x_ulb_s = outs_x_ulb_w['feat']
+ logits_x_ulb_s = outs_x_ulb_s['logits']
+ feats_x_ulb_s = outs_x_ulb_s['feat']
self.bn_controller.unfreeze_bn(self.model)
feat_dict = {'x_lb':feats_x_lb, 'x_ulb_w':feats_x_ulb_w, 'x_ulb_s':feats_x_ulb_s}
diff --git a/semilearn/datasets/utils.py b/semilearn/datasets/utils.py
index 42bc9404..aa780951 100644
--- a/semilearn/datasets/utils.py
+++ b/semilearn/datasets/utils.py
@@ -52,10 +52,6 @@ def split_ssl_data(args, data, targets, num_classes,
return data[lb_idx], targets[lb_idx], data[ulb_idx], targets[ulb_idx]
-def sample_labeled_data():
- pass
-
-
def sample_labeled_unlabeled_data(args, data, target, num_classes,
lb_num_labels, ulb_num_labels=None,
lb_imbalance_ratio=1.0, ulb_imbalance_ratio=1.0,
@@ -88,7 +84,7 @@ def sample_labeled_unlabeled_data(args, data, target, num_classes,
if ulb_imbalance_ratio == 1.0:
# balanced setting
if ulb_num_labels is None or ulb_num_labels == 'None':
- pass # ulb_samples_per_class = [int(len(data) / num_classes) - lb_samples_per_class[c] for c in range(num_classes)] # [int(len(data) / num_classes) - int(lb_num_labels / num_classes)] * num_classes
+ ulb_samples_per_class = None
else:
assert ulb_num_labels % num_classes == 0, "ulb_num_labels must be dividable by num_classes in balanced setting"
ulb_samples_per_class = [int(ulb_num_labels / num_classes)] * num_classes
@@ -104,7 +100,7 @@ def sample_labeled_unlabeled_data(args, data, target, num_classes,
idx = np.where(target == c)[0]
np.random.shuffle(idx)
lb_idx.extend(idx[:lb_samples_per_class[c]])
- if ulb_num_labels is None or ulb_num_labels == 'None':
+ if ulb_samples_per_class is None:
ulb_idx.extend(idx[lb_samples_per_class[c]:])
else:
ulb_idx.extend(idx[lb_samples_per_class[c]:lb_samples_per_class[c]+ulb_samples_per_class[c]])
diff --git a/semilearn/imb_algorithms/debiaspl/debiaspl.py b/semilearn/imb_algorithms/debiaspl/debiaspl.py
index 488afc1d..429ac2af 100644
--- a/semilearn/imb_algorithms/debiaspl/debiaspl.py
+++ b/semilearn/imb_algorithms/debiaspl/debiaspl.py
@@ -49,7 +49,7 @@ def set_hooks(self):
def compute_prob(self, logits):
# update p_hat
probs = super().compute_prob(logits)
- delta_p = probs.mean()
+ delta_p = probs.mean(dim=0)
self.p_hat = self.ema_m * self.p_hat + (1 - self.ema_p) * delta_p
return super().compute_prob(logits - self.tau * torch.log(self.p_hat))
diff --git a/semilearn/lighting/config.py b/semilearn/lighting/config.py
index 6a10c5a4..a52db226 100644
--- a/semilearn/lighting/config.py
+++ b/semilearn/lighting/config.py
@@ -69,7 +69,7 @@ def get_config(config):
## core algorithm setting
parser.add_argument('-alg', '--algorithm', type=str, default='fixmatch', help='ssl algorithm')
parser.add_argument('--use_cat', type=str2bool, default=True, help='use cat operation in algorithms')
- parser.add_argument('--use_amp', type=str2bool, default=False, help='use mixed precision training or not')
+ parser.add_argument('--amp', type=str2bool, default=False, help='use mixed precision training or not')
parser.add_argument('--clip_grad', type=float, default=0)
## imbalance algorithm setting
diff --git a/semilearn/lighting/trainer.py b/semilearn/lighting/trainer.py
index 8567c845..780418aa 100644
--- a/semilearn/lighting/trainer.py
+++ b/semilearn/lighting/trainer.py
@@ -28,16 +28,17 @@ def __init__(self, config, algorithm, verbose=0):
def fit(self, train_lb_loader, train_ulb_loader, eval_loader):
+ self.algorithm.loader_dict = {
+ 'trian_lb': train_lb_loader,
+ 'train_ulb': train_ulb_loader,
+ 'eval': eval_loader
+ }
self.algorithm.model.train()
-
- # EMA Init
- self.algorithm.ema = EMA(self.algorithm.model, self.algorithm.ema_m)
- self.algorithm.ema.register()
-
# train
self.algorithm.it = 0
self.algorithm.best_eval_acc = 0.0
self.algorithm.best_epoch = 0
+ self.algorithm.call_hook("before_run")
for epoch in range(self.config.epoch):
self.algorithm.epoch = epoch
@@ -48,19 +49,26 @@ def fit(self, train_lb_loader, train_ulb_loader, eval_loader):
bar = Bar('Processing', max=len(train_lb_loader))
self.algorithm.model.train()
+ self.algorithm.call_hook("before_train_epoch")
for data_lb, data_ulb in zip(train_lb_loader, train_ulb_loader):
if self.algorithm.it > self.config.num_train_iter:
break
- result = self.algorithm.train_step(**self.algorithm.process_batch(**data_lb, **data_ulb))
-
+ self.algorithm.call_hook("before_train_step")
+ out_dict, log_dict = self.algorithm.train_step(**self.algorithm.process_batch(**data_lb, **data_ulb))
+ self.algorithm.out_dict = out_dict
+ self.algorithm.log_dict = log_dict
+ self.algorithm.call_hook("after_train_step")
+
bar.suffix = ("Iter: {batch:4}/{iter:4}.".format(batch=self.algorithm.it, iter=len(train_lb_loader)))
bar.next()
self.algorithm.it += 1
bar.finish()
+ self.algorithm.call_hook("after_train_epoch")
+
# validate
result = self.evaluate(eval_loader)
diff --git a/setup.py b/setup.py
index 00906b53..fe4904c1 100644
--- a/setup.py
+++ b/setup.py
@@ -26,7 +26,7 @@
setup(
name='semilearn',
- version='0.3.0',
+ version='0.3.1',
description='Unfied Semi-Supervised Learning Benchmark',
long_description=long_description,
long_description_content_type='text/markdown',
@@ -41,5 +41,5 @@
include_package_data=True,
# install_requires=['torch >= 1.8', 'torchvision', 'torchaudio', 'transformers', 'timm', 'progress', 'ruamel.yaml', 'scikit-image', 'scikit-learn', 'tensorflow', ''],
install_requires=install_requires,
- python_requires='>=3.8',
+ python_requires='>=3.9',
)