在使用linux
训练神经网的时候,正常的训练代码不会报任何错误,但是在调试的时候只能跳转到断点处就不能往后运行了,但是windows
就可以,遇到太多次了,为什么会出现这个问题呢?今天终于把这个问题给解决了,记录一下。
在linux
训练的时候我们是可以使用多线程的,如下代码中的num_workers=8
,我们知道windows
在训练网络的时候不支持多线程,所以在使用windows
训练的时候我们这里的线程设置的是0
,也就是不管你是调试还是直接运行他都是线程为0
。但是linux
是支持多线程的,通常我们在训练的时候会设置线程数大于1
。但是调试的时候会出问题,我Pycharm
调试界面只支持主进程,线程开了之后就不能用了。
train_data_loader = torch.utils.data.DataLoader(train_dataset,
batch_size=batch_size,
shuffle=True,
num_workers=8,
collate_fn=train_dataset.collate_fn,
drop_last=drop_last)
解决办法很简单,直接运行的时候线程该多少就多少不用管,但是在调试的时候把他设置为0
就行了。
train_data_loader = torch.utils.data.DataLoader(train_dataset,
batch_size=batch_size,
shuffle=True,
num_workers=0,
collate_fn=train_dataset.collate_fn,