注册网站域名多少钱一年检察院网站建设自查
2026/2/21 7:06:25 网站建设 项目流程
注册网站域名多少钱一年,检察院网站建设自查,运城做网站公司,全国通网站建设目录 1. 训练和测试的规范写法#xff1a;函数封装 2. 展平操作 (Flatten)#xff1a;除 Batch Size 外全部展平 3. Dropout 操作#xff1a;训练“随机”#xff0c;测试“全开” 1. 训练和测试的规范写法#xff1a;函数封装 为了保持代码整洁、可复用#xff0c;并…目录1. 训练和测试的规范写法函数封装2. 展平操作 (Flatten)除 Batch Size 外全部展平3. Dropout 操作训练“随机”测试“全开”1. 训练和测试的规范写法函数封装为了保持代码整洁、可复用并将“逻辑”与“数据”解耦标准做法是将训练和测试过程分别封装成独立的函数。核心思想无论输入是灰度图MNIST还是彩色图CIFAR-10训练和测试的函数代码逻辑是完全一样的。区别仅在于传入的dataloader数据不同和model输入层维度不同。训练函数train_loop职责负责前向传播、计算损失、反向传播更新梯度。关键代码结构def train(dataloader, model, loss_fn, optimizer): model.train() # 1. 开启训练模式 (启用 Dropout/BatchNorm) for batch, (X, y) in enumerate(dataloader): X, y X.to(device), y.to(device) # 2. 搬运数据 pred model(X) # 3. 前向传播 loss loss_fn(pred, y) # 4. 计算损失 optimizer.zero_grad() # 5. 梯度清零 loss.backward() # 6. 反向传播 optimizer.step() # 7. 更新参数测试函数test_loop职责负责评估模型性能Loss 和 Accuracy不更新参数。关键代码结构def test(dataloader, model, loss_fn): model.eval() # 1. 开启评估模式 (关闭 Dropout/锁定 BatchNorm) with torch.no_grad(): # 2. 停止梯度计算 (节省显存) for X, y in dataloader: X, y X.to(device), y.to(device) pred model(X) # ... 统计准确率和 Loss2. 展平操作 (Flatten)除 Batch Size 外全部展平全连接层Linear Layer无法接收 3D 或 4D 的图像张量只能接收 1D 的特征向量。操作逻辑保留第一个维度Batch Size将其余所有维度通道 $C$、高 $H$、宽 $W$“压扁”成一长条。维度变化输入形状[Batch_Size, Channel, Height, Width]输出形状[Batch_Size, Channel * Height * Width]代码实现通常在模型的 __init__ 中定义在 forward 中调用。self.flatten nn.Flatten() # 默认 start_dim1即从第2个维度开始展平 # 或者在 forward 中直接写: x x.view(x.size(0), -1)3. Dropout 操作训练“随机”测试“全开”Dropout 是防止过拟合的重要手段其行为受到模型模式Mode的严格控制。训练阶段 (model.train())行为按照设定的概率 p如 0.2随机丢弃部分神经元输出置 0。目的增加学习难度迫使神经元独立提取特征不依赖特定路径增强鲁棒性。注意剩余的活跃神经元数值会被放大以保持总能量守恒。测试阶段 (model.eval())行为Dropout完全关闭。所有神经元都参与计算权重全开。目的利用训练好的完整模型能力输出最稳定、最准确的预测结果。一句话总结三者关系我们在构建模型时加入 Flatten 以适配全连接层加入 Dropout 以防止过拟合在代码编写时通过封装 train (开启 Dropout) 和 test (关闭 Dropout) 函数来规范化整个流程。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询