如何在linux下的caffe中添加centerloss层

如何在linux下的caffe中添加centerloss层,第1张

1、属于哪个类型的layer,就打开哪个hpp文件,这里就打开vision_layers.hpp,然后自己添加该layer的定义,或者直接复制Convolution_Layer的相关代码来修改类名和构造函数名都改为Aaa_Layer,如果不用GPU,将*_gpu的声明都去掉。

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)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7323028.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存