小编Sne*_*hal的帖子

使用 tf.lookup.StaticHashTable 导出 TF2.2.0 模型进行服务时出错

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 …

keras tensorflow tensorflow-serving tf.keras tensorflow2.0

6
推荐指数
1
解决办法
1520
查看次数

如何使用多个model_spec创建单个PredictRequest()?

我正在尝试将多个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一个接一个的工作中获得结果,但是我想知道是否可以将两个请求合并为一个。

tensorflow tensorflow-serving

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

如何将具有相似值的特定列的张量元素组合在一起?

我们得到了这个 3D input_tensor,它是一个代表 的张量(batch_size, N, 2)

  • 在哪里,
    • batch_size = total batches
    • N = total predictions,
    • 2 = (label, score)

我想添加分值(第 2 列元素),其中每个批次的标签(第 1 列元素)都相同。例如,给定这个张量有 3 个批次,每批次 4 个预测和 2 个元素;我想要required_output_tensor结果。

条件:for loopstf.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)

python tensorflow tensorflow2.0

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