argmax经过sigmoid和不经过sigmoid区别
本文最后更新于:2023年4月5日 晚上
起因
今天和同组讨论了一下网络输出时,在torch.argmax之前经过torch.sigmoid和不经过sigmoid的区别。
主要起因是实验结果图像不同
图1 不经过sigmoid
图2 经过sigmoid
我们发现经过sigmoid预测的图像更加严格(实验结果证明,经过sigmoid效果好),会将一些不经过sigmoid
预测的前景分为背景。
简单实现
1 |
|
- 结果
1
2
3
4
5
6
7
8
9
10
11
12as:
tensor([[[0.9997, 0.9933, 0.0000],
[0.9820, 0.7311, 0.8808],
[0.7311, 0.9975, 0.9991]],
[[0.0025, 1.0000, 0.0000],
[0.9933, 0.9991, 0.9999],
[0.9997, 0.9999, 1.0000]],
[[0.0025, 1.0000, 0.0000],
[0.9933, 0.9991, 0.9999],
[0.9997, 0.9999, 1.0000]]])1
2
3
4
5
6
7
8没经过sig:
tensor([[0, 1, 1],
[2, 2, 2],
[2, 2, 2]])
经过sig:
tensor([[0, 1, 2],
[2, 2, 2],
[2, 2, 2]]) - 我们可以发现其中-20000.0,-20000.0,-20001.0分别出现在第1,2,3通道上。但是由于经过sigmoid,我们看到as结果都为0,所以导致我们最终argmax最大索引到2通道。但是如果我们不经过sigmoid,发现argmax最大索引是1。这也就证实了上面两张预测图为什么会不一样。
打赏支持
“如果你觉得我的文章不错,不妨鼓励我继续写作。”
argmax经过sigmoid和不经过sigmoid区别
https://dreamoneyou.github.io/2023/argmax经过sigmoid和不经过sigmoid区别/