ctensorflowc-apitensorflow-c++

TensorFlow C API Logging Setting


I am trying to suppress the logging of the tensorflow in C-API when it loads a saved model. The logging looks like this

2020-07-24 13:06:39.805191: I tensorflow/cc/saved_model/reader.cc:31] Reading SavedModel from: /home/philgun/tf-C-API/my_model
2020-07-24 13:06:39.806627: I tensorflow/cc/saved_model/reader.cc:54] Reading meta graph with tags { serve }
2020-07-24 13:06:39.819994: I tensorflow/cc/saved_model/loader.cc:202] Restoring SavedModel bundle.
2020-07-24 13:06:39.875249: I tensorflow/cc/saved_model/loader.cc:151] Running initialization op on SavedModel bundle at path: /home/philgun/tf-C-API/my_model
2020-07-24 13:06:39.884401: I tensorflow/cc/saved_model/loader.cc:311] SavedModel load for tags { serve }; Status: success. Took 79210 microseconds.

Below is the part of my code that loads the saved model

    //*********************Read Model
    TF_Graph* Graph = TF_NewGraph();
    TF_Status* Status = TF_NewStatus();

    TF_SessionOptions* SessionOpts = TF_NewSessionOptions();
    TF_Buffer* RunOpts = NULL;

    const char* tags = "serve"; // default model serving tag
    int ntags = 1;
    
    TF_Session* Session = TF_LoadSessionFromSavedModel(SessionOpts, RunOpts, saved_model_dir, &tags, ntags, Graph, NULL, Status);

Since there's so little documentation on TF C-API, I am now stuck in this problem. Does anybody know how to do it?


Solution

  • After some hustling I found a way to do it by setting a new environment variable called TF_CPP_MIN_LOG_LEVEL. Here's how I did it:

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include "tensorflow/c/c_api.h"
    
    int main()
    {
        <your main code>
    }
    
    void CallSavedModel(double raw_input[], int inputsize, char* saved_model_dir)
    {
         char* new_environment = "TF_CPP_MIN_LOG_LEVEL=3";
         int ret;
         ret = putenv(var);
    
         IMPORT YOUR SAVED MODEL START FROM HERE
    
    }
    

    I got the answer by combining https://pubs.opengroup.org/onlinepubs/009695399/functions/putenv.html and Disable Tensorflow debugging information

    Cheers! Hope this is helpful for those who faced the same headache like I had.

    Phil