

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 调试失败的模型训练
<a name="tm-debugging"></a>

在模型训练期间，您可能会遇到错误。Amazon Rekognition 自定义标签会在控制台和来自的响应中报告训练错误。[DescribeProjectVersions](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeProjectVersions)

错误要么是终止性错误（训练无法继续），要么是非终止性错误（训练可以继续）。对于与训练和测试数据集内容相关的错误，您可以下载验证结果（[清单摘要](tm-debugging-summary.md)以及[训练和测试验证清单](tm-debugging-scope-json-line.md)）。使用验证结果中的错误代码在本节中查找更多信息。本节还提供了清单文件错误（在验证清单文件内容之前发生的终止性错误）的信息。

**注意**  
清单是用于存储数据集内容的文件。

可以使用 Amazon Rekognition Custom Labels 控制台修复部分错误。其他错误可能需要您更新训练或测试清单文件。您可能需要进行其他更改，例如 IAM 权限。有关更多信息，请参阅文档中的各个错误。

## 终止性错误
<a name="tm-error-categories-terminal"></a>

终止性错误会停止模型的训练。终止性训练错误分为 3 类：服务错误、清单文件错误和清单内容错误。

在控制台中，Amazon Rekognition Custom Labels 会在项目页面的**状态消息**列中显示模型的终止性错误。项目管理控制面板显示项目列表，包括名称、版本、创建日期、模型性能以及指示模型状态（例如训练已完成或失败）的状态消息

