你当前正在访问 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 }
}
})
}