【李宏毅2021机器学习深度学习——作业3 CNN】Food Image Classfication 记录(双过 strong baseline)

文章目录

  • 写在前面
  • 做完这个实验应该有的收获:
  • 先上实验结果(直接使用pytorch内置的模型resnet18(pretrain=False),双过 strong baseline,过线一点点,学习用就行了)
  • 一些改进想法:
  • 一些 参考 及 链接:

写在前面

新手入门,相互学习,期待大佬有更好的想法。

作业3链接

做完这个实验应该有的收获:

【李宏毅2021机器学习深度学习——作业3 CNN】Food Image Classfication 记录(双过 strong baseline)_第1张图片

  1. 使用CNN进行图片分类
  2. 学习到 data augmentations(有22种之多,但并不是每种都有用,看情况)
  3. 使用半监督学习(主要)(用上大量 unlabeled data辅助训练)
  4. 训练经验:
    • 本地训练,从kaggle下载数据会快kaggle competitions download -c ml2021spring-hw3 (需要配置kaggle.json文件到.kaggle文件夹下)

    • 加了num_workers=8, pin_memory=True会快得飞起,用多线程去加载数据会快,num_workers默认是0, pin_memory默认是false,很慢… 在DataLoader中 test_loader = DataLoader(test_set, batch_size=batch_size, shuffle=False, num_workers=8, pin_memory=True)

    • 自定义Datasetconcat_dataset = ConcatDataset([train_set, pseudo_set]),ConcatDataset将多个Dataset拼接起来
      【李宏毅2021机器学习深度学习——作业3 CNN】Food Image Classfication 记录(双过 strong baseline)_第2张图片

    • 可视化训练结果,将每一个epoch的数据存储在列表中,列表不要重复覆盖不然就没之前的数据了。(至少200个epoch起,刚开始调了20 什么也看不出来,总共训练了有600个epoch了)

    • data_loader = DataLoader(dataset, batch_size=256, shuffle=False, num_workers=8, pin_memory=True) #num_workers=8, pin_memory=True , batch_size=256 设置为256,只推断可以设置大一点

    • 对半监督 取数据代码的理解:对于indices只有masks[i]=true的才会被选取
      【李宏毅2021机器学习深度学习——作业3 CNN】Food Image Classfication 记录(双过 strong baseline)_第3张图片
      【李宏毅2021机器学习深度学习——作业3 CNN】Food Image Classfication 记录(双过 strong baseline)_第4张图片

    • 可视化 代码
      【李宏毅2021机器学习深度学习——作业3 CNN】Food Image Classfication 记录(双过 strong baseline)_第5张图片【李宏毅2021机器学习深度学习——作业3 CNN】Food Image Classfication 记录(双过 strong baseline)_第6张图片
      【李宏毅2021机器学习深度学习——作业3 CNN】Food Image Classfication 记录(双过 strong baseline)_第7张图片

先上实验结果(直接使用pytorch内置的模型resnet18(pretrain=False),双过 strong baseline,过线一点点,学习用就行了)

【李宏毅2021机器学习深度学习——作业3 CNN】Food Image Classfication 记录(双过 strong baseline)_第8张图片
可视化 训练过程,中间有抖动是因为手动停了训练调了一下参数,比如在训练后期:可以把学习率调小,半监督的阈值放宽。
后面学习到schedulertensorboard可以自动调整学习率吧,等待学习中…
【李宏毅2021机器学习深度学习——作业3 CNN】Food Image Classfication 记录(双过 strong baseline)_第9张图片

【李宏毅2021机器学习深度学习——作业3 CNN】Food Image Classfication 记录(双过 strong baseline)_第10张图片
阈值调到0.65 使用到的数据
【李宏毅2021机器学习深度学习——作业3 CNN】Food Image Classfication 记录(双过 strong baseline)_第11张图片
使用resnet18_pretrain的结果,只训练10个epoch看看效果(当然这是禁止的!)
【李宏毅2021机器学习深度学习——作业3 CNN】Food Image Classfication 记录(双过 strong baseline)_第12张图片

一些改进想法:

  1. 集成学习ensemble?

各种集成,集成方式?
第1个ensemble 集成了前3个模型(majority vote方式?),第2个ensemble 集成了后3个模型(average方式),第3个ensemble 集成了后3个模型(majority vote方式),第4个ensemble 集成了前3个ensemble模型(majority vote方式)
【李宏毅2021机器学习深度学习——作业3 CNN】Food Image Classfication 记录(双过 strong baseline)_第13张图片

  1. 数据增强不同方式?

一些 参考 及 链接:

作业 及 样例代码(sample code 抄这里)

大佬代码参考(数据增强和半监督代码 抄这里)

参考2–目前只有1-3作业?(可视化代码抄这里)

其它不错的up主讲解

学习到的经验:

  1. 加快数据读取:prefetch_generator (自己没用上这个,直接num_workers = 8,开多个线程加载数据)
  2. 数据增强:transforms.AutoAugment(), transforms.TrivialAugmentWide()
  3. lr调整:lr_scheduler
  4. 半监督valid_acc > 0.6并且每过10个epoch才用,每一轮差别不是很大
    【李宏毅2021机器学习深度学习——作业3 CNN】Food Image Classfication 记录(双过 strong baseline)_第14张图片

图像分类训练技巧之数据增强方法总结
图像分类训练技巧之数据增强篇 – 和上面一样,带目录知乎

深度学习数据增广技术一览

ResNet王者归来:ImageNet上刷新到80.7【一些大神的训练经验和技巧】

你可能感兴趣的:(【李宏毅ml2021作业】,深度学习,机器学习,cnn)