Java后端
·2022-02-22#人工智能# #经验# #技术# #资源#
深度学习(DL)其实挺烧钱的,我研一和ML一起修的,当时一个assignment1是手写一个多层神经网络,assignment2是参加kaggle比赛。首先给我最大的感触是,国内不好学这门技术,因为训练神经网络需要GPU加速,而像Pytorch,虽然支持GPU加速,但是得有Nvdia的显卡,还得去安装cuda之类的,以及各种依赖包,搭建环境就很困难。好在国外Google有一个Colab,他是基于Jupyter的网站,但是里边内置DL的各种包,只需要import就可以了,所以说,有条件翻墙的可以免费使用。我把课程中概念性的知识点总结在了附件里,当时为期末考试准备的八股文,说实话期末考试就像大厂AI算法岗笔试。
接下来谈谈两个作业。第一个是手撸多层神经网络,只不过要实现mini-batch,SGD(随机梯度下降),Batch Normalization以及Dropout。说来惭愧,当时啥也不懂,甚至第一次用python,虽然同一学期上着ML,但是给我的感觉就是两个领域。我的第一次作业是跟着《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=动手学深度学习》照着打的,因为课上理论和作业几乎不怎么沾边,虽然每周都有lab课,一个小时根本搞不明白的。理论是数学,而编程则考虑的需要更多,因为没有一个代码的实现思路。我就用了个笨办法,作为程序员我能看懂代码,我就跟着书敲了一遍,然后把代码块做了什么进行响应注释,最后根据作业要求进行改造。在这个过程中,我认识到了《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=动手学深度学习》才是程序员开始DL学习的第一站,然后用理论,各种paper去印证。
第二个作业直接上多标签学习,而且是长尾数据,就是每一类的数据并不均衡,有的很多有的很少。当时我直接用的Resnet50 dropout做的,出来结果只有80%预测准确率,然后开始了炼丹式调参,各种方法,数据增强,低精度训练,early stopping,大batch size,反正训练一次得用一个小时,这还是使用了colab的(GPU),我有一次晚上colab(GPU)使用时间过长,不让用了,发现训练时长大约12个小时(通过一个epoch的时间*20计算的),我果断睡觉了。第二天又能用了。最终85%的准确率,其实挺遗憾的,这是个小组作业,但是两个朋友都是妹子,帮不上我什么,就早上爬起来就调参,训练的时候学别的,宅了家里近一个月,除了吃喝拉撒,就是锁在卧室炼丹,每天都是炼到colab不让用GPU。最终排名50 ,虽然有100个队。最后向第一准确98%的队请教,原来人家用了LSTM Resnet,可惜我也想用,但是我不知道该怎么写LSTM以及融合Resnet提取的特征,当时我真的孤立无援,无人请教(因为疫情在家网课,给tutor发邮件两三天才回)。所以到现在我也不知道该怎么做,希望在学DL的小伙伴会了能教教我~
现在准备转大数据工程师,用java更多了,但是我也不会放下学过的有关DL的点点滴滴,一起加油吧!
42
0
分享
操作
评论
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
