SageMaker图像分类:如何获取与模型输出相对应的类的有序列表

时间:2018-12-28 17:37:31

标签: python deep-learning mxnet multilabel-classification amazon-sagemaker

我正在使用自定义数据集在AWS sagemaker上训练用于多类图像分类的模型。数据集约有50个类别。我正在关注此笔记本:Image classification transfer learning demo

根据我的理解,模型的最后一层输出对应于我们数据集中每个类的概率。 Sagemaker希望以mxnet recordio的.rec格式提供数据集。由于我没有手动将标签转换为单热编码,因此我不知道哪个层为哪个类提供了概率。如何获得类的有序列表,其中索引对应于模型最后一层的输出。

即使由AWS提供的笔记本(上面的链接)也已对该列表(列表:object_categories)进行了硬编码。

在转换为.rec格式之前,我的数据集如下:

./train/object1/
   -image1.jpg
   -image2.jpg
   -image3.jpg
   -...image500.jpg
./train/object2/
   -image1.jpg
   -image2.jpg
   -image3.jpg
   -...image500.jpg
.
.
.
./train/object50/
   -image1.jpg
   -image2.jpg
   -image3.jpg
   -...image500.jpg

我们将不胜感激任何帮助。

2 个答案:

答案 0 :(得分:0)

标签嵌入在recordio .rec文件中,因此对于自定义多标签应用程序,您将必须重新标签。坦白地说,文档并不是超级好,但这是一个起点(最底层):https://mxnet.incubator.apache.org/faq/recordio.html

对于具有标签的层,最后一层是生成标签概率的层。模型体系结构在Sagemaker中进行了抽象,并且设置类超参数可确保最后一层将为.rec文件中找到的类数分配概率。

答案 1 :(得分:0)

您需要使用im2rec从lst文件创建recordio文件。根据输入数据集创建第一个文件,并在第一个文件中对标签进行一次热编码。有关如何创建多标签输入的示例,请参阅此notebook