torch7:如何展平张量?
torch7: How to flatten a Tensor?
我想展平任何一般的n维torch.Tensor
,但以一种计算优化的方式。 (这里 "flatten" 的意思是将给定的 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()
将这个新的张量从内存推送到 GPU。有人可以建议更有效的方法吗?
提前致谢。
这不是用reshape命令解决了吗?
参见 documentation and this example
我假设您知道如何获取 original_tensor 的维度。将它们相乘得到矢量大小。
local my_vector = nn.reshape(vector_size, original_vector)
我错过了什么吗?这还不够有效吗?应该是一个高度并行的作业。
典型的方法是创建一个视图(因此实际上不会重塑张量)。
x:view(x:nElement())
直接来自官方"torch for numpy users"https://github.com/torch/torch7/wiki/Torch-for-Numpy-users
我想展平任何一般的n维torch.Tensor
,但以一种计算优化的方式。 (这里 "flatten" 的意思是将给定的 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()
将这个新的张量从内存推送到 GPU。有人可以建议更有效的方法吗?
提前致谢。
这不是用reshape命令解决了吗? 参见 documentation and this example
我假设您知道如何获取 original_tensor 的维度。将它们相乘得到矢量大小。
local my_vector = nn.reshape(vector_size, original_vector)
我错过了什么吗?这还不够有效吗?应该是一个高度并行的作业。
典型的方法是创建一个视图(因此实际上不会重塑张量)。
x:view(x:nElement())
直接来自官方"torch for numpy users"https://github.com/torch/torch7/wiki/Torch-for-Numpy-users