deep-learning - PyTorch 找到关键点:输出节点在一个范围内和负损失
问题描述
我是深度学习的初学者。我正在使用这个数据集,我希望我的网络能够检测手的关键点。
如何使输出层的节点在 [-1, 1] 范围内(标准化 2D 点的范围)?另一个问题是,当我训练超过 1 个 epoch 时,损失会变为负值
标准:torch.nn.MultiLabelSoftMarginLoss()和优化器:torch.optim.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)
解决方案
我能想到的一种方法是使用torch.nn.Sigmoid
which 在 [0,1] 范围内产生输出,并使用2*x-1
转换将输出缩放到 [-1,1]。
推荐阅读
- sql - 在 SQL Server 中添加主键作为行号
- c# - 不使用 virtual 关键字的 Moq 具体类
- unit-testing - 在 vue 中使用 jQuery 和 this.random() 的单元测试方法
- powershell - PowerShell 对象中的对象
- objective-c - 如何从 iOS 应用程序在 Mac 上保存图像?
- spring-boot - 拥有多个异常类不像冗余,尤其是当我们使用错误代码时?
- django - 带有未知子键的 Django JsonField 查找过滤
- html - 在 PURE CSS 中选择带有选项样式的按钮
- mysql - FROM 子句中子查询的语法错误
- angular - 单击关闭按钮时如何停止激活角度反应表单验证