【问题标题】:reshaping 3D matrix into 2D matrix using tensorflow使用 tensorflow 将 3D 矩阵重塑为 2D 矩阵
【发布时间】:2016-11-08 06:38:06
【问题描述】:

我有一个 3D 维度矩阵,549x19x50 我需要创建一个 2D 矩阵,它可以让我得到一个 549x950 矩阵。

到目前为止我所做的是使用 tensorflow;

#data_3d is the 3D matrix
data_2d = tf.reshape(data_3d,[549,-1])

这会在提示中打印出 data_3d 的所有值,当我尝试访问 data_2d 时,它会给我一个 NameError

data_3d 是列表列表的列表。不是张量或ndarray。如果我们不能对列表执行此操作,有什么方法可以轻松地将列表转换为 ndarrays?

提前致谢,

巴希特

【问题讨论】:

  • 为什么只使用 Tensorflow?
  • 我需要使用带有 tensorflow 的递归神经网络。我一直在测试并且现在非常熟悉。如果您可以将我指向@GalDreiman,我可以使用任何其他python库
  • 那么看答案,我会根据numpy发一个简单的例子来回答。

标签: python tensorflow reshape


【解决方案1】:

使用numpy 有一个简单的方法:

import numpy as np

data_3d = np.arange(27).reshape((3,3,3))
data_2d = data_3d.swapaxes(1,2).reshape(3,-1)

输出:

data_2d

[[ 0 3 6 1 4 7 2 5 8]
[ 9 12 15 10 13 16 11 14 17]
[18 21 24 19 22 25 20 23 26]]

print data_3d

[[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]]

[[ 9 10 11]
[12 13 14]
[15 16 17]]

[[18 19 20]
[21 22 23]
[24 25 26]]]

注意swapaxes(1,2) 是这里的主要内容 - 您需要定义要交换的轴。

【讨论】:

  • 这在没有任何 swapaxes() 的情况下工作。我不明白您为什么在答案中添加了交换轴。
  • 因此,您可以专门选择要交换的轴,而不仅仅是重塑。
  • 这是有道理的。但在我的情况下,交换是没有必要的。很高兴知道这一点。谢谢盖尔!
猜你喜欢
  • 2011-01-16
  • 1970-01-01
  • 1970-01-01
  • 2021-09-14
  • 2012-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多