【发布时间】:2017-04-04 14:12:38
【问题描述】:
我有一系列二维数组,它们总是因一维大小而不同,例如(20,87)、(20,100)、(20,76) 等...这些数组由时间步长 (times) 的 Mel 频率倒谱系数 (mfccs) 组成,因此 (mfccs, times)。
为了在 Tensorflow 中训练 CNN,我需要用其中一些二维数组输入字典。
我想要一个 3d 数组,因为我的输入张量是:x=tf.placeholder('float', shape=(n,mfccs, times)),其中 n 是批量大小。因此,批次将是具有以下形状的 3d 数组:(n,mfccs,times),其中只有时间维度的大小发生变化。
我还想使用 2d 数组列表而不是 3d 数组。但是是否可以在 feed_dict 中提供一个列表(例如 feed_dict={ x: list?})?如果是的话,你是怎么做到的?
非常感谢您提前提供的帮助。
【问题讨论】:
-
使用 numpy 数组列表?如果没有额外的上下文,很难说更多......
-
将它们全部添加到列表中!!
-
所以实际上我确实创建了一个数组列表,但是由于我必须在 Tensorflow 的字典中提供它们,我不确定是否可以使用列表。如果可以的话,你将如何提供这个二维数组列表?
-
你可以使用
+操作符或者__iadd__特殊方法。 -
通常的解决方案是将每个批次元素填充到最长列表的长度,然后使用标准密集张量。在大多数情况下,这将是最有效的。也可能将这些输入,然后用它们构造一个 SparseTensor,但卷积运算在 SparseTensor 上工作不会很开心,所以我不推荐在这里。对于更高级的不规则序列批处理,有
SequenceQueueingStateSaver,它本质上是用你的例子玩俄罗斯方块。我需要有关该模型的更多详细信息才能知道要推荐哪些。
标签: python multidimensional-array tensorflow