如何在不更改参考的情况下应用对张量/向量元素的更改?

我正在共享网络的参数,并希望应用一些更改来更改参数向量的元素。我无法直接在参数张量上执行这些操作,因为它们肯定会更改参数向量参考并破坏共享。因此,使用:clone()函数克隆共享参数向量,并在新向量上应用我想要的更改,并使用:copy()函数替换原始参数向量中的元素。我认为tensor:copy()函数不会更改向量/张量引用,但似乎它确实改变了参数共享,导致共享崩溃。因此,我想知道,有没有人可以修复下面的代码,并提出一种在不破坏共享的情况下更改参数向量元素的方法?

tempParam = parameters:clone()
在tempParam矢量上执行某些操作
parameters:copy(tempParam) -- 进行替换(copy()函数会破坏共享)

我感兴趣的操作之一是夹紧,但clamp()函数也会直接在参数向量上应用时破坏共享。

点赞
用户1624600
用户1624600

基本上,你需要一个指向张量的指针来修改其原始数据,同时保留引用和共享关系。这个链接(张量文档)清晰地解释了它。 https://github.com/torch/torch7/blob/master/doc/tensor.md#result-datatensor-asnumber

2017-02-20 12:38:51