Files
ModelTrainEval/configs/cluster/film_simclr_resnet101.yaml
T
Shaun ZhouandClaude Opus 5 6e543660ce 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>
2026-09-07 20:51:16 +08:00

41 lines
1.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 用 resnet101 做域内自监督(SimCLR)再聚类。
#
# 与 film_simclr_resnet18/50 的区别只有骨架和 batch_size,其余超参保持一致,
# 方便横向对比三个骨架。
#
# 用法:
# uv run python scripts/cluster_unlabeled.py --config configs/cluster/film_simclr_resnet101.yaml \
# --work-dir runs/simclr_r101 --set simclr.epochs=40
_base_:
- ./film.yaml
method: simclr
num_clusters: 5
simclr:
backbone:
# _replace_ 必须保留:不加的话 base 里 tiny_conv 的 widths/depths/block 会残留,
# 传给 TorchvisionBackbone 直接报错。见 utils/config.py::deep_merge
_replace_: true
name: torchvision
arch: resnet101
pretrained: true # 首次使用会下载 ImageNet 权重(约 171 MB);改 false 则随机初始化
in_channels: 3
# torchvision 的 features 是 nn.Sequential,可以取中间层(4~7 = layer1~4)。
# 沿用 resnet18 上的实测结论:layer2+3 明显优于 layer4,缺陷差异主要在纹理层面。
# resnet101 的 layer2+3 是 512+1024=1536 维,与 resnet50 相同(都是 Bottleneck 结构),
# 差别在深度:resnet101 的 layer3 有 23 个 block,resnet50 只有 6 个。
feature_stages: [5, 6]
# 三个骨架的规模对比:resnet18 11.2M / resnet50 23.5M / resnet101 42.5M。
# batch_size 取 128 是保守值——Apple MPS 上实测 resnet50 在 batch 1024 就 OOM(要 18.7 GiB),
# resnet101 约重 1.8 倍,故再降一档。
# 注意上面的数字来自 MPS;在 16 GB 独显(如 RTX 4080 SUPER)上可以往上调,
# NT-Xent 的负样本越多下界越紧,显存够就尽量开大。
batch_size: 128
epochs: 2500
optimizer: {name: adamw, lr: 0.0001, weight_decay: 0.00001}