from torch.optim import SGD, Adam def get_model(): """ 构建并返回一个简单的全连接神经网络模型,同时返回对应的损失函数和优化器。 该模型适用于 MNIST 手写数字分类任务(28x28 像素的灰度图)。 """ model = nn.Sequential( nn.Linear(28 * 28, 10) ).to(device) loss_fn = nn.CrossEntropyLoss() optimizer = Adam(model.parameters(), lr=1e-3) return model, loss_fn, optimizer
def get_model(): """ 构建一个多层全连接神经网络(MLP),适用于 MNIST 手写数字分类任务。 返回模型、损失函数和优化器。 """ model = nn.Sequential( nn.Linear(28 * 28, 1000), nn.ReLU(), nn.Linear(1000, 512), nn.ReLU(), nn.Linear(512, 10) ).to(device) loss_fn = nn.CrossEntropyLoss() optimizer = Adam(model.parameters(), lr=1e-3) return model, loss_fn, optimizer
从以上结果可以看出:
·当没有隐藏层时,模型无法学习数据集中的复杂模式,与一个隐藏层相比,当有两个隐藏层时,模型的过拟合会更严重。
深度神经网络意味着在输入层和输出层间存在多个隐藏层。多个隐藏层确保神经网络可以学习输入和输出之间的复杂非线性关系,而简单的神经网络则无法完成这样的需求(由于隐藏层数量有限)。
PyTorch深度学习实战(6)—神经网络性能优化技术(c)
PyTorch深度学习实战(6)—神经网络性能优化技术(b)
PyTorch深度学习实战(6)—神经网络性能优化技术(a)
PyTorch深度学习实战(5)—计算机视觉基础
PyTorch深度学习实战(4)--常用激活函数和损失函数详解
PyTorch深度学习实战(3)—使用PyTorch构建神经网络(b)
PyTorch深度学习实战(3)—使用PyTorch构建神经网络(a)
PyTorch深度学习实战(2)-PyTorch基础
示例:反向传播和梯度下降的计算过程
AI基础 | 前向传播
AI基础 | 反向传播