繁体   English   中英

我如何知道使用带有 C++ 程序的 caffe 框架的层中是否不存在偏差

[英]How can I know if there is no Bias exists in a layer using caffe framwork with c++ program

我正在尝试使用 C++ 读取 caffe 框架中的权重和偏差。 这是我的代码

shared_ptr<Blob<float> >& weight = current_layer->blobs()[0];//for weights
shared_ptr<Blob<float> >& bias = current_layer->blobs()[1];//for bias

但是,如果对于某些模型,偏差不存在或通过分段错误错误定义它。

那么哪个函数返回一个布尔值,指示偏差的存在以及如何在 C++ 中调用该函数?

blobs从返回current_layer->blobs()都存储在一个std::vector ,就可以使用它的size属性:

if (current_layer->blobs().size() > 1) {
    shared_ptr<Blob<float> >& bias = current_layer->blobs()[1];//for bias
}

有关更多详细信息,请参阅 python 接口的类似答案

const std::vector<string> lnames = net_->layer_names();

for (int layer_index = 0; layer_index < net_->layer_names().size(); ++layer_index)
{
     const shared_ptr<Layer<float> > CAlayer = net_->layer_by_name(lnames[layer_index]);
     std::cout << lnames[layer_index] << std::endl;

     if(CAlayer->blobs().size() > 1)
     {
             std::cout << "weight-shape" << CAlayer->blobs()[0]->shape_string() << std::endl;
             std::cout << "weight-count" << CAlayer->blobs()[0]->count() << std::endl;
             std::cout << "bias-shape" << CAlayer->blobs()[1]->shape_string() << std::endl;
             std::cout << "bias-count" << CAlayer->blobs()[1]->count() << std::endl;
     }
}

最终数据(权重和偏差参数)可以从

 CAlayer->blobs()[0]->cpu_data()[...] 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM