Categories
程式開發

最完整的PyTorch數據科學家指南(1)


進行深度學習時您將需要的所有PyTorch功能。從實驗/研究的角度來看。

PyTorch 已經成為現在創建神經網絡的事實上的標準之一,我喜歡它的界面。但是,對於初學者來說,要獲得它有些困難。

我記得幾年前經過一些廣泛的實驗之後才選擇PyTorch。實話實說,我花了很多時間才撿起來,但我很高興我從Keras搬到PyTorch。憑藉其高度可定制性和python語法, PyTorch可以與 他人一起工作,這是我的榮幸,我將其推薦給任何希望通過深度學習進行繁重工作的人。

因此,在本PyTorch指南中, 我將嘗試減輕PyTorch對於初學者的痛苦,並介紹在使用Pytorch 創建任何神經網絡時需要的一些最重要的類和模塊。

但是,這並不是說它僅針對初學者,因為 我還將談論 PyTorch提供的高可定制性,並談論自定義的Layers,Datasets,Dataloaders和Loss函數。

張量

張量是PyTorch的基本構建塊,簡單地說,它們是NumPy數組,但在GPU上。在這一部分中,我將列出一些在使用Tensors時可以使用的最常用的操作。這絕不是張量可以執行的詳盡操作列表,但是在進行更令人興奮的部分之前了解張量是有幫助的。

1.創建張量

我們可以通過多種方式創建PyTorch張量。這包括從NumPy數組轉換為張量。下面只是一個要點,下面是一些示例,但是您可以 像使用NumPy數組一樣使用張量來做更多的事情。

最完整的PyTorch數據科學家指南(1) 1

最完整的PyTorch數據科學家指南(1) 2

2.張量運算

同樣,您可以對這些張量執行很多操作。

最完整的PyTorch數據科學家指南(1) 3

最完整的PyTorch數據科學家指南(1) 4

注意: 什麼是PyTorch變量?在以前的Pytorch版本中,Tensor和Variables曾經是不同的,並且提供了不同的功能,但是現在不贊成使用Variable API ,並且所有用於Tensors的變量方法都可以使用。因此,如果您不了解它們,那很好,因為它們不是必需的,如果您了解它們,則可以將它們忘記。

nn.模塊

但是話又說回來,如果Pytorch沒有提供很多現成的層,而這些層在各種神經網絡體系結構中非常頻繁地使用,則Pytorch不會被廣泛使用。一些例子是:nn.Linear,nn.Conv2d,nn.MaxPool2d,nn.ReLU, nn.BatchNorm2d,nn.Dropout,nn.Embedding, ,, ,,,nn.GRU/nn.LSTMnn.Softmaxnn.LogSoftmaxnn.MultiheadAttentionnn .TransformerEncodernn.TransformerDecoder

最完整的PyTorch數據科學家指南(1) 5

最完整的PyTorch數據科學家指南(1) 6

在這裡,我們定義了一個非常簡單的網絡,該網絡接受大小為784的輸入,並以順序方式將其通過兩個線性層。但是要注意的是,我們可以在定義前向通過時定義任何類型的計算,這使得PyTorch高度可定制以用於研究目的。例如,在瘋狂的實驗模式下,我們可能使用了以下網絡,在該網絡上我們任意附加了圖層。在這裡,我們在將輸入再次添加回第二個線性層(跳過連接)之後,將輸出從第二個線性層再次發送回第一個線性層。

最完整的PyTorch數據科學家指南(1) 7

我們還可以檢查神經網絡正向傳遞是否起作用。通常,我首先創建一些隨機輸入,然後將其通過我創建的網絡進行傳遞。

最完整的PyTorch數據科學家指南(1) 8

關於層的一句話

Pytorch非常強大,您實際上可以使用自己創建任何新的實驗層nn.Module。例如,而不是使用預定義的線性層nn.Linear。從Pytorch以上,我們可以已經創建了 定制線性層。

最完整的PyTorch數據科學家指南(1) 9

您將看到如何在中包裝權重張量。 nn.Parameter.這樣做是為了使張量被視為模型參數。

參數是 Tensor子類,當與Module-一起使用時具有非常特殊的屬性-當將它們分配為模塊屬性時,它們會自動添加到其參數列表中,並將出現在 parameters()迭代器中。

稍後您將看到,model.parameters()迭代器將成為優化器的輸入。但是稍後會更多。現在,我們現在可以在任何PyTorch網絡中使用此自定義層,就像其他任何層一樣。

最完整的PyTorch數據科學家指南(1) 10

但是話又說回來,如果Pytorch沒有提供很多現成的層,而這些層在各種神經網絡體系結構中非常頻繁地使用,則Pytorch不會被廣泛使用。一些例子是:nn.Linear,nn.Conv2d,nn.MaxPool2d,nn.ReLU, nn.BatchNorm2d,nn.Dropout,nn.Embedding,nn.GRU/nn.LSTM,nn.Softmax,nn.LogSoftmax,nn. MultiheadAttention,nn.TransformerEncoder,nn.TransformerDecoder

以上就是Torch的基礎操作,下一篇文章會為同學們講解卷積部分的操作。