张量可以连接而不丢失torch(lua)中的引用吗?

张量可以连接而不丢失torch(lua)中的引用吗?,lua,torch,Lua,Torch,修改z不会修改x。有没有办法将x和y连接起来,这样修改z就可以修改x?您可以实现这种行为,但反过来就是这样。你应该从一个更大的张量开始,你的主要“存储”,然后你可以创建子传感器,它将共享内部状态 具体参见火炬的:sub方法(以下代码样本取自) 正如您所看到的,您有y变量,它实际上是x的一部分,并且更改它的值-也更改x。这是一种非常通用的方法,因此您可以共享张量的多个部分 因此,在你的情况下,它会像 x = torch.Tensor(5, 6):zero() > x 0 0 0 0 0 0

修改z不会修改x。有没有办法将x和y连接起来,这样修改z就可以修改x?

您可以实现这种行为,但反过来就是这样。你应该从一个更大的张量开始,你的主要“存储”,然后你可以创建子传感器,它将共享内部状态

具体参见火炬的
:sub
方法(以下代码样本取自)

正如您所看到的,您有
y
变量,它实际上是
x
的一部分,并且更改它的值-也更改x。这是一种非常通用的方法,因此您可以共享张量的多个部分

因此,在你的情况下,它会像

x = torch.Tensor(5, 6):zero()
> x
 0 0 0 0 0 0
 0 0 0 0 0 0
 0 0 0 0 0 0
 0 0 0 0 0 0
 0 0 0 0 0 0
[torch.DoubleTensor of dimension 5x6]

y = x:sub(2,4):fill(1) -- y is sub-tensor of x:
> y                    -- dimension 1 starts at index 2, ends at index 4
 1  1  1  1  1  1
 1  1  1  1  1  1
 1  1  1  1  1  1
[torch.DoubleTensor of dimension 3x6]

> x                    -- x has been modified!
 0  0  0  0  0  0
 1  1  1  1  1  1
 1  1  1  1  1  1
 1  1  1  1  1  1
 0  0  0  0  0  0
[torch.DoubleTensor of dimension 5x6]
印刷品

z = torch.Tensor(4):zero()
x = z:sub(1, 2)
y = z:sub(3, 4)
x[1] = 2
y[2] = 8
print(z)

根据需要。

谢谢!不幸的是,我无法创建更大的“主”存储。所讨论的两个张量是两个神经网络模型的参数,因此它们的存储由模型创建。不过,我确实得到了存储的“控制”。所讨论的确切方法是,我想做的是“组合”模型的参数,以便我可以使用来自的统一优化方法。然后,您应该使用相同的包(nn)从您的组件构建实际模型。有很多基于容器的模块,允许您将多个网络组合成一个,然后在容器上调用getParams将所有内容重新分配到单个张量
z = torch.Tensor(4):zero()
x = z:sub(1, 2)
y = z:sub(3, 4)
x[1] = 2
y[2] = 8
print(z)
 2
 0
 0
 8
[torch.DoubleTensor of size 4]