tensor和numpy的相互轉換

2021-10-08 02:03:16 字數 1304 閱讀 4779

.numpy()和.from_numpy()負責將tensor和numpy中的陣列互相轉換,共享共同記憶體,不共享位址

torch.tensor()複製資料,但不共享位址

#tensor轉numpy,共享記憶體但不共享位址

a=torch.ones(5)

b=a.numpy(

)print

(a,b)

print(id

(a)==

id(b)

)a+=

1print

(a,b)

print(id

(a)==

id(b)

)b+=

1print

(a,b)

print(id

(a)==

id(b)

)'''

tensor([1., 1., 1., 1., 1.]) [1. 1. 1. 1. 1.]

false

tensor([2., 2., 2., 2., 2.]) [2. 2. 2. 2. 2.]

false

tensor([3., 3., 3., 3., 3.]) [3. 3. 3. 3. 3.]

false

'''

#numpy'轉tenor,同樣共享記憶體

import numpy as np

a=np.ones(5)

b=torch.from_numpy(a)

print

(a,b)

a+=1

print

(a,b)

b+=1

print

(a,b)

'''[1. 1. 1. 1. 1.] tensor([1., 1., 1., 1., 1.], dtype=torch.float64)

[2. 2. 2. 2. 2.] tensor([2., 2., 2., 2., 2.], dtype=torch.float64)

[3. 3. 3. 3. 3.] tensor([3., 3., 3., 3., 3.], dtype=torch.float64)

'''

#torch.tensor複製資料,但是不共享記憶體

c=torch.tensor(a)

a+=1

print

(a,c)

'''[4. 4. 4. 4. 4.] tensor([3., 3., 3., 3., 3.], dtype=torch.float64)

'''

Pytorch之Tensor和Numpy之間的轉換

最重要的區別t.tensor和t.tensor 不論輸入的型別是什麼,t.tensor 都會進行資料拷貝,不會共享記憶體 t.tensor 與numpy共享記憶體,但當numpy的資料型別和tensor的型別不一樣的時候,資料會被複製,不會共享記憶體。可使用t.from numpy 或者t.deta...

pytorch的tensor與numpy陣列共享值

網上的很多部落格說tensor與numpy陣列共享記憶體,這是錯誤的 先給結論 tensor與numpy陣列共享部分記憶體,說共享值更嚴謹,且有條件 看 a torch.ones 2,2 b a.numpy print id a print id b 輸出 3030786996336 3030755...

tensor物件和Python物件相互轉換

tensorflow新手,僅供參考 在tensorflow中,tf.tensor物件是資料物件的控制代碼。資料物件包含輸出的常量和變數,以及計算節點的輸出資料物件。所有python語言中的常見型別的資料需要轉化為tensorflow中的tensor物件後,才能使用tensorflow框架中的計算結點...