AI深度学习/PyTorch/神经网络相关

3 阅读2分钟
# AI深度学习/PyTorch/神经网络相关   龙文浩 工程师的学术研究 2026/4/5
"""
    搭建神经网络步骤:
        1. 继承torch.nn.Module
        2. 实现函数:
            2.1 __init__函数
                2.1.1 初始化父类
                2.2.2 设置属性值
                2.2.3 定义神经网络结构,隐藏层、输出层
                2.2.4 初始化参数,权重w、偏置b
            2.2 forward前向传播函数
                2.2.1 将数据传入神经网络模型
                2.2.2 对模型进行训练,即前向传播过程
"""
import torch.nn as nn
import torch
class LwhModel(nn.Module):
    def __init__(self):
        # 2.1.1 初始化父类(必须),含环境配置
        super().__init__()
        # 2.2.2 设置属性值(可选)
        # 2.2.3 定义神经网络结构,隐藏层、输出层(必须)
        # 2.2.3.1 定义隐藏层(in_features=上一层神经元的个数,out_features本层神经元的个数,Linear为线性回归求和)
        self.linear1 = nn.Linear(in_features=3,out_features=3)
        self.linear2 = nn.Linear(in_features=3,out_features=2)
        # 2.2.3.2 定义输出层
        self.output = nn.Linear(in_features=2,out_features=2)
        # 2.2.4 初始化参数,权重w、偏置b
        # 2.2.4.1 linear1隐藏层参数初始化:权重weight、偏置bias
        nn.init.xavier_normal_(self.linear1.weight)
        nn.init.zeros_(self.linear1.bias)
        # 2.2.4.2 linear2隐藏层参数初始化:权重weight、偏置bias
        nn.init.kaiming_normal_(self.linear2.weight)
        nn.init.zeros_(self.linear2.bias)
    def forward(self,data):
        # 2.2前向传播:将张量送入神经网络结构中,模型训练后,得到预测值
        # 2.2.1 经过linear1隐藏层:先进行线性回归求和self.linear1(data)、再将线性回归求和的输出,输入给激活函数torch.sigmoid
        data = torch.sigmoid(self.linear1(data))
        # 2.2.2 经过linear2隐藏层:先进行线性回归求和self.linear2(data)、再将线性回归求和的输出。输入给激活函数torch.ReLU
        data = torch.relu(self.linear2(data))
        # 2.2.3 经过输出层:先进行输出层selt.output,设置dim=-1仅对最后一个维度数据统计,输入给激活函数torch.softmax多分类。
        return torch.softmax(self.output(data), dim=-1)
# 验证神经网络模型
if __name__ == '__main__':
    # 1.创建模型实例
    model = LwhModel()
    # 2.验证神经网络是否搭建正确
    print(f"模型结构{model}")
    # 3.构造输入数据,输入形状[batch_size, in_features] → [1,3] 表示1个样本,3个特征
    input_data = torch.tensor([[0.5, 0.6, 0.7]], dtype=torch.float32)
    # 4.前向传播,推理预测
    output = model(input_data)
    # 5.输出结果,softmax输出 → 类别概率
    print(f"输入输入:{input_data},模型输出:{output},输出形状:{output.shape},输出和为1验证softmax:{output.sum().item()}")
    # 6.获取预测类别
    pred_class = torch.argmax(output, dim=-1)
    print(f"预测类别:{pred_class.item()}")
    print("✅ 神经网络模型验证成功!")