我有一个旧的训练有素的 tf1.x 模型(让它成为Model1),用占位符、tf.contrib 等构建。我可以通过从 tf.Session(在 tf1.x 中)中的 .ckpt 检查点恢复图形来使用此模型。我解决了使用Model1 的最简单方法是将其导出:
# tf1.x code
tf.saved_model.simple_save(sess, saved_Model1_path,
inputs={'input':'Placeholder:0'}, outputs={'output':'.../Sigmoid:0'})
Run Code Online (Sandbox Code Playgroud)
即使在tf2.0中我也可以使用获得的saved_model.pb:
# tf2.0 code
Model1 = tf.saved_model.load(saved_Model1_path)
out = Model1.signatures['serving_default'](tf.convert_to_tensor(data))['output'].numpy()
out = Model1.signatures['serving_default'].prune('Placeholder:0', '.../Sigmoid:0')(data)
out = Model1.prune('Placeholder:0', '.../Sigmoid:0')(data)
Run Code Online (Sandbox Code Playgroud)
现在想象一下,我有一个用 tf2.0 tf.function 编写的前/后处理。
我希望将预处理->模型1->后处理的构建导出到tf2.0中的单个saved_model.pb中。由于Model1的 save_model.pb使用 tf.Placeholders (像这样,我不是这里的专家),所以出现了问题。
同时,我可以轻松地从其他 tf2.0 导出模型构建 saving_model.pb:
import os
import tensorflow as tf
assert tf.__version__[0] == '2'
class M1(tf.Module):
def __init__(self):
super(M1, self).__init__()
self.v = tf.Variable(2.)
@tf.function(input_signature=[tf.TensorSpec([], tf.float32)])
def M1_func(self, x):
return …Run Code Online (Sandbox Code Playgroud) python protocol-buffers deep-learning tensorflow tensorflow2.0
我不确切地知道从这种结构中返回真假的案例.你能描述一下吗?Sry,如果是谷歌搜索,我还没找到.
( (struct->param = param_init()) == NULL )
Run Code Online (Sandbox Code Playgroud)