更改 PyTorch 中張量的檢視
PyTorch 是一個由 Facebook 的人工智慧研究團隊開發的開源機器學習庫。它主要用於深度學習應用,包括自然語言處理、計算機視覺和強化學習。PyTorch 提供兩個主要功能:一個多維張量物件和一個對這些張量進行操作的函式集合。
Torch
PyTorch 中的張量物件類似於 NumPy 的 ndarray,但增加了利用 GPU 和構建動態計算圖的功能。這些計算圖是在程式執行期間動態構建的,從而可以有效地利用記憶體並構建更靈活的模型架構。此外,PyTorch 具有模組化設計,可以輕鬆構建和試驗不同的神經網路模型。
PyTorch 中的 torch 模組是構建神經網路的主要庫。它提供了構建各種型別神經網路的廣泛構建塊,包括全連線層、卷積層、迴圈層等等。這些構建塊可以組合起來建立具有自定義架構的複雜模型。
torch 模組還包含許多用於執行神經網路中常見操作的函式,例如啟用函式(例如 ReLU、sigmoid)、損失函式(例如交叉熵、均方誤差)和最佳化演算法(例如隨機梯度下降、Adam)。
此外,PyTorch 中的 torch 模組包括用於資料載入和預處理的工具,以及用於評估和視覺化模型效能的實用程式。它還提供了一個簡單靈活的介面,用於在不同的裝置上訓練和部署模型,包括 CPU、GPU 和分散式計算環境。
本 PyTorch 教程將演示如何使用 PyTorch(一個與 Python 程式語言相容的開源框架)來更改張量的形狀。張量是用於資料儲存的多維陣列,必須匯入 torch 模組才能使用它們。tensor() 方法用於建立張量。
語法
torch.tensor(data)
其中 data 是一個多維陣列。
我們需要做的第一步是安裝 torch 模組,我們可以使用下面顯示的命令來做到這一點。
命令
pip3 install torch torchvision
執行上述命令後,torch 模組將安裝到我們的機器上。
tensor.view()
在 PyTorch 中,張量的 view 方法用於在不更改底層資料的情況下重新調整張量的維度。view 方法返回一個新的張量,該張量與原始張量具有相同數量的元素,但形狀不同。
PyTorch 中張量物件的 view 方法採用兩個引數 r 和 c,將張量重新整形為具有 r 行和 c 列的矩陣。第一個引數指定所需的行數,第二個引數指定所需的列數。
view 方法接收一個或多個整數作為引數,這些引數指定張量所需的形狀。引數可以是一個整數,在這種情況下,張量將被重新整形為具有指定長度的一維張量。或者,引數可以是一個整數元組,在這種情況下,張量將被重新整形為具有指定形狀的張量。
例如,假設我們有一個形狀為 (2, 3, 4) 的張量,它表示一個三維張量,其中包含 2 個矩陣,每個矩陣具有 3 行和 4 列。我們可以使用 view 方法將此張量重新整形為形狀為 (2, 12) 的二維張量,如下所示
示例
import torch # create a tensor with shape (2, 3, 4) x = torch.randn(2, 3, 4) # reshape the tensor into a 2-dimensional tensor with shape (2, 12) y = x.view(2, 12) print(x.shape) # prints (2, 3, 4) print(y.shape) # prints (2, 12)
要執行以上程式碼,我們需要執行下面顯示的命令。
命令
python3 main.py
執行上述命令後,我們可以預期輸出與下面顯示的輸出相同。
輸出
torch.Size([2, 3, 4]) torch.Size([2, 12])
請注意,原始張量中的元素數量必須與重新整形後的張量中的元素數量相同。換句話說,原始張量的維度的乘積必須等於重新整形後的張量的維度的乘積。
此外,view 方法返回一個新的張量,該張量與原始張量共享相同的底層資料。這意味著如果修改了原始張量,則重新整形後的張量也將受到影響。但是,如果修改了重新整形後的張量,則原始張量不會受到影響。
現在讓我們建立一個張量,並使用 view 模組獲得不同變化的列和行。
請考慮以下程式碼。
示例
# import torch module
import torch
# create a 1D tensor with Float data type that holds 6 elements
data1 = torch.FloatTensor([23, 45, 54, 32, 23, 78])
# display the original tensor
print("Original Tensor: ", data1)
# reshape the tensor into a 3x2 matrix and display
print("Reshaped Tensor: ", data1.view(3, 2))
解釋
程式碼使用 PyTorch 庫建立一個包含 6 個浮點值的 1 維張量 data1。然後使用 print() 函式顯示原始張量。
接下來,使用 view() 方法將張量重新整形為 3x2 矩陣,即具有 3 行和 2 列的矩陣。然後使用另一個 print() 語句顯示生成的重新整形後的張量。
總之,程式碼演示瞭如何使用 view() 方法建立和操作 PyTorch 中的張量以重新整形張量。
要執行以上程式碼,我們需要執行下面顯示的命令。
命令
python3 main.py
執行上述命令後,我們可以預期輸出與下面顯示的輸出相同。
輸出
Original Tensor: tensor([23., 45., 54., 32., 23., 78.])
Reshaped Tensor: tensor([[23., 45.],
[54., 32.],
[23., 78.]])
張量已被重新整形為具有 3 行和 2 列。
現在讓我們將張量的檢視更改為 2 行和 3 列。
請考慮以下程式碼。
示例
# import torch module
import torch
# create a 1D tensor with Float data type that holds 6 elements
data1 = torch.FloatTensor([23, 45, 54, 32, 23, 78])
# display the original tensor
print("Original Tensor: ", data1)
# reshape the tensor into a 2x3 matrix and display
print("Reshaped Tensor: ", data1.view(2, 3))
解釋
此程式碼匯入 PyTorch 庫並建立一個包含 6 個浮點值的 1 維張量 data1。然後使用 print() 函式顯示原始張量。
然後使用 view() 方法將張量重新整形為 2x3 矩陣,即具有 2 行和 3 列的矩陣。然後使用另一個 print() 語句顯示生成的重新整形後的張量。
要執行以上程式碼,我們需要執行下面顯示的命令。
命令
python3 main.py
執行上述命令後,我們可以預期輸出與下面顯示的輸出相同。
輸出
Original Tensor: tensor([23., 45., 54., 32., 23., 78.])
Reshaped Tensor: tensor([[23., 45., 54.],
[32., 23., 78.]])
在以上兩個示例中,我們都使用 view 方法更改了張量的檢視,如果需要,我們還可以更改資料型別。
請考慮以下程式碼。
示例
# import torch module
import torch
# create a 1D tensor with Float data type that holds 6 elements
data1 = torch.FloatTensor([15.5, 18.7, 21.3, 26.1, 30.2, 35.9])
# display the data type of the original tensor
print("Original Tensor data type: ", data1.dtype)
# change the data type of data1 to int8 and display the new data type
print("Converting to int8: ", data1.view(torch.int8).dtype)
# change the data type of data1 to int16 and display the new data type
print("Converting to int16: ", data1.view(torch.int16).dtype)
# change the data type of data1 to int32 and display the new data type
print("Converting to int32: ", data1.view(torch.int32).dtype)
# change the data type of data1 to int64 and display the new data type
print("Converting to int64: ", data1.view(torch.int64).dtype)
解釋
程式碼建立了一個名為 data1 的 1 維張量,其資料型別為 FloatTensor,它包含 6 個元素:23、45、54、32、23 和 78。print() 函式用於顯示原始張量。
接下來,將 view() 方法應用於 data1 以將其形狀更改為 3x2 矩陣。view() 方法採用兩個引數,指定張量所需的形狀。在這種情況下,張量被重新整形為 3 行和 2 列。然後列印重新整形後的張量。
此程式碼演示瞭如何使用 view() 方法更改 PyTorch 中張量的形狀。透過更改張量的形狀,我們可以操作底層資料的組織和訪問方式,這在各種應用程式中都很有用。
要執行以上程式碼,我們需要執行下面顯示的命令。
命令
python3 main.py
執行上述命令後,我們可以預期輸出與下面顯示的輸出相同。
輸出
Original Tensor data type: torch.float32 Converting to int8: torch.int8 Converting to int16: torch.int16 Converting to int32: torch.int32 Converting to int64: torch.int64
結論
總之,PyTorch 是一個功能強大的開源框架,用於機器學習和深度學習任務。它提供了一系列工具和函式來幫助使用者操作和分析資料,包括建立和修改張量。張量是可以儲存各種資料型別的多維陣列,它們是 PyTorch 的基本構建塊。
張量的一個重要功能是能夠重新整形它們,這可以使用 view() 方法來完成。此方法允許使用者更改張量的形狀而不修改其底層資料,使其成為一種靈活高效的資料操作工具。透過使用 view() 方法,使用者可以輕鬆更改張量的形狀以滿足其特定需求,無論這是否涉及將一維張量轉換為二維張量或重新排列張量的維度。
總的來說,能夠更改 PyTorch 中張量的檢視對於機器學習和深度學習應用來說是一個寶貴的工具,允許使用者有效地操作和分析資料。使用 PyTorch,使用者可以訪問一個功能強大且靈活的框架來構建和訓練機器學習模型,並且能夠重新整形張量只是提供的眾多工具之一,可以幫助他們做到這一點。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP