在进行去雨去雪去雾算法的实验过程中,博主使用自己的电脑进行实验,尽管能够成功运行,但速度却属实不尽人意,博主的笔记本显卡是GTX960,显存为4G,在进行实验的过程中,batch-size只能设置为3,好在实验的去噪类型也就只与三种,否则这实验根本无法进行,于是,便萌生了更换笔记本的念头,那么在更换前,就要先做下相关实验,看看性能能够提升多少。
首先记录一下博主在GTX960M上的实验情况:
GTX960M实验情况
显存占用
实验用时
训练一个epoch的实验用时:
可以看到时间大约在15分钟左右。
每训练5个epoch进行一次评估:
属实是太慢了,用时31分钟,而且从结果来看,PSNR与SSIM竟然有些许差距,这才是最严重的,当然这并不是最终结果。
RTX3070实验情况
博主的实验配置为GTX3070(笔记本的哈),显存为8G。那么博主的batch-size就可以调大了,先前在GTX960M时的batch-size为3,若是调整为4则会提示算力不足,而在这里可以将其设置的更大,博主设置batch-size=6。
显存占用
batch-size=6时的显存占用情况:
实验用时
训练一个epoch的实验用时:
评估一个epoch的时间:用时不到6分钟,相比GTX960提升简直不要太大。
关于num_workers
此外,值得注意的是,这里的num_workers博主设置为0,因为先前在服务器上运行时发现num_workers不为0的话会报错,这是程序的问题了,为了避免意外,还是老老实实的设置为0吧。
- GPU是由CPU发送指令和数据来执行计算任务的。在GPU中,线程是由CPU分配的,并且从CPU获取它们需要处理的数据。GPU本身没有能力添加线程或获取数据,它只能按照CPU给定的指令和数据执行计算任务。因此,送数据是由CPU的主线程负责送的。
2.num_workers=0,CPU不分配额外线程,只有一个主线程,负责将数据送到RAM后再将数据送到GPU.
3.num_works=1时,CPU分配一个单独线程专门负责将数据送到RAM,主线程专门负责将数据送到GPU
尽管将其设置的大一些可以提高,但按理说这种情况是不该出现的,这本身就是数据集加载时的问题,因此为了实验严谨,博主在3070的那台电脑上进行了实验,博主首先将num_workers设置为1。