如何繪製caffe訓練過程中的loss和accurary的曲線??
用caffe訓練了一個自己的網路後,想要繪製一個橫軸是訓練次數,縱軸是loss/accurary的曲線,請問caffe中有沒有存儲loss和accurary的歷史數據呢,如果有的話,從哪裡提取出來?如果一個數據一個數據的記錄,感覺太麻煩了。o(╯□╰)o
謝謝!
caffe/tools/extra/plot_training_log.py.example自帶的繪圖的小腳本關於獲取日誌文件,我用的方法和@齊浩之 提到的一樣,寫個腳本,運行這個腳本開始訓練,這樣就可以保存日誌了, 腳本如下
#!/bin/bash
LOG=log/train-`date +%Y-%m-%d-%H-%M-%S`.log
CAFFE=~/caffe/build/tools/caffe
$CAFFE train --solver=solver.prototxt --gpu=0 2&>1 | tee $LOG
1. 你可以從系統 /tmp 文件夾獲取,名字是什麼 caffe.ubuntu.username.log.INFO.....之類。
2. 在train的時候最後加 tee $folder_prefix/caffe.log,就可以重定向到文件夾了。然後寫個parser就能把圖畫出來了。也不是parser。。。因為output規律很強,就是最最naive的字元串處理一下。貼一下matlab給題主好了% Well, this is a function that write the
% iteration vs accurancy
% iteration vs loss
% To a file
clc;
clear;
% log file of caffe model
logName = "caffe.log.INFO.20150704-163137.27688";
fid = fopen(logName, "r");
fid_accuracy = fopen("output_accuracy.txt", "w");
fid_loss = fopen("output_loss.txt", "w");
tline = fgetl(fid);
while ischar(tline)
% First find the accuracy line
k = strfind(tline, "Test net output");
if (k)
k = strfind(tline, "accuracy");
if (k)
% If the string contain test and accuracy at the same time
% The bias from "accuracy" to the float number
indexStart = k + 11;
indexEnd = size(tline);
str = tline(indexStart : indexEnd(2));
end
% Get the number of index
k = strfind(tline, "#");
if (k)
indexStart = k + 1;
indexEnd = strfind(tline, ":");
str2 = tline(indexStart : indexEnd - 1);
end
% Concatenation of two string
res_str = strcat(str2, "/", str);
fprintf(fid_accuracy, "%s
", res_str);
end
% Then find the loss line
k1 = strfind(tline, "Iteration");
if (k1)
k2 = strfind(tline, "loss");
if (k2)
indexStart = k2 + 7;
indexEnd = size(tline);
str1 = tline(indexStart:indexEnd(2));
indexStart = k1 + 10;
indexEnd = strfind(tline, ",") - 1;
str2 = tline(indexStart:indexEnd);
res_str1 = strcat(str2, "/", str1);
fprintf(fid_loss, "%s
", res_str1);
end
end
tline = fgetl(fid);
end
fclose(fid);
fclose(fid_accuracy);
caffe繪製訓練過程的loss和accuracy曲線 這裡有個使用caffe內腳本實現的方法
以上兩位說的很好,自己動手,豐衣足食。若需借力,建議用cuda-convnet2,自帶畫loss和accuracy曲線功能。
我是改了下源碼,訓練時會把每次輸出的loss和accuracy寫到一個txt文件中,再用matlab畫出來。
推薦閱讀:
※batch normalization的multi-GPU版本該怎麼實現?
※做圖像檢索,圖像庫從哪兒能下載到?
※沐神的第三代parameter server的worker節點只需要保存部分參數,怎麼理解?
※目前世界上有對強人工智慧的嘗試嗎?具體瓶頸是什麼?
※目前火熱的Deep Learning會滅絕傳統的SIFT/ SURF的特徵提取的演算法嗎?
TAG:深度學習DeepLearning | Caffe深度學習框架 |