神经网络从零开始:构建你的第一个全连接模型
(10) feilong.org 修订于2026-08-07 10:41:29 AI教程什么是神经网络?
神经网络是模仿人脑处理信息机制的数学模型,由多层相互连接的节点(神经元)组成。其核心思想是通过加权参数和非线性激活函数,将输入数据逐步映射到输出结果。全连接神经网络(Fully Connected Neural Network, FCN)是最基础的结构,每一层的所有神经元与前一层所有神经元相连,形成密集的拓扑关系。
全连接模型的核心概念
1. 网络架构
- 输入层:接收原始数据(如图像像素值或文本向量)。
- 隐藏层:通过加权求和与激活函数处理信息。常见激活函数包括ReLU、Sigmoid和Tanh。
- 输出层:根据任务类型选择不同结构,例如分类任务使用Softmax,回归任务直接输出数值。
2. 参数学习
通过反向传播算法最小化损失函数(如交叉熵或均方误差)。优化器(如SGD、Adam)调整权重参数,使网络逐步逼近最优解。
构建你的第一个模型
我们将使用Python和PyTorch框架实现一个简单的全连接网络,以MNIST手写数字识别为例。
步骤一:数据准备
|
1 2 3 4 5 6 7 8 9 10 11 |
import torch from torchvision import datasets, transforms 加载MNIST数据集 transform = transforms.Compose([ transforms.ToTensor(), 转换为张量 transforms.Normalize((0.5,), (0.5,)) 归一化 ]) train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform) train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=64, shuffle=True) |
步骤二:定义网络结构
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import torch.nn as nn class FullyConnectedNet(nn.Module): def init(self): super(FullyConnectedNet, self).init() 输入层(28x28像素)→ 隐藏层 → 输出层(10个类别) self.layers = nn.Sequential( nn.Flatten(), 展平输入 nn.Linear(28*28, 128), 第一隐藏层 nn.ReLU(), nn.Linear(128, 64), 第二隐藏层 nn.ReLU(), nn.Linear(64, 10) 输出层 ) def forward(self, x): return self.layers(x) |
步骤三:训练模型
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model = FullyConnectedNet().to(device) criterion = nn.CrossEntropyLoss() optimizer = torch.optim.Adam(model.parameters(), lr=0.001) 训练循环 for epoch in range(5): 迭代5次 for images, labels in train_loader: images, labels = images.to(device), labels.to(device) 前向传播 outputs = model(images) loss = criterion(outputs, labels) 反向传播 optimizer.zero_grad() loss.backward() optimizer.step() print(f"Epoch {epoch+1}, Loss: {loss.item():.4f}") |
步骤四:评估与可视化
训练完成后,可通过以下方式验证模型性能:
- 准确率计算:使用torchmetrics.Accuracy()统计预测正确率。
- 特征可视化:通过梯度加权方法(如Grad-CAM)观察网络关注的图像区域。
深入思考与扩展方向
1. 参数调优:尝试调整隐藏层维度、学习率或正则化项(如Dropout)。
2. 模型压缩:研究知识蒸馏技术,将大模型迁移至轻量级网络。
3. 分布式训练:使用PyTorch的DistributedDataParallel实现多GPU加速。
通过本教程,你已掌握构建全连接神经网络的基本流程。理解这些基础概念后,可进一步探索卷积神经网络(CNN)、循环神经网络(RNN)等复杂模型,逐步深入人工智能领域。
更新网址:https://feilong.org/building-first-fully-connected-network
最初发布:20260807 10:41:29 feilong.org 于广州
加入收藏夹,查看更方便。