《Pytorch深度学习实践》P6 逻辑斯蒂回归(Logistic Regression) 代码+笔记:Sigmoid函数(Logistic等)、交叉熵损失(BCE)

b站的up主刘二大人的《PyTorch深度学习实践》P6 笔记+代码,视频链接

目录

一、Sigmoid函数

1、Logistic函数(最常用Sigmoid函数)

2、 Tanh函数

3、Softsign 函数

4、Arctan 函数

二、交叉熵损失

1、二分类的交叉熵损失(Binary Cross-Entropy,简称 BCE):

2、多分类的交叉熵损失公式:

三、代码+图像+流程


一、Sigmoid函数

介绍:Sigmoid函数是一类S形的非线性激活函数,饱和型函数。下面介绍几种函数:Logistic函数、Tanh函数、Softsign 函数、Arctan 函数。在无特殊说明的时候,Sigmoid函数默认为Logistic函数。

1、Logistic函数(最常用Sigmoid函数)

公式:f(x) = \frac{1}{1 + e^{-x}}

特性:输出范围为[0,1],适合处理二分类问题,表示概率值。

函数图像:

2、 Tanh函数

公式:f(x) = \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}

特性:输出范围为[-1,1],适用于处理输入值可以是正、负的情形。

函数图像:

3、Softsign 函数

公式:f(x) = \frac{x}{1 + |x|}

特性:输出范围为(-1, 1)。Softsign在趋近于极值时变化较慢,比Tanh更平滑。

函数图像:

以下是使用 PyTorch 实现 Logistic 回归代码,包括数据准备、线性方程、激活函数损失函数、优化算法和模型可视化: ```python import torch import torch.nn as nn import torch.optim as optim import matplotlib.pyplot as plt # 准备数据 x_train = torch.randn(100, 2) y_train = torch.zeros(100) y_train[(x_train[:, 0] + x_train[:, 1]) > 0] = 1 # 定义模型 class LogisticRegression(nn.Module): def __init__(self): super(LogisticRegression, self).__init__() self.linear = nn.Linear(2, 1) self.sigmoid = nn.Sigmoid() def forward(self, x): x = self.linear(x) x = self.sigmoid(x) return x model = LogisticRegression() # 定义损失函数和优化器 criterion = nn.BCELoss() optimizer = optim.SGD(model.parameters(), lr=0.1) # 训练模型 for epoch in range(1000): optimizer.zero_grad() y_pred = model(x_train) loss = criterion(y_pred.squeeze(), y_train) loss.backward() optimizer.step() # 可视化模型 w, b = model.linear.weight.squeeze().detach().numpy(), model.linear.bias.detach().numpy() plt.scatter(x_train[:, 0], x_train[:, 1], c=y_train) x_min, x_max = plt.xlim() y_min, y_max = plt.ylim() xx, yy = torch.meshgrid(torch.linspace(x_min, x_max, 100), torch.linspace(y_min, y_max, 100)) z = model(torch.cat([xx.reshape(-1, 1), yy.reshape(-1, 1)], dim=1)).detach().numpy().reshape(xx.shape) plt.contour(xx, yy, z, levels=[0.5]) plt.plot([-b/w[0], 0], [0, -b/w[1]]) plt.show() ``` 这段代码实现了一个简单的 Logistic 回归模型,使用 PyTorch 实现。其中,数据准备部分生成了一个二维的随机数据集,并根据数据的和是否大于 0 来生成标签;模型部分定义了一个包含线性层和 Sigmoid 激活函数Logistic 回归模型;损失函数使用了二元交叉熵损失函数;优化器使用了随机梯度下降算法。在训练模型后,使用 matplotlib 库可视化了模型的决策边界。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值