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 ...
随机推荐
- docker 6.1测试
https://www.cnblogs.com/xiugeng/p/10193333.html#_label1 1.设置重启策略 [root@docker ~]# cat /etc/docker/da ...
- vue3源码学习api-vue-sfc文件编译
vue 最有代表性质的就是.VUE 的文件,每一个vue文件都是一个组件,那么vue 组件的编译过程是什么样的呢 Vue 单文件组件 (SFC)和指令 ast 语法树 一个 Vue 单文件组件 (SF ...
- 【Web】 抓包工具Charles
官方软件包下载 https://www.charlesproxy.com/download/ 在线生成激活码: https://www.zzzmode.com/mytools/charles/ 代理设 ...
- 贝塔分布 beta分布的累积分布函数(CDF)计算 —— 如何使用二项式分布表示beta分布的概率累积函数
贝塔分布 beta分布的累积分布函数(CDF)的计算公式: 计算beta分布的累积分布函数(CDF)是需要计算积分的,但是最近发现另一种计算方法,即,使用二项式分布计算beta分布的概率累积函数. b ...
- OneFlow框架0.9.1dev版本,成功安装并运行
安装cuda和cudnn: (此步骤可以忽略,pip安装框架时会自动安装依赖的cuda和cudnn环境) conda install cudatoolkit==11.8.0 python3 -m pi ...
- Ubuntu18.04 系统环境下 vscode中忽略pylint某些错误或警告
相关: ubuntu18.04系统环境下使用vs code安装pylint检查python的代码错误 ====================================== 假设已经在前文(ht ...
- 使用pycharm专业版(支持远程调试及运行)如何运行mpi的代码呢???(mpi4py的代码)
问题如题: 请注意:这里pycharm专业版的远程调试及运行该如何设置不进行介绍. 由于mpi进程启动是需要执行mpiexec或mpirun命令的,然而在pycharm中我们只能远程调用Python命 ...
- WhaleStudio 2.6正式发布,WhaleTunnel同步性能与连接器数量再创新高!
在这个数据驱动的大模型时代,数据集成的作用和意义愈发重要.数据不仅仅是信息的载体,更是推动企业决策和创新的关键因素.作为全球最流行的批流一体数据集成工具,WhaleTunnel随着WhaleStudi ...
- Python网页应用开发神器fac 0.3.0全新版本发布
大家好我是费老师,在Python生态中,有很多以Python为主要开发语言,实现网页应用开发的框架,其中最为知名的有Dash.flet.streamlit.gradio.nicegui等. 如果综合考 ...
- LeetCode216.组合总和lll
4.组合总和lll(LeetCode216) 题目叙述: 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 .该列 ...