张量流中模型(PB文件)的用途是什么?它是如何工作的?

时间:2018-07-11 06:00:51

标签: tensorflow

我正在使用一些实现来创建人脸识别。 使用该文件的

访问https://drive.google.com/file/d/0B5MzpY9kBtDVZ2RpVDYwWmxoSUk

“ facenet.load_model(” 20170512-110547 / 20170512-110547.pb“)”

此模型的用途是什么?我不确定它如何工作

控制台日志:

型号文件名:20170512-110547 / 20170512-110547.pb 距离= 0.72212267

代码实际所有者的Github链接 https://github.com/arunmandal53/facematch

2 个答案:

答案 0 :(得分:5)

pb代表protobuf。在TensorFlow中,protbuf文件包含图形定义以及模型的权重。因此,只需运行pb文件即可运行给定的经过训练的模型。

给出一个pb文件,您可以按以下方式加载它。

def load_pb(path_to_pb):
    with tf.gfile.GFile(path_to_pb, "rb") as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())
    with tf.Graph().as_default() as graph:
        tf.import_graph_def(graph_def, name='')
        return graph

一旦加载了图形,您基本上可以执行任何操作。例如,您可以使用

检索感兴趣的张量
input = graph.get_tensor_by_name('input:0')
output = graph.get_tensor_by_name('output:0')

并使用常规TensorFlow例程,例如:

sess.run(output, feed_dict={input: some_data})

答案 1 :(得分:1)

.pb格式是protobuffer / protobuf格式,在Tensorflow中,此格式用于保存模型。以这种方式使用时,它称为 SavedModel协议缓冲区,这是保存Keras / Tensorflow 2.0模型时的默认格式。可以在herehere中找到有关此格式的更多信息。

例如,以下代码(具体为m.save)将创建一个名为my_new_model的文件夹,并将其中的saved_model.pb,一个assets/文件夹保存在其中,和一个variables/文件夹。该代码首先从互联网(可在其中上传模型的社区TFHub)中下载SavedModel

m = tf.keras.Sequential([
    hub.KerasLayer("https://tfhub.dev/google/imagenet/mobilenet_v2_130_224/classification/4")
])
m.build([None, 224, 224, 3])  # Batch input shape.
m.save("my_new_model") # defaults to save as SavedModel in tensorflow 2

在某些地方,您可能还会看到.h5模型,这是TF 1.X的默认格式。 source