相关疑难解决方法(0)

有没有关于如何生成包含经过训练的TensorFlow图的protobuf文件的示例

我正在研究Google关于如何在Android上部署和使用预先训练的Tensorflow图(模型)的示例.此示例使用以下.pb文件:

https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip

这是指向自动下载的文件的链接.

该示例显示了如何将.pb文件加载到Tensorflow会话并使用它来执行分类,但是.pb在训练图形之后(例如,在Python中)似乎没有提到如何生成这样的文件.

有没有关于如何做到这一点的例子?

protocol-buffers tensorflow

45
推荐指数
3
解决办法
2万
查看次数

通过导出器和tf.train.write_graph()保存模型之间的张量流差异?

保存模型有什么区别

  1. 使用tensorflow服务中指定的exporter:

例如:

from tensorflow.contrib.session_bundle import exporter
#from tensorflow_serving.session_bundle import exporter
saver = tf.train.Saver(sharded=True)
model_exporter = exporter.Exporter(saver)
model_exporter.init(
        sess.graph.as_graph_def(),
        named_graph_signatures={
            'inputs': exporter.generic_signature({'images': x}),
            'outputs': exporter.generic_signature({'scores': y})})
model_exporter.export(export_path, tf.constant(FLAGS.export_version), sess) 
Run Code Online (Sandbox Code Playgroud)
  1. 直接使用tf.train.write_graph()和tf.train.Saver():

例如:

with sess.graph.as_default():
    saver = tf.train.Saver()
    saver.save(sess, path, meta_graph_suffix='meta', write_meta_graph=True)
Run Code Online (Sandbox Code Playgroud)

问题是继续TensorFlow从文件中保存/加载图形

python protocol-buffers tensorflow

8
推荐指数
1
解决办法
2941
查看次数

output_graph.pb上的tf.GraphKeys.TRAINABLE_VARIABLES导致空列表

我正在尝试从已保存的模型中提取所有权重/偏差output_graph.pb

我读了模型:

def create_graph(modelFullPath):
    """Creates a graph from saved GraphDef file and returns a saver."""
    # Creates graph from saved graph_def.pb.
    with tf.gfile.FastGFile(modelFullPath, 'rb') as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())
        tf.import_graph_def(graph_def, name='')

GRAPH_DIR = r'C:\tmp\output_graph.pb'
create_graph(GRAPH_DIR)
Run Code Online (Sandbox Code Playgroud)

并尝试这种希望,我将能够提取每一层中的所有权重/偏差。

with tf.Session() as sess:
    all_vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES)
    print (len(all_vars))
Run Code Online (Sandbox Code Playgroud)

但是,我得到的值为len。

最终目标是提取权重和偏差并将其保存到文本文件/np.arrays。

python deep-learning tensorflow

5
推荐指数
1
解决办法
3519
查看次数

如何将keras模型转换为协议缓冲区(.pb)文件?

我有一个训练有素的keras模型,我想保存到协议缓冲区(.pb)文件中。当我这样做并加载模型时,预测是错误的(并且与原始模型不同)并且权重是错误的。这是模型类型:

type(model)
> keras.engine.training.Model
Run Code Online (Sandbox Code Playgroud)

这是我用来冻结并将其保存到.pb文件的代码。

from keras import backend as K
K.set_learning_phase(0)
import tensorflow as tf
from tensorflow.python.framework.graph_util import convert_variables_to_constants
keras_session = K.get_session()
graph = keras_session.graph
graph.as_default()
keep_var_names=None
output_names=[out.op.name for out in model.outputs]
clear_devices=True
with graph.as_default():
    freeze_var_names = list(set(v.op.name for v in tf.global_variables()).difference(keep_var_names or []))
    output_names = output_names or []
    output_names += [v.op.name for v in tf.global_variables()]
    input_graph_def = graph.as_graph_def()
    if clear_devices:
        for node in input_graph_def.node:
            node.device = ""
    frozen_graph = convert_variables_to_constants(keras_session, input_graph_def,
                                                  output_names, freeze_var_names)
tf.train.write_graph(frozen_graph, "model", "my_model.pb", as_text=False)
Run Code Online (Sandbox Code Playgroud)

然后我像这样阅读: …

python protocol-buffers keras tensorflow

5
推荐指数
1
解决办法
338
查看次数