Status GetInitOp()

in source/neuropod/backends/tensorflow/saved_model/loader_util.cc [36:67]


Status GetInitOp(const string &export_dir, const MetaGraphDef &meta_graph_def, string *init_op_name)
{
    const auto &sig_def_map    = meta_graph_def.signature_def();
    const auto &init_op_sig_it = meta_graph_def.signature_def().find(kSavedModelInitOpSignatureKey);
    if (init_op_sig_it != sig_def_map.end())
    {
        *init_op_name = init_op_sig_it->second.outputs().find(kSavedModelInitOpSignatureKey)->second.name();
        return Status::OK();
    }

    const auto &collection_def_map = meta_graph_def.collection_def();
    string      init_op_collection_key;
    if (collection_def_map.find(kSavedModelMainOpKey) != collection_def_map.end())
    {
        init_op_collection_key = kSavedModelMainOpKey;
    }
    else
    {
        init_op_collection_key = kSavedModelLegacyInitOpKey;
    }

    const auto init_op_it = collection_def_map.find(init_op_collection_key);
    if (init_op_it != collection_def_map.end())
    {
        if (init_op_it->second.node_list().value_size() != 1)
        {
            return errors::FailedPrecondition(strings::StrCat("Expected exactly one main op in : ", export_dir));
        }
        *init_op_name = init_op_it->second.node_list().value(0);
    }
    return Status::OK();
}