如何在没有附带ckpt文件的情况下初始化tensorflow中的pb文件的变量?

时间:2019-05-18 05:28:46

标签: tensorflow machine-learning tensorflow-serving tensorflow-datasets

我有一个简单的pb文件,没有任何ckpt文件。我想(随机)初始化pb文件的所有权重,并将初始化后的权重另存为ckpt文件。我找不到任何办法。全局变量初始值设定项只是不保存任何变量

1 个答案:

答案 0 :(得分:1)

可以通过三种方式将模型保存在.pb format中。使用tf.saved_model.simple_savetf.saved_model.Builder.saveestimator.export_savedmodel

要回答您的问题,您可以使用功能.pb model恢复tf.saved_model.loader.load(sess,[tag_constants.TRAINING],Export_Dir)

然后,您可以使用以下代码恢复权重(您应该记住与Weights Tensor对应的名称):

with graph2.as_default():
        with tf.Session(graph=graph2) as sess:
            # Restore saved values
            print('\nRestoring...')
            tf.saved_model.loader.load(sess,[tag_constants.SERVING],path)
            #Specify the correct `Weights_Tensor_Name`
            Weights_Var = graph2.get_tensor_by_name('Weights_Tensor_Name:0')

之后,您可以使用以下代码将权重保存到.checkpoint文件:

saver = tf.train.Saver({"Weights_Var": Weights_Var})

但是,如果您只想将Random Tensor(名称为Weights)保存到Check Points文件中,则可以使用函数tf.random.uniform生成一个随机张量,然后将其保存使用以下代码:

saver = tf.train.Saver({"Weights_Var": Weights_Var})