火炬7:如何压平张量?

时间:2016-04-26 19:48:39

标签: lua torch

我希望压扁任何一般的 n - 维度torch.Tensor,但这是以计算优化的方式。 (在这里“扁平化”,我的意思是将给定的Tensor转换为与给定向量具有相同元素数量的一维Tensor。)我目前正在使用以下步骤:

local original_tensor = -- output of some intermediate layer of a conv-net residing in the GPU
local shaping_tensor = torch.Tensor(original_tensor:nElement())
original_tensor = original_tensor:resizeAs(shaping_tensor:cuda())

我认为由于:cuda()将这个新的Tensor从内存推送到GPU,因此效率稍低。有人可以建议一种更有效的方法吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

典型的方法是创建一个视图(因此实际上不会重新调整张量)。

x:view(x:nElement())

直接来自官方的“numpy用户的火炬”https://github.com/torch/torch7/wiki/Torch-for-Numpy-users

答案 1 :(得分:0)

这不是用重塑命令解决的吗? 请参阅documentation和此example

我假设您知道如何获取 original_tensor 的尺寸。将它们相乘以得到矢量大小。

[{
    id: 1,
    name: "5637(LCL-1702)",
    cellId: 3,
    createdAt: "2016-05-09T18:57:04.256Z",
    updatedAt: null,
    cell: {}
}, {
    id: 2,
    name: "A-375",
    cellId: 6,
    createdAt: "2016-05-09T18:57:04.263Z",
    updatedAt: null,
    cell: {}
}, {
    id: 3,
    name: "AU-565",
    cellId: 11,
    createdAt: "2016-05-09T18:57:04.273Z",
    updatedAt: null,
    cell: {}
}, {
    id: 4,
    name: "CaSki",
    cellId: 19,
    createdAt: "2016-05-09T18:57:04.290Z",
    updatedAt: null,
    cell: {}
}, {
    id: 5,
    name: "HCC-1395",
    cellId: 37,
    createdAt: "2016-05-09T18:57:04.340Z",
    updatedAt: null,
    cell: {}
}]

我错过了什么吗?这还不够有效吗?它应该是一个高度并行的任务。