pytorchでtensorデータとnumpyデータ変換で注意する問題


転載先:(pytorchでtensorデータとnumpyデータ変換で注意した問題)[https://blog.csdn.net/nihate/article/details/82791277]pytorchでnumpyをarrayデータをテンソルtensorデータに変換する一般的な関数はtorchである.from_义齿Tensor(array)は、最初の関数が一般的です.コードで違いを見てみましょう.
import numpy as np
import torch

a=np.arange(6,dtype=int).reshape(2,3)
b=torch.from_numpy(a)
c=torch.Tensor(a)

a[0][0]=10
print(a,'
',b,'
',c) [[10 1 2] [ 3 4 5]] tensor([[10, 1, 2], [ 3, 4, 5]], dtype=torch.int32) tensor([[0., 1., 2.], [3., 4., 5.]]) c[0][0]=10 print(a,'
',b,'
',c) [[10 1 2] [ 3 4 5]] tensor([[10, 1, 2], [ 3, 4, 5]], dtype=torch.int32) tensor([[10., 1., 2.], [ 3., 4., 5.]]) print(b.type()) torch.IntTensor print(c.type()) torch.FloatTensor

配列aの要素値を修正し,テンソルbの要素値も変化したが,テンソルcは変化しないことがわかる.テンソルcの要素値を変更すると、配列aとテンソルbの要素値は変更されません.これはfrom_numpy(array)は配列の浅いコピーをします.Tensor(array)は配列の深いコピーをします.
転載先:https://www.cnblogs.com/xym4869/p/11302160.html