您现在的位置是:首页 >其他 >Pytorch 第三回:二分类逻辑回归模型(下)网站首页其他

Pytorch 第三回:二分类逻辑回归模型(下)

Start_Present 2026-03-02 00:01:03
简介Pytorch 第三回:二分类逻辑回归模型(下)

Pytorch 第三回:二分类逻辑回归模型(下)

接着深度学习第三回,基于Pytorch的二分类逻辑回归模型的叙述。在接下来的内容中,本人将继续以logistic回归模型为样例,继续分享深度学习知识。
本次学习,借助的平台是PyCharm 2024.1.3,python版本3.11 numpy版本是1.26.4,pytorch版本2.0.0+cu118


前言

书接上文,对于logistic回归模型的内容,上回已经分享的差不多了,分类效果如下图所示。这次内容安排点啥呢,既然还是讲解logistic回归模型,那肯定要和logistic回归有关。闲言少叙,这次呢我打算讲解一下如何提升训练效率。
在这里插入图片描述

一、Pytorch 自带的 loss函数

为方便用户使用,Pytorch准备了一些常用的loss函数。PyTorch自带loss函数通常与优化器一起使用,优化器可以不断调整模型的参数,进而降低loss值,提高模型的稳定性和效率。除此之外,自带loss函数采用C++语言进行编写,在命令执行上,速度更快更稳定。如果想了解详细内容,可以去Pytorch官网查看。使用代码如下:

# 引用损失函数
F_loss=	nn.BCEWithLogitsLoss()
# 计算loss值
loss = F_loss(y_pred, y_data) 

二、时间对比

1.导入time库

import time

导入time库后,就可以使用time.time()来获取当前时间戳,其单位为s。两个时间戳之差就是所耗用的时间。

time1 = time.time()
total_time = time.time() - time1
print('total	Time:	{:.3f}	s'.format(total_time))

2.消耗时间对比

logistic模型如下:

def logistic_regression(x):
    return F.sigmoid(torch.mm(x, a) + b)

版本1损失函数:

def Classified_loss(y_pred, y):
    logits = -1*(y * y_pred.clamp(1e-12).log() + (1 - y) * (1 - y_pred).clamp(1e-12).log()).mean()
    return logits

1000次的迭代循环耗时:

epoch:	200,	Loss:	0.37917,	Acc:	0.92000
epoch:	400,	Loss:	0.30874,	Acc:	0.90000
epoch:	600,	Loss:	0.27802,	Acc:	0.90000
epoch:	800,	Loss:	0.26062,	Acc:	0.90000
epoch:	1000,	Loss:	0.24937,	Acc:	0.89000
total	Time:	1.399	s

版本2损失函数:

F_loss = nn.BCEWithLogitsLoss()

1000次的迭代循环耗时:

epoch:	200,	Loss:	0.64316,	Acc:	0.85000
epoch:	400,	Loss:	0.61398,	Acc:	0.87000
epoch:	600,	Loss:	0.59503,	Acc:	0.85000
epoch:	800,	Loss:	0.58243,	Acc:	0.87000
epoch:	1000,	Loss:	0.57358,	Acc:	0.88000
total	Time:	1.049	s

小节

1.从迭代1000次程序所消耗的时间来看,采用版本二(pytorch自带的)损失函数时,训练耗时较短。

2.从迭代1000次程序所训练的精度来看,采用版本二(pytorch自带的)损失函数时,精确度较高。

3 从迭代1000次程序所得出的损失值来看,版本1的损失值较低,但是两者的获取方式不同。因此,我个人看来比较这个参数,意义不大。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。