深度学习笔记-逻辑回归的构建

得到数据→→构建模型→→模型实例化,选择优化器,选择损失函数→→进行epoch

解惑:特征和标签:

特征的数量和类型是由你根据具体问题和数据集的需要来确定的。特征是用来描述每个样本的属性或特点,它们在机器学习模型中用于进行预测或分类。特征的选择对模型的性能有重要影响。

一些常见的特征选择示例:

  1. 天气预测

    • 特征可能包括气温、湿度、风速、前一天的天气等。
    • 样本可能是按小时或按天收集的气象数据。
    • 这些特征用于预测未来的天气状况,如晴天、下雨或下雪。
  2. 银行贷款审批

    • 特征可能包括信用评分、年收入、负债情况、就业历史等。
    • 每个样本可能是一个贷款申请者的财务记录。
    • 这些特征用于决定是否批准贷款。
  3. 手写数字识别(如MNIST数据集)

    • 特征是图片中的每个像素值。
    • 每个样本是一个数字的手写图像。
    • 这些特征用于识别图像中的数字(0到9)。
  4. 社交媒体情感分析

    • 特征可能包括文本中的单词、短语、标点符号的使用、使用频率等。
    • 每个样本可能是一条社交媒体帖子或评论。
    • 这些特征用于判断帖子的情绪(正面、中性或负面)

也就是说特征是筛选值,标签是结果

import torch
import torch.nn as nn
import torch.optim as optim

# 初始化数据
x_train = torch.rand([20, 1], dtype=torch.float)
y_train = torch.randint(0, 2, (20, 1), dtype=torch.float)

"""!!犯错点1:y_train也需要torch.float型来和x_train同步"""


# 定义逻辑回归类
class LogisticRegressionModel(nn.Module):
    def __init__(self):
        super(LogisticRegressionModel, self).__init__()
        self.Linear = nn.Linear(1, 1)

"""!!犯错点2:nn.Linear()中需要参数来确定输入和输出,同时要记得继承时需要super()函数来确定引用的对象"""

    def forward(self, x):
        y_pred = torch.sigmoid(self.Linear(x))
        return y_pred


# 实例化模型,确定优化器参数
model = LogisticRegressionModel()

"""!!犯错点3:实例化时,类LogisticRegressionModel需要一个括号来接收参数"""

# 损失函数构建
# Binary Cross Entropy Loss;
# 在使用 BCELoss 之前,确保模型的输出层使用了 Sigmoid 激活函数,将输出限制在 0 和 1 之间。
# 如果您的模型的输出层没有 Sigmoid 激活,并且您想将 Sigmoid 和 BCELoss 结合在一起,可以使用 BCEWithLoginsLoss,这个损失函数结合了 Sigmoid 激活和 BCELoss,且在数值上更稳定。
criterion = nn.BCELoss()

# 设置优化器,选择梯度下降法优化,SGD里的参数是model.parameters()所返回的所有参数,同时设置学习率为0.1
optimizer = optim.SGD(model.parameters(), lr=0.1)

"""!!犯错点4:优化器SGD需要接受模型的参数和学习率"""

# 设置世代
epoch = 100

for epochs in range(epoch):

    # 前向传播
    y_pred = model(x_train)

"""!!犯错点5:model此时已被实例化,因此只需要接受x_train就可以自然地完成前向传播"""

    # 计算损失
    loss = criterion(y_pred, y_train)

    # 梯度下降
    optimizer.zero_grad()
    loss.backward() 

"""!!犯错点6:反向传播是用损失函数来完成的,因此是在loss函数里,梯度清零是优化器能够提供函数完成的"""


    optimizer.step()

    print(f'epoch:{epochs},loss:{loss}')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Zack Wesson

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

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

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

打赏作者

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

抵扣说明:

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

余额充值