【问题标题】:series of 2D arrays with different dimension lengths in feed_dictfeed_dict 中具有不同维度长度的一系列二维数组
【发布时间】: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


【解决方案1】:

对于不同的大小,但是作为一个数组,可以试试list:

a = [[0]*87 for range(20)]
b = [[0]*100 for range(20)]
c = [[0]*76 for range(20)]

big_list = []
big_list.append(a)
big_list.append(b)
big_list.append(c)

毕竟,big_list 的长度为 3,其中每个元素包含各自的列表/数组。

【讨论】:

  • 为什么你对一个维度使用* 运算符而不对另一个维度使用?
  • 我应该提供有关该问题的更多详细信息,抱歉。这些二维数组是 Tensorflow 中 CNN 的输入数据。我想有一个大列表,但我可以在 feed_dict={ x: big_list 中提供这个列表吗? } ?如果是,你是怎么做到的?
  • @EmanuelaLiaci 我认为你应该编辑你的问题,以包括你想用 tensorflow 做什么。
猜你喜欢
  • 1970-01-01
  • 2014-04-23
  • 2018-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 2018-09-20
  • 1970-01-01
相关资源
最近更新 更多