💻 源码
"""
演示
    搭建神经网络,这里是一个简单的全连接神经网络
这里的全连接神经网络组成:
    隐藏层1:nn.Linear(3,3),sigmoid,采用默认参数初始化
    隐藏层2:nn.Linear(3,2),relu,采用默认参数初始化
    输出层: nn.Linear(2,2),采用softmax做数据归一化

神经网络训练的一般工作流
    1.准备数据集
    2.搭建神经网络
        继承nn.Module父类
        定义__init__方法,定义网络层
        定义forward方法,实现前向传播
    3.模型训练
        前向传播
        计算损失
        梯度清零
        反向传播
        更新参数
    4.模型测试

"""
# 导包
import torch
from torch import nn
from torchsummary import summary  # 计算模型参数,查看模型结构, pip install torchsummary -i https://mirrors.aliyun.com/pypi/simple/

# 设置设备,优先级 CUDA > CPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(f"设备:{device}")

# 1.定义模型类,搭建神经网络
class MyModel(nn.Module):
    # 1.定义__init__方法,定义网络层
    def __init__(self):
        # 1.初始化父类成员
        super().__init__()
        # 2.定义网络层
        # 2.1 定义隐藏层1
        self.linear1 = nn.Linear(3,3)
        # 2.2 定义隐藏层2
        self.linear2 = nn.Linear(3,2)
        # 2.3 定义输出层
        self.linear3 = nn.Linear(2,2)
        # 3.参数初始化,一般不需要人为初始化,采用默认初始化即可

    # 2.定义forward方法,实现前向传播
    def forward(self,x):
        # x: 2D:(batch_size, 3)
        # 1.把数据输入隐藏层1
        # x = self.linear1(x)
        # # 经过sigmoid
        # x = torch.sigmoid(x)
        # 合并起来
        x = torch.sigmoid(self.linear1(x))
        # 2.把数据输入隐藏层2
        x = torch.relu(self.linear2(x))
        # 3.把数据输入输出层
        x = torch.softmax(self.linear3(x),dim=-1)   # (batch_size,2)
        # 4.返回结果
        return x

# 测试
if __name__ == '__main__':
    # 1.创建模型对象
    model = MyModel()
    print(model)
    # 迁移模型到设备,如果有CUDA设备,迁移到CUDA设备上,否则迁移到CPU设备上
    model = model.to(device)
    # 2.查看模型的参数数量
    summary(model, (3,))
    ...