在深度学习中结合训练和推理的重要性
The importance of combining a train and inference in Deep Learning
我以为Deep Learning中训练和推理的过程是分开的,但是看到这段代码,实际执行代码,我发现我的理解可能不正确。
network.train()
batch_losses = []
for step, (imgs, label_imgs) in enumerate(train_loader):
imgs = Variable(imgs).cuda()
label_imgs = Variable(label_imgs.type(torch.LongTensor)).cuda()
outputs = network(imgs)
loss = loss_fn(outputs, label_imgs)
loss_value = loss.data.cpu().numpy()
batch_losses.append(loss_value)
我指出outputs = network(imgs)
弄清楚这个程序。这通常用于估计模型?我知道估计模型很好看我们的方向。但我不明白这是必要的。如果我想增加我的训练时间,我可以删除它吗?
您分享的代码片段实际上只是深度学习模型的训练代码。在这里,outputs = network(imgs)
实际上接受了 imgs 即; 训练数据 并在通过 网络(您要在其上训练数据的模型)后给出 预测输出 。
然后根据该输出,loss_fn 在此处计算 loss = loss_fn(outputs, label_imgs)
,采用预测标签 (输出) 和实际标签 (label_imgs)
注:在inference中,一般不计算loss,计算预测标签的accuracy。仅根据训练数据计算损失,以衡量训练是否正确进行以及损失是否正在减少。
我建议你通过一些基本的深度学习教程来获得更好的洞察力,以防你仍然有一些疑问。
我以为Deep Learning中训练和推理的过程是分开的,但是看到这段代码,实际执行代码,我发现我的理解可能不正确。
network.train()
batch_losses = []
for step, (imgs, label_imgs) in enumerate(train_loader):
imgs = Variable(imgs).cuda()
label_imgs = Variable(label_imgs.type(torch.LongTensor)).cuda()
outputs = network(imgs)
loss = loss_fn(outputs, label_imgs)
loss_value = loss.data.cpu().numpy()
batch_losses.append(loss_value)
我指出outputs = network(imgs)
弄清楚这个程序。这通常用于估计模型?我知道估计模型很好看我们的方向。但我不明白这是必要的。如果我想增加我的训练时间,我可以删除它吗?
您分享的代码片段实际上只是深度学习模型的训练代码。在这里,outputs = network(imgs)
实际上接受了 imgs 即; 训练数据 并在通过 网络(您要在其上训练数据的模型)后给出 预测输出 。
然后根据该输出,loss_fn 在此处计算 loss = loss_fn(outputs, label_imgs)
,采用预测标签 (输出) 和实际标签 (label_imgs)
注:在inference中,一般不计算loss,计算预测标签的accuracy。仅根据训练数据计算损失,以衡量训练是否正确进行以及损失是否正在减少。 我建议你通过一些基本的深度学习教程来获得更好的洞察力,以防你仍然有一些疑问。