PyTorch实现Logistic回归对多元高斯分布进行分类实战(附源码)

简介: PyTorch实现Logistic回归对多元高斯分布进行分类实战(附源码)

需要源码请点赞关注收藏后评论区留言~~~

Logistic常用于解决二分类问题,为了便于描述,我们分别从两个多元高斯分布中生成数据X1,X2.这两个多元高斯分布分别表示两个类别,分别设置其标签为y1,y2.

注意 后面要打乱样本和标签的顺序,将数据重新随机排列是十分重要的步骤,否则算法的每次迭代只会学习到同一个类别的信息,容易造成模型过拟合

优化算法

Logistic回归通常采用梯度下降法优化目标函数,PyTorch的torch.optim包实现了大多数常用的优化算法,使用起来非常简单,首先构建一个优化器,在构建时,首先需要将待学习的参数传入,然后传入优化器需要的参数,比如学习率等等

构造完优化器,就可以迭代的对模型进行训练,有两个步骤,其一是调用损失函数的backward()方法计算模型的梯度,然后再调用优化器的step()方法更新模型的参数,需要注意的是,首先应当调用优化器的zero_grad()方法清空参数的梯度

效果如下

可以明显的看出多元高斯分布生成的样本聚成了两个簇,并且簇的中心分别处于不同的位置,右上方簇的样本分别更加稀疏,而左下方的样本分别紧凑,读者可以自行调整代码中第5-6行的参数 观察其变化

部分源码如下

import self as self
import  torch
from cv2.ml import LogisticRegression
from torch import  nn
from matplotlib import  pyplot as plt
import  numpy as np
from torch.distributions import  MultivariateNormal
mu1=-3*torch.ones(2)
mu2=3*torch.ones(2)
sigma1=torch.eye(2)*0.5
sigma2=torch.eye(2)*2
x1=m1.sample((100,))
x2=m2.sample((100,))
y=torch.zeros((200,1))
y[100:]=1
x=torch.cat([x1,x2],dim=0)
idx=np.random.permutation(len(x))
x=x[idx]
y=y[idx]
plt.scatter(x1.numpy()[:,0],x1.numpy()[:,1])
plt.scatter(x2.numpy()[:,0],x2.numpy()[:,1])
plt.show()
D_in,D_out=2,1
linear=nn.Linear(D_in,D_out,bias=True)
output=linear(x)
print(x.shape,linear.weight.shape,linear.bias.shape,output.shape)
def my_linear(x,w,b):
    return torch.mm(x,w.t())+b
print(torch.sum((output-my_linear(x,linear.weight,linear.bias))))
sigmoid=nn.Sigmoid()
scores=sigmoid(output)
def my_sigmoid(x):
    x=1/(1+torch.exp(-x))
    return x
loss=nn.BCELoss()
loss(sigmoid(output),y)
def my_loss(x,y):
    loss=-torch.mean(torch.log(x)*y+torch.log(1-x)*(1-y))
    return loss
from torch import  optim
import torch.nn as nn
class LogisticRegression(nn.Module):
    super(LogisticRegression,self).__init__()
    self.linear=nn.Linear()
optimizer=optim.SGD(lr=0.03)
batch_size=10
iters=10
for _ in range(iters):
    for i in range(int(len(x)/batch_size)):
        input=x[i*batch_size:(i+1)*batch_size]
        target=y[i*batch_size:(i+1)*batch_size]
        optimizer.zero_grad()
        output=lr_model(input)
相关文章
|
21天前
|
机器学习/深度学习 算法 PyTorch
昇腾910-PyTorch 实现 ResNet50图像分类
本实验基于PyTorch,在昇腾平台上使用ResNet50对CIFAR10数据集进行图像分类训练。内容涵盖ResNet50的网络架构、残差模块分析及训练代码详解。通过端到端的实战讲解,帮助读者理解如何在深度学习中应用ResNet50模型,并实现高效的图像分类任务。实验包括数据预处理、模型搭建、训练与测试等环节,旨在提升模型的准确率和训练效率。
113 54
|
21天前
|
机器学习/深度学习 算法 PyTorch
PyTorch 实现MobileNetV1用于图像分类
本实验基于PyTorch和昇腾平台,详细讲解了如何使用MobileNetV1模型对CIFAR10数据集进行图像分类。内容涵盖MobileNetV1的特点、网络架构剖析(尤其是深度可分离卷积)、代码实现及训练过程。通过该实验,读者可以掌握轻量级CNN模型在移动端或嵌入式设备中的应用,并了解其在资源受限环境下的高效表现。实验包括数据预处理、模型训练与测试等环节,帮助用户快速上手并优化模型性能。
99 53
|
26天前
|
机器学习/深度学习 算法 PyTorch
昇腾910-PyTorch 实现 GoogleNet图像分类
本实验基于PyTorch在昇腾平台上实现GoogleNet模型,针对CIFAR-10数据集进行图像分类。内容涵盖GoogleNet的创新点(如Inception模块、1x1卷积、全局平均池化等)、网络架构解析及代码实战分析。通过详细讲解模型搭建、数据预处理、训练与测试过程,帮助读者掌握如何使用经典CNN模型进行高效图像分类。实验中还介绍了辅助分类器、梯度传播优化等技术细节,并提供了完整的训练和测试代码示例。
|
26天前
|
机器学习/深度学习 算法 PyTorch
昇腾910-PyTorch 实现 Alexnet图像分类
本文介绍了在昇腾平台上使用PyTorch实现AlexNet对CIFAR-10数据集进行图像分类的实战。内容涵盖AlexNet的创新点、网络架构解析及代码实现,包括ReLU激活函数、Dropout、重叠最大池化等技术的应用。实验中详细展示了如何构建模型、加载数据集、定义训练和测试模块,并通过60个epoch的训练验证模型性能。
|
2月前
|
PyTorch Shell API
Ascend Extension for PyTorch的源码解析
本文介绍了Ascend对PyTorch代码的适配过程,包括源码下载、编译步骤及常见问题,详细解析了torch-npu编译后的文件结构和三种实现昇腾NPU算子调用的方式:通过torch的register方式、定义算子方式和API重定向映射方式。这对于开发者理解和使用Ascend平台上的PyTorch具有重要指导意义。
|
4月前
|
并行计算 开发工具 异构计算
在Windows平台使用源码编译和安装PyTorch3D指定版本
【10月更文挑战第6天】在 Windows 平台上,编译和安装指定版本的 PyTorch3D 需要先安装 Python、Visual Studio Build Tools 和 CUDA(如有需要),然后通过 Git 获取源码。建议创建虚拟环境以隔离依赖,并使用 `pip` 安装所需库。最后,在源码目录下运行 `python setup.py install` 进行编译和安装。完成后即可在 Python 中导入 PyTorch3D 使用。
477 0
|
5月前
|
机器学习/深度学习 数据挖掘 TensorFlow
解锁Python数据分析新技能,TensorFlow&PyTorch双引擎驱动深度学习实战盛宴
在数据驱动时代,Python凭借简洁的语法和强大的库支持,成为数据分析与机器学习的首选语言。Pandas和NumPy是Python数据分析的基础,前者提供高效的数据处理工具,后者则支持科学计算。TensorFlow与PyTorch作为深度学习领域的两大框架,助力数据科学家构建复杂神经网络,挖掘数据深层价值。通过Python打下的坚实基础,结合TensorFlow和PyTorch的强大功能,我们能在数据科学领域探索无限可能,解决复杂问题并推动科研进步。
92 0
|
6月前
|
机器学习/深度学习 PyTorch TensorFlow
【PyTorch】PyTorch深度学习框架实战(一):实现你的第一个DNN网络
【PyTorch】PyTorch深度学习框架实战(一):实现你的第一个DNN网络
243 2
|
7月前
|
机器学习/深度学习 数据挖掘 TensorFlow
解锁Python数据分析新技能,TensorFlow&PyTorch双引擎驱动深度学习实战盛宴
【7月更文挑战第31天】在数据驱动时代,Python凭借其简洁性与强大的库支持,成为数据分析与机器学习的首选语言。**数据分析基础**从Pandas和NumPy开始,Pandas简化了数据处理和清洗,NumPy支持高效的数学运算。例如,加载并清洗CSV数据、计算总销售额等。
81 2
|
21天前
|
机器学习/深度学习 搜索推荐 PyTorch
基于昇腾用PyTorch实现传统CTR模型WideDeep网络
本文介绍了如何在昇腾平台上使用PyTorch实现经典的WideDeep网络模型,以处理推荐系统中的点击率(CTR)预测问题。
187 66