当执行训练后:
1 | ~/caffe-master/build/tools/caffe train \ |
训练过程会在终端打印,终端日志信息以glog
的格式输出:这个格式包括当前时间,进程号,源码行号,代码行号,以及输出信息,这个信息用于观察网络当前执行到哪一步。来分析一下使用Linear Reggresion对mnist分类,这个例子虽小,但五脏俱全。在必要的地方用做了注释,如下:
1 | Reggresion/lr_solver.prototxt |
总结:
- 过程是先从网络结构超参数文件和训练超参数文件中解析出TRAIN网络和TEST网络,后构建两个网络,最后开始训练。
- 根据每条信息在源码中的执行位置,可以追踪源码执行细节。比如
Memory required for data
如何统计内存使用量的,看net.cpp
139行:
1 | // memory_used_ 保存当前net占用内存空间 |
问题:
- TEST网络为什么也需要后传计算?
- 上述结果是使用GPU计算的,但是在log中并没有显示使用了哪个
.cu
文件。肯定执行了CUDA文件,应该是没有记录。