您现在的位置是:首页 >其他 >Pytorch 第三回:二分类逻辑回归模型(下)网站首页其他
Pytorch 第三回:二分类逻辑回归模型(下)
简介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的损失值较低,但是两者的获取方式不同。因此,我个人看来比较这个参数,意义不大。
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。





QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
U8W/U8W-Mini使用与常见问题解决
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结