首页 文章

监控Caffe的培训/验证过程

提问于
浏览
15

我正在训练Caffe参考模型来分类图像 . 我的工作要求我通过在整个训练集和分别具有100K和50K图像的验证集的每1000次迭代之后绘制模型的准确性图来监视训练过程 . 现在,我采取天真的方法,在每1000次迭代后制作快照,运行C分类代码,该代码读取原始JPEG图像并转发到网络并输出预测标签 . 但是,这在我的机器上花费了太多时间(使用Geforce GTX 560 Ti)

有没有更快的方法可以在训练集和验证集上获得快照模型的准确性图表?

我在考虑使用LMDB格式而不是原始图像 . 但是,我找不到有关使用LMDB格式在C中进行分类的文档/代码 .

3 回答

  • 24

    1)您可以使用NVIDIA-DIGITS应用程序来监控您的网络 . 它们提供GUI,包括数据集准备,模型选择和学习曲线可视化 . 更多,他们使用caffe分布允许multi-GPU training .

    2)或者,你可以简单地在caffe中使用log-parser .

    /pathtocaffe/build/tools/caffe train --solver=solver.prototxt 2>&1 | tee lenet_train.log
    

    这允许您将列车日志保存到“lenet_train.log” . 然后使用:

    python /pathtocaffe/tools/extra/parse_log.py lenet_train.log .
    

    您将您的火车日志解析为两个包含火车和测试损失的csv文件 . 然后,您可以使用以下python脚本绘制它们

    import pandas as pd
    from matplotlib import *
    from matplotlib.pyplot import *
    
    train_log = pd.read_csv("./lenet_train.log.train")
    test_log = pd.read_csv("./lenet_train.log.test")
    _, ax1 = subplots(figsize=(15, 10))
    ax2 = ax1.twinx()
    ax1.plot(train_log["NumIters"], train_log["loss"], alpha=0.4)
    ax1.plot(test_log["NumIters"], test_log["loss"], 'g')
    ax2.plot(test_log["NumIters"], test_log["acc"], 'r')
    ax1.set_xlabel('iteration')
    ax1.set_ylabel('train loss')
    ax2.set_ylabel('test accuracy')
    savefig("./train_test_image.png") #save image as png
    
  • 1

    Caffe每次尝试训练时都会创建日志,它位于tmp文件夹(linux和windows)中 .
    我还在python中编写了一个绘图脚本,您可以轻松地使用它来显示您的损失/准确性 .
    只需将训练日志的 .log 扩展名放在脚本旁边,然后双击它即可 . 您也可以使用命令提示,但为了便于使用,在执行时它会加载它可以在当前目录中找到的所有日志(* .log) . 它还显示了前4个精度和准确度 .

    你可以在这里找到它:https://gist.github.com/Coderx7/03f46cb24dcf4127d6fa66d08126fa3b

  • 1
    python /pathtocaffe/tools/extra/parse_log.py lenet_train.log
    

    命令产生以下错误:

    usage: parse_log.py [-h] [--verbose] [--delimiter DELIMITER]
                    logfile_path output_dir
    parse_log.py: error: too few arguments
    

    解:

    为了成功执行“parse_log.py”命令,我们应该传递两个参数:

    • 日志文件

    • 输出目录的路径

    所以正确的命令如下:

    python /pathtocaffe/tools/extra/parse_log.py lenet_train.log output_dir
    

相关问题