[最高0.9853! @zzc1995,分数持续更新中] 动手玩Kaggle比赛------使用Gluon对原始图像文件分类(CIFAR-10) 讨论区


#518

我放在根目录下面 还是不行


#519

是解压出现问题?


#520

用教程里的resnet18在GTX1050上跑,调整data augmentation,


论坛里resnet18有调出过大于0.95的score么?


#523

问各位大佬一个Resnet164的问题,我加了一下那个层数,

            # block 1
            net.add(nn.Conv2D(channels=64, kernel_size=3, strides=1, padding=1,use_bias=False))

            # block 2
            for _ in range(27):
                net.add(Residual_V2_bottleneck(channels=64))
            # block 3
            net.add(Residual_V2_bottleneck(channels=128, same_shape=False))
            for _ in range(26):
                net.add(Residual_V2_bottleneck(channels=128))
            # block 4
            net.add(Residual_V2_bottleneck(channels=256, same_shape=False))
            for _ in range(26):
                net.add(Residual_V2_bottleneck(channels=256))
            # block 5
            net.add(nn.BatchNorm())
            net.add(nn.Activation(activation='relu'))
            net.add(nn.AvgPool2D(pool_size=8))
            net.add(nn.Flatten())
            net.add(nn.Dense(num_classes))

大概总的卷积层加池化层数是1 + 3 * 27 + 4+3 * 26 + 4+3 * 26 + 1 = 247,反正比164大很多,为什么这个叫164呢?


#524

求问Densnet该如何使用?我按照教程照抄使用了densenet201,但运行出错
pretrained_net = models.densenet201(pretrained=True)
prenet = models.densenet201(classes = 10)
prenet.initialize(init=init.Xavier())
train(prenet, train_data, valid_data, num_epochs, learning_rate, weight_decay, ctx, lr_period, lr_decay)


@mli


#525

环境:GTX 1060 6g,i7-8700, 16g, ubuntu 16.04
简单的把epoch设为200, kaggle得分0.93070, 使用gluon自带的resnet152_v2模型,参数和前面的一样,kaggle得分0.86970


最让我感觉奇怪的一点是,同样的参数,jupyter notebook上官方提供的resnet 18每次epoch只需要41s,而pycharm上需要6分钟,不知道哪里出了问题,都是用的GPU,已经验证过了,代码基本没变。并且考虑到整理图片那个函数在pycharm对运行时间造成影响,整理过一次之后就在pycharm上注释了
不知哪位大佬可以解释下


#526

为什么还要对训练数据做分类,明明后面不是还要随机打乱的吗,为什么还要把训练数据一个文件夹一个文件夹的分类好,后面读取打乱(shuffle)不是工作就白做了吗,这是为什么呢?


#527

这里的shuffle指的是把数据样本(特征+标签)按随机顺序读取
文件夹分类好是为了得到vision.ImageFolderDataset需要的输入格式


#528

好的,多谢!


#529

lr每十轮降一次,降得太快,最后陷入局部最优了。


#530

看到一个gluon的实现可以达到0.97550,貌似就是我们论坛里面的某位大神,用的SENet的增强版。。
Github Link : https://github.com/scut-aitcm/CompetitiveSENet


#531

resnet的层数应该只计算主干的卷积和FC的层数,如入resnet18的part中是残差块是[2, 2, 2, 2]每个残差块有两个(resnet18使用的是BasicBlock不是Bottleneck)conv,所以卷积个数是(2+2+2+2)*2=16,加上开头的一个卷积和结尾的一个fc,是18.这个Resnet164是当时小伙伴随手写的,不再论文里,我觉着应该是算错了,应该是(27+27+27)*3+2=245,小伙伴应该是把bottleneck当作basicblock算了(27+27+27)*2+2=164


#532

沐神给的应该没有人调上95,准确来说教程给的不是resnet18,而是通道数减半的resnet20,如果把通道数加倍,使用小的batch(32)同时延迟降采样可以到95+

class MyResNet18_522_c64(nn.HybridBlock):
    def __init__(self, num_classes, verbose=False, **kwargs):
        super(MyResNet18_522_c64, self).__init__(**kwargs)
        self.verbose = verbose
        with self.name_scope():
            net = self.net = nn.HybridSequential()
            # block 1
            net.add(nn.Conv2D(channels=64, kernel_size=3, strides=1, padding=1),
                   nn.BatchNorm(),
                   nn.Activation(activation='relu'))
            # block 2
            for _ in range(5):
                net.add(Residual(channels=64))
            # block 3
            net.add(Residual(channels=128, same_shape=False))
            for _ in range(1):
                net.add(Residual(channels=128))
            # block 4
            net.add(Residual(channels=256, same_shape=False))
            for _ in range(1):
                net.add(Residual(channels=256))
            # block 5
            net.add(nn.AvgPool2D(pool_size=8))
            net.add(nn.Flatten())
            net.add(nn.Dense(num_classes))
    
    def hybrid_forward(self, F, x):
        out = x
        for i, b in enumerate(self.net):
            out = b(out)
            if self.verbose:
                print 'Block %d output %s' % (i+1, out.shape)
        return out

#533


100 epochs,0.91540
没有调参,过程就不放了,说一下观察:
30轮过后,train acc 0.87,valid acc 0.76—0.83上下波动,所以这时候就应该调整学习率。
80轮调整学习率到原来的0.1,效果有明显提升,valid acc跳到0.9,但几个epochs之后就没效果了,而且train acc已经到了0.99,这明显是过拟合了。


#535


深夜挖坟-_-
好像这人多,项目求波赞:

大家晚安:wink:


#536

恭喜恭喜!又刷高了
要不要考虑把你的代码开源,然后分享个链接供小伙伴们学习学习?


#537

等FP16问题解决了吧,根据论文结果FP16结果可能更高。


#538


应该就这样了
食用方法:
pip install gluon-cv --pre

from gluoncv.model_zoo.residual_attentionnet import *

这个结果是attention452得到的,不过需要一块至少12G显存的卡,跑大概4天吧.
建议使用attention92, 8G的卡BS能跑到128,一晚上就能跑完.结果参考上一个提交.


#539

恭喜,又提高了!


#540

调参使用了mixup, LR warmup, No bias decay和ensemble.
参考paper:https://arxiv.org/pdf/1812.01187.pdf