softmax

Implementation of a softmax activation function for neural networks

橙三吉。 提交于 2019-11-28 16:50:46
问题 I am using a Softmax activation function in the last layer of a neural network. But I have problems with a safe implementation of this function. A naive implementation would be this one: Vector y = mlp(x); // output of the neural network without softmax activation function for(int f = 0; f < y.rows(); f++) y(f) = exp(y(f)); y /= y.sum(); This does not work very well for > 100 hidden nodes because the y will be NaN in many cases (if y(f) > 709, exp(y(f)) will return inf). I came up with this

深度学习中的 logits 、softmax,TensorFlow中的 tf.nn.softmax_cross_entropy_with_logits 、tf.nn.sparse_soft...对比

血红的双手。 提交于 2019-11-28 15:59:57
一、logits 和 softmax 1、什么是logits? 说到Logits,首先要弄明白什么是Odds? 在英文里,Odds的本意是指几率、可能性。它和我们常说的概率又有什么区别呢? 在统计学里,概率(Probability)描述的是某事件A出现的次数与所有事件出现的次数之比: p ( A ) = A 发 生 的 次 数 所 有 事 件 发 生 的 总 次 数 ( 公 式 1 ) p_{(A)}=\frac{A发生的次数}{所有事件发生的总次数} ~~~~~~~~~~~~~~~~(公式1) p ( A ) ​ = 所 有 事 件 发 生 的 总 次 数 A 发 生 的 次 数 ​ ( 公 式 1 ) 很显然,概率 P是一个介于0到1之间的实数; P=0,表示事件A一定不会发生,而P=1,则表示事件A一定会发生。 以掷骰子为例,由于骰子为6面,任意一面上点数概率都是相同。所以,事件A:掷出点数为1的概率为: p = 1 6 p=\frac{1}{6} p = 6 1 ​ 对比而言,Odds指的是事件发生的概率与事件不发生的概率之比: O d d s ( A ) = p ( A 发 生 ) p ( A 不 发 生 ) ( 公 式 2 ) Odds_{(A)}=\frac{p_{(A发生)}}{p_{(A不发生)}}~~~~~~~~~~~~~~~~~~~~~~~(公式2) O d

论文阅读笔记(十一):Fast R-CNN

末鹿安然 提交于 2019-11-28 14:09:15
This paper proposes a Fast Region-based Convolutional Network method (Fast R-CNN) for object detection. Fast R-CNN builds on previous work to efficiently classify object proposals using deep convolutional networks. Compared to previous work, Fast R-CNN employs several innovations to improve training and testing speed while also increasing detection accuracy. Fast R-CNN trains the very deep VGG16 network 9× faster than R-CNN, is 213× faster at test-time, and achieves a higher mAP on PASCAL VOC 2012. Compared to SPPnet, Fast R-CNN trains VGG16 3× faster, tests 10× faster, and is more accurate.

Keras神经网络的学习与使用(2)

爱⌒轻易说出口 提交于 2019-11-28 10:35:54
Keras中函数与优化器的学习 激活函数 Sigmoid函数 防止梯度弥散现象的发生 Softmax激活函数 ReLU函数 Keras激活函数的使用 优化器 SGD优化器 学习率 Adadelta优化器 损失函数 均方误差 交叉熵损失函数 激活函数 机器学习模型的学习过程就是一个不断地通过数据集来修正自身数学模型中参数的过程。 引入激活函数可以增加神经网络模型的 非线性 ,以便增强对样本非线性关系的拟合能力。如果没有激活函数,那么神经网络的每一层都只相当于矩阵相乘,即便叠加了若干层,也只相当于将这些矩阵连续相乘而已。 激活函数有很多,例如ReLU、Sigmoid、tanh、elu等。 Sigmoid函数 Sigmoid激活函数是一个非线性函数,它的定义域可以是全体实数,而值域却是(0, 1)。也就是说,使用Sigmoid函数通常用在回归预测和二分类(即按照是否大于0.5进行分类)模型的输出层中。 Sigmoid函数的公式如下: S ( x ) = 1 1 + e − x S(x) = \frac{1}{1+e^{-x}} S ( x ) = 1 + e − x 1 ​ 该函数在python下画图 import numpy as np from math import * import matplotlib . pyplot as plt x = np . arange ( - 10

Numercially stable softmax

柔情痞子 提交于 2019-11-28 10:12:39
Is there a numerically stable way to compute softmax function below? I am getting values that becomes Nans in Neural network code. np.exp(x)/np.sum(np.exp(y)) The softmax exp( x )/sum(exp( x )) is actually numerically well-behaved. It has only positive terms, so we needn't worry about loss of significance, and the denominator is at least as large as the numerator, so the result is guaranteed to fall between 0 and 1. The only accident that might happen is over- or under-flow in the exponentials. Overflow of a single or underflow of all elements of x will render the output more or less useless.

NLP系列文章:子词嵌入(fastText)的理解!(附代码)

耗尽温柔 提交于 2019-11-28 07:07:50
1. 什么是fastText 英语单词通常有其内部结构和形成⽅式。例如,我们可以从“dog”“dogs”和“dogcatcher”的字⾯上推测它们的关系。这些词都有同⼀个词根“dog”,但使⽤不同的后缀来改变词的含义。而且,这个关联可以推⼴⾄其他词汇。 在word2vec中,我们并没有直接利⽤构词学中的信息。⽆论是在跳字模型还是连续词袋模型中,我们都将形态不同的单词⽤不同的向量来表⽰。例如, “dog”和“dogs”分别⽤两个不同的向量表⽰,而模型中并未直接表达这两个向量之间的关系。鉴于此,fastText提出了⼦词嵌⼊(subword embedding)的⽅法,从而试图将构词信息引⼊word2vec中的CBOW。 这里有一点需要特别注意,一般情况下,使用fastText进行文本分类的同时也会产生词的embedding,即embedding是fastText分类的产物。除非你决定使用预训练的embedding来训练fastText分类模型,这另当别论。 2. n-gram表示单词 word2vec把语料库中的每个单词当成原子的,它会为每个单词生成一个向量。这忽略了单词内部的形态特征,比如:“book” 和“books”,“阿里巴巴”和“阿里”,这两个例子中,两个单词都有较多公共字符,即它们的内部形态类似,但是在传统的word2vec中

Softmax学习笔记

微笑、不失礼 提交于 2019-11-28 03:18:54
softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类! 他把一些输入映射为0-1之间的实数,并且归一化保证和为1,因此多分类的概率之和也刚好为1。 实际应用中,使用 Softmax 需要注意数值溢出的问题。因为有指数运算,如果 V 数值很大,经过指数运算后的数值往往可能有溢出的可能。所以,需要对 V 进行一些数值处理:即 V 中的每个元素减去 V 中的最大值。 相应的python示例代码如下: scores = np.array([123, 456, 789]) # example with 3 classes and each having large scores scores -= np.max(scores) # scores becomes [-666, -333, 0] p = np.exp(scores) / np.sum(np.exp(scores))    softmax VS k个二元分类器 如果你在开发一个音乐分类的应用,需要对k种类型的音乐进行识别,那么是选择使用 softmax 分类器呢,还是使用 logistic 回归算法建立 k 个独立的二元分类器呢? 这一选择取决于你的类别之间 是否互斥 ,例如,如果你有四个类别的音乐,分别为:古典音乐、乡村音乐、摇滚乐和爵士乐,那么你可以假设每个训练样本

目标检测论文解读8——YOLO v3

六月ゝ 毕业季﹏ 提交于 2019-11-28 00:03:26
背景   要在YOLO v2上作出改进。 方法   (1) 分类器改变 。从softmax loss改变为logistic loss,作用是处理符合标签,softmax loss只能用来预测只有一种类别的目标,logistic loss可以是多种类别。   (2) 引入多级预测机制 。在三种尺度的特征图上做detection。   (3)模仿了ResNet里residual block 的short cut,模型采用Darknet-53。 总结   没创新,效果好。 来源: https://www.cnblogs.com/xin1998/p/11381660.html

深度学习面试题28:标签平滑(Label smoothing)

非 Y 不嫁゛ 提交于 2019-11-27 23:59:12
目录    产生背景    工作原理    参考资料 产生背景 假设选用 softmax 交叉熵训练一个三分类模型,某样本经过网络最后一层的输出为向量 x=( 1.0, 5.0, 4.0) ,对 x 进行 softmax 转换输出 为: 假设该样本y=[0, 1, 0],那损失loss: 按softmax交叉熵优化时,针对这个样本而言,会让0.721越来越接近于1,因为这样会减少loss,但是这有可能造成过拟合。可以这样理解,如果0.721已经接近于1了,那么网络会对该样本十分“关注”,也就是过拟合。我们可以通过标签平滑的方式解决。 以下是论文中对此问题的阐述: 返回目录 工作原理 假设有一批数据在神经网络最后一层的输出值和他们的真实标签 out = np.array([[4.0, 5.0, 10.0], [1.0, 5.0, 4.0], [1.0, 15.0, 4.0]]) y = np.array([[0, 0, 1], [0, 1, 0], [0, 1, 0]]) 直接计算softmax交叉熵损失: res = tf.losses.softmax_cross_entropy(onehot_labels=y, logits=out, label_smoothing=0) print(tf.Session().run(res)) 结果为:0.11191821843385696

sigmoid与softmax 二分类、多分类的使用

ぃ、小莉子 提交于 2019-11-27 22:03:26
二分类下,sigmoid、softmax两者的数学公式是等价的,理论上应该是一样的,但实际使用的时候还是sigmoid好 https://www.zhihu.com/question/295247085 为什么好?其实现在我得到一个确切的答案! 多个sigmoid与一个softmax都可以进行多分类 如果多个类别之间是互斥的,就应该使用softmax,即这个东西只可能是几个类别中的一种。 如果多个类别之间不是互斥的,使用多个sigmoid。比如4个类别人声音乐、舞曲、影视原声、流行歌曲,一首歌曲可以来自影视原声,同时也包含人声。 https://max.book118.com/html/2017/0428/102950525.shtm 为什么softmax使用在类别互斥,多个sigmoid使用在不是互斥? 因为softmax中,所有类别之和是1,如果你一个类别高了,另一个类别的概率肯定下降。但多个sigmoid,可以同时输出多个0.9的概率,多个sigmoid之间不影响。比如一首歌曲,第一个类别是判断是否是影视歌曲,可以是0.9,判断的人声的类别也可以是0.9。但如果是softmax,影视歌曲类别是0.9了,人声就最多只能是0.1了。 来源: https://www.cnblogs.com/ymjyqsx/p/11379726.html