我正在使用一些实现来创建一个使用this file的人脸识别:
“facenet.load_model(“20170512-110547/20170512-110547.pb”)”
这个文件有什么用?我不知道它是如何工作的。
控制台日志:
Model filename: 20170512-110547/20170512-110547.pb
distance = 0.72212267
代码https://github.com/arunmandal53/facematch的实际所有者的Github链接
3条答案
按热度按时间bweufnob1#
pb
代表protobuf。在TensorFlow中,protbuf文件包含图形定义以及模型的权重。因此,pb
文件是运行给定训练模型所需的全部文件。给定一个
pb
文件,可以按如下方式加载它。一旦你加载了图表,你基本上可以做任何事情。例如,您可以使用
并使用常规的TensorFlow例程,如:
ovfsdjhp2#
说明
.pb
是protocol buffer(protobuf)格式,在Tensorflow中,该格式用于保存模型。Protobufs是Google存储数据的一种通用方法,它更易于传输,因为它可以更有效地压缩数据并强制数据结构。在TensorFlow中使用时,它被称为SavedModel协议缓冲区,这是保存Keras/ Tensorflow 2.0模型时的默认格式。有关此格式的更多信息可以在这里和here找到。例如,下面的代码(特别是
m.save
)将创建一个名为my_new_model
的文件夹,并在其中保存saved_model.pb
、assets/
文件夹和variables/
文件夹。在某些地方,您可能还会看到
.h5
模型,这是TF 1.X的默认格式。source额外信息:在TensorFlow Lite中,用于在移动的和物联网设备上运行模型的库,而不是协议缓冲区,使用flatbuffer。这是TensorFlow Lite Converter转换成的格式(
.tflite
)。这是另一种Google格式,也非常有效:它允许访问消息的任何部分,而不需要特殊化(不像JSON,XML)。对于内存(RAM)较少的设备,从模型文件中加载所需的内容更有意义,而不是将整个内容加载到内存中以将其存储。在TensorFlow 2中加载SavedModels
我注意到BiBi的显示加载模型的答案很受欢迎,在TF 2中有一种更短的方法来做到这一点:
注,
inception_v1_224_quant_20181026
)必须有saved_model.pb
或saved_model.pbtxt
,否则代码将崩溃。不能指定.pb
路径,请指定 * 目录 *。TypeError: 'AutoTrackable' object is not callable
为旧型号,fix here.如果你加载一个TF 1模型,我发现我没有得到任何错误,但是加载的文件并不像预期的那样工作。(例如,它没有任何功能,如预测)
ufj5ltwl3#
您可以使用protoc检查.pb文件的文本:
protoc --decode_raw < input.pb > output.txt