问题描述
我正在使用我的自定义数据和我的自定义 S3 存储桶跟踪此 tutorial,其中训练和验证数据所在。我收到以下错误:
Customer Error: imread read blank (None) image for file: /opt/ml/input/data/train/s3://image-classification/image_classification_model_data/train/img-001.png
我的所有训练数据都在一个名为“train
”的文件夹中 我已经按照 doc 的建议设置了我的 lst
文件,
22 1 s3://image-classification/image_classification_model_data/train/img-001.png
86 0 s3://image-classification/image_classification_model_data/train/img-002.png
...
我的其他配置:
s3_bucket = 'image-classification'
prefix = 'image_classification_model_data'
s3train = 's3://{}/{}/train/'.format(s3_bucket,prefix)
s3validation = 's3://{}/{}/validation/'.format(s3_bucket,prefix)
s3train_lst = 's3://{}/{}/train_lst/'.format(s3_bucket,prefix)
s3validation_lst = 's3://{}/{}/validation_lst/'.format(s3_bucket,prefix)
train_data = sagemaker.inputs.TrainingInput(s3train,distribution='FullyReplicated',content_type='application/x-image',s3_data_type='S3Prefix')
validation_data = sagemaker.inputs.TrainingInput(s3validation,s3_data_type='S3Prefix')
train_data_lst = sagemaker.inputs.TrainingInput(s3train_lst,s3_data_type='S3Prefix')
validation_data_lst = sagemaker.inputs.TrainingInput(s3validation_lst,s3_data_type='S3Prefix')
data_channels = {'train': train_data,'validation': validation_data,'train_lst': train_data_lst,'validation_lst': validation_data_lst}
我检查了下载的图像并进行了物理检查,我看到了图像。现在确定这个错误被抛出为 blank
。任何建议都会很棒。
解决方法
Sagemaker 将您在 s3train
中指定的输入数据复制到 /opt/ml/input/data/train/
中的实例中,这就是您出错的原因,因为正如您从错误消息中看到的那样,它试图将文件名连接到lst
文件,其中包含期望图像所在的路径。因此,只需将文件名放在您的 lst
中就可以了(删除 s3 路径)。