2016-05-11 2 views

答えて

1

ドキュメントに記載されているように、narrowはメモリコピーを実行しません:

方法 narrowについては

selectsub返さテンソルは、オリジナルと同じStorageを共有しています。したがって、サブテンソルのメモリ内の任意の修正は、第1テンソルに影響を及ぼし、その逆もあり得る。これらのメソッドは非常に高速です。にはメモリコピーが含まれていません

例:

th> x = torch.Tensor{{1, 2}, {3, 4}} 

th> y = x:narrow(1, 2, 1) 

th> print(x:storage():data()) 
cdata<double *>: 0x0079f240 

th> print(y:storage():data()) 
cdata<double *>: 0x0079f240 

彼らは唯一の新しいテンソルを返す、つまり舞台裏同じストレージを使用する新しいオブジェクト

あなたは本当にあなたがsetを使用することができますインプレース元テンソルを変更する場合:

th> x:set(y) 
3 4 
[torch.DoubleTensor of size 1x2] 

それともx = yさらに簡単。

関連する問題