MCPcopy Create free account
hub / github.com/OpenPTrack/open_ptrack_v2 / AppendParam

Method AppendParam

rtpose_wrapper/src/caffe/net.cpp:449–541  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

447
448template <typename Dtype>
449void Net<Dtype>::AppendParam(const NetParameter& param, const int layer_id,
450 const int param_id) {
451 const LayerParameter& layer_param = layers_[layer_id]->layer_param();
452 const int param_size = layer_param.param_size();
453 string param_name =
454 (param_size > param_id) ? layer_param.param(param_id).name() : "";
455 if (param_name.size()) {
456 param_display_names_.push_back(param_name);
457 } else {
458 ostringstream param_display_name;
459 param_display_name << param_id;
460 param_display_names_.push_back(param_display_name.str());
461 }
462 const int net_param_id = params_.size();
463 params_.push_back(layers_[layer_id]->blobs()[param_id]);
464 param_id_vecs_[layer_id].push_back(net_param_id);
465 param_layer_indices_.push_back(make_pair(layer_id, param_id));
466 ParamSpec default_param_spec;
467 const ParamSpec* param_spec = (layer_param.param_size() > param_id) ?
468 &layer_param.param(param_id) : &default_param_spec;
469 if (!param_size || !param_name.size() || (param_name.size() &&
470 param_names_index_.find(param_name) == param_names_index_.end())) {
471 // This layer "owns" this parameter blob -- it is either anonymous
472 // (i.e., not given a param_name) or explicitly given a name that we
473 // haven't already seen.
474 param_owners_.push_back(-1);
475 if (param_name.size()) {
476 param_names_index_[param_name] = net_param_id;
477 }
478 const int learnable_param_id = learnable_params_.size();
479 learnable_params_.push_back(params_[net_param_id].get());
480 learnable_param_ids_.push_back(learnable_param_id);
481 has_params_lr_.push_back(param_spec->has_lr_mult());
482 has_params_decay_.push_back(param_spec->has_decay_mult());
483 params_lr_.push_back(param_spec->lr_mult());
484 params_weight_decay_.push_back(param_spec->decay_mult());
485 } else {
486 // Named param blob with name we've seen before: share params
487 const int owner_net_param_id = param_names_index_[param_name];
488 param_owners_.push_back(owner_net_param_id);
489 const pair<int, int>& owner_index =
490 param_layer_indices_[owner_net_param_id];
491 const int owner_layer_id = owner_index.first;
492 const int owner_param_id = owner_index.second;
493 LOG_IF(INFO, Caffe::root_solver()) << "Sharing parameters '" << param_name
494 << "' owned by "
495 << "layer '" << layer_names_[owner_layer_id] << "', param "
496 << "index " << owner_param_id;
497 Blob<Dtype>* this_blob = layers_[layer_id]->blobs()[param_id].get();
498 Blob<Dtype>* owner_blob =
499 layers_[owner_layer_id]->blobs()[owner_param_id].get();
500 const int param_size = layer_param.param_size();
501 if (param_size > param_id && (layer_param.param(param_id).share_mode() ==
502 ParamSpec_DimCheckMode_PERMISSIVE)) {
503 // Permissive dimension checking -- only check counts are the same.
504 CHECK_EQ(this_blob->count(), owner_blob->count())
505 << "Cannot share param '" << param_name << "' owned by layer '"
506 << layer_names_[owner_layer_id] << "' with layer '"

Callers

nothing calls this directly

Calls 6

countMethod · 0.80
shape_stringMethod · 0.80
shapeMethod · 0.80
sizeMethod · 0.45
endMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected