我想知道如何使用c api tensorflow从会话运行中获取full_trace数据。我的问题是我找到了Python的示例,但我不知道如何使用C API实施。
python示例:
使用完整跟踪选项运行图
with tf.Session() as sess:
run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
run_metadata = tf.RunMetadata()
sess.run(res, options=run_options, run_metadata=run_metadata)
# Create the Timeline object, and write it to a json
tl = timeline.Timeline(run_metadata.step_stats)
ctf = tl.generate_chrome_trace_format()
with open('timeline.json', 'w') as f:
f.write(ctf)
c API函数。
tf_capi_export extern void tf_sessionrun(
(TF_Session* session,
// RunOptions
const TF_Buffer* run_options,
// Input tensors
const TF_Output* inputs, TF_Tensor* const* input_values, int ninputs,
// Output tensors
const TF_Output* outputs, TF_Tensor** output_values, int noutputs,
// Target operations
const TF_Operation* const* target_opers, int ntargets,
// RunMetadata
TF_Buffer* run_metadata,
// Output status
TF_Status*);
感谢您的帮助。
如果您问,如何将选项放在tf_sessionrun。这是从python中提取并在C-API中使用它们的工作。
python
runOptions = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
runConfig = tf.ConfigProto(run_options=runOptions) # run_options?
runConfSer = [int(i) for in in runConfig.SerializeToString()] # -> <runConfSer>
c-api
TF_SessionOptions* sess_opts = TF_NewSessionOptions();
uint8_t configProto[] = { <runConfSer> }; // <= <runConfSer>
size_t configProtoLen = sizeof(configProto) / sizeof(uint8_t);
TF_SetConfig(sess_opts, configProto, configProtoLen, status);
assert(TF_GetCode(status) == TF_OK);
TF_Session* session = TF_NewSession(graph, sess_opts, status);
assert(TF_GetCode(status) == TF_OK);
TF_SessionRun(session, nullptr,
&inputs[0], &input_values[0], inputs.size(),
&outputs[0], &output_values[0], outputs.size(),
nullptr, 0, nullptr, status);