神經網絡作為人工智能的重要組成部分,在圖像處理、自然語言處理、語音識別、機器翻譯等領域具有廣泛的應用。本文將詳細介紹如何搭建簡單的神經網絡框架并進行訓練。在搭建神經網絡前,對數據集的下載和處理的詳細可以看我的這篇博客:(神經網絡模型(最細的手寫字識別案例)_AI_dataloads的博客-CSDN博客)
首先定義一個名為NeuralNetwork的類,它繼承了PyTorch框架的nn.Module類,用于創(chuàng)建神經網絡。 接下來部分是類的構造函數,用于初始化神經網絡的各個層。在這個類中,初始化了以下層:
- :一個將輸入展平的層。
- :第一個隱藏層,輸入大小為28x28(圖像大小),輸出大小為128。
- :第二個隱藏層,輸入大小為128,輸出大小為128。
- :第三個隱藏層,輸入大小為128,輸出大小為64。
- :輸出層,輸入大小為64,輸出大小為10(類別數)。
這部分定義了前向傳播方法,通過前向傳播計算輸入數據的輸出。首先輸入的數據先通過層展平,然后依次經過隱藏層和激活函數進行線性變換和非線性處理。最后經過輸出層輸出預測結果。(注意這個函數也是定義在NeuralNetwork之中的。)
這行代碼創(chuàng)建了一個的神經網絡模型實例,并將其移動到特定的設備(我這里使用的是GPU)上進行計算。如何查看自己的torch設備(device)可以查看這篇博客:神經網絡模型(最細的手寫字識別案例)_AI_dataloads的博客-CSDN博客
這行代碼創(chuàng)建了一個的實例,用作損失函數。想要了解神經網絡中的損失函數可以看我的這篇博客:pytorch中損失函數的使用_AI_dataloads的博客-CSDN博客
這行代碼創(chuàng)建了一個Adam優(yōu)化器的實例,將模型參數和學習率作為參數傳入。想了解優(yōu)化器的定義可以參考我的這篇博客:pytorch中損失函數的使用_AI_dataloads的博客-CSDN博客
這行代碼定義了一個名為的函數,用于進行訓練。函數接受訓練數據、模型、損失函數和優(yōu)化器作為輸入參數。
這行代碼調用函數來開始模型的訓練。它傳入訓練數據、模型、損失函數和優(yōu)化器,并執(zhí)行訓練過程。(注意訓練前要先獲取dataloader,詳細可以參考我的博客:PyTorch DataLoader詳解:如何高效加載和處理大規(guī)模數據集?_AI_dataloads的博客-CSDN博客
下面是運行后的結果:可以看出一共進行了938次,并展示了每一次的損失值
下面是完整代碼展示:
轉載請注明來自浙江中液機械設備有限公司 ,本文標題:《【深度學習】PyTorch搭建基礎神經網絡(超詳細)》
還沒有評論,來說兩句吧...