问题描述:
图中fake_loss的结果和pytorch的结果不一样,相差非常之大。初步检查发现是对于边界情况下的截断处理不同,pytorch能够截断到100,而mindspore只截断到27.几.
上面这张图是在能正常训练的pytorch程序中,用mindspore的BCEloss去对比。下面那张图片是在无法正常训练的mindspore程序中,用pytorch的BCEloss去对比。发现mindspore算出来的loss是不一样的。。。
我应该如何设置才能让loss一样,或者能够让网络正常训练???
解答:
mindspore 的 BCELoss 的使用可以参考下面的代码:
weight = Tensor(np.array([[1.0, 2.0, 3.0], [4.0, 3.3, 2.2]]), mindspore.float32)
loss = nn.BCELoss(weight=weight, reduction='mean')
logits = Tensor(np.array([[0.1, 0.2, 0.3], [0.5, 0.7, 0.9]]), mindspore.float32)
labels = Tensor(np.array([[0, 1, 0], [0, 0, 1]]), mindspore.float32)
output = loss(logits, labels)print(output)
详细的解释可以参考下面的链接:mindspore.nn.BCELoss — MindSpore master documentation