Skip to content

About

深度学习框架及工具入门

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

实验一项目代码(深度学习工具与平台)

本项目覆盖实验一四大任务:

  1. 基准程序运行与理解
  2. 训练过程可视化
  3. 性能分析
  4. 综合实验(自定义 CNN + 自定义 Dataset + 变量控制实验)

1. 环境准备

建议在 Conda 或 venv 中安装依赖。

当前机器驱动是 CUDA 12.8,推荐先安装 PyTorch cu128 版本,再安装其余依赖:

python -m pip install --index-url https://download.pytorch.org/whl/cu128 torch==2.11.0+cu128 torchvision==0.26.0+cu128
python -m pip install -r requirements.txt

环境验证:

python -c "import torch; print('torch=', torch.__version__); print('cuda=', torch.cuda.is_available())"

2. 第一部分:MNIST 基线训练

python -m src.train_baseline --epochs 5 --batch-size 64 --device auto

产物(在 outputs/reports 下):

  • baseline_metrics_时间戳.csv:每个 epoch 的 train_loss、test_loss、test_acc、epoch_time_sec
  • baseline_summary_时间戳.json:最终准确率、总训练时间、平均每轮时间
  • baseline_model_时间戳.pt:模型参数

3. 第二部分:TensorBoard 可视化

训练并写日志:

python -m src.train_with_tensorboard --epochs 5 --batch-size 64 --device auto

启动 TensorBoard:

tensorboard --logdir outputs/logs

可查看:

  • loss/train
  • loss/test
  • acc/test
  • time/epoch_sec
  • 模型计算图(Graphs)

4. 第三部分:Profiler 性能分析

python -m src.profile_baseline --steps 50 --batch-size 64 --device auto

产物(在 outputs/profiler 下):

  • profiler_table_时间戳.txt:算子统计表
  • top_ops_时间戳.csv:Top10 耗时操作
  • profiler_summary_时间戳.json:路径索引
  • trace_时间戳:可在 TensorBoard profile 插件打开

5. 第四部分:综合实验

5.1 自定义 Dataset 准备

先把 MNIST 导出为目录结构数据集(训练时不再使用 torchvision 封装数据集类):

python -m src.prepare_custom_dataset --train-limit-per-class 1000 --test-limit-per-class 200

导出目录结构:

  • data/custom/train/0..9/*.png
  • data/custom/test/0..9/*.png

5.2 自定义 CNN + 自定义 Dataset 训练

python -m src.train_custom --epochs 10 --batch-size 64 --device auto

说明:

  • 模型为手写残差结构 SmallResNet(非调用现成 ResNet)
  • 数据集类为自定义 CustomImageFolderDataset
  • 训练过程包含 TensorBoard 曲线和模型图记录

5.3 不同 batch size 对比实验

python -m src.experiments.batch_size_study --batch-sizes 1 16 64 --epochs 3 --device auto

产物:

  • batch_size_study_时间戳.csv / json

字段包括:

  • batch_size
  • total_time_sec
  • throughput_samples_per_sec
  • final_test_acc
  • final_test_loss

5.4 CPU vs GPU 对比实验

python -m src.experiments.cpu_gpu_compare --batch-size 64 --epochs 3

若无 GPU,会自动只产出 CPU 结果;有 GPU 时会自动输出 CPU 与 CUDA 对比。

6. 建议提交材料映射

  • 基线代码:src/train_baseline.py + src/models/baseline_cnn.py
  • 每轮 loss 与最终 accuracy:baseline_metrics_*.csv
  • 训练时间:baseline_summary_*.json
  • TensorBoard 曲线与模型图:outputs/logs
  • 性能分析 Top10:outputs/profiler/top_ops_*.csv
  • 自定义 CNN:src/models/custom_cnn.py
  • 自定义 Dataset:src/data/custom_image_dataset.py
  • batch size 对比:batch_size_study_*.csv
  • CPU/GPU 对比:cpu_gpu_compare_*.csv

7. 训练流程理解(可直接用于报告的精简版)

  1. DataLoader 从磁盘或内存中按 batch 提供样本。
  2. 前向传播计算类别对数概率。
  3. 使用 NLLLoss 计算损失。
  4. 反向传播计算梯度。
  5. 优化器根据梯度更新参数。
  6. 每个 epoch 后在测试集评估,记录 loss、accuracy、耗时。
  7. 调度器更新学习率,提升后期收敛稳定性。

About

深度学习框架及工具入门

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages