Я точно не знаю подходящий вопрос, чтобы задать его здесь, так что простите, если этот вопрос немного растрепался - я его уберу, если вы все сможете помочь сузить его.
У меня есть модель, которую мы обучаем TFX и экспортируем для обслуживания с Tensorflow Serving. Я скомпилировал прото-файлы и могу сделать запрос gRP C. Со следующим кодом:
request := &pb.PredictRequest{
ModelSpec: &pb.ModelSpec{
Name: "my-model",
},
Inputs: map[string]*tf_core_framework.TensorProto{
"image": &tf_core_framework.TensorProto{
Dtype: tf_core_framework.DataType_DT_STRING,
TensorShape: &tf_core_framework.TensorShapeProto{
Dim: []*tf_core_framework.TensorShapeProto_Dim{
&tf_core_framework.TensorShapeProto_Dim{
Size: int64(1),
},
},
},
StringVal: [][]byte{imageBytes},
},
},
}
conn, err := grpc.Dial(*servingAddress, grpc.WithInsecure())
if err != nil {
log.Fatalf("Cannot connect to the grpc server: %v\n", err)
}
defer conn.Close()
client := pb.NewPredictionServiceClient(conn)
resp, err := client.Predict(context.Background(), request)
Это прекрасно работает, когда есть один вход, такой как изображение, которое мы имеем здесь, с известной формой. Тем не менее, моя модель будет иметь около 90 функций, которые мне нужно передать. В python я могу прочитать файл schema.pbtext
, который выводится с сохраненной моделью, а затем использовать schema_utils.schema_from_feature_spec
и schema_utils.schema_as_feature_spec
, чтобы загрузить эту схему и заполнить ее динамически - но я не уверен, как Я могу сделать это в Go. У кого-нибудь есть примеры более сложных вызовов TF Serving из Golang, по которым я могу следить?
Я думаю, что-то похожее на Создание экземпляров или входных данных для TensorFlow Serving REST API , но с ВРП C и Go.