def Predict(self,request,context): features = get_data_from_proto(request) datadef = request.data data_type = request.WhichOneof("data_oneof") predictions = predict(self.user_model,features,datadef.names) # Construct meta data meta = prediction_pb2.Meta() metaJson = {} tags = get_custom_tags(self.user_model) if tags: metaJson["tags"] = tags metrics = get_custom_metrics(self.user_model) if metrics: metaJson["metrics"] = metrics json_format.ParseDict(metaJson,meta) if isinstance(predictions, np.ndarray) or data_type == "data": predictions = np.array(predictions) if len(predictions.shape)>1: class_names = get_class_names(self.user_model, predictions.shape[1]) else: class_names = [] if data_type == "data": default_data_type = request.data.WhichOneof("data_oneof") else: default_data_type = "tensor" data = array_to_grpc_datadef(predictions, class_names, default_data_type) return prediction_pb2.SeldonMessage(data=data,meta=meta) else: return prediction_pb2.SeldonMessage(binData=predictions,meta=meta)
def test_proto_array_to_tftensor(): arr = np.array([[1, 2, 3], [4, 5, 6]]) datadef = array_to_grpc_datadef(arr, [], "tftensor") print(datadef) assert datadef.tftensor.tensor_shape.dim[0].size == 2 assert datadef.tftensor.tensor_shape.dim[1].size == 3 assert datadef.tftensor.dtype == 9
def Predict(self, request, context): datadef = request.data features = grpc_datadef_to_array(datadef) predictions = np.array( predict(self.user_model, features, datadef.names)) if len(predictions.shape) > 1: class_names = get_class_names(self.user_model, predictions.shape[1]) else: class_names = [] data = array_to_grpc_datadef(predictions, class_names, request.data.WhichOneof("data_oneof")) # Construct meta data meta = prediction_pb2.Meta() metaJson = {} tags = get_custom_tags(self.user_model) if tags: metaJson["tags"] = tags metrics = get_custom_metrics(self.user_model) if metrics: metaJson["metrics"] = metrics json_format.ParseDict(metaJson, meta) return prediction_pb2.SeldonMessage(data=data, meta=meta)
def TransformOutput(self, request, context): features = get_data_from_proto(request) datadef = request.data data_type = request.WhichOneof("data_oneof") # Construct meta data meta = prediction_pb2.Meta() metaJson = {} tags = get_custom_tags(self.user_model) if tags: metaJson["tags"] = tags metrics = get_custom_metrics(self.user_model) if metrics: metaJson["metrics"] = metrics json_format.ParseDict(metaJson, meta) transformed = transform_output(self.user_model, features, datadef.names) if isinstance(transformed, np.ndarray) or data_type == "data": transformed = np.array(transformed) class_names = get_class_names(self.user_model, datadef.names) if data_type == "data": default_data_type = request.data.WhichOneof("data_oneof") else: default_data_type = "tensor" data = array_to_grpc_datadef(transformed, class_names, default_data_type) return prediction_pb2.SeldonMessage(data=data, meta=meta) else: return prediction_pb2.SeldonMessage(binData=transformed, meta=meta)
def Predict(self,request,context): datadef = request.data features = grpc_datadef_to_array(datadef) predictions = np.array(predict(self.user_model,features,datadef.names)) #TODO: check that predictions is 2 dimensional class_names = get_class_names(self.user_model, predictions.shape[1]) data = array_to_grpc_datadef(predictions, class_names, request.data.WhichOneof("data_oneof")) return prediction_pb2.SeldonMessage(data=data)
def Route(self,request,context): datadef = request.data features = grpc_datadef_to_array(datadef) routing = np.array([[route(self.user_model,features,datadef.names)]]) #TODO: check that predictions is 2 dimensional class_names = [] data = array_to_grpc_datadef(routing, class_names, request.data.WhichOneof("data_oneof")) return prediction_pb2.SeldonMessage(data=data)
def TransformOutput(self,request,context): datadef = request.data features = grpc_datadef_to_array(datadef) transformed = np.array(transform_output(self.user_model,features,datadef.names)) #TODO: check that predictions is 2 dimensional class_names = get_class_names(self.user_model, datadef.names) data = array_to_grpc_datadef(transformed, class_names, request.data.WhichOneof("data_oneof")) return prediction_pb2.SeldonMessage(data=data)
def Predict(self, request, context): datadef = request.data features = grpc_datadef_to_array(datadef) predictions = np.array( predict(self.user_model, features, datadef.names)) if len(predictions.shape) > 1: class_names = get_class_names(self.user_model, predictions.shape[1]) else: class_names = [] data = array_to_grpc_datadef(predictions, class_names, request.data.WhichOneof("data_oneof")) return prediction_pb2.SeldonMessage(data=data)
def Route(self,request,context): datadef = request.data features = grpc_datadef_to_array(datadef) routing = np.array([[route(self.user_model,features,datadef.names)]]) #TODO: check that predictions is 2 dimensional class_names = [] data = array_to_grpc_datadef(routing, class_names, request.data.WhichOneof("data_oneof")) # Construct meta data meta = prediction_pb2.Meta() metaJson = {} tags = get_custom_tags(self.user_model) if tags: metaJson["tags"] = tags metrics = get_custom_metrics(self.user_model) if metrics: metaJson["metrics"] = metrics json_format.ParseDict(metaJson,meta) return prediction_pb2.SeldonMessage(data=data,meta=meta)