Python SageMaker请求_正文是字节数组而不是字符串

Python SageMaker请求_正文是字节数组而不是字符串,python,amazon-sagemaker,Python,Amazon Sagemaker,我想知道为什么我传递的predictor.predict()请求体会变成字节数组,即使我传递的是字符串。但是,当我通过调用SageMaker端点通过Postman传递request\u body时,request\u body是一个字符串 例如,如果我这样做: predictor.predict('"users": ["1"]') 如果我的输入法为: def input_fn(request_body, request_content_type):

我想知道为什么我传递的
predictor.predict()
请求体会变成字节数组,即使我传递的是字符串。但是,当我通过调用SageMaker端点通过Postman传递
request\u body
时,
request\u body
是一个字符串

例如,如果我这样做:

predictor.predict('"users": ["1"]')
如果我的
输入法为:

def input_fn(request_body, request_content_type):
    print(request_body)
    ...
print
语句将给出:

bytearray(b'\x93NUMPY\x01\x00v\x00{\'descr\': \'<U14\', \'fortran_order\': False, \'shape\': (), }\n{\x00\x00\x00"\x00\x00\x00u\x00\x00\x00s\x00\x00\x00e\x00\x00\x00r\x00\x00\x00s\x00\x00\x00"\x00\x00\x00:\x00\x00\x00 \x00\x00\x00[\x00\x00\x001\x00\x00\x00]\x00\x00\x00}\x00\x00\x00')

bytearray(b'\x93NUMPY\x01\x00v\x00{'descr\':\'Sagemaker需要序列化程序来推断输入。
对于string,您不需要提供序列化程序,因为已经存在默认的序列化程序IdentitySerializer

class sagemaker.predictor.Predictor(endpoint_name, sagemaker_session=None, serializer=<sagemaker.serializers.IdentitySerializer object>, deserializer=<sagemaker.deserializers.BytesDeserializer object>)
类sagemaker.predictor.predictor(端点名称,sagemaker\u会话=无,序列化程序=,反序列化程序=)


IdentitySerializer不是只想返回相同的东西吗?就像我传递“1”一样,它应该返回“1”。但是它返回的序列化对象是一个numpy数组。当我通过Postman传递它时,相同的
请求\u body
是一个字符串。我猜Postman在序列化之前会向您显示该字符串。
input\fn()
处理服务器内已序列化的对象