欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

pytorch中的loss函数(2):SoftMarginLoss

程序员文章站 2022-03-27 10:21:28
...

1、SoftMarginLoss原理

SoftMarginLoss针对 two-class classification(二分类)问题。

loss计算公式:

pytorch中的loss函数(2):SoftMarginLoss

其中,pytorch中的loss函数(2):SoftMarginLoss

pytorch中的loss函数(2):SoftMarginLoss是pytorch中统计tensor中元素的个数,例如:

x = torch.randn(size = (1,3,4,6)) 

print(x.nelement())

结果为元素个数1 * 3 * 4 * 6

pytorch中的loss函数(2):SoftMarginLoss的函数曲线如图1所示:

pytorch中的loss函数(2):SoftMarginLoss

当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)。