pytorch中的loss函数(2):SoftMarginLoss
程序员文章站
2022-03-27 10:21:28
...
1、SoftMarginLoss原理
SoftMarginLoss针对 two-class classification(二分类)问题。
loss计算公式:
其中,;
是pytorch中统计tensor中元素的个数,例如:
x = torch.randn(size = (1,3,4,6))
print(x.nelement())
结果为元素个数1 * 3 * 4 * 6
的函数曲线如图1所示:
当y[i]=-1时:loss越小==》x[i]越小;
当y[i]=1时:loss越小==》x[i]越大。
2、使用SoftMarginLoss进行图片二分类
2.1 数据源以及如何打标签
有10000张动物的图片,我们先手动对图片打标签,打标签的方法:图片上是猫的,该图片的标签是1,不是猫的,标签是-1。
2.2 模型训练:
2.2.1 模型搭建:
SoftMarginLoss层前面的层输出的特征图的大小必须是1*1。我们可以使用一个out_features是1的Linear层(全连接层)。
2.2.2 模型训练
输入的图片及它的标签,它的标签是1或者-1。
3、使用SoftMarginLoss进行图像分割
3.1 数据源以及如何打标签
有10000张动物的图片,图片的大小是512*512。我们先手动对图片打标签,打标签的方法:对图像上的像素点打标签,是猫的区域,每个像素点的标签是1,不是猫的区域,每个像素点的标签是-1。这样,每张图片的标签就是一个和图片同样大小一个矩阵,矩阵中的元素是1或者-1。
3.2 模型训练
3.2.1 模型搭建
SoftMarginLoss层前面的层输出的特征图的大小必须是512*512。
3.2.2 模型训练
输入一张512*512的图片,SoftMarginLoss层的输入是前一层的512*512的特征图,以及我们手动打的标签(大小也是512*512)。