• C++ little errors , Big problem


    ------------------------------------------------------------------------------------------------------------------------------------------------------

    ------------------------------------------------------------------------------------------------------------------------------------------------------

    Q1. compile caffe .cpp file ,   come out an error :

    d302@d302-MS-7816-04:~/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 :

    d302@d302-MS-7816-04:~$ 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 .

    ------------------------------------------------------------------------------------------------------------------------------------------------------

    ------------------------------------------------------------------------------------------------------------------------------------------------------

  • 相关阅读:
    查看yarn当前执行任务列表
    小白学开发(iOS)OC_ 字符串的获取 (2015-08-11)
    【leetcode】Search in Rotated Sorted Array (hard)
    【leetcode】Spiral Matrix II (middle)
    【leetcode】Spiral Matrix(middle)
    【leetcode】Reverse Bits(middle)
    【leetcode】Number of 1 Bits (easy)
    【leetcode】Set Matrix Zeroes(middle)
    【leetcode】Reorder List (middle)
    【leetcode】Reverse Linked List II (middle)
  • 原文地址:https://www.cnblogs.com/wangxiaocvpr/p/5134983.html
Copyright © 2020-2023  润新知