1. 程式人生 > 程式設計 >Pytorch之Tensor和Numpy之間的轉換的實現方法

Pytorch之Tensor和Numpy之間的轉換的實現方法

為什麼要相互轉換:

1. 要對tensor進行操作,需要先啟動一個Session,否則,我們無法對一個tensor比如一個tensor常量重新賦值或是做一些判斷操作,所以如果將它轉化為numpy陣列就好處理了。下面一個小程式講述了將tensor轉化為numpy陣列,以及又重新還原為tensor:

2. Torch的Tensor和numpy的array會共享他們的儲存空間,修改一個會導致另外的一個也被修改。

學習連結:https://github.com/chenyuntc/pytorch-book

特別提醒[注意Tensor大小寫]

  1. 最重要的區別t.Tensort.tensor:不論輸入的型別是什麼,t.tensor()
    都會進行資料拷貝,不會共享記憶體;t.Tensor()與Numpy共享記憶體,但當Numpy的資料型別和Tensor的型別不一樣的時候,資料會被複制,不會共享記憶體。
  2. 可使用t.from_numpy()或者t.detach()將Numpy轉為Tensor,與原Numpy資料共享記憶體。

附上實驗證明

常規轉換:使用t.from_numpy()將Numpy轉為Tensor,使用torch.numpy()將Tensor轉為Numpy

Pytorch之Tensor和Numpy之間的轉換的實現方法

需要注意的情況:使用t.Tensor()進行轉換,發現Numpy的資料型別和Tensor的型別一致,因此共享記憶體

Pytorch之Tensor和Numpy之間的轉換的實現方法

需要注意的情況:使用t.Tensor()

進行轉換,發現Numpy的資料型別和Tensor的型別不一致,因此b與a不共享記憶體

Pytorch之Tensor和Numpy之間的轉換的實現方法

需要注意的情況:使用t.tensor()進行轉換,只進行資料拷貝,不會共享記憶體

Pytorch之Tensor和Numpy之間的轉換的實現方法

到此這篇關於Pytorch之Tensor和Numpy之間的轉換的實現方法的文章就介紹到這了,更多相關Pytorch Tensor和Numpy轉換內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!