------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------
Q1. compile caffe .cpp file , come out an error :
[email protected]:~/wangxiao/spl-caffe-master$ make -j8
NVCC src/caffe/layers/euclidean_loss_layer.cu
src/caffe/layers/euclidean_loss_layer.cu(43): error: a value of type "const float *" cannot be used to initialize an entity of type "float *"
detected during instantiation of "void caffe::EuclideanLossLayer<Dtype>::Backward_gpu(const std::vector<caffe::Blob<Dtype> *, std::allocator<caffe::Blob<Dtype> *>> &, const std::vector<__nv_bool, std::allocator<__nv_bool>> &, const std::vector<caffe::Blob<Dtype> *, std::allocator<caffe::Blob<Dtype> *>> &) [with Dtype=float]"
(105): here
the original code is :
1 Dtype* diff_cpu_data = bottom[i]->mutable_cpu_diff(); 2 const Dtype* label_data = bottom[1]->cpu_data(); // label data: 0 or 1 3 const Dtype* predict_data = bottom[0]->cpu_data(); // predict data 4 5 int spl_num = 0; 6 int al_num = 0; 7 8 for(int id = 0; id < bottom[i]->count(); ++id) { // 35*12=420 9 10 // Self Paced Learning 11 if (label_data[id]==0){ 12 // negative samples ... do nothing 13 } 14 else{ 15 if(predict_data[id]>0.7 && label_data[id]==1 ) { 16 spl_num ++ ; 17 // if the condition is met, transmit the gradient 18 // else make the gradient equal to zero... 19 } 20 else { 21 diff_cpu_data[id] = 0; 22 // bottom[i]->mutable_cpu_diff()[id] = 0; 23 } 24 } 25 26 27 // Active Learning 28 if (0.4 < predict_data[id] && predict_data[id] < 0.5){ 29 30 if (label_data[id] == 1){ 31 32 predict_data[id] = 1 ; 33 }else 34 if (label_data[id] == 0){ 35 predict_data[id] = 0 ; 36 } 37 38 al_num++; 39 40 }
Solution 1: No solution, because the char* can not give to const char*, and the value of const char* can not be changed . and in my problem, we don't need change the predict score at all.
------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------
Q2. when trained a AlexNet caffe model, and use the Matlab Interface to extract Features or predicted Scores , However it tell me errors like the following :
[email protected]:~$ matlab
libprotobuf ERROR google/protobuf/text_format.cc:172] Error parsing text-format caffe.NetParameter: 339:2: Expected identifier.
WARNING: Logging before InitGoogleLogging() is written to STDERR
F0116 15:34:34.112346 25564 upgrade_proto.cpp:928] Check failed: ReadProtoFromTextFile(param_file, param) Failed to parse NetParameter file: ../../models/bvlc_alexnet/alex_hat_deploy.prototxt
*** Check failure stack trace: ***
Killed
Solution 2: layer 6 was repaired when I train my model , i.e.
layer {
name: "fc6_wx"
type: "InnerProduct"
bottom: "pool5"
top: "fc6_wx"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 4096
weight_filler {
type: "gaussian"
std: 0.005
}
bias_filler {
type: "constant"
value: 0.1
}
}
}
change the name: "fc6_wx" into name: "fc6", and it will be OK .
------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------