【问题标题】:How do I use Tensorflow c++ to implement this code (FaceNet)?如何使用 Tensorflow c++ 来实现这段代码(FaceNet)?
【发布时间】:2017-07-25 18:56:52
【问题描述】:

FaceNet.by 大卫·桑德伯格

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代码达到同样的目的?

张量image_batch: np.expand_dims(image_data, 0) 需要传入一个矩阵值,这个np.expand_dims(image_data, 0)怎么写?

这是一个很好的提示:Import OpenCV Mat into C++ Tensorflow without copying

现在没有问题了,谢谢大家。

【问题讨论】:

    标签: c++ tensorflow face-recognition


    【解决方案1】:

    C++ 库没有等价物。您只需传递张量的名称而不是张量对象。

    string image_batch = "input:0";
    string phase_train_placeholder = "phase_train:0";
    string embeddings = "embeddings:0";
    

    看到这个问题:C++ equivalent of python: tf.Graph.get_tensor_by_name() in Tensorflow?

    【讨论】:

    • 谢谢你的回答,我还是有问题,tensor image_batch: np.expand_dims(image_data, 0) 需要传入一个矩阵值,这个np.expand_dims(image_data)怎么写, 0)
    • np 是 Numpy,你最好问另一个问题。这不是 TensorFlow 的一部分。
    • 是的,我就是想知道如何用c++写np.expand_dims(image_data, 0),也许Tensorflow也有同样的方法。无论如何,谢谢你。我将为此提出一个新问题
    猜你喜欢
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    • 2011-01-18
    • 1970-01-01
    相关资源
    最近更新 更多