主页 > 其他  > 

为什么dataloader出来batchsize为8,进入到model之后就变成了2

为什么dataloader出来batchsize为8,进入到model之后就变成了2

首先说原因,大概率是由于一个batchsize中的数据被分载到四个gpu上工作了,你可能设置了gpu数量为1,但是如果不设置gpu的可见域,它依然会默认调用所有可用gpu资源进行分载,这就导致事实上只用了四分之一的数据,后面计算的梯度都没算进去,所以解决办法就是重新定义gpu的可见域:

代码通常由以下组成:

parser.add_argument('-g', '--gpu', default=0, type=int, help='indices of GPUs to enable (default: all)') gpu = str(args.gpu) os.environ["CUDA_VISIBLE_DEVICES"] = gpu

如此,所有数据就都在一个gpu上了,不用考虑分载的问题。

另外说明,如果本身就需要实现多gpu并行,那是正常的,前提得保证可见域和需要用到gpu数量的对齐

标签:

为什么dataloader出来batchsize为8,进入到model之后就变成了2由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“为什么dataloader出来batchsize为8,进入到model之后就变成了2