• pytorch 分割二分类的两种形式


    1、单通道输出

    在训练时,输出通道为1,网络的输出数值是任意的。标签是单通道的二值图,对输出使用sigmoid,使其数值归一化到[0,1],然后和标签做交叉熵损失。

    训练结束后,将输出的output经过sigmoid函数,然后取阈值(一般为0.5),大于阈值则为1否则取0,从而得到最终的预测结果。

    代码实现:

    #第一种
    output = net(input)  # net的最后一层没有使用sigmoid
    Loss = torch.nn.BCEWithLogitsLoss()#会先做sigmoid然后求交叉熵
    loss = Loss(output, target)
    
    #第二种
    output = net(input)  # net的最后一层没有使用sigmoid
    output = F.sigmoid(output)
    Loss = torch.nn.BCEWithLoss()
    loss = Loss(output, target)
    
    #预测
    output = net(input)  # net的最后一层没有使用sigmoid
    output = F.sigmoid(output)
    predict = torch.where(output>0.5,torch.ones_like(output),torch.zeros_like(output)

      

    2、二(多)通道输出

    在训练时,输出通道为2,网络的输出数值是任意的。让网络的输出经过softmax,归一化到[0,1],在各通道中,同一位置加起来的数值会等于1。标签是单通道的二值图,首先使用one-hot编码,使其变为二通道,当前通道值为1,另一通道上就为0。然后将输出和标签做交叉熵损失。

    训练结束后,取每个像素位置上对应最大值的通道序号为最终的预测值,从而得到最终的预测结果。

    代码实现:

    #训练
    output = net(input)  # net的最后一层没有使用sigmoid
    Loss = torch.nn.CrossEntropyLoss()
    loss = Loss(output, target)
    
    #预测
    output = net(input)  # net的最后一层没有使用sigmoid
    predict = output.argmax(dim=1) 
  • 相关阅读:
    WPF 重新启动该程序
    Winform水印
    PS 切HTML (ps+div+css)
    VS服务器运行有问题 怎么办?
    ISDeleted 软删除!!
    项目初始框架
    MD5加密
    !!LoginWindow.cs
    !!!精简版三层架构
    !!C#交互操作SqlServer数据库 基本的增删改查
  • 原文地址:https://www.cnblogs.com/Xycdada/p/13960988.html
Copyright © 2020-2023  润新知