torch7: 如何拉平张量?

我想要把一般的 ntorch.Tensor 拉平,但需要进行计算优化。(这里所说的“拉平”是指将给定张量转换为与给定向量具有相同元素数的一维张量。)目前我使用以下步骤来完成:

local original_tensor = -- 卷积神经网络中某一层的输出,在 GPU 中
local shaping_tensor = torch.Tensor(original_tensor:nElement())
original_tensor = original_tensor:resizeAs(shaping_tensor:cuda())

我认为这样稍微有点低效,因为 :cuda() 会将新的张量从内存推到 GPU 上。请问有没有更高效的方法?

提前感谢!

点赞
用户4785185
用户4785185

这个问题难道不是用 reshape 命令解决的吗?

请参阅文档和这个示例

我假设你知道如何获取 original_tensor 的维度。 将它们相乘以获得向量大小。

local my_vector = nn.reshape(vector_size, original_vector)

我有遗漏什么吗?这仍然不够高效吗?这应该是高度并行的分配。

2016-04-26 20:47:32
用户2658050
用户2658050

通常的做法是创建一个视图(因此实际上并不需要重新塑形张量)。

x:view(x:nElement())

这个做法直接来自于官方的“适用于 NumPy 用户的 Torch”[https://github.com/torch/torch7/wiki/Torch-for-Numpy-users]。

2016-04-26 21:59:41