0

使用 Visual Studio 和 AWS .NET V 3.0。

我正在尝试执行实时预测操作,并验证基本设置是否有效,我首先执行一个 GetMLModel() 工作并返回端点(文档中的某处提到将该结果用作服务端点,但与控制台中列出的相同)。状态为“READY”,到目前为止一切顺利。

异常发生在“Prediction P = RTP.Predict(Data)”下方的行中。数据包含一个包含所有预测值的字典。

错误: 使用错误代码 UnknownOperationException 和 Http 状态代码 BadRequest 发出请求时出错。服务未返回更多错误信息。

public static APIResult GetRealTimePrediction(Dictionary<string, string> Data, string PayloadJSON = null) {

        AmazonMachineLearningConfig MLConfig = new AmazonMachineLearningConfig();

        MLConfig.RegionEndpoint = Amazon.RegionEndpoint.USEast1;
        MLConfig.Validate();

        AmazonMachineLearningClient MLClient = new AmazonMachineLearningClient("xxx", "xxx", MLConfig);
        GetMLModelResponse MLMOdelResp =  MLClient.GetMLModel("xxx"); // <-- WORKS

        MLConfig.ServiceURL = MLMOdelResp.EndpointInfo.EndpointUrl;
        Console.WriteLine(MLConfig.ServiceURL);
        MLConfig.Validate();

        Amazon.MachineLearning.Util.RealtimePredictor RTP = new Amazon.MachineLearning.Util.RealtimePredictor(MLClient, "xxx");
        Prediction P = RTP.Predict(Data); // <----------------EXCEPTION HERE

}

(显然将xxx替换为相关值):)

4

1 回答 1

2

事实证明,这一行:

MLConfig.ServiceURL = MLMOdelResp.EndpointInfo.EndpointUrl;

重置 MLConfig.RegionEndpoint 的情况。尽管文档表明 RegionEndpoint 可以从 ServiceURL 确定(我很确定我读过),但 RegionEndpoint 需要在 RTP.Predict(Data) 调用之前再次设置。

一旦我弄清楚了,我就可以将代码减少到这个程度,以防其他人需要帮助。我想在配置中添加太多信息并不是一件好事,因为 AWS。NET 库似乎可以自己解决所有这些问题。

public static APIResult GetRealTimePrediction(Dictionary<string, string> Data, string PayloadJSON = null) {
        AmazonMachineLearningConfig MLConfig = new AmazonMachineLearningConfig();
        MLConfig.RegionEndpoint = Amazon.RegionEndpoint.USEast1;
        MLConfig.Validate(); // Just in case, not really needed

        AmazonMachineLearningClient MLClient = new AmazonMachineLearningClient("xxx", "xxx", MLConfig);

        Amazon.MachineLearning.Util.RealtimePredictor RTP = new Amazon.MachineLearning.Util.RealtimePredictor(MLClient, "xxx");
        Prediction P = RTP.Predict(Data);
}
于 2016-08-31T20:23:43.123 回答