• softmax in pytorch


    背景

    在分类中,最常见的设置是一个输入,输出是类数目大小的向量。预测的输入类将是在最后一个网络层中具有最大条目的相应类。在分类任务中,交叉熵损失(交叉熵)是训练这类网络最常见的损失函数。交叉熵损失可以写在下面的方程中。例如,有一个三级cnn.最后一个全连通层的输出()是(3×1)张量.还有一个向量,它的维度相同,它指的是输入的真实标签。

    交叉熵

    比如说,3个类分别是0、1和2。输入属于0类。如果网络输出()是一个经过合理训练的分类器,则网络输出(Y)类似于(3.8,−0.2,0.45)。这个输入的Ground-truth 向量()是(1,0,0).因此,对于0类的输入,我们有:

                                                             

    交叉熵损失的正式定义如下:i从0到2:

    Softmax

    Softmax的计算可以用下面的图表所示的Softmax图层来表示。请注意,图中的Softmax层(Z)的输入是上面提到的向量y。

     softmax常用于多分类过程中,它将多个神经元的输出,归一化到( 0, 1) 区间内,因此Softmax的输出可以看成概率,从而来进行多分类。
     

    nn.CrossEntropyLoss() in Pytorch

    基本上,交叉熵只有一个项。因为在交叉熵损失方程中只剩下ground-truth类的概率:

    这里,j对应于地面-真值类.只有当i=j时,才能达到,否则便等于。在下面的脚本中,将torch.nn.CrossEntroyLoss()的结果与手工计算的交叉熵损失结果进行比较。证明了torch.n.CrossEntroyLoss()接收原始网络输出层的输入,这意味着函数中包含了Softmax层的计算。因此,在pytorch网络构建时,不需要在最终的完全连接层之后添加额外的Softmax层。

     
  • 相关阅读:
    Ubuntu18.04配置静态ip遇到的报错
    devilbox(二):连接数据库
    DBeaver
    prometheus-operator 详细总结(helm一键安装)
    如何创建私有 CA 并签发证书
    kong如何记录(nginx代理后)真实ip
    节点亲和性添加
    alertmanager详解
    subprocess.call和subprocess.Popen
    dockerfile-ENTRYPOINT 和CMD配合,以及他们的区别
  • 原文地址:https://www.cnblogs.com/www-caiyin-com/p/10340737.html
Copyright © 2020-2023  润新知