feat(configs): 新增 resnet101 的自监督聚类配置

resnet101 此前不在 TorchvisionBackbone 的支持列表里,先补进 _SUPPORTED
(out_channels 2048),随后被既有的参数化测试自动覆盖:能前向、声明维度与实际一致。

configs/cluster/film_simclr_resnet101.yaml 仿照 resnet18/50 两份,只改骨架与
batch_size,其余超参一致以便横向对比:
- 42.5M 参数(resnet18 11.2M / resnet50 23.5M),layer2+3 仍是 1536 维,
  与 resnet50 相同,差别在深度(layer3 有 23 个 block 而非 6 个)
- batch_size 取 128:MPS 上 resnet50 在 1024 已 OOM,resnet101 约重 1.8 倍故再降一档;
  注释里说明该数字来自 MPS,16 GB 独显上可往上调
- pretrained 首次使用会下载约 171 MB 权重

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Shaun Zhou
2026-09-07 20:51:16 +08:00
co-authored by Claude Opus 5
parent c9e7e4104c
commit 6e543660ce
3 changed files with 48 additions and 2 deletions
+7 -2
View File
@@ -470,7 +470,7 @@ view_transforms: # 生成两个视图的随机增强
#### 换一个骨架
**仓库自带 resnet18 / resnet50 的现成配置**,直接用:
**仓库自带 resnet18 / resnet50 / resnet101 的现成配置**,直接用:
```bash
uv run python scripts/cluster_unlabeled.py --config configs/cluster/film_simclr_resnet18.yaml \
@@ -478,6 +478,9 @@ uv run python scripts/cluster_unlabeled.py --config configs/cluster/film_simclr_
uv run python scripts/cluster_unlabeled.py --config configs/cluster/film_simclr_resnet50.yaml \
--work-dir runs/simclr_r50 --set simclr.epochs=40
uv run python scripts/cluster_unlabeled.py --config configs/cluster/film_simclr_resnet101.yaml \
--work-dir runs/simclr_r101 --set simclr.epochs=40
```
两者在 Apple MPS 上的实测开销(14,579 张,128×128 双视图):
@@ -486,6 +489,7 @@ uv run python scripts/cluster_unlabeled.py --config configs/cluster/film_simclr_
| --- | --- | --- | --- | --- |
| resnet18 | 11.2M | 384 | 约 93 秒 | 1024 可用 |
| resnet50 | 23.5M | 1536 | 约 155 秒 | **1024 会 OOM**(需 18.7 GiB),配置里用 256 |
| resnet101 | 42.5M | 1536 | 未实测 | 配置里用 128(按规模比例保守取值) |
resnet50 每 epoch 的耗时与 batch 基本无关(算力受限),所以显存不够时往下调 batch 不花额外时间,
只是 NT-Xent 的负样本变少。
@@ -508,7 +512,8 @@ resnet18 参数量是 tiny_conv 的 37 倍(11.2M vs 0.3M),1 个 epoch 远
| --- | --- | --- | --- |
| `tiny_conv` | — | 256(可调) | 自研深度可分离卷积,默认,最轻 |
| `torchvision` | `resnet18` / `resnet34` | 512 | 通用基线 |
| `torchvision` | `resnet50` | 2048 | 最强也最重,MPS 上注意 batch |
| `torchvision` | `resnet50` | 2048 | 更强也更重,MPS 上注意 batch |
| `torchvision` | `resnet101` | 2048 | 最深,首次使用会下载约 171 MB 权重 |
| `torchvision` | `mobilenet_v3_small` / `_large` | 576 / 960 | 面向实时部署 |
| `torchvision` | `shufflenet_v2_x1_0` | 1024 | 同上 |