Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在Sagemaker 2中使用序列化程序和反序列化程序_Python 3.x_Amazon Web Services_Amazon Sagemaker - Fatal编程技术网

Python 3.x 如何在Sagemaker 2中使用序列化程序和反序列化程序

Python 3.x 如何在Sagemaker 2中使用序列化程序和反序列化程序,python-3.x,amazon-web-services,amazon-sagemaker,Python 3.x,Amazon Web Services,Amazon Sagemaker,我使用conda\u python3内核启动了一个Sagemaker笔记本,并跟随笔记本运行了一段时间 在撰写本文时,conda_python3附带的版本是1.72.0,但我想使用新功能,所以我更新了笔记本以使用最新版本 %%%bash pip安装-U sagemaker 我看到了它的更新 打印(sagemaker.\uuuuuu版本) # 2.4.1 从1.x版到2.x版的更改是最重要的 以前(在版本1.72.0中),我会更新预测器以使用正确的序列化器/反序列化器,并且可以在我的模型上运行

我使用
conda\u python3
内核启动了一个Sagemaker笔记本,并跟随笔记本运行了一段时间

在撰写本文时,
conda_python3
附带的版本是1.72.0,但我想使用新功能,所以我更新了笔记本以使用最新版本

%%%bash
pip安装-U sagemaker
我看到了它的更新

打印(sagemaker.\uuuuuu版本)
# 2.4.1
从1.x版到2.x版的更改是最重要的

以前(在版本1.72.0中),我会更新预测器以使用正确的序列化器/反序列化器,并且可以在我的模型上运行推断

来自sagemaker.predictor导入csv_序列化程序、json_反序列化程序
rcf_推断=rcf.deploy(
初始实例计数=1,
实例_type='ml.m4.xlarge',
)
rcf_expression.content_type='text/csv'
rcf_推理.serializer=csv_序列化程序
rcf_inference.accept='application/json'
rcf_推理.deserializer=json_反序列化器
结果=rcf\u推断.predict(一些数组)
(注意,所有这些都来自

我尝试使用sagemaker 2.4.1复制它,就像这样

从sagemaker.deserializers导入JSONDeserializer
从sagemaker.Serializer导入CSVSSerializer
rcf_推断=rcf.deploy(
初始实例计数=1,
实例_type='ml.m5.xlarge',
序列化程序=CSV序列化程序,
反序列化程序=JSONDeserializer
)
结果=rcf\u推断.predict(一些数组)
我收到一个错误

TypeError: serialize() missing 1 required positional argument: 'data'

我知道我错误地使用了serliaizer/反序列化器,但找不到关于如何使用它的好文档

为了使用新的序列化器/反序列化器,您需要初始化它们,例如:

from sagemaker.deserializers import JSONDeserializer
from sagemaker.serializers import CSVSerializer

rcf_inference = rcf.deploy(
    initial_instance_count=1,
    instance_type='ml.m5.xlarge',
    serializer=CSVSerializer(),
    deserializer=JSONDeserializer()
)

对于自定义序列化程序,我们可以在SageMaker 2.x中这样做:

从sagemaker.deserializers导入JSONDeserializer
从sagemaker.serializer导入JSONSerializer
FMSerializer类(JSONSerializer):
def序列化(自身、数据):
js={'instances':[]}
对于数据中的行:
js['instances'].append({'features':row.tolist()})
返回json.dumps(js)
预测器=估计器.deploy(
初始实例计数=1,
实例_type=“ml.m4.xlarge”,
序列化程序=FMSerializer(),
反序列化程序=JSONDeserializer()
)

Dude!!你太棒了!!这也适用于我的用例