在阅读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. Xshell使用笔记

    Xshell 使用笔记 1second即1s1millisecond即1ms1s=1000ms Xshell中输入冒号 : 表示终止当前命令的意思 SSH 是Secure Shell ,安全外壳协议的 ...

  2. java代码的编译执行过程

  3. SPI设计

    目录 SPI设计 概述 寄存器配置 title: SPI设计 tags: ARM date: 2018-11-05 15:22:59 --- SPI设计 概述 在SPI协议中,有两个值来确定SPI的模 ...

  4. MAC操作系统使用小技巧

    MAC操作系统使用小技巧   作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.修改主机名名称 1>.修改主机名称 修改和查询的Ulinx命令如下: sudo scutil ...

  5. 9.组合模式(Composite Pattern)

    动机(Motivate):    组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素 ...

  6. vue中slot插槽

    插槽就是vue实现的一套内容分发的API,将插槽元素作为承载分发内容的出口. 也就是说在组件模板中默认占用一个位置,当使用组件标签时候,组件标签的内容就会自动替换掉内容 slot中可以设置一些默认的内 ...

  7. 修改xshell的默认字间距和行间距

    可能是不小心修改了xshell的某个配置,导致打开的会话中显示字间距和行间距都非常大,严重影响工作.参照官方手册也不能修改正常,详见:http://www.xshellcn.com/wenti/xiu ...

  8. Vue.Draggable/SortableJS 的排序功能,在VUE中的使用

    此插件git: https://github.com/SortableJS/Vue.Draggable 基于Sortable.js http://www.cnblogs.com/xiangsj/p/6 ...

  9. [译]Walkthrough: Using MSBuild

    原文 MSBuild是微软VS的Build平台. 你可以在Visual Studio或Windows命令行中运行MSBuild.在这我们使用VS创建一个MSBuild项目.你可以在VS中编辑项目文件, ...

  10. oracle 重建索引以及导出所有的索引脚本(可以解决还原数据库文件时先还原数据,在重新用脚本创建索引)

    导出数据库备份文件 1. 备份服务器数据,采用并行方式,加快备份速度(文件日期根据具体操作日期修改) expdp jhpt/XXXX directory=databackup dumpfile=dpf ...