![\[项目管理控制面板的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/rekognition/latest/customlabels-dg/images/terminal-errors.png)


如果您使用 AWS 软件开发工具包，则可以通过查看来自[DescribeProjectVersions](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeProjectVersions)的响应来确定是否发生了终端清单文件错误或终端清单内容错误。在本例中，`Status` 值为 `TRAINING_FAILED`，`StatusMessage` 字段包含错误。

### 服务错误
<a name="tm-error-category-service"></a>

当 Amazon Rekognition 遇到服务问题且无法继续训练时，就会发生终止性服务错误。例如，Amazon Rekognition Custom Labels 所依赖的另一项服务出现故障。当 *Amazon Rekognition 遇到服务问题*时，Amazon Rekognition Custom Labels 就会在控制台中报告服务错误。如果您使用 AWS SDK，则训练期间发生的服务错误会被[CreateProjectVersion](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateProjectVersion)和作为`InternalServerError`异常引发[DescribeProjectVersions](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeProjectVersions)。

如果发生服务错误，请重试模型训练。如果训练仍然失败，请联系 *[AWS Support](https://aws.amazon.com/premiumsupport/)*，并附上与服务错误一起报告的所有错误信息。

### 终止性清单文件错误列表
<a name="tm-error-category-terminal"></a>

清单文件错误是终止性错误，在训练和测试数据集中的文件级或跨多个文件发生。清单文件错误可在验证训练和测试数据集内容之前检测到。清单文件错误会阻止报告[非终止性验证错误](#tm-error-category-non-terminal-errors)。例如，空的训练清单文件会生成*清单文件为空*错误。由于文件为空，因此无法报告任何非终止性 JSON 行验证错误。也不会创建清单摘要。

必须先修复清单文件错误，然后才能训练模型。

下面列出了清单文件错误。
+ [清单文件扩展名或内容无效。](tm-terminal-errors-reference.md#tm-error-message-ERROR_MANIFEST_INACCESSIBLE_OR_UNSUPPORTED_FORMAT)
+ [清单文件为空。](tm-terminal-errors-reference.md#tm-error-message-ERROR_EMPTY_MANIFEST)
+ [清单文件大小超过了支持的最大大小。](tm-terminal-errors-reference.md#tm-error-message-ERROR_MANIFEST_SIZE_TOO_LARGE)
+ [无法写入到输出 S3 存储桶。](tm-terminal-errors-reference.md#tm-error-message-ERROR_CANNOT_WRITE_OUTPUT_S3_BUCKET)
+ [S3 存储桶权限不正确。](tm-terminal-errors-reference.md#tm-error-message-ERROR_INVALID_PERMISSIONS_MANIFEST_S3_BUCKET)

### 终止性清单内容错误列表
<a name="tm-error-category-combined-terminal"></a>

清单内容错误是与清单中的内容相关的终止性错误。例如，如果收到错误[清单文件中每个标签包含的带标签图像不足，无法执行自动拆分](tm-debugging-aggregate-errors.md#tm-error-message-ERROR_INSUFFICIENT_IMAGES_PER_LABEL_FOR_AUTOSPLIT)，训练将无法完成，因为训练数据集中没有足够的带标签图像来创建测试数据集。

该错误除了在控制台和 `DescribeProjectVersions` 的响应中报告以外，还与任何其他终止性清单内容错误一起在清单摘要中报告。有关更多信息，请参阅 [了解清单摘要](tm-debugging-summary.md)。

非终止性 JSON 行错误还会在单独的训练和测试验证结果清单中报告。Amazon Rekognition Custom Labels 发现的非终止性 JSON 行错误不一定与停止训练的清单内容错误有关。有关更多信息，请参阅 [了解训练和测试验证结果清单](tm-debugging-scope-json-line.md)。

必须先修复清单内容错误，然后才能训练模型。

以下是清单内容错误的错误消息。
+ [清单文件包含太多无效行。](tm-debugging-aggregate-errors.md#tm-error-message-ERROR_TOO_MANY_INVALID_ROWS_IN_MANIFEST)
+ [清单文件包含来自多个 S3 存储桶的图像。](tm-debugging-aggregate-errors.md#tm-error-message-ERROR_IMAGES_IN_MULTIPLE_S3_BUCKETS)
+ [图像 S3 存储桶的拥有者 ID 无效。](tm-debugging-aggregate-errors.md#tm-error-message-ERROR_INVALID_IMAGES_S3_BUCKET_OWNER)
+ [清单文件中每个标签包含的带标签图像不足，无法执行自动拆分。](tm-debugging-aggregate-errors.md#tm-error-message-ERROR_INSUFFICIENT_IMAGES_PER_LABEL_FOR_AUTOSPLIT)
+ [清单文件包含的标签太少。](tm-debugging-aggregate-errors.md#tm-error-message-ERROR_MANIFEST_TOO_FEW_LABELS)
+ [清单文件包含的标签太多。](tm-debugging-aggregate-errors.md#tm-error-message-ERROR_MANIFEST_TOO_MANY_LABELS)
+ [训练和测试清单文件之间的标签重叠度小于 \$1\$1%。](tm-debugging-aggregate-errors.md#tm-error-message-ERROR_INSUFFICIENT_LABEL_OVERLAP)
+ [清单文件包含的可用标签太少。](tm-debugging-aggregate-errors.md#tm-error-message-ERROR_MANIFEST_TOO_FEW_USABLE_LABELS)
+ [训练和测试清单文件之间的可用标签重叠度小于 \$1\$1%。](tm-debugging-aggregate-errors.md#tm-error-message-ERROR_INSUFFICIENT_USABLE_LABEL_OVERLAP)
+ [无法从 S3 存储桶复制图像。](tm-debugging-aggregate-errors.md#tm-error-message-ERROR_FAILED_IMAGES_S3_COPY)

## 非终止性 JSON 行验证错误列表
<a name="tm-error-category-non-terminal-errors"></a>

JSON 行验证错误是非终止性错误，不需要 Amazon Rekognition Custom Labels 停止训练模型。

JSON 行验证错误不会显示在控制台中。

在训练和测试数据集中，JSON 行代表单张图像的训练或测试信息。JSON 行中的验证错误（例如图像无效）会在训练和测试验证清单中报告。Amazon Rekognition Custom Labels 会使用清单中的其他有效 JSON 行完成训练。有关更多信息，请参阅 [了解训练和测试验证结果清单](tm-debugging-scope-json-line.md)。有关验证规则的信息，请参阅[清单文件的验证规则](md-create-manifest-file-validation-rules.md)。

**注意**  
如果 JSON 行错误太多，训练就会失败。

建议将非终止性 JSON 行错误也一并修复，因为它们可能会在将来引起错误或影响您的模型训练。

Amazon Rekognition Custom Labels 可能会生成以下非终止性 JSON 行验证错误。
+ [缺少 source-ref 键。](tm-debugging-json-line-errors.md#tm-error-ERROR_MISSING_SOURCE_REF)
+ [source-ref 值的格式无效。](tm-debugging-json-line-errors.md#tm-error-ERROR_INVALID_SOURCE_REF_FORMAT)
+ [未找到标签属性。](tm-debugging-json-line-errors.md#tm-error-ERROR_NO_LABEL_ATTRIBUTES)
+ [标签属性 \$1\$1 的格式无效。](tm-debugging-json-line-errors.md#tm-error-ERROR_INVALID_LABEL_ATTRIBUTE_FORMAT)
+ [标签属性元数据的格式无效。](tm-debugging-json-line-errors.md#tm-error-ERROR_INVALID_LABEL_ATTRIBUTE_METADATA_FORMAT)
+ [未找到有效的标签属性。](tm-debugging-json-line-errors.md#tm-error-ERROR_NO_VALID_LABEL_ATTRIBUTES)
+ [一个或多个边界框缺少置信度值。](tm-debugging-json-line-errors.md#tm-error-ERROR_MISSING_BOUNDING_BOX_CONFIDENCE)
+ [类别映射中缺少一个或多个类别 ID。](tm-debugging-json-line-errors.md#tm-error-ERROR_MISSING_CLASS_MAP_ID)
+ [JSON 行的格式无效。](tm-debugging-json-line-errors.md#tm-error-ERROR_INVALID_JSON_LINE)
+ [图像无效。检查 S3 路径 and/or 图像属性。](tm-debugging-json-line-errors.md#tm-error-ERROR_INVALID_IMAGE)
+ [边界框具有超出边框的值。](tm-debugging-json-line-errors.md#tm-error-ERROR_INVALID_BOUNDING_BOX)
+ [边界框的高度和宽度太小。](tm-debugging-json-line-errors.md#tm-error-ERROR_BOUNDING_BOX_TOO_SMALL)
+ [边界框的数量超出了允许的最大数量。](tm-debugging-json-line-errors.md#tm-error-ERROR_TOO_MANY_BOUNDING_BOXES)
+ [未找到有效的注释。](tm-debugging-json-line-errors.md#tm-error-ERROR_NO_VALID_ANNOTATIONS)