PyTorch中的全連接層(fully connected layer)通常用于將輸入向量轉換為具有特定數量輸出神經元的向量。在前向傳播期間,全連接層會接收輸入張量,執行矩陣乘法,并添加一個偏置向量,然后通過激活函數生成輸出張量。
下面是一個簡單的示例,展示了如何在PyTorch中實現全連接層的前向傳播:
import torch
import torch.nn as nn
# 定義一個簡單的全連接層
class FullyConnectedLayer(nn.Module):
def __init__(self, input_size, output_size):
super(FullyConnectedLayer, self).__init__()
self.linear = nn.Linear(input_size, output_size)
def forward(self, x):
# 執行矩陣乘法和偏置加法
out = self.linear(x)
return out
# 創建一個全連接層的實例
input_size = 784 # 假設輸入是一個 28x28 的圖像
output_size = 10 # 輸出是一個包含 10 個類別的向量
fc_layer = FullyConnectedLayer(input_size, output_size)
# 創建一個隨機輸入張量
input_tensor = torch.randn(1, input_size) # 批量大小為 1,輸入大小為 784
# 前向傳播
output_tensor = fc_layer(input_tensor)
print("Output tensor shape:", output_tensor.shape) # 輸出形狀應為 [1, 10]
在這個示例中,我們首先定義了一個名為FullyConnectedLayer
的類,該類繼承自nn.Module
。我們在構造函數中初始化了一個線性層(nn.Linear
),該層將輸入大小映射到輸出大小。在forward
方法中,我們調用線性層來執行前向傳播。
接下來,我們創建了一個全連接層的實例,并使用一個隨機輸入張量進行前向傳播。最后,我們打印輸出張量的形狀,以驗證其是否符合預期。