深度学习项目训练环境代码实例:train.py与val.py修改要点+终端输出结果解析

张开发
2026/4/4 20:33:25 15 分钟阅读
深度学习项目训练环境代码实例:train.py与val.py修改要点+终端输出结果解析
深度学习项目训练环境代码实例train.py与val.py修改要点终端输出结果解析1. 环境准备与快速上手深度学习项目训练环境的搭建往往是让初学者头疼的第一步。本镜像基于深度学习项目改进与实战专栏已经预装了完整的开发环境让你免去繁琐的环境配置过程。核心环境配置PyTorch 1.13.0 CUDA 11.6Python 3.10.0常用深度学习库torchvision、torchaudio、OpenCV、NumPy等启动环境后首先需要激活conda环境conda activate dl然后切换到你的工作目录cd /root/workspace/你的项目文件夹2. train.py文件修改要点2.1 数据集路径配置在train.py中最重要的修改是正确设置数据集路径。通常需要修改以下几个关键参数# 数据集路径设置 data_dir /root/workspace/your_dataset # 修改为你的数据集路径 train_dir os.path.join(data_dir, train) val_dir os.path.join(data_dir, val) # 训练参数调整 batch_size 32 # 根据GPU内存调整 num_epochs 50 # 训练轮数 learning_rate 0.001 # 学习率2.2 模型选择与配置根据你的任务需求选择合适的模型# 模型选择示例 model models.resnet50(pretrainedTrue) # 使用预训练的ResNet50 num_ftrs model.fc.in_features model.fc nn.Linear(num_ftrs, num_classes) # 修改最后一层适配你的分类数 # 或者使用其他模型 # model models.vgg16(pretrainedTrue) # model models.efficientnet_b0(pretrainedTrue)2.3 训练参数优化调整训练参数以适应你的硬件和数据集# 优化器选择 optimizer optim.Adam(model.parameters(), lrlearning_rate, weight_decay1e-4) # 学习率调度器 scheduler optim.lr_scheduler.StepLR(optimizer, step_size30, gamma0.1) # 损失函数 criterion nn.CrossEntropyLoss()3. val.py文件修改要点3.1 验证集路径设置验证脚本需要正确指向你的验证数据集# 验证集路径 val_data_dir /root/workspace/your_dataset/val # 修改为你的验证集路径 # 加载训练好的模型 model_path /root/workspace/checkpoints/best_model.pth # 修改为你的模型路径 model.load_state_dict(torch.load(model_path)) model.eval() # 设置为评估模式3.2 验证参数配置调整验证过程中的参数# 验证批大小 val_batch_size 32 # 数据预处理需要与训练时保持一致 val_transform transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ])4. 终端输出结果解析4.1 训练过程输出解析训练开始时你会看到类似这样的输出Epoch [1/50], Step [100/500], Loss: 1.8765, Accuracy: 0.3125 Epoch [1/50], Step [200/500], Loss: 1.5432, Accuracy: 0.4531 Epoch [1/50], Step [300/500], Loss: 1.2345, Accuracy: 0.5625 Epoch [1/50], Step [400/500], Loss: 0.9876, Accuracy: 0.6719 Epoch [1/50], Step [500/500], Loss: 0.8765, Accuracy: 0.7188关键指标解读Loss损失值表示模型预测与真实标签的差异越小越好Accuracy准确率预测正确的样本比例越大越好正常情况Loss应该逐渐下降Accuracy应该逐渐上升4.2 验证过程输出解析验证完成后会显示详细结果Validation Results: Total samples: 1000 Correct predictions: 850 Accuracy: 85.00% Precision: 0.8462 Recall: 0.8333 F1-Score: 0.8397 Class-wise Accuracy: Class 0: 92.0% (92/100) Class 1: 78.0% (78/100) Class 2: 85.0% (85/100)性能指标说明Accuracy整体分类准确率Precision预测为正样本中真正为正的比例Recall真正为正的样本中被正确预测的比例F1-ScorePrecision和Recall的调和平均4.3 常见输出问题诊断问题1Loss不下降Epoch [10/50], Loss: 1.8765 (no improvement)可能原因学习率太大、模型架构问题、数据预处理错误问题2Accuracy波动大Accuracy: 0.75 → 0.45 → 0.68 → 0.52可能原因批大小太小、学习率太高、数据分布不均匀问题3内存不足报错CUDA out of memory. Try reducing batch size.解决方案减小batch_size、使用梯度累积5. 实用技巧与建议5.1 训练过程监控使用tqdm添加进度条更直观地观察训练进度from tqdm import tqdm for epoch in range(num_epochs): # 训练阶段 model.train() train_loss 0.0 correct 0 total 0 with tqdm(train_loader, descfEpoch {epoch1}/{num_epochs}) as pbar: for inputs, labels in pbar: # 训练代码... pbar.set_postfix({Loss: loss.item(), Acc: accuracy})5.2 模型保存策略实现早停机制和最佳模型保存best_acc 0.0 for epoch in range(num_epochs): # 训练和验证... # 保存最佳模型 if val_acc best_acc: best_acc val_acc torch.save(model.state_dict(), best_model.pth) print(fNew best model saved with accuracy: {best_acc:.2f}%) # 早停机制 if epoch 20 and best_acc 0.6: print(Early stopping triggered) break5.3 结果可视化训练完成后生成损失和准确率曲线import matplotlib.pyplot as plt plt.figure(figsize(12, 4)) plt.subplot(1, 2, 1) plt.plot(train_losses, labelTraining Loss) plt.plot(val_losses, labelValidation Loss) plt.legend() plt.subplot(1, 2, 2) plt.plot(train_accs, labelTraining Accuracy) plt.plot(val_accs, labelValidation Accuracy) plt.legend() plt.savefig(training_curves.png)6. 总结通过本文的详细讲解你应该已经掌握了深度学习训练环境中train.py和val.py文件的关键修改要点以及如何正确解读终端输出结果。记住几个关键点环境配置确保使用正确的conda环境conda activate dl路径设置仔细检查所有文件路径是否正确参数调整根据你的硬件和数据集特点调整超参数结果监控密切关注Loss和Accuracy的变化趋势问题诊断学会从输出结果中识别和解决常见问题深度学习训练是一个需要耐心和细致的过程正确的环境配置和参数设置是成功的基础。如果在使用过程中遇到问题记得检查终端输出信息它们往往包含了解决问题的关键线索。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章