argmax经过sigmoid和不经过sigmoid区别
起因
今天和同组讨论了一下网络输出时,在torch.argmax之前经过torch.sigmoid和不经过sigmoid的区别。
主要起因是实验结果图像不同

图1 不经过sigmoid

图2 经过sigmoid
我们发现经过sigmoid预测的图像更加严格(实验结果证明,经过sigmoid效果好),会将一些不经过sigmoid预测的前景分为背景。
简单实现
#coding:utf-8
import torch
a = torch.tensor([
[[8.0,5.0,-20000.0],[4.0,1.0,2.0],[1.0,6.0,7.0]],
[[-6.0,11.0,-20000.0],[5.0,7.0,9.0],[8.0,9.0,10.0]],
[[-6.0,10.0,-20001.0],[5.0,7.0,9.0],[8.0,9.0,10.0]]
])
b = torch.argmax(a,dim=0)
d = torch.sigmoid(a)
print("as:\n",d)
ds = torch.argmax(d,dim=0)
print("没经过sig:\n{}".format(b))
print("经过sig:\n{}".format(ds))
- 结果
as:
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]]])
没经过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区别的更多相关文章
- 神经网络激活函数sigmoid relu tanh 为什么sigmoid 容易梯度消失
https://blog.csdn.net/danyhgc/article/details/73850546 什么是激活函数 为什么要用 都有什么 sigmoid ,ReLU, softmax 的比较 ...
- scala 下 sigmoid 与breeze.numeric.sigmoid差异对比
scala> val beforeInit = System.nanoTime;val handsgn = rd.map(x => 1.0 / (1.0 + Math.exp(-x))); ...
- 如何用softmax和sigmoid来做多分类和多标签分类
首先,说下多类分类和多标签分类的区别 多标签分类:一个样本可以属于多个类别(或标签),不同类之间是有关联的,比如一个文本被被划分成“人物”和“体育人物”两个标签.很显然这两个标签不是互斥的,而是有关联 ...
- sigmoid function vs softmax function
DIFFERENCE BETWEEN SOFTMAX FUNCTION AND SIGMOID FUNCTION 二者主要的区别见于, softmax 用于多分类,sigmoid 则主要用于二分类: ...
- 逻辑回归和sigmoid函数分类
逻辑回归和sigmoid函数分类:容易欠拟合,分类精度不高,计算代价小,易于理解和实现 sigmoid函数与阶跃函数的区别在于:阶跃函数从0到1的跳跃在sigmoid函数中是一个逐渐的变化,而不是突变 ...
- 机器学习之--线性回归sigmoid函数分类
import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import random #sigmoid函数 ...
- Sigmoid函数简介
Sigmoid函数是一个在生物学中常见的S型的函数,也称为S型生长曲线.[1] 中文名 Sigmoid函数 外文名 Sigmoid function 别名 S型生长曲线 Sigmoid函数由下列公式定 ...
- 神经网络中的激活函数tanh sigmoid RELU softplus softmatx
所谓激活函数,就是在神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端.常见的激活函数包括Sigmoid.TanHyperbolic(tanh).ReLu. softplus以及softma ...
- LR采用的Sigmoid函数与最大熵(ME) 的关系
LR采用的Sigmoid函数与最大熵(ME) 的关系 从ME到LR 先直接给出最大熵模型的一般形式,后面再给出具体的推导过程. \[\begin{align*} P_w(y|x) &= \df ...
- 深度学习:Sigmoid函数与损失函数求导
1.sigmoid函数 sigmoid函数,也就是s型曲线函数,如下: 函数: 导数: 上面是我们常见的形式,虽然知道这样的形式,也知道计算流程,不够感觉并不太直观,下面来分析一下. 1.1 ...
随机推荐
- ipa文件上传到app store的构建版本的工具
打包好ipa文件后,可以使用mac电脑上的xcode将ipa上传到app store的构建版本中,假如没有mac电脑,可以使用香蕉云编来将ipa文件上传到构建版本. 这里我们来介绍下ipa文件上传到a ...
- 【Java】实体类转换框架 MapStruct
简单尝试了下发现比Dozer还有BeanUtil还方便小巧 注解的作用是在生成字节码文件时实现具体GetterSetter方法,实际转换时就是赋值操作,嘎嘎快 参考文章: https://juejin ...
- Typora配置自动上传图片到图床
在多平台发布文章时,如果遇到图片不能导入的问题,推荐使用图床!推荐使用阿里云或腾讯云,免费的不用考虑了! PicGo下载 链接:https://pan.quark.cn/s/2ec95402631 ...
- 使用AI模型替代工业仿真过程
引自: https://www.zhihu.com/question/641951284/answer/3384531468 使用AI模型替代工业仿真,如:CAE,等等,进行仿真环境的求解运算.
- 人形机器人(humanoid)(双足机器人、四足机器人) —— 硬件测试的方法
硬件测试的方法: 硬件的稳定性.鲁棒性.为机器人设定好固有的执行策略,然后长时间的让机器人重复执行这些既定好的动作.该种测试方法主要测试硬件的设计是否合理,硬件在长时间的运行中是否可以稳定运行而不是出 ...
- Ubuntu 18.04在已经安装Docker CE后如何安装NVIDIA-Docker,以使docker容器内可以使用宿主机显卡
注意: 本文是在电脑上已经安装好docker环境的前提下进行的. docker环境如何安装参照前文. 本文内容节选自: https://baimafujinji.blog.csdn.net/arti ...
- Illegal key size or default parameters 解决方案
1.背景 在做aes加密时,报错 Illegal key size or default parameters...有的jdk版本报错,有的不报错,原因在于: jdk 或jre\lib\securit ...
- 【开启报名】同学看过来,Apache DolphinScheduler开源之夏课题任务正式发布!
如果你还拥有着一张有效的"学生证",在这个充满机遇的夏天,我们诚邀你加入一个充满挑战和机遇的开源冒险--开源之夏. 这不仅是一个简单的编程开发活动,假如你成功参加并结项之后,还能获 ...
- JDBC Vertica Source Connector 使用文档
支持以下引擎 Spark Flink SeaTunnel Zeta 关键特性 批处理 精确一次性处理 列投影 并行处理 支持用户自定义拆分 支持查询 SQL 并实现投影效果 描述 通过 JDBC 读取 ...
- manim边学边做--点
几何图形是manim中最重要的一类模块,manim内置了丰富的各类几何图形,本篇从最简单的点开始,逐个介绍manim中的几何模块. manim中点相关的模块主要有3个: Dot:通用的点 Labele ...