【仅为个人debug记录】
问题描述
用GPU训练网络的时候,每个epoch训练完都要卡顿很久,才开始下一个epoch的训练。
解决过程
Step 1. import time
初步判断问题应该出现在每次训练的头几行代码,所以import time,输出头几行代码分别的运行时间,具体使用参考博客link.
Step 2.
根据上一步,发现创建pbar这行代码用了半分钟。
pbar = tqdm(enumerate(train_data_loader), desc='Training for %g / %s epoch ' % (epoch, opt.epochs),
total=len(train_dataset) // train_data_loader.batch_size)
参考博客link、link。最终删去dataloader里的num_workers参数的设置,解决了问题,gpu可以快速进行网络的训练。
train_loader = DataLoader(dataset=train_dataset, batch_size=self.batch_size, #num_workers=self.num_works,
shuffle=self.shuffle, drop_last=self.drop_last)