[LAB 02 · 参数迁移:冻结、局部与全量微调](/course/notebooks/4bd450d54870432db91c80a4df563b8e.html) # 准备:本实验的固定材料 · 实现代码 [独立阅读](/course/notebook-blocks/97d6413de80249e1986f2ac8fa35a0db.html) 按问题继续 同源参数的冻结/局部/全量/scratch与BN模式辨析 展开完整实现代码 ``` source_state=torch.load(io.BytesIO(asset_bytes['cnn-plain-state.pt']),map_location='cpu',weights_only=True) def make_cnn(): return nn.Sequential(OrderedDict([ ('conv1',nn.Conv2d(1,8,3,padding=1)),('relu1',nn.ReLU()),('pool1',nn.MaxPool2d(2)), ('conv2',nn.Conv2d(8,16,3,padding=1)),('relu2',nn.ReLU()),('pool2',nn.MaxPool2d(2)), ('flatten',nn.Flatten()),('hidden',nn.Linear(784,32)),('relu3',nn.ReLU()),('logits',nn.Linear(32,10))])) source_model=make_cnn();source_model.load_state_dict(source_state);source_model.eval() assert sum(p.numel() for p in source_model.parameters())==26698 print('已读取独立包内的 26698 参数 CNN;PyTorch',torch.__version__) print('当前模型 SHA-256:',model_sha256) ```