2、实现自己的layer,编写Aaa_Layer.cpp,加入到src/caffe/layers,主要实现Setup、Forward_cpu、Backward_cpu。
3、如果需要GPU实现,那么在Aaa_Layer.cu中实现Forward_gpu和Backward_gpu。
4、修改src/caffe/proto/caffe.proto,好到LayerType,添加Aaa,并更新ID,如果Layer有参数,添加AaaParameter类。
5、在src/caffe/layer_factory.cpp中添加响应代码。
6、在src/caffe/test中写一个test_Aaa_layer.cpp,用include/caffe/test/test_gradient_check_util.hpp来检查前向后向传播是否正确。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
作者:齐浩之
链接:https://www.zhihu.com/question/36652304/answer/68438194
来源:知乎
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\r\n', 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\r\n', res_str1)
end
end
tline = fgetl(fid)
end
fclose(fid)
fclose(fid_accuracy)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)