如何将更改应用于张量/向量的元素而不更改其引用?

时间:2017-02-17 05:10:46

标签: machine-learning lua neural-network conv-neural-network torch

我正在共享网络的参数,并希望应用一些操作来更改参数向量的元素。我无法直接在参数张量上执行这些操作,因为它们肯定会更改参数向量引用和共享中断。所以:clone()共享参数向量并在新向量上应用我想要的更改并使用:copy()函数替换原始参数向量中的元素。我认为 tensor:copy()函数不会更改向量/张量引用,但似乎它确实存在,因为参数共享在应用后很快就会崩溃。所以我想知道,任何人都可以修复下面的代码并建议一种方法来改变参数向量的元素而不破坏共享吗?

tempParam = parameters:clone()
Do some operations on the tempParam vector
parameters:copy(tempParam) -- Do the replacement (the copy() function breaks the sharing)

我感兴趣的其中一项操作是钳位,但如果直接应用参数向量,clamp()函数也会破坏共享。

1 个答案:

答案 0 :(得分:0)

基本上,您需要一个指向Tensor的指针,它将修改其原始数据,保留引用和共享。这个链接(Tensor doc)清楚地解释了它。 https://github.com/torch/torch7/blob/master/doc/tensor.md#result-datatensor-asnumber