訓練模型并儲存日志檔案
首先建立一個訓練資料的腳本檔案train.sh,其内容如下,其中,2>&1 | tee examples/mnist/mnist_train_log.log 是log日志檔案的儲存目錄。
#!/usr/bin/env sh
set -e
TOOLS=./build/tools
$TOOLS/caffe train --solver=examples/mnist/lenet_solver.prototxt 2>&1 | tee examples/mnist/mnist_train_log.log
訓練完成後,會在examples/mnist檔案夾下生成mnist_train_log.log日志
繪制曲線
首先将檔案夾caffe/tools/extra下的parse_log.sh 、extract_seconds.py、plot_training_log.py.example複制到上一步log日志檔案的儲存目錄下。
然後,将plot_training_log.py.example改為plot_training_log.py,并執行以下指令就可以繪制曲線:
python plot_training_log.py 6 train_loss.png mnist_train_log.log
caffe支援多種曲線繪制,指定不同的類型參數即可,具體參數如下:
Notes:
1. Supporting multiple logs.
2. Log file name must end with the lower-cased ".log".
Supported chart types:
0: Test accuracy vs. Iters
1: Test accuracy vs. Seconds
2: Test loss vs. Iters
3: Test loss vs. Seconds
4: Train learning rate vs. Iters
5: Train learning rate vs. Seconds
6: Train loss vs. Iters
7: Train loss vs. Seconds
遇到的問題:
問題1:
剛開始的時候發現類型參數為0-3的時候,可以正常繪制曲線,但是類型參數為4-7的時候,出現下面的錯誤:
解決方法:
打開生成的mnist_train_log.log.train檔案後,發現确實是提取TrainingLoss資料有問題,如圖1;後來按部落格點選打開連結中的方法将parse_log.sh進行修改。對于parse-log.sh生成的檔案mnist_train_log.log.train,caffe自帶的parse-log.sh提取到的是第9列(第9個域),也就是帶S/10的那些數,我将它改成第13個域,也就是loss及=符号後的數,真正的loss在第13列,如圖2、3。
圖1
圖2
圖3
問題2:
解決完上述問題後,類型參數為4-7的時候,還是不能繪制曲線,出現如下問題:IndexError: list index out of range
解決方法:
群裡大神幫忙找到問題了,原來是mnist_train_log.log.train中最後一行存在資料缺失問題,無奈,日志檔案真的沒有資料了,隻能僞造一組資料了,如下圖,紅色圈中的就是我自己加的。但是,感覺這樣做不好,關于這個問題,大家有遇到過沒,怎麼解決的,可以交流一下。
修改前的:
修改後的: