第三次作业——autograd与逻辑回归

本文探讨了逻辑回归模型如何应用于二分类问题,通过调整数据集的mean_value和bias,观察模型训练的效果变化。揭示了不同数据分布下逻辑回归的表现,以及bias对数据整体位置的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 逻辑回归模型为什么可以进行二分类?

  • 逻辑回归的表达式为:
    y=f(WX+b)y = f(WX + b)y=f(WX+b)
    f(x)=11+e−xf(x) = \frac{1}{1 + e^{-x}}f(x)=1+ex1
    该函数的作用是将输入的数据映射到0至1之间,恰恰处于概率取值区间,只需要设置一个阈值,输出y就可以用于解决二分类问题。
    在这里插入图片描述

2. 采用代码实现逻辑回归模型的训练,并尝试调整数据生成中的mean_value,将mean_value设置为更小的值,例如1,或者更大的值,例如5,会出现什么情况?再尝试仅调整bias,将bias调为更大或者负数,模型训练过程是怎么样的?

当mean_value=1时,正负样本数据较差较多,采用二分类的逻辑回归模型无法达到很高(99%)的准确度。
在这里插入图片描述
当mean_value=5时,正负样本有非常明显的边界,逻辑回归模型很容易就能将两类样本分开。
在这里插入图片描述
调整bias的大小,数据的整体位置会发生偏移。
bias=-10
在这里插入图片描述
bias=5
在这里插入图片描述
但是当我们继续增加bias的大小时,会发现,无论我们训练多少次,模型也无法将正负样本分开,这是因为随着bias的增大,sigmoid函数在进行反向传播时,梯度接近于0,这时无论迭代多少次,参数都不会更新,这也是为什么需要将数据进行归一化的原因
在这里插入图片描述

### 如何开始使用 PyTorch 进行深度学习编程 要开始使用 PyTorch 进行深度学习编程,可以从以下几个方面入手: #### 1. 安装环境配置 首先需要确保计算机上已经安装了 Python 和必要的依赖项。接着可以按照官方文档中的说明来安装 PyTorch 库。PyTorch 支持多种操作系统以及 CPU/GPU 的不同组合,因此可以根据具体需求选择合适的版本进行安装[^3]。 对于 Linux 用户来说,可以通过 pip 或 conda 来完成安装;而对于 Windows 用户,则推荐通过 Anaconda 发行版来进行管理以便更好地兼容 CUDA 驱动程序和支持 GPU 加速的功能。 ```bash # 使用pip安装最新稳定版(适用于大多数情况) pip install torch torchvision torchaudio --upgrade ``` #### 2. 学习基础知识 了解张量(tensor)的概念及其操作方法是非常重要的一步,因为几乎所有的计算都会涉及到它们。例如创建、索引/切片、重塑(resizing),还有像加法乘法这样的算术运算等基本技能都需要掌握好[^4]。 此外还需要熟悉自动微分机制(Autograd system),这是实现反向传播算法的核心部分之一,在训练模型过程中自动生成梯度信息从而简化开发流程并提高效率[^1]。 #### 3. 实践项目练习 理论知识固然重要,但是动手实践才是快速进步的关键所在。可以从简单的线性回归或者逻辑回归问题开始尝试构建自己的第一个神经网络模型,并逐步过渡到更复杂的任务比如图片分类(CNNs)或者是时间序列预测(RNN/LSTM)。 书中提供了丰富的案例分析和完整的代码示例供读者模仿学习,涵盖了从基础概念介绍直到高级主题探讨等多个层次的内容安排合理有序便于循序渐进地深入理解各个知识点之间的联系。 #### 4. 参考资料查阅 当遇到困难时不要忘记利用社区资源寻求帮助。除了官方文档之外还有很多优秀的博客文章视频教程可供参考借鉴。同时加入一些讨论小组也能让自己保持更新状态随时获取最新的技术动态和发展趋势[^2]。 --- ### 示例代码:定义一个简单的全连接层神经网络 下面展示了一个非常基础的例子——如何用 PyTorch 创建一个多层感知机(MLP),该网络接受二维输入并通过两层隐藏单元最终输出单值结果。 ```python import torch from torch import nn class SimpleNet(nn.Module): def __init__(self): super(SimpleNet, self).__init__() self.fc1 = nn.Linear(in_features=2, out_features=50) # 输入维度 -> 中间维度 self.relu = nn.ReLU() self.fc2 = nn.Linear(in_features=50, out_features=1) # 中间维度 -> 输出维度 def forward(self, x): x = self.fc1(x) x = self.relu(x) x = self.fc2(x) return x model = SimpleNet() print(model) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aidanmomo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值