0

抱歉这个相当简单的问题,但是关于微软开源人工智能库 CNTK 的使用的文档太少了。

我继续目睹人们将阅读器的特征从 1 开始,而将标签从 0 开始。但是它们都应该始终为 0,就像计算机科学中的信息总是从零开始吗?这样我们不会丢失一条信息吗?

CIFAR10 02_BatchNormConv 示例

    features=[
    #dimension = 3 (rgb) * 32 (width) * 32(length)
        dim=3072
        start=1
    ]
    labels=[
        dim=1
        start=0
        labelDim=10
        labelMappingFile=$DataDir$/labelsmap.txt
    ]

更新:新格式

Microsoft 最近对此进行了更新,以消除这些混淆并使 CNTK 定义语言更具可读性。

您现在可以简单地在数据集中定义数据类型,而不必在行中定义值的开始:

|labels <tab seperated values> | features <tab seperated values> [EndOfLine/EOL]

如果你想颠倒特征和标签的顺序,你可以简单地去:

|features <tab seperated values> | labels <tab seperated values> [EndOfLine/EOL]

您只需要定义 dim 值,即可指定要输入的值的数量。

注意:没有| 在行的末尾。EOL 表示行的结束。

有关此主题的更多信息,请访问 CNTK Wiki。

4

1 回答 1

1

您误解了读者的工作方式。UCIFastReader适用于包含制表符分隔特征向量的文件。此文件中的每一行对应一个条目(在本例中为图像)及其分类。

因此,dim告诉读者要阅读多少列,同时start告诉读者从哪一列开始阅读。因此,如果您有一个大小为 2x2 的图像,每个标签有 2 个标签,那么您的文件可能是以下形式<image_pixel_columns><label_columns>

0 0 0 0 0 0
0 0 1 0 1 0
...

因此,该行中的前 4 个条目是您的特征(图像像素值),最后两个是您的标签。您的读者将具有以下形式:

reader=[
        readerType=UCIFastReader
        file=$DataDir$/Train.txt
        randomize=None
        features=[
            dim=4
            start=0
        ]
        labels=[
            dim=2
            start=4
            labelDim=10
            labelMappingFile=$DataDir$/labelsmap.txt
        ]
    ]

只是给出的所有示例都将标签放在第一列。

于 2016-03-02T07:25:49.447 回答