# 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("✅ 神经网络模型验证成功!")