为什么要配置日志?日志是一种可以追踪某些软件运行时所发生事件的方法。向代码中调用日志记录相关的方法来表明发生了某些事情。简而言之日志就是一个小型的软件运行记录器。进行一些日志输出。
torch.cuda.manual_seed_all(66) 为所有GPU设置种子
torch.manual_seed(66) 为CPU设置种子
itertools模块包含有效创建迭代器的函数
solver模块
#保证dir_path存在
#保证log_dir、model_dir文件都存在,在根记录器上记录严重性为“ INFO”的消息。 如果记录器没有处理程序,请调用basicConfig()以添加具有预定义格式的控制台处理程序。
#上面是四个组件
#将这四个组件放到GPU里
#上面这四个组件放进多线程
############# Get Losses & Optimizers ################
#函数make_optimizer,参数是opt_models列表,#将模型参数的values放进 train_params 列表里,并且使用Adam优化算法进行优化,函数返回一个optimizer。
#模型参数是字典的形式。
#将opt_models列表放进优化器里
#加载数据的GPU个数
优化器根据step调整学习率
tensorboard函数 SummaryWriter两个参数,生成的文件所放的目录,文件的名称。
add_scalar()将我们所需要的数据保存在文件里面供可视化使用。这里是scatar类型,所以使用writer.add_scalar()
参数是保存图的名称,Y轴数据,X轴数据。当Y轴数据不止一个时,使用writer.add_scalars()
将输出保存成图的形式
anchor_rgb, positive_rgb, negative_rgb, anchor_ir, positive_ir,
negative_ir, anchor_label, modality_rgb, modality_ir = batch
什么意思?意思是一个batch里有这些东西吗?
#将RGB的apn和IR的apn和锚点标签都放入GPU里。
at_loss_rgb = self.criterion_at.forward(anchor_rgb_features,
positive_ir_features, negative_ir_features)
at_loss_ir = self.criterion_at.forward(anchor_ir_features,
positive_rgb_features, negative_rgb_features)
at_loss = at_loss_rgb + at_loss_ir
原来是这样的。
predicted_id_rgb = self.id_classifier(anchor_rgb_features)
predicted_id_ir = self.id_classifier(anchor_ir_features)
identity_loss = self.criterion_identity(predicted_id_rgb, anchor_label) +
self.criterion_identity(predicted_id_ir, anchor_label)
loss_G = alphaat_loss + betaidentity_loss
原来是这样的。
self.optimizer_G.zero_grad()
loss_G.backward()
self.optimizer_G.step()
self.write(‘train_stats’, {‘loss_G’: loss_G,
‘at_loss’: at_loss,
‘identity_loss’: identity_loss
})