[英]How do I use Tensorflow c++ to implement this code (FaceNet)?
FaceNet使用python来实现代码:
#load graph
with tf.gfile.GFile(frozen_graph_filename, "rb") as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
# We load the graph_def in the default graph
with tf.Graph().as_default() as graph:
tf.import_graph_def(graph_def, name='')
with tf.Session(graph=graph, config=config) as sess:
with sess.as_default():
image_batch = graph.get_tensor_by_name("input:0")
phase_train_placeholder = graph.get_tensor_by_name("phase_train:0")
embeddings = graph.get_tensor_by_name("embeddings:0")
feed_dict = {image_batch: np.expand_dims(face, 0), phase_train_placeholder: False}
rep = sess.run(embeddings, feed_dict=feed_dict)
#do something by 'rep'
#....
现在使用C ++来实现以下代码:
Session* session;
// Initialize a tensorflow session
Status status = NewSession(SessionOptions(), &session);
if (!status.ok()) {
std::cout << status.ToString() << "\n";
return 1;
}
//Load graph ...
GraphDef graph_def;
status = ReadBinaryProto(Env::Default(), "250000.pb", &graph_def);
if (!status.ok()) {
std::cout << status.ToString() << "\n";
return 1;
}
/*
How do I use "get_tensor_by_name" ??
std::vector<Tensor> out_tensors;
TF_RETURN_IF_ERROR(session->Run({}, {output_name + ":0", output_name + ":1"},
{}, &out_tensors));
*/
如何在Tensorflow C ++中使用get_tensor_by_name?
如何调用run方法,与上面的python代码达到相同的目的?
这是一个很好的技巧: 无需复制即可将OpenCV Mat导入C ++ Tensorflow
现在没有问题了,谢谢大家。
C ++库没有等效的库。 您只需传递张量的名称而不是张量对象。
string image_batch = "input:0";
string phase_train_placeholder = "phase_train:0";
string embeddings = "embeddings:0";
看到这个问题: Tensorflow中的C ++等效于python:tf.Graph.get_tensor_by_name()?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.