Pytorch一般有两种图像数据读取方式:
1、在每次迭代时,读取当前用到的图像:因为图像只有在用到的时候才写进内存,所以内存占用很小;但是这样每次迭代之前都有一个imread的过程,从而导致GPU利用率忽高忽低,且利用率峰值也很低,训练时间很长;
2、事先读取所有图像:如果数据集较大的话,读取完整数据集的过程会耗费大量时间,内存占用也会很大;不过因为不用在迭代之前读图,所以GPU利用率会稳定在一个很高的值,大幅降低整体训练时间。
注:在Windows系统中可以在任务管理器里查看GPU使用情况,但上面提到的GPU利用率指的不是红框里的3%,而是蓝框里的94%。