Torch - 人工神經網路



在 Torch 中,人工神經網路是一種受人腦啟發的計算模型。它由相互連線的節點或層組成,這些節點或層處理輸入資料以產生輸出。ANN 使用torch.nn模組構建,該模組提供不同的層和啟用函式。此網路透過子類化nn.Module並實現forward方法來指定資料流。

感知器

感知器是神經網路的基本構建塊,它表示單層神經網路。nn.Linear模組接受兩個引數,即輸出和輸入特徵的數量。它會自動為感知器初始化偏差和權重。

為了實現啟用函式,使用階躍函式。此函式根據輸入閾值輸出二進位制值。以下是 Torch 中感知器的簡單實現:

import torchimport torch.nn as nn
class Perceptron(nn.Module):
   def__init__(self, input_size):
      super(Perceptron, self).__init__()
      self.linear = nn.Linear(input_size,1)
   def forward(self, x):
      output = self.linear(x)
      return torch.where(output > 0, torch.tensor(1.0), torch.tensor(0.0))
model = Perceptron(input_size = 4)
input_data = torch.tensor([2.0, 3.0, 4.0, 5.0])
output = model(input_data)
print(output)

邏輯單元

在 Torch 中,邏輯單元是一個用於二元分類任務的基本元件。它將邏輯 sigmoid 啟用函式應用於線性變換。sigmoid 函式將所有實數值轉換為 0 到 1 之間的值,用於處理機率估計。nn.sigmoid模組用於在 Torch 中實現啟用函式。這可以輕鬆整合到神經網路模型中,該模型指定輸出是可微的,並用於訓練期間的反向傳播。

神經網路模組

在 Torch 中,nn模組用於構建神經網路。這包括不同的層,例如用於全連線層的nn.Linear和卷積層。它支援損失函式並最佳化演算法,從而使模型評估更容易。

張量和運算

張量是 Torch 中的核心資料結構。它們類似於其他程式語言中的陣列。它們是多維陣列,可以儲存各種型別的資料,例如浮點數和整數。我們還可以使用torch.tensor()、torch.zeros()等函式建立張量。

資料準備

這是使用 Torch 構建神經網路中一個比較困難的步驟。它需要多個關鍵過程來以最佳方式為訓練模型指定資料。資料準備對於使用 Torch 構建有效的神經網路至關重要。它從各種步驟載入資料集,例如規範化、標準化資料以及處理缺失值。

  • 載入資料集:它將從各種來源匯入資料,例如資料集、線上儲存庫和 CSV 檔案。

  • 資料處理:這透過刪除重複項、糾正錯誤和處理缺失值來規範資料。這些功能同樣有助於模型的學習過程。

  • 資料增強:應用模型泛化和魯棒性技術,例如翻轉、旋轉和裁剪等資料增強技術。

  • 資料分割:資料集通常被分割成測試集、訓練集和驗證集。

訓練和最佳化

在 Torch 中設定訓練迴圈涉及不同的步驟。首先,我們需要執行前向傳遞以完成神經網路的輸出。然後,我們可以使用損失函式(如nn.CrossEntropyCriterion)來計算損失。最後,我們使用最佳化器(如adamsgd)來更新模型引數。

  • 隨機梯度下降:這使用損失函式相對於每個引數的梯度來更新引數。

  • Adam:它結合了隨機梯度下降的兩個擴充套件(AdaGrad 和 RMSProp)的優點。

評估神經網路以確定其在未見資料上的效能。指標包括召回率、精度、準確率和 F1 分數。此處,評估過程包括在訓練期間使用驗證集來調整超引數,並在訓練後使用一個單獨的測試集來衡量泛化能力。

廣告
© . All rights reserved.