Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在一个服务器调用中将请求对象的列表/数组传递给tensorflow?_Tensorflow_Tensorflow Serving - Fatal编程技术网

如何在一个服务器调用中将请求对象的列表/数组传递给tensorflow?

如何在一个服务器调用中将请求对象的列表/数组传递给tensorflow?,tensorflow,tensorflow-serving,Tensorflow,Tensorflow Serving,加载wide和deep模型后,我能够使用特性映射对一个请求对象进行预测,然后将其序列化为字符串以进行预测,如下所示- 有没有一种方法可以创建一批请求对象并将它们发送到tensorflow服务器进行预测? 单个预测的代码如下所示- for (each feature in feature list) { Feature feature = null; feature = Feature.newBuilder().setBytesList(BytesList.newBuilder()

加载wide和deep模型后,我能够使用特性映射对一个请求对象进行预测,然后将其序列化为字符串以进行预测,如下所示-

有没有一种方法可以创建一批请求对象并将它们发送到tensorflow服务器进行预测?

单个预测的代码如下所示-

for (each feature in feature list) {
    Feature feature = null;
    feature = Feature.newBuilder().setBytesList(BytesList.newBuilder().addValue(ByteString.copyFromUtf8("dummy string"))).build();

        if (feature != null) {
            inputFeatureMap.put(name, feature);
        }
}

是否有一种方法可以发送预测对象的功能列表,类似于此-


List
={通过某种方式创建可以转换为序列化字符串的inputFeatureMap数组/列表。}

对于任何在这里遇到障碍的人,我找到了一个简单的解决方法,其中包含示例proto to do批处理请求。我将借用问题中的代码,并为批处理修改它

Features features =
    Features.newBuilder()
        .putFeature("Attribute1", feature("A12"))
        .putFeature("Attribute2", feature(12))
        .putFeature("Attribute3", feature("A32"))
        .putFeature("Attribute4", feature("A40"))
        .putFeature("Attribute5", feature(7472))
        .putFeature("Attribute6", feature("A65"))
        .putFeature("Attribute7", feature("A71"))
        .putFeature("Attribute8", feature(1))
        .putFeature("Attribute9", feature("A92"))
        .putFeature("Attribute10", feature("A101"))
        .putFeature("Attribute11", feature(2))
        .putFeature("Attribute12", feature("A121"))
        .putFeature("Attribute13", feature(24))
        .putFeature("Attribute14", feature("A143"))
        .putFeature("Attribute15", feature("A151"))
        .putFeature("Attribute16", feature(1))
        .putFeature("Attribute17", feature("A171"))
        .putFeature("Attribute18", feature(1))
        .putFeature("Attribute19", feature("A191"))
        .putFeature("Attribute20", feature("A201"))
        .build();
Example example = Example.newBuilder().setFeatures(features).build();

String pfad = System.getProperty("user.dir") + "\\1511523781";
try (SavedModelBundle model = SavedModelBundle.load(pfad, "serve")) {
  Session session = model.session();
  final String xName = "input_example_tensor";
  final String scoresName = "dnn/head/predictions/probabilities:0";

  try (Tensor<String> inputBatch = Tensors.create(new byte[][] {example.toByteArray(), example.toByteArray(), example.toByteArray(), example.toByteArray()});
      Tensor<Float> output =
          session
              .runner()
              .feed(xName, inputBatch)
              .fetch(scoresName)
              .run()
              .get(0)
              .expect(Float.class)) {
    System.out.println(Arrays.deepToString(output.copyTo(new float[4][2])));
  }
}
功能=
Features.newBuilder()
.putFeature(“属性1”,特征(“A12”))
.putFeature(“属性2”,特征(12))
.putFeature(“属性3”,特征(“A32”))
.putFeature(“属性4”,特征(“A40”))
.putFeature(“属性5”,特征(7472))
.putFeature(“属性6”,特征(“A65”))
.putFeature(“属性7”,特征(“A71”))
.putFeature(“属性8”,特征(1))
.putFeature(“属性9”,特征(“A92”))
.putFeature(“属性10”,特征(“A101”))
.putFeature(“属性11”,特征(2))
.putFeature(“属性12”,特征(“A121”))
.putFeature(“属性13”,特征(24))
.putFeature(“属性14”,特征(“A143”))
.putFeature(“属性15”,特征(“A151”))
.putFeature(“属性16”,特征(1))
.putFeature(“属性17”,特征(“A171”))
.putFeature(“属性18”,特征(1))
.putFeature(“属性19”,特征(“A191”))
.putFeature(“属性20”,特征(“A201”))
.build();
Example=Example.newBuilder().setFeatures(features).build();
字符串pfad=System.getProperty(“user.dir”)+“\\1511523781”;
try(SavedModelBundle model=SavedModelBundle.load(pfad,“service”)){
会话=model.Session();
最终字符串xName=“输入\示例\张量”;
最终字符串scoresName=“dnn/head/predictions/probability:0”;
try(Tensor inputBatch=Tensors.create(新字节[]{example.toByteArray(),example.toByteArray(),example.toByteArray(),example.toByteArray()});
张量输出=
一场
.runner()
.feed(xName,inputBatch)
.fetch(scoresName)
.run()
.get(0)
.expect(Float.class)){
System.out.println(Arrays.deepToString(output.copyTo(newfloat[4][2]));
}
}
基本上,您可以将每个示例作为对象传递到
字节[4][
中,您将收到相同形状的结果
浮点[4][2]

Features features =
    Features.newBuilder()
        .putFeature("Attribute1", feature("A12"))
        .putFeature("Attribute2", feature(12))
        .putFeature("Attribute3", feature("A32"))
        .putFeature("Attribute4", feature("A40"))
        .putFeature("Attribute5", feature(7472))
        .putFeature("Attribute6", feature("A65"))
        .putFeature("Attribute7", feature("A71"))
        .putFeature("Attribute8", feature(1))
        .putFeature("Attribute9", feature("A92"))
        .putFeature("Attribute10", feature("A101"))
        .putFeature("Attribute11", feature(2))
        .putFeature("Attribute12", feature("A121"))
        .putFeature("Attribute13", feature(24))
        .putFeature("Attribute14", feature("A143"))
        .putFeature("Attribute15", feature("A151"))
        .putFeature("Attribute16", feature(1))
        .putFeature("Attribute17", feature("A171"))
        .putFeature("Attribute18", feature(1))
        .putFeature("Attribute19", feature("A191"))
        .putFeature("Attribute20", feature("A201"))
        .build();
Example example = Example.newBuilder().setFeatures(features).build();

String pfad = System.getProperty("user.dir") + "\\1511523781";
try (SavedModelBundle model = SavedModelBundle.load(pfad, "serve")) {
  Session session = model.session();
  final String xName = "input_example_tensor";
  final String scoresName = "dnn/head/predictions/probabilities:0";

  try (Tensor<String> inputBatch = Tensors.create(new byte[][] {example.toByteArray(), example.toByteArray(), example.toByteArray(), example.toByteArray()});
      Tensor<Float> output =
          session
              .runner()
              .feed(xName, inputBatch)
              .fetch(scoresName)
              .run()
              .get(0)
              .expect(Float.class)) {
    System.out.println(Arrays.deepToString(output.copyTo(new float[4][2])));
  }
}