SageMaker:ClientError:train_lst通道中缺少.lst文件。 (自定义图片分类)

时间:2019-06-05 19:06:58

标签: amazon-web-services computer-vision amazon-sagemaker

问题:

作业在5分钟后反复失败并显示错误

  

ClientError:train_lst通道中缺少.lst文件。

上下文:

在AWS控制台中工作,我有一个图像的二进制分类任务。按照指南,我已经在类的文件名中标记了这些类。

最终,我开始遇到一些错误,这些错误表明对于此特定算法,.lst文件是收集标签所必需的,因为“内容类型”被指定为图像,显然需要一个第一个文件。

示例数据:

我正在尝试匹配我在StackOverflow和在线其他地方看到的示例。 trn_list.lst的当前迭代如下:

292 \t 1 \t dog-292.jpeg
214 \t 1 \t dog-214.jpeg
290 \t 0 \t cat-290.jpeg
288 \t 1 \t dog-288.jpeg
160 \t 1 \t dog-160.jpeg
18 \t 0 \t cat-18.jpeg
215 \t 1 \t dog-215.jpeg
254 \t 1 \t dog-254.jpeg
53 \t 1 \t dog-53.jpeg
337 \t 0 \t cat-337.jpeg
284 \t 0 \t cat-284.jpeg
177 \t 1 \t dog-177.jpeg
192 \t 1 \t dog-192.jpeg
228 \t 0 \t cat-228.jpeg
305 \t 0 \t cat-305.jpeg
258 \t 1 \t dog-258.jpeg
75 \t 0 \t cat-75.jpeg
148 \t 0 \t cat-148.jpeg
268 \t 1 \t dog-268.jpeg
281 \t 1 \t dog-281.jpeg
24 \t 1 \t dog-24.jpeg
328 \t 1 \t dog-328.jpeg
99 \t 1 \t dog-99.jpeg

存储桶没有子文件夹,因此我只将.lst放在

在一次迭代中,我允许创建.lst的R程序在将其写出时用实际的制表符替换\t。在其他迭代中,我将实际的定界符(\t)留在了那里。似乎没有影响它(?)。

1 个答案:

答案 0 :(得分:1)

在使用SageMaker培训作业时,实际上是在将Docker映像部署到EC2实例集群。 Docker有一个python文件,该文件运行培训代码的方式与您在计算机上进行培训的方式类似。在训练代码中,当您希望找到数据(例如要训练的图像和用于该训练的元数据)时,它是指本地文件夹。

“魔术”是如何从S3获取数据以供培训实例在本地使用。这是通过训练作业配置中的通道定义完成的。每个通道定义都会在训练实例上创建一个本地文件夹,并将数据从S3复制到该本地文件夹。您需要匹配名称,S3位置和文件格式。

以下是SageMaker中通道定义的文档:https://docs.aws.amazon.com/sagemaker/latest/dg/API_Channel.html

对于用于图像分类的内置算法的特定示例,如果您使用图像格式进行训练,请指定trainvalidationtrain_lst和{{1} }频道作为validation_lst请求的InputDataConfig参数的值。为训练和验证通道指定单个图像数据(.jpg或.png文件)。在train_lst和validation_lst的每个通道中指定一个.lst文件。将所有四个频道的内容类型都设置为CreateTrainingJob

在此处查看更多详细信息:https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html#IC-inputoutput