2019独角兽企业重金招聘Python工程师标准>>>
这几天为了参加Kaggle某图像处理比赛,训练了一个大尺寸的u-net模型。一共训练了42轮,每轮3800秒以上,花费了将近48个小时。此外,为了生成提交文件,又额外花费了7个小时。两天半的时间就这样没了。
过程之所以这么漫长,是因为精度要求比较高(0.997以上才有希望拿到好的名次)。输入图片尺寸1024*1024,经过实验,只有采用了1024个以上filter的卷积层组成的U-NET,才有可能达到这样的精度。对于这个复杂的U-NET,我的GTX 1060 6G显存的GPU真地吃不消。一个批次最多只能训练两条数据,否则就内存溢出。如果有12G显存的GPU的话,训练时间可以减少一半以上。
这次漫长的训练,最大的收获是:学会了耐心等待,确认了带不断衰退的学习率的SGD优化器是可靠的。
------------------------------------------------------------------------------------------------------------
0823,更新
尝试训练1280x1280尺寸的图片,结果一次只能训练一张图片,训练一轮需要5430秒,实在是太慢了。考虑用mxnet方案来替换tensorflow。