iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Pytorch实现逻辑回归分类
  • 490
分享到

Pytorch实现逻辑回归分类

2024-04-02 19:04:59 490人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

本文实例为大家分享了PyTorch实现逻辑回归分类的具体代码,供大家参考,具体内容如下 1、代码实现 步骤: 1.获得数据2.建立逻辑回归模型3.定义损失函数4.计算损失函数5.求解

本文实例为大家分享了PyTorch实现逻辑回归分类的具体代码,供大家参考,具体内容如下

1、代码实现

步骤:

1.获得数据
2.建立逻辑回归模型
3.定义损失函数
4.计算损失函数
5.求解梯度
6.梯度更新
7.预测测试

import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
from torch.autograd import Variable
import torchvision.datasets as dataset
import torchvision.transfORMs as transforms
from torch.utils.data import DataLoader

input_size = 784  # 输入到逻辑回归模型中的输入大小
num_classes = 10  # 分类的类别个数
num_epochs = 10  # 迭代次数
batch_size = 50  # 批量训练个数
learning_rate = 0.01  # 学习率


# 下载训练数据和测试数据
train_dataset = dataset.MNIST(root='./data', train=True, transform=transforms.ToTensor(), download=True)
test_dataset = dataset.MNIST(root='./data',train=False, transform=transforms.ToTensor)

# 使用DataLoader形成批处理文件
train_loader = DataLoader(dataset=train_dataset, batch_size=batch_size, shuffle=True)
test_loader = DataLoader(dataset=test_dataset, batch_size=batch_size, shuffle=False)

# 创建逻辑回归类模型  (sigmoid(wx+b))
class LoGISticRegression(nn.Module):
    def __init__(self,input_size,num_classes):
        super(LogisticRegression,self).__init__()
        self.linear = nn.Linear(input_size,num_classes)
        self.sigmoid = nn.Sigmoid()

    def forward(self, x):
        out = self.linear(x)
        out = self.sigmoid(out)
        return out

# 设定模型参数
model = LogisticRegression(input_size, num_classes)
# 定义损失函数,分类任务,使用交叉熵
criterion = nn.CrossEntropyLoss()
# 优化算法,随机梯度下降,lr为学习率,获得模型需要更新的参数值
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)


# 使用训练数据训练模型
for epoch in range(num_epochs):
    # 批量数据进行模型训练
    for i, (images, labels) in enumerate(train_loader):
        # 需要将数据转换为张量Variable
        images = Variable(images.view(-1, 28*28))
        labels = Variable(labels)
        
        # 梯度更新前需要进行梯度清零
        optimizer.zero_grad()

        # 获得模型的训练数据结果
        outputs = model(images)
        
        # 计算损失函数用于计算梯度
        loss = criterion(outputs, labels)

        # 计算梯度
        loss.backward()
    
        # 进行梯度更新
        optimizer.step()

        # 每隔一段时间输出一个训练结果
        if (i+1) % 100 == 0:
            print('Epoch:[%d %d], Step:[%d/%d], Loss: %.4f' % (epoch+1,num_epochs,i+1,len(train_dataset)//batch_size,loss.item()))

# 训练好的模型预测测试数据集
correct = 0
total = 0
for images, labels in test_loader:
    images = Variable(images.view(-1, 28*28))  # 形式为(batch_size,28*28)
    outputs = model(images)
    _,predicts = torch.max(outputs.data,1)  # _输出的是最大概率的值,predicts输出的是最大概率值所在位置,max()函数中的1表示维度,意思是计算某一行的最大值
    total += labels.size(0)
    correct += (predicts==labels).sum()

print('Accuracy of the model on the 10000 test images: %d %%' % (100 * correct / total))

2、踩过的坑

1.在代码中下载训练数据和测试数据的时候,两段代码是有区别的:

train_dataset = dataset.MNIST(root='./data', train=True, transform=transforms.ToTensor(), download=True)
test_dataset = dataset.MNIST(root='./data',train=False, transform=transforms.ToTensor)

第一段代码中多了一个download=True,这个的作用是,如果为True,则从Internet下载数据集并将其存放在根目录中。如果数据已经下载,则不会再次下载。

在第二段代码中没有加download=True,加了的话在使用测试数据进行预测的时候会报错。

代码中transform=transforms.ToTensor()的作用是将PIL图像转换为Tensor,同时已经进行归一化处理。

2.代码中设置损失函数:

criterion = nn.CrossEntropyLoss()
loss = criterion(outputs, labels)

一开始的时候直接使用:

loss = nn.CrossEntropyLoss()
loss = loss(outputs, labels)

这样也会报错,因此需要将loss改为criterion。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Pytorch实现逻辑回归分类

本文链接: https://www.lsjlt.com/news/119725.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Pytorch实现逻辑回归分类
    本文实例为大家分享了Pytorch实现逻辑回归分类的具体代码,供大家参考,具体内容如下 1、代码实现 步骤: 1.获得数据2.建立逻辑回归模型3.定义损失函数4.计算损失函数5.求解...
    99+
    2022-11-11
  • pytorch实现逻辑回归
    本文实例为大家分享了pytorch实现逻辑回归的具体代码,供大家参考,具体内容如下 一、pytorch实现逻辑回归 逻辑回归是非常经典的分类算法,是用于分类任务,如垃圾分类任务,情感...
    99+
    2022-11-12
  • 基于Pytorch实现逻辑回归
    本文实例为大家分享了Pytorch实现逻辑回归的具体代码,供大家参考,具体内容如下 1.逻辑回归  线性回归表面上看是“回归问题”,实际上处理的问题...
    99+
    2022-11-11
  • pytorch使用nn.Moudle实现逻辑回归
    本文实例为大家分享了pytorch使用nn.Moudle实现逻辑回归的具体代码,供大家参考,具体内容如下 内容 pytorch使用nn.Moudle实现逻辑回归 问题 loss下降不...
    99+
    2022-11-11
  • pytorch逻辑回归实现步骤详解
    目录1. 导入库2. 定义数据集2.1 生成数据2.2 设置label3. 搭建网络+优化器4. 训练5. 绘制决策边界6. 代码1. 导入库 机器学习的任务分为两大类:分类和回归 ...
    99+
    2022-11-11
  • PyTorch实现多维度特征输入逻辑回归
    目录一、实现过程1、准备数据2、设计模型4、训练过程5、结果展示二、参考文献一、实现过程 1、准备数据 本文数据采取文献[1]给出的数据集,该数据集前8列为特征,最后1列为标签(0/...
    99+
    2022-11-13
  • Logistic回归(逻辑回归)及python代码实现
    文章目录 Logistic(Logistic Regression,LR)回归原理讲解参数计算 python代码实现生成数据集不使用其他库实现定义激活函数(标准Logistic函数即Sig...
    99+
    2023-10-24
    回归 逻辑回归 人工智能 python 机器学习 分类
  • 基于numpy实现逻辑回归
    本文实例为大家分享了基于numpy实现逻辑回归的具体代码,供大家参考,具体内容如下 交叉熵损失函数;sigmoid激励函数基于numpy的逻辑回归的程序如下: import num...
    99+
    2022-11-11
  • Python实现逻辑回归(Logistic Regression)
    💥 项目专栏:【Python实现经典机器学习算法】附代码+原理介绍 文章目录 前言一、基于原生Python实现逻辑回归算法二、逻辑回归模型的算法原理三、算法实现3.1 ...
    99+
    2023-08-31
    python 逻辑回归 机器学习 人工智能 sklearn 原力计划
  • PyTorch零基础入门之逻辑斯蒂回归
    目录学习总结一、sigmoid函数二、和Linear的区别三、逻辑斯蒂回归(分类)PyTorch实现Reference学习总结 (1)和上一讲的模型训练是类似的,只是在线性模型的基础...
    99+
    2022-11-12
  • Python垃圾邮件的逻辑回归分类示例分析
    这篇文章主要介绍“Python垃圾邮件的逻辑回归分类示例分析”,在日常操作中,相信很多人在Python垃圾邮件的逻辑回归分类示例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python垃圾邮件的逻辑回归...
    99+
    2023-06-21
  • python实现逻辑回归的方法示例
    本文实现的原理很简单,优化方法是用的梯度下降。后面有测试结果。 先来看看实现的示例代码: # coding=utf-8 from math import exp import matplotlib.p...
    99+
    2022-06-04
    示例 逻辑 方法
  • Python垃圾邮件的逻辑回归分类示例详解
     加载垃圾邮件数据集spambase.csv(数据集基本信息:样本数: 4601,特征数量: 57, 类别: 1 为垃圾邮件,0 为非垃圾邮件),阅读并理解数据。 按以下要求处理数据...
    99+
    2022-11-12
  • R语言逻辑回归的示例分析
    这篇文章主要介绍R语言逻辑回归的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!逻辑回归> ###############逻辑回归> setwd("/Users/yao...
    99+
    2023-06-14
  • python实现梯度下降求解逻辑回归
    本文实例为大家分享了python实现梯度下降求解逻辑回归的具体代码,供大家参考,具体内容如下 对比线性回归理解逻辑回归,主要包含回归函数,似然函数,梯度下降求解及代码实现 线性回归 ...
    99+
    2022-11-11
  • python的numpy模块实现逻辑回归模型
    使用python的numpy模块实现逻辑回归模型的代码,供大家参考,具体内容如下 使用了numpy模块,pandas模块,matplotlib模块 1.初始化参数 def initi...
    99+
    2022-11-11
  • 怎么在R语言中实现逻辑回归
    怎么在R语言中实现逻辑回归?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。什么是R语言R语言是用于统计分析、绘图的语言和操作环境,属于GNU系统的一个自由、免费、源代码开放的...
    99+
    2023-06-14
  • python回归分析逻辑斯蒂模型之多分类任务详解
    目录逻辑斯蒂回归模型多分类任务1.ovr策略2.one vs one策略3.softmax策略逻辑斯蒂回归模型多分类案例实现逻辑斯蒂回归模型多分类任务 上节中,我们使用逻辑斯蒂回归完...
    99+
    2022-11-11
  • python中逻辑回归限制的示例分析
    这篇文章主要为大家展示了“python中逻辑回归限制的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python中逻辑回归限制的示例分析”这篇文章吧。1.逻辑回归的限制逻辑回归分类的时候...
    99+
    2023-06-25
  • 机器学习实战:Python基于Logistic逻辑回归进行分类预测(一)
    目录 1 前言1.1 Logistic回归的介绍1.2 Logistic回归的应用 2 iris数据集数据处理2.1 导入函数2.2 导入数据2.3 简单数据查看 3 可视化3.1...
    99+
    2023-09-26
    python 回归
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作