PyTorch查找关键点:输出节点在一个范围和负损失



我是深度学习的初学者。我正在使用这个数据集,我希望我的网络能够检测手的关键点。

如何使输出层的节点在范围[-1,1](归一化2D点的范围(内?另一个问题是,当我训练超过1个历元时,损失会得到负值

标准:torc.nn.Multi-LabelSoftMarginLos((和优化器:torc.optin.SGD((

在这里你可以找到我的回购

net = nnModel.Net()
net = net.to(device)
criterion = nn.MultiLabelSoftMarginLoss()
optimizer = optim.SGD(net.parameters(), lr=learning_rate)
lr_scheduler = torch.optim.lr_scheduler.ExponentialLR(optimizer=optimizer, gamma=decay_rate)

您可以使用Tanh激活函数,因为函数的映像位于[-1,1]中。

预测图像中的关键点的问题更像是一个回归问题,而不是分类问题(尤其是如果你让你的模型输出+目标落在一个连续的区间内(。因此,我建议您使用L2损失。

事实上,使用交叉验证来确定哪种损失函数适用于回归问题,它提供了最低的预期泛化误差,这可能是一个很好的练习。PyTorch中有几个这样的功能。

我能想到的一种方法是使用torch.nn.Sigmoid,它产生[0,1]范围内的输出,并使用2*x-1变换将输出缩放到[-1,1]。

最新更新