卷积之后怎么连入全连接层,全连接层和卷积层的区别
1. Softmax 作用:将网络输出值的各个维度映射为(0,1 )之间的概率值,并且所有维度的概率值之和为1。
具体理解
神经网络解决了多分类(n分类)的问题,最后一层的输出为n个神经元,所以对应于对每个输入样本输出[-2.3,1.9,3.4,-5.6]这样的n维向量,此时按一维
一般来说,此时网络的输出通过另一个softmax层,各维为[ 0,1 ]之间的概率值,且所有维的概率值之和为1。 将概率值最大的维度规定为对应于该输入样本的标签类,例如[ 0.1,0.2,0.6,0.1 ],作为第三类。
softmax的具体计算公式如下。 (指数函数可以将r上的所有值映射到(0,正无限) )。
pytorch代码调用
self.softmax=nn.softmax(dim=-1 ) # # # # # # # # # # # # # # # # # self.soft max=nn
dim=0:对第0维(每列)中的所有元素执行softmax运算
dim=1:对第1维(各行)的所有要素进行softmax运算
dim=-1:对倒数第一个维的所有元素进行softmax运算
2. LogSoftmax 作用通过按y取来解决溢出问题,同时便于CrossEntropyLoss的计算。
具体理解:如上图所示,由于softmax是按指数操作的,因此当高级别的输出(即softmax的输入)较大时,可能会发生溢出。 例如,在上图中,z1、z2、z3取较大的值时,超出了float表示的范围。 同样,当输入为负数且绝对值也较大时,分子和分母变得极小,有可能四舍五入为0后下溢。 在公式中是相对于softmax取对数的情况。 但是,在实际操作中通过了:
pytorch代码调用
self.logsoft max=nn.logsoft max (dim=-1 ) # # # # # # # # # # # # # # # # logsoft max
3 .两者的比较联系:上面的分析表明LogSoftmax其实是对Softmax的结果再进行一次log运算
区别:在数学上是LogSoftmax(y )=log ) softmax ) y ),但如果进行这两个单独操作,则速度慢,数值上也不稳定。 logsoftmax函数实际上是使用上述另一个公式准确计算输出和梯度。
参考:
33559 www.zhi Hu.com/question/358069078
3359 blog.csdn.net/Hao 5335156/article/details/80607732