这是直接从我的 pytorch 闪电设置中取出的。我对选择损失函数不太熟悉。
我正在尝试在 SSD 上训练我的数据,这需要我有一个张量和一个字典列表。我的图像是张量,目标是字典列表。
或者我需要创建自定义损失函数吗?
def training_step(self, batch, batch_idx):
images, targets = zip(*batch)
y_hat = self(images, targets)
opt = self.optimizers()
opt.zero_grad()
loss = F.smooth_l1_loss(y_hat, targets)
opt.step()
return loss
SSD 的损失函数是置信度损失和位置损失的组合。
总损失是这两个损失的加权和——我们对位置损失进行加权。
这里有一个很好的实现你需要的损失: https://github.com/amdegroot/ssd.pytorch/blob/master/layers/modules/multibox_loss.py.