我怎么知道使用caffe framwork和c ++程序的层中是否不存在偏差
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
但是,如果对于某些模型,偏差不存在或通过分段错误错误定义。
那么哪个函数returns一个布尔值表示偏差的存在以及如何在c++中调用该函数?
从current_layer->blobs()
返回的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()[...]
我正在尝试使用 c++ 读取 caffe 框架中的权重和偏差。这是我的代码
shared_ptr<Blob<float> >& weight = current_layer->blobs()[0];//for weights
shared_ptr<Blob<float> >& bias = current_layer->blobs()[1];//for bias
但是,如果对于某些模型,偏差不存在或通过分段错误错误定义。
那么哪个函数returns一个布尔值表示偏差的存在以及如何在c++中调用该函数?
从current_layer->blobs()
返回的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()[...]