你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

输入{}

定义由读取器馈送的输入。

Input (shape, sparse=false, dynamicAxis=DefaultAxis, tag='feature')

参数

  • shape:如果输入是矢量) ,则标量 (;如果输入是多维) ,则 (张量形状。 例如 40 ,用于 40 维特征或 (640:480:3) VGA 大小的彩色图像。
  • sparse (默认值:false) :如果为 true,则输入存储为稀疏矩阵
  • dynamicAxis (默认值:无) :此输入要使用的备用动态轴

返回值

一个从 reader 同名流接收其值的变量。

###Description

Input{} 声明一个变量,该变量表示从读取器读取的输入。 必须在节的最外层 BrainScriptNetworkBuilder 声明输入,并且 reader 节必须定义同名的流。

####Sparse 输入数据

选项 sparse=true 声明输入数据应表示为稀疏向量。 这通常用于读取分类数据 (如单热向量表示的单词) 。 稀疏输入有两个常见用途:

  • 嵌入的输入;和
  • 标签。

嵌入是按单词 (或其他分类项) 的数字 ID 编制索引的密集连续值向量集合。 在 CNTK 中,此索引运算以矩阵乘法表示,并采用单词的单热表示形式。 例如,字典中的第二个单词将由列向量 w = (0, 1, 0, 0, ..., 0)^T表示,矩阵积 E * w 等效于检索矩阵 E的第二列,其中 的 E 列是嵌入向量。

从形式上讲,此矩阵乘积与许多零相乘,但如果 w 以稀疏格式表示,则此操作确实只是一个索引运算,因此这是廉价的。

请注意,排名>1 的输入数据不能以稀疏格式表示。

稀疏标签

与稀疏输入一样,单词或其他分类标签可以用稀疏形式表示。

但请注意,的直接形式 CrossEntropyWithSoftmax()目前不支持稀疏标签。 相反,必须使用手动编写的表单,如下 所述

请注意,排名>1 的标签数据不能以稀疏格式表示。

图像输入

图像读取为张量维度 [W x H x C] 的排名 3 张量,宽度 W、高度 H和颜色通道 C 数 (3 表示 RGB,1 表示 B&W) 。

可变长度序列

输入可以是单个样本 (例如图像) 或样本序列 (例如句子) 。 对于 CNTK,这些是相同的 (单个样本是长度为 1) 的序列。 它由特定的输入数据和读取器决定,输入是否接收单个样本或序列。

示例

40 维语音特征向量

features = Input{40}

读取整个窗口(包括 10 个左相邻框架和 10 个右邻框架)::

features = Input{(40:21)}

Word序列,词汇大小 33124

words = Input{33124, sparse=true}

使用相应的读取器定义 (从 CTF 文件) 读取它们:

reader = {
    readerType = "CNTKTextFormatReader"
    file = "my_text_corpus.ctf"
    randomize = true
    input = { words = { alias = "w" ; dim = 33124 ;  format = "sparse" }}
}

CIFAR-10 图像

images = Input{(32:32:3)}
labels = Input{10}

具有相应的读取器定义:

reader = {
    verbosity = 0 ; randomize = true
    deserializers = ({
        type = "ImageDeserializer" ; module = "ImageReader"
        file = "$dataDir$/cifar-10-batches-py/train_map.txt"
        input = {
            images = { transforms = (
                { type = "Crop" ; cropType = "RandomSide" ; sideRatio = 0.8 ; jitterType = "UniRatio" } :
                { type = "Scale" ; width = 32 ; height = 32 ; channels = 3 ; interpolations = "linear" } :
                { type = "Transpose" }
            )}
            labels = { labelDim = 10 }
        }
    })
}