在阅读LIFT:Learned Invariant Feature Transform一文时,文中第1节提到为了保证端到端的可微性,利用softargmax来代替传统的NMS(非极大值抑制)来挑选极值点位置。由于只了解softmax,对于softargmax不甚了解,所以记录下来。

1)softmax:

输入为向量,输出为值为0-1之间的向量,和为1。在分类任务中作为概率出现在交叉熵损失函数中。

import numpy as np
data=np.array([0.1, 0.3, 0.6, 2.1 ,0.55])
np.exp(data)/np.sum(np.exp(data)) # softmax

array([ 0.07795756,  0.09521758,  0.12853029,  0.57603278,  0.12226179])

2)argmax:为了得到一个向量中最大值所处的位置,我们利用此函数。但是这个函数不可导,所以无法计算其梯度。然而我们可以利用软化的max函数来计算,就是softmax。利用softmax,我们可以得到每个元素正则化后的值。此向量()分布)的

此时最大值所处的坐标期望即为:

np.sum(np.exp(data)/np.sum(np.exp(data)) * np.array([0,1,2,3,4]))    # E = p*index

2.5694236670240085。而最大之所在的位置应该是3。

3)softargmax:从上面看到位置计算不够准确,一个原因就是最大值的概率不够大,或者说增大相对最大值而减弱其他值的影响就可以得到更加准确的位置坐标。

softargmax: 

可以看到,上式与softmax的期望只有一个差别,即给向量的每个元素乘以beta。

>>>d = data*10       # beta=10
array([ 1. , 3. , 6. , 21. , 5.5])
>>> np.sum(np.exp(d)/np.sum(np.exp(d)) *np.array([0,1,2,3,4]))
2.9999998429934758

可见此时输出的坐标为2.99,即为3,且这种寻找极值所在位置(坐标)的方法是可微的。常用于图像特征点位置的提取。

此外,LIFT原文3.5节提到:softargmax作为非极大值抑制NMS的可微分版本。就是说可以利用softargmax来替代NMS。

Ref:

IFT6266 PROJECT

关于softmax、argmax、softargmax的更多相关文章

  1. 训练一个图像分类器demo in PyTorch【学习笔记】

    [学习源]Tutorials > Deep Learning with PyTorch: A 60 Minute Blitz > Training a Classifier   本文相当于 ...

  2. deeplearning量化

    deeplearning量化 量化配置 通过字典配置量化参数 TENSORRT_OP_TYPES = [ 'mul', 'conv2d', 'pool2d', 'depthwise_conv2d', ...

  3. 深度学习原理与框架-Tensorflow基本操作-mnist数据集的逻辑回归 1.tf.matmul(点乘操作) 2.tf.equal(对应位置是否相等) 3.tf.cast(将布尔类型转换为数值类型) 4.tf.argmax(返回最大值的索引) 5.tf.nn.softmax(计算softmax概率值) 6.tf.train.GradientDescentOptimizer(损失值梯度下降器)

    1. tf.matmul(X, w) # 进行点乘操作 参数说明:X,w都表示输入的数据, 2.tf.equal(x, y) # 比较两个数据对应位置的数是否相等,返回值为True,或者False 参 ...

  4. pytorch之expand,gather,squeeze,sum,contiguous,softmax,max,argmax

    目录 gather squeeze expand sum contiguous softmax max argmax gather torch.gather(input,dim,index,out=N ...

  5. 小白学习之pytorch框架(4)-softmax回归(torch.gather()、torch.argmax()、torch.nn.CrossEntropyLoss())

    学习pytorch路程之动手学深度学习-3.4-3.7 置信度.置信区间参考:https://cloud.tencent.com/developer/news/452418 本人感觉还是挺好理解的 交 ...

  6. Softmax回归(使用tensorflow)

    # coding:utf8 import numpy as np import cPickle import os import tensorflow as tf class SoftMax: def ...

  7. Softmax回归(使用theano)

    # coding:utf8 import numpy as np import cPickle import theano import os import theano.tensor as T cl ...

  8. 增强学习贪心算法与Softmax算法

    (一) 这个算法是基于一个概率来对探索和利用进行折中:每次尝试时,以概率进行探索,即以均匀概率随机选取一个摇臂,以的概率进行利用,即以这个概率选择当前平均奖赏最高的摇臂(如有多个,则随机选取). 其中 ...

  9. TensorFlow 入门之手写识别(MNIST) softmax算法

    TensorFlow 入门之手写识别(MNIST) softmax算法 MNIST flyu6 softmax回归 softmax回归算法 TensorFlow实现softmax softmax回归算 ...

随机推荐

  1. Linux最常用的基础命令

    Linux最常用的基础命令个人总结 计算机基础知识: 32bit和64bit系统的区别.系统运行机制 32bit=内存的最大寻址空间是2**32,也就是说最大只能使用4GB的内存64bit=内存的最大 ...

  2. ElasticSearch的API介绍

    ElasticSearch的API介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.ES是基于Restful风格 1>ES是基于Restful风格 Elasticsea ...

  3. mysql 快速生成删除数据库中所有的表的语句

    SELECT concat('DROP TABLE IF EXISTS ', table_name, ';') FROM information_schema.tables WHERE table_s ...

  4. Kafka技术内幕 读书笔记之(四) 新消费者——新消费者客户端(二)

    消费者拉取消息 消费者创建拉取请求的准备工作,和生产者创建生产请求的准备工作类似,它们都必须和分区的主副本交互.一个生产者写入的分区和消费者分配的分区都可能有多个,同时多个分区的主副本有可能在同一个节 ...

  5. HDU 1050(搬椅子 数学)

    题意是在一个有 400 个房间的走廊中搬动房间里的椅子,如果两次的路线重叠,就要分两次搬动,如果不重叠,就可以一次搬动. 开始的时候直接当成求线段重叠条数的题,发现这种思路完全是错的,比如 1 - 3 ...

  6. Entity Framework 学习总结之十一:POCO

    POCO Entity Framework 4.0 为实体提供了简单传统 CLR 对象( Plain Old CLR Object / POCO )支持.实体对象可以独立于 EF 存在,由此 EF 更 ...

  7. Map接口、HashMap类、LinkedHashSet类

    java.util.Map<K, V>接口 双列集合,key不可以重复 Map方法: 1.public V put(K key, V value):键值对添加到map,如果key不重复返回 ...

  8. java位运算(&、|、 ~、>>、>>> 、 ^)

    1.& 与 数字按位进行与运算 101101 110111 100101 2.| 或 数字按位进行或运算 3.~ 非 数字按位取反 4.>> 右移 数字按位进行右移 正数右移高位补 ...

  9. Silverlight设计器——Path

    如下图,在设计一个InfoWindow的时候,顶栏的关闭按钮没有出现.观察了半天,也没有弄明白.无意中,拖动一个几乎透明的信息框,突然就出现了关闭的按钮.原来,那个信息框只是一个Path,它遮住了关闭 ...

  10. 安装软件出现缺少vcruntime140.dll

    安装VC运行库QQ群:616945527 ->VC目录下