Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.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
Amazon web services 正确返回AWS SageMaker Ground Truth自定义标签作业的批注后lambda中的标签_Amazon Web Services_Aws Lambda_Amazon Sagemaker - Fatal编程技术网

Amazon web services 正确返回AWS SageMaker Ground Truth自定义标签作业的批注后lambda中的标签

Amazon web services 正确返回AWS SageMaker Ground Truth自定义标签作业的批注后lambda中的标签,amazon-web-services,aws-lambda,amazon-sagemaker,Amazon Web Services,Aws Lambda,Amazon Sagemaker,我正在从事SageMaker自定义数据类型的标签工作。但是由于某些原因,我在AWS web控制台中没有获得正确的标签。它应该有一个选择的标签,它是“Native”,但是我得到的是“new-test-14” 在GroundTruth运行后期注释lambda之后,它似乎在返回数据对象之前修改元数据。它返回的数据对象在元数据属性中不包含类名键,即使我硬编码lambda以返回包含它的对象 我的清单文件如下所示: {"source-ref" : "s3://<file-

我正在从事SageMaker自定义数据类型的标签工作。但是由于某些原因,我在AWS web控制台中没有获得正确的标签。它应该有一个选择的标签,它是“Native”,但是我得到的是“new-test-14”

在GroundTruth运行后期注释lambda之后,它似乎在返回数据对象之前修改元数据。它返回的数据对象在元数据属性中不包含类名键,即使我硬编码lambda以返回包含它的对象

我的清单文件如下所示:

{"source-ref" : "s3://<file-name>", "text" : "Hello world"}
{"source-ref" : "s3://"<file-name>", "text" : "Hello world"}
该工作响应由我的post注释lambda处理,它是按照我的post注释lambda建模的。这是我的密码:

导入json
导入系统
进口boto3
从日期时间导入日期时间
def lambda_处理程序(事件、上下文):
#收到的事件
打印(“接收到的事件:+json.dumps(事件,缩进=2))
贴标作业=事件[“贴标作业”]
label\u attribute\u name=事件[“labelAttributeName”]
label_categories=无
如果事件中出现“标签类别”:
label_categories=事件[“labelCategories”]
打印(“标签类别为:”+标签\u类别)
有效载荷=事件[“有效载荷”]
role\u arn=事件[“roleArn”]
输出配置=无#输出s3位置。您可以选择将注释写入此位置
如果事件中出现“outputConfig”:
输出配置=事件[“输出配置”]
#如果在标签作业中指定了KMS密钥,则可以使用该密钥进行写入
#将输出整合到outputConfig中指定的s3位置。
#kms\U密钥\U id=无
#如果事件中出现“kmsKeyId”:
#kms_key_id=事件[“kmsKeyId”]
##创建s3客户端对象
#s3\u客户端=s3客户端(角色学习、kms\u密钥id)
s3\u client=boto3.client('s3'))
#进行合并
return do_consolidation(标记作业、有效负载、标记属性、名称、s3_客户端)
def do_整合(标记作业、有效负载、标记属性、名称、s3_客户端):
"""
整合的核心逻辑
:参数标记作业警告:标记作业警告
:param payload:用于合并的有效负载数据
:param label_attribute_name:输出JSON中标签的标识符
:param s3_客户端:s3帮助程序类
:return:output JSON字符串
"""
#提取有效载荷数据
如果有效负载中有“s3Uri”:
s3_ref=有效载荷[“s3Uri”]
有效载荷_bucket,有效载荷_key=s3_ref.split('/',2)[-1]。split('/',1)
payload=json.loads(s3\u client.get\u对象(Bucket=payload\u Bucket,Key=payload\u Key)['Body'].read())
#打印(有效载荷)
#有效负载数据包含数据对象的列表。
#对其进行迭代以合并单个数据对象的注释。
综合产出=[]
成功计数=0#成功合并的数据对象数
failure_count=0#整合失败的数据对象数
对于范围内的p(len(有效载荷)):
响应=无
dataset_object_id=payload[p]['datasetObjectId']
log_prefix=“[{}]数据对象id[{}]:”。格式(标记作业、数据集对象id)
打印(“{}合并注释开始”。格式(日志前缀))
注释=有效负载[p]['annotations']
#打印(“{}从所有工作人员{}收到的批注”。格式(日志前缀,批注))
#迭代注释。将所有注释记录到CloudWatch日志中
注释fRomallWorkers=[]
对于范围内的i(len(注释)):
worker_id=annotations[i][“workerId”]
anotation_data=注释[i][“annotationData”]
注释内容=注释数据[“内容”]
annotation\u content\u json=json.load(annotation\u content)
annotation\u job=annotation\u content\u json[“新建测试”]
注释\标签=注释\作业[“标签”]
合并注释={
“工作id”:工作id,
“注释数据”:{
“内容”:{
“注释结果”:{
“实例”:[{“标签”:注释\标签}]
}
}
}
}
annotationsFromAllWorkers.append(合并注释)
合并注释={“annotationsFromAllWorkers”:annotationsFromAllWorkers}#TODO:添加合并逻辑
#为单个数据对象生成整合响应对象
答复={
“datasetObjectId”:数据集\对象\ id,
“合并注释”:{
“内容”:{
标签\属性\名称:合并\注释,
标签\属性\名称+“-元数据”:{
“类名”:“本机”,
“信心”:0.00,
“人类注释”:“是”,
“创建日期”:datetime.strftime(datetime.now(),%Y-%m-%dT%H:%m:%S),
“类型”:“基本事实/习惯”
}
}
}
}
成功计数+=1
#打印(“{}结束”。格式(日志前缀))
#将单个数据对象响应附加到响应列表中。
如果响应不是无:
合并输出追加(响应)
故障计数+=1
打印(“数据对象{}的合并失败”。格式(p))
打印(“意外错误:合并失败。”+str(sys.exc_info()[0]))
打印(“合并完成。成功计数{}失败计数{}”。格式(成功计数,失败计数))
打印(“--合并输出--”)
打印(合并输出)
打印(“---------------------------”)
返回合并输出
如上所述,
do_consolidation
方法返回一个硬编码的对象,其中包含一个“Native”类名,
[{
    "datasetObjectId": "4",
    "consolidatedAnnotation": {
        "content": {
            "new-test-14": {
                "annotationsFromAllWorkers": [{
                    "workerId": "private.us-east-1.ea05a03fcd679cbb",
                    "annotationData": {
                        "content": {
                            "annotatedResult": {
                                "instances": [{
                                    "label": "Native"
                                }]
                            }
                        }
                    }
                }]
            },
            "new-test-14-metadata": {
                "class-name": "Native",
                "confidence": 0,
                "human-annotated": "yes",
                "creation-date": "2021-05-19T07:06:06",
                "type": "groundtruth/custom"
            }
        }
    }
}]