TensorFlow数据集Innermost与Outermost索引及维度含义问询
TensorFlow时序数据维度术语解答
先明确示例给出的维度基准:
All shapes are: (batch, time, features) Window shape: (3, 7, 19) Inputs shape: (3, 6, 19) Labels shape: (3, 1, 1)
针对三个疑问逐一说明:
- outermost与innermost索引的定义
两个术语是按数组的实际嵌套层级划分的,不是按索引数字从0开始数“内层”。
拿Python原生嵌套列表类比3维张量:最外层的列表长度对应batch大小,访问数据时第一层剥开的就是batch维度,对应索引位置0,所以叫outermost(最外层);往内嵌套的第二层是时间步维度;最内层嵌套的列表存单个时间步的所有特征值,对应最后一位索引,也就是innermost(最内层)。
举个shape为(2,2,2)的极简张量例子:
要取到单个特征值data = [ # 最外层:索引0对应batch维度,长度2等于batch size [ # 中间层:索引1对应time维度 [1,2], # 最内层:索引2对应feature维度 [3,4] ], [ [5,6], [7,8] ] ]8,需要逐层索引写data[1][1][1],最先写的0位索引对应最外层结构,最后写的2位索引对应最内层结构。你之前觉得索引0是最内层,是把索引数字顺序和嵌套层级的对应关系搞反了。 - middle indices的复数表述问题
教程里的这个说法是覆盖所有TensorFlow数据场景的通用表述,不是专门针对3维时序数据写的。
比如处理图像任务时,张量shape是(batch, height, width, channels),batch和channels中间夹了height、width两个维度,所以用了复数形式的indices。在当前时序场景下,张量只有3维,batch和features中间只夹了1个time维度,属于通用表述下的正常情况,不是必须凑够2个及以上维度才算middle indices。 - time/space表述在当前时序场景的含义
这个表述是在说明中间维度的核心作用:存储数据的固有结构关联,既不是独立样本,也不是独立特征。
如果是图像类任务,中间维度存储像素的空间位置关系(高、宽方向的相邻像素关联),也就是space维度;在当前时间序列预测场景里,中间维度就是time维度,存储窗口内时间步的先后顺序关系——这个顺序不能随意打乱,否则时间依赖关系就会消失,模型无法学习历史步的规律来预测未来值。
内容的提问来源于stack exchange,提问作者quant
相关产品推荐
相关产品推荐

