pytorch踩坑记录

ISSUE 01

2018.12.18
新的服务器上装了pytorch 0.4
遇到了一些奇怪的问题。
在尝试四卡并行的时候报了
one of the variables needed for gradient computation has been modified by an inplace operation

搜了一下说是不让用inplace,然而检查了代码并没有用到
之后自己另外开了一个做尝试
发现以前的 预先定义一个dtype(比如torch.cuda.FloatTensor
然后在用.type(dtype)统一数据类型的方式不好用了
在单卡运行时并没有出现问题,但是在多卡的时候如果采用了nn.DataParallel(net,[0, 1, 2, 3]).type(dtype)这种方式就会出现上面的错误
只有.cuda()才可以成功把网络放在GPU上。
导致我现在的代码又丑又胖。还是菜了点

另外发现在使用os.environ["CUDA_VISIBLE_DEVICES"] = IDs之后,对torch而言卡的序号就发生了变化,例如如果想用2,3号卡跑的话得这么写:os.environ["CUDA_VISIBLE_DEVICES"] = "2, 3"nn.DataParallel(net,[0, 1])当然这是随便想想就能想明白的事情 而且直接写nn.DataParallel(net,[2, 3])`也没有什么问题

你可能感兴趣的:(pytorch踩坑记录)