首页 > 其他分享 >多维度特征输入-刘二大人

多维度特征输入-刘二大人

时间:2025-01-18 23:00:21浏览次数:3  
标签:torch 刘二 nn sigmoid 梯度 self 多维度 ReLU 输入

代码

import torch

# 1. 定义模型
class Model(torch.nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.linear1 = torch.nn.Linear(8, 6)
        self.linear2 = torch.nn.Linear(6, 4)
        self.linear3 = torch.nn.Linear(4, 1)
        self.sigmoid = torch.nn.Sigmoid()
    #可以替换为self.sigmoid = torch.nn.ReLU()
    def forward(self, x):
        x = self.sigmoid(self.linear1(x))
        x = self.sigmoid(self.linear2(x))
        x = self.sigmoid(self.linear3(x))
        return x

# 2. 实例化模型
model = Model()

# 3. 准备数据
# 假设输入是一个随机生成的 N×8 的张量,标签是 N×1 的二分类数据
x_data = torch.randn(10, 8)  # 10个样本,每个样本8个特征
y_data = torch.randint(0, 2, (10, 1)).float()  # 二分类标签

# 4. 定义损失函数
criterion = torch.nn.BCELoss()  # 二分类交叉熵损失函数

# 5. 定义优化器
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)  # 随机梯度下降优化器,学习率为0.1

# 6. 训练循环
num_epochs = 100  # 设置训练轮数
for epoch in range(num_epochs):
    # 前向传播:计算预测值
    y_pred = model(x_data)
    
    # 计算损失
    loss = criterion(y_pred, y_data)
    
    # 反向传播:计算梯度
    optimizer.zero_grad()  # 清空梯度
    loss.backward()  # 计算梯度
    
    # 更新权重
    optimizer.step()  # 使用梯度更新参数
    
    # 打印损失(每10轮)
    if (epoch + 1) % 10 == 0:
        print(f'Epoch [{epoch + 1}/{num_epochs}], Loss: {loss.item():.4f}')

问题

1为什么网络的设计中使用多层结构,而不是直接从输入到输出的单层映射?

  • 通过引入中间隐藏层(例如从输入8维到输出1维之间加入6维和4维隐藏层),模型可以逐步提取更加抽象和有用的特征。这些特征在分类或回归任务中往往能提高模型性能。
  • 多层结构允许模型有能力更好地逼近复杂函数,从而更精确地映射输入到输出。

2.forward函数中不同变量怎样写,为什么写为同一变量?

  • 将每次线性变换和激活函数的结果存回 x,可以使代码更简洁,不需要每一层都声明新的变量
  • 将每一层的输出显式赋值到不同的变量
O1 = self.sigmoid(self.linear1(x))
O2 = self.sigmoid(self.linear2(O1))
output = self.sigmoid(self.linear3(O2))

3.特征提取是如何完成的?是否可以观察特征?

  • 特征提取完全由网络中的权重和偏置参数决定,这些参数通过反向传播算法自动优化。因此,特征是机器通过训练数据“自己学到的”,没有明确的人工指定。
O1 = self.sigmoid(self.linear1(x))
print(O1)  # 查看第一层提取的特征
O2 = self.sigmoid(self.linear2(O1))
print(O2)  # 查看第二层提取的特征

4.使用 ReLU 替代 Sigmoid,性能有什么差异?
Sigmoid:

  • 在输入值较大或较小时(正负饱和区间),函数的导数接近于 0,导致梯度消失,使得反向传播中的权重更新非常慢。
  • 影响:训练深层网络时,学习速度减慢,难以捕捉复杂特征。

低层特征(简单特征):
在图像中:边缘、角点等局部特征。
在时间序列中:简单的上升趋势或周期性变化。
在文本中:单个词语或简单的句法结构。
高层特征(复杂特征):
通过多层网络,简单特征逐步组合成更高级的模式。
在图像中:完整的形状或对象。
在时间序列中:复杂的模式或行为。
在文本中:语义关系或句子意义。

ReLU:f(x)=max(0,x)

相关文章

  • 企业项目管理工具选择:多维度评估,精准决策
    企业在选择适合自己的项目管理工具时,需要考虑多个因素以确保所选工具能够满足企业的具体需求和目标。以下是一些建议的步骤和考虑因素:一、明确需求●梳理业务:企业需要梳理自己的业务,明确项目类型、规模、复杂度以及参与人员等。●需求分析:基于业务梳理,进行需求分析,确定项目......
  • vim内部输入中文乱码
    在Vim中输入中文时遇到乱码问题,通常是由于字符编码设置不正确或终端配置不当引起的。确保Vim和操作系统都使用相同的UTF-8编码。检查系统环境变量:确认您的系统设置了正确的LANG或LC_ALL环境变量为UTF-8。可以在命令行中运行echo$LANG来查看当前的语言环境。如果它不是以.utf8......
  • LLM大模型实践12-评估输入—分类
    简介本章聚焦评估输入任务的重要性,其对系统质量与安全性意义重大。处理多种独立指令集任务时,先对查询类型分类,再据此确定所用指令,好处众多。实现方式是定义固定类别,硬编码特定类别任务相关指令。比如构建客户服务助手,查询类型分类及指令确定尤为关键:用户要求关闭账户,二级......
  • LLM大模型实践14-处理输入-思维链推理
    语言模型在回答问题时匆忙下结论易在推理链中出错,“思维链推理”策略要求语言模型先给出相关推理步骤、深度思考后再给答案,更接近人类解题思维。此方法能减少语言模型匆忙犯错,生成更准确可靠的响应,是提升回答质量的重要策略。本章将探讨如何处理语言模型输入以生成高质量输出,......
  • 验证表单输入:单选钮
    问题希望确保从一组单选钮选择了一个合法的单选钮。解决方案使用一个值数组来生成菜单。然后验证这个输入,检查所提交的值在这个数组中。使用array_key_exists()来完成验证。//生成单选钮$choices=array('eggs'=>'Eggs','toast'=>'Toast','coffee'=>'Coffee');echo......
  • GPIO通用输入输出
    1、GPIO:I/O口,8种输入输出模式,引脚电平0-3.3V,带FT的可以容忍5V2、输入模式可读取端口的高低电平:读取按键输入、外接模块电平信号,ADC电压采集,模拟通信协议接收数据3、输出模式可以控制端口输出高低电平,驱动LED,控制蜂鸣器,模拟通信协议输出时序;3、GPIO构造:(寄存器的低16位对应端......
  • JS — 输入与输出
    输入与输出输入:从HTML与用户的交互中输入信息,例如通过input、textarea等标签获取用户的键盘输入,通过click、hover等事件获取用户的鼠标输入。例如:<body>输入:<textareaclass="input"name=""id=""cols="30"rows="10"></textarea><......
  • HTML5怎么为输入框添加语音输入的功能呢?
    在HTML5中,你可以使用WebSpeechAPI中的webkitSpeechRecognition接口来实现语音输入的功能。然而,需要注意的是,这个API目前主要是WebKit浏览器(如Chrome和Safari)支持,并且它的前缀webkit也暗示了这一点。此外,这个API在未来的浏览器中可能会被更改或移除,所以在生产环境中使用时需要谨......
  • (四)C语言基础学习(3):深入理解输入输出函数、数据类型的格式控制与流程控制
    一、标准输入输出函数1.字符输入输出:getchar和putchar这两个函数是最基本的输入输出函数,用于单个字符的读取和显示。intgetchar(void);//从键盘获取一个字符intputchar(intc);//向终端输出一个字符示例:charch=getchar();//读取一个字符putchar(ch);......
  • 30天开发操作系统 第 14 天 -- 高分辨率及键盘输入
    前言从着手“自制操作系统”到现在,不知不觉间已经过去2周了。有的读者朋友读到这里,可能已经花了更长的时间;也有的朋友,经过努力也可能只用了一周左右就读到了这里。开发个操作系统需要些必备知识,像编程语言的知识,相关算法和技巧等。到现在为止,这些知识的介绍就......