StaticHashTable我在 tf.keras 模型的输出层之后的一个 Lambda 层中使用as 。实际上非常简单:我有一个文本分类模型,并且添加了一个简单的 lambda 层,该层接受model.outputmodel_id 并将其转换为更通用的标签。我可以使用 model.save(... as H5 format..) 保存此版本的模型,没有任何问题,并且可以加载它并使用它,没有任何问题。
问题是,当我尝试导出 TF-Serving 的 TF2.2.0 模型时,我找不到如何导出它。这是我可以用 TF1.X 或用TF2.X + tf.compat.v1.disable_eager_execution()
tf.compat.v1.disable_eager_execution()
version = 1
name = 'tmp_model'
export_path = f'/opt/tf_serving/{name}/{version}'
builder = saved_model_builder.SavedModelBuilder(export_path)
model_signature = tf.compat.v1.saved_model.predict_signature_def(
inputs={
'input': model.input
},
outputs={
'output': model.output
}
)
with tf.compat.v1.keras.backend.get_session() as sess:
builder.add_meta_graph_and_variables(
sess=sess,
tags=[tf.compat.v1.saved_model.tag_constants.SERVING],
signature_def_map={
'predict': model_signature
},
# For initializing Hashtables
main_op=tf.compat.v1.tables_initializer()
)
builder.save()
Run Code Online (Sandbox Code Playgroud)
这将以 TF1.X 格式保存我的模型以供服务,我可以毫无问题地使用它。事情是,我正在使用 LSTM 层,并且我想在 GPU 上使用我的模型。根据文档,如果我禁用 eager 模式,则无法将 GPU …
我正在尝试将多个model_spec及其受尊敬的输入添加为单个 predict_pb2.PredictRequest(),如下所示:
tmp = predict_pb2.PredictRequest()
tmp.model_spec.name = '1'
tmp.inputs['tokens'].CopyFrom(make_tensor_proto([1,2,3]))
tmp.model_spec.name = '2'
tmp.inputs['tokens'].CopyFrom(make_tensor_proto([4,5,6]))
Run Code Online (Sandbox Code Playgroud)
但是我只得到2的信息:
>> tmp
model_spec {
name: "2"
}
inputs {
key: "tokens"
value {
dtype: DT_INT32
tensor_shape {
dim {
size: 3
}
}
tensor_content: "\004\000\000\000\005\000\000\000\006\000\000\000"
}
}
Run Code Online (Sandbox Code Playgroud)
如何为具有各自输入的多个模型获得单个PredictRequest()?
我的目的是创建一个请求并将其发送到为两个模型提供服务的tensorflow服务。还有其他解决方法吗?为两个模型创建两个单独的请求,并从tf_serving一个接一个的工作中获得结果,但是我想知道是否可以将两个请求合并为一个。
我们得到了这个 3D input_tensor,它是一个代表 的张量(batch_size, N, 2)。
batch_size = total batchesN = total predictions,2 = (label, score)我想添加分值(第 2 列元素),其中每个批次的标签(第 1 列元素)都相同。例如,给定这个张量有 3 个批次,每批次 4 个预测和 2 个元素;我想要required_output_tensor结果。
条件:否for loops或tf.map_fn()针对此答案。原因,tf.map_fn() 在 TF2.X 的 GPU 上很慢。您可以在此处查看我处理 2d 张量的示例代码,我可以将其与 tf.map_fn() 一起使用。
input_tensor = tf.constant([
[
[2., 0.7],
[1., 0.1],
[3., 0.4],
[2., 0.8],
],
[
[2., 0.7],
[1., 0.1],
[1., 0.4],
[4., 0.8],
],
[
[3., 0.7],
[1., …Run Code Online (Sandbox Code Playgroud)