使张量值适合给定范围

时间:2017-06-07 15:41:46

标签: performance machine-learning lua torch

我有一个3d张量,并希望确保所有值都在给定范围内(在这种情况下为0-1)。为了做到这一点,我已经编写了以下代码:

An example in this is say that I have a `2-3-3` array with the values

    [1,  2,  0.5][0.5,0.2,-0.2]
     [0.1,0.2,0.3][1,  1,   1  ]
    [-2, -1, 2  ][0.2,-5,-1   ]

then I expect an outcome of 
    [1,  1,  0.5][0.5,0.2,0]
    [0.1,0.2,0.3][1,  1,   1  ]
    [0, 0, 1  ]  [0.2,0,-1   ]

并且它有效,只有一个问题:性能很糟糕,我知道必须有一些更好的方法来执行此操作然后循环整个数组,因为大多数张量操作不涉及手动循环数组要快得多。有人知道如何加快速度吗?

{{1}}

将0的下限下的每个值替换为0,将上限1的每个值替换为1。

有人知道如何快速完成这项工作吗?

1 个答案:

答案 0 :(得分:1)

我从未使用过Torch,但它的文档说: http://torch7.readthedocs.io/en/rtd/maths/#torch.clamp

  

[res] torch.clamp([res,] tensor1,min_value,max_value)

     

将张量中的所有元素夹在[min_value,   MAX_VALUE。即:

y_i = x_i, if x_i >= min_value or x_i <= max_value
    = min_value, if x_i < min_value
    = max_value, if x_i > max_value
     

z=torch.clamp(x,0,1)将返回一个结果为x的新张量   界限在0到1之间。

     

torch.clamp(z,x,0,1)会将结果放入z。

     

x:clamp(0,1)将执行钳位操作(放置   结果是x)。

     

z:clamp(x,0,1)会将结果放入z。

我想这就是你要找的东西?