コード例 #1
0
    def SendFeedback():
        feedback = extract_message()

        if debug:
            print("SELDON DEBUGGING")
            print("Feedback received: ")
            print(feedback)

        datadef_request = feedback.get("request", {}).get("data", {})
        features = rest_datadef_to_array(datadef_request)

        datadef_truth = feedback.get("truth", {}).get("data", {})
        truth = rest_datadef_to_array(datadef_truth)

        reward = feedback.get("reward")

        try:
            routing = feedback.get("response").get("meta").get("routing").get(
                PRED_UNIT_ID)
        except AttributeError:
            raise SeldonMicroserviceException(
                "Router feedback must contain a routing dictionary in the response metadata"
            )

        send_feedback(user_router, features, datadef_request.get("names"),
                      routing, reward, truth)
        return jsonify({})
コード例 #2
0
    def SendFeedback():
        feedback = extract_message()
        
        datadef_request = feedback.get("request").get("data")
        features = rest_datadef_to_array(datadef)
        
        truth = rest_datadef_to_array(feedback.get("truth"))
        reward = feedback.get("reward")

        send_feedback(user_model,features,datadef_request.get("names"),truth,reward)
        return jsonify({})
コード例 #3
0
    def SendFeedback():
        feedback = extract_message()
        
        datadef_request = feedback.get("request").get("data")
        features = rest_datadef_to_array(datadef)
        
        truth = rest_datadef_to_array(feedback.get("truth"))
        reward = feedback.get("reward")
        routing = feedback.get("response").get("meta").get("routing").get(PRED_UNIT_ID)

        send_feedback(user_router,features,datadef_request.get("names"),routing,reward,truth)
        return jsonify({})
コード例 #4
0
    def Route():

        request = extract_message()

        if debug:
            print("SELDON DEBUGGING")
            print("Request received: ")
            print(request)

        sanity_check_request(request)

        datadef = request.get("data")
        features = rest_datadef_to_array(datadef)

        routing = np.array(
            [[route(user_router, features, datadef.get("names"))]])
        # TODO: check that predictions is 2 dimensional
        class_names = []

        data = array_to_rest_datadef(routing, class_names, datadef)

        response = {"data": data, "meta": {}}
        tags = get_custom_tags(user_router)
        if tags:
            response["meta"]["tags"] = tags
        metrics = get_custom_metrics(user_router)
        if metrics:
            response["meta"]["metrics"] = metrics
        return jsonify(response)
コード例 #5
0
def test_json_tftensor_to_array():
    names = ["a", "b"]
    array = np.array([[1, 2], [3, 4]])
    datadef = prediction_pb2.DefaultData(names=names,
                                         tftensor=tf.make_tensor_proto(array))
    jStr = json_format.MessageToJson(datadef)
    j = json.loads(jStr)
    array2 = rest_datadef_to_array(j)
    assert np.array_equal(array, array2)
コード例 #6
0
    def Predict():
        request = extract_message()
        sanity_check_request(request)
        
        datadef = request.get("data")
        features = rest_datadef_to_array(datadef)

        predictions = np.array(predict(user_model,features,datadef.get("names")))
        # TODO: check that predictions is 2 dimensional
        class_names = get_class_names(user_model, predictions.shape[1])

        data = array_to_rest_datadef(predictions, class_names, datadef)

        return jsonify({"data":data})
コード例 #7
0
    def TransformInput():
        request = extract_message()
        sanity_check_request(request)
        
        datadef = request.get("data")
        features = rest_datadef_to_array(datadef)

        outlier_scores = score(user_model,features,datadef.get("names"))
        # TODO: check that predictions is 2 dimensional

        request["meta"].setdefault("tags",{})
        request["meta"]["tags"]["outlierScore"] = list(outlier_scores)

        return jsonify(request)
コード例 #8
0
    def TransformOutput():
        request = extract_message()
        sanity_check_request(request)
        
        datadef = request.get("data")
        features = rest_datadef_to_array(datadef)

        transformed = np.array(transform_output(user_model,features,datadef.get("names")))
        # TODO: check that predictions is 2 dimensional
        new_class_names = get_class_names(user_model, datadef.get("names"))

        data = array_to_rest_datadef(transformed, new_class_names, datadef)

        return jsonify({"data":data})
コード例 #9
0
    def Route():
        request = extract_message()
        sanity_check_request(request)
        
        datadef = request.get("data")
        features = rest_datadef_to_array(datadef)

        routing = np.array([[route(user_router,features,datadef.get("names"))]])
        # TODO: check that predictions is 2 dimensional
        class_names = []

        data = array_to_rest_datadef(routing, class_names, datadef)

        return jsonify({"data":data})
コード例 #10
0
    def Predict():
        request = extract_message()
        sanity_check_request(request)

        datadef = request.get("data")
        features = rest_datadef_to_array(datadef)

        predictions = np.array(
            predict(user_model, features, datadef.get("names")))
        if len(predictions.shape) > 1:
            class_names = get_class_names(user_model, predictions.shape[1])
        else:
            class_names = []

        data = array_to_rest_datadef(predictions, class_names, datadef)

        return jsonify({"data": data})
コード例 #11
0
    def Predict():
        request = extract_message()
        sanity_check_request(request)

        datadef = request.get("data")
        features = rest_datadef_to_array(datadef)

        predictions = np.array(predict(user_model,features,datadef.get("names")))
        if len(predictions.shape)>1:
            class_names = get_class_names(user_model, predictions.shape[1])
        else:
            class_names = []

        data = array_to_rest_datadef(predictions, class_names, datadef)

        response = {"data":data,"meta":{}}
        tags = get_custom_tags(user_model)
        if tags:
            response["meta"]["tags"] = tags
        metrics = get_custom_metrics(user_model)
        if metrics:
            response["meta"]["metrics"] = metrics
        return jsonify(response)