如何在C#中调用Sagemaker培训模型端点API

Dib*_*iya 7 c# amazon-s3 amazon-web-services sparkr amazon-sagemaker

我通过sagemaker实现了机器学习算法.

我已经为.net安装了SDK,并尝试执行下面的代码.

Uri sagemakerEndPointURI = new Uri("https://runtime.sagemaker.us-east-2.amazonaws.com/endpoints/MyEndpointName/invocations");
Amazon.SageMakerRuntime.Model.InvokeEndpointRequest request = new Amazon.SageMakerRuntime.Model.InvokeEndpointRequest();
request.EndpointName = "MyEndpointName";
AmazonSageMakerRuntimeClient aawsClient = new AmazonSageMakerRuntimeClient(myAwsAccessKey,myAwsSecreteKey);            
Amazon.SageMakerRuntime.Model.InvokeEndpointResponse resposnse= aawsClient.InvokeEndpoint(request);
Run Code Online (Sandbox Code Playgroud)

通过执行此操作,我得到验证错误为" 1 validation error detected: Value at 'body' failed to satisfy constraint: Member must not be null"

任何人都可以指导我如何以及需要传递多少输入数据来调用给定的API?

编辑

此外,我尝试通过provinding body参数,其中包含由'.gz'或'.pkl'文件编写的MemoryStream,并且它给出了错误:"错误解组来自AWS的响应,HTTP内容长度超过5246976字节."

编辑1/23/2018

此外,我想出了错误消息

错误 - 模型服务器 - 'TypeError'对象没有属性'message'

谢谢

Dib*_*iya 1

后来通过下面的代码解决了它Encoding.ASCII.GetBytes

 byte[] bytes = System.IO.File.ReadAllBytes(@"EXCEL_FILE_PATH");
    string listA = "";
    while (!reader.EndOfStream)
        {
            var line = reader.ReadLine();
            listA = listA + line + "\n";
        }
    byte[] bytes = Encoding.ASCII.GetBytes(listA);
    request.Body = new MemoryStream(bytes);
    InvokeEndpointResponse response = sagemakerRunTimeClient.InvokeEndpoint(request);
    string predictions = Encoding.UTF8.GetString(response.Body.ToArray());
Run Code Online (Sandbox Code Playgroud)