NTU ML2023Spring Part3.3 CNN

License: CC BY-NC-SA 4.0

卷,就硬卷.jpg

Google Colab 的免费 GPU 达到限额了,Kaggle 又没有 GPU 可用[1],只好用旧手机(刷上 postmarketOS)炼丹。Money is all you need,氪不了但是可以挂机。

由于炼丹炉(旧手机)比较破,所以在训的时间删掉了 cnn 层里的 BatchNorm 和 ReLU,并改小了一些参数。事实证明和效果和硬跑差不多。

class Classifier(nn.Module):
    def __init__(self):
        super(Classifier, self).__init__()
        # torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride, padding)
        # torch.nn.MaxPool2d(kernel_size, stride, padding)
        # input 維度 [3, 128, 128]
        self.cnn = nn.Sequential(
            nn.BatchNorm2d(3),
            nn.Conv2d(3, 64, 3, 1, 1),  # [64, 128, 128]
#            nn.BatchNorm2d(64),
#            nn.ReLU(),
            nn.MaxPool2d(2, 2, 0),      # [64, 64, 64]

            nn.Conv2d(64, 128, 3, 1, 1), # [128, 64, 64]
#            nn.BatchNorm2d(128),
#            nn.ReLU(),
            nn.MaxPool2d(2, 2, 0),      # [128, 32, 32]

            nn.Conv2d(128, 256, 3, 1, 1), # [256, 32, 32]
#            nn.BatchNorm2d(256),
#            nn.ReLU(),
            nn.MaxPool2d(2, 2, 0),      # [256, 16, 16]

            nn.Conv2d(256, 256, 3, 1, 1), # [512, 16, 16]
#            nn.BatchNorm2d(512),
#            nn.ReLU(),
            nn.MaxPool2d(2, 2, 0),       # [512, 8, 8]
            
            nn.Conv2d(256, 256, 3, 1, 1), # [512, 8, 8]
#            nn.BatchNorm2d(512),
#            nn.ReLU(),
            nn.MaxPool2d(2, 2, 0),       # [512, 4, 4]
        )
        self.fc = nn.Sequential(
            nn.Dropout(p=0.1),
            nn.Linear(256*4*4, 512),
            nn.ReLU(),
            nn.Linear(512, 256),
            nn.ReLU(),
            nn.Linear(256, 11)
        )

    def forward(self, x):
        out = self.cnn(x)
        out = out.view(out.size()[0], -1)
        return self.fc(out)

最后发现卷积这部分根本不用改,全连接层里加点 dropout 也能训。但是交上去之后只有 0.6 的成绩,连 simple baseline 都达不到。鉴定为菜。


  1. 2025.1.28 update:其实是有的,见下一篇(hw4). ↩︎

posted @   383494  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
点击右上角即可分享
微信分享提示