2025 Python 與 PyTorch 大解密|從零開始加速你的 AI 開發
人工智慧的發展在近年來突飛猛進,從自然語言處理到電腦視覺,各個領域都取得了驚人的成就。而支撐這場革命的,除了強大的演算法,更需要一個靈活且高效的開發框架。在眾多選擇中,PyTorch(又稱 Torch)憑藉其直觀的設計、動態計算圖以及對 GPU 和 MPS 等硬體加速的完美支援,成為了許多研究者與開發者的首選。
無論你是學生、工程師,還是正打算轉入 AI 領域的自學者,只要熟悉 Python 並掌握當前主流的深度學習框架,就能快速完成模型的訓練、部署與優化。本文將以「從零開始」為核心,帶你逐步建立完整的 AI 開發流程,並結合 2025 年最新的工具與實務趨勢,讓你能更輕鬆上手,並有效提升開發效率。

內容
什麼是 PyTorch ?
PyTorch 是由 Meta(原 Facebook)AI Research 開發的開源機器學習框架,基於 Python 語言,並廣泛應用於兩大領域:
- 張量運算(Tensor Computation)
功能類似 NumPy,但有一個關鍵差異:它的張量可以直接在 GPU 上運行,大幅加速大規模數學計算(例如矩陣乘法),效能通常比 CPU 快上數十倍。 - 深度神經網路(Deep Neural Networks)
內建 自動微分系統(autograd),能自動計算梯度,這對利用反向傳播訓練模型至關重要。再搭配torch.nn模組,開發者可以像「搭積木」一樣快速構建複雜的網路結構。
這個框架的設計哲學是 直覺、靈活且高效。它採用 動態計算圖(Dynamic Computation Graph),代表「建立模型」與「執行運算」能同時進行。開發者可以直接用標準的 Python 語法(如 for 迴圈、if 條件式)來動態控制模型行為,特別適合研究與實驗。
為什麼選 Torch ?
到了 2025 年,這個框架的優勢比以往更加明顯:
- 語法直觀:延續 Pythonic 的設計理念,程式碼可讀性極高,幾乎就像在寫偽代碼,學習門檻低且開發體驗流暢。
- 靈活強大:動態計算圖特別適合研究與快速原型開發,你可以即時列印張量、修改網路架構,而不必重新編譯整個模型。
- 完整生態系:擁有來自 Meta 的支持,並延伸出適用於不同領域的工具,例如電腦視覺 (
torchvision)、自然語言處理 (torchtext、transformers)、以及音訊處理 (torchaudio)。加上龐大的開源社群,遇到問題時往往能迅速找到解答。 - 生產級部署:隨著 TorchScript 與 torch.compile(PyTorch 2.0 的核心特色)的成熟,這個框架不僅適合研究,更能無縫導入實際產品環境。
- 跨設備支援:同一份程式碼即可在 CPU、NVIDIA GPU (CUDA)、或 Apple Silicon (MPS) 上運行,輕鬆享受硬體加速。
開發環境
工欲善其事,必先利其器。讓我們快速設置你的開發環境。
作業系統
- macOS / Linux / Windows 皆可
安裝 Python
- 建議版本:Python 3.9 ~ 3.12
- 檢查是否已安裝:
python3 --version
如果沒有安裝,請到 Python 官方網站 下載並安裝。
安裝 VSCode
- 下載:Visual Studio Code
- 安裝 Python 擴充套件(Microsoft 官方提供)
Git(版本控制用)
- 檢查是否安裝:
git --version
若未安裝,可到 Git 官方網站 下載。
安裝 PyTorch
前往官方網站根據你的平台(作業系統)、包管理工具(pip/conda)和 CUDA 版本(如果有 NVIDIA GPU)選擇對應的命令。
# Install (CPU version, works for everyone)
pip3 install torch torchvision torchaudio
# Install with CUDA 12.1 (for NVIDIA GPU users)
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
# Install via Conda (with CUDA 12.1 support)
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
驗證安裝及設備
打開你的 Python 環境(Jupyter Notebook, VS Code, PyCharm 等),執行以下代碼檢查設備:
import torch
print(f"PyTorch version: {torch.__version__}")
print(f"CUDA (NVIDIA GPU) available: {torch.cuda.is_available()}")
if torch.cuda.is_available():
print(f"CUDA device name: {torch.cuda.get_device_name(0)}")
print(f"MPS (Apple Silicon) available: {torch.backends.mps.is_available()}")
# Select which device to use
device = "cuda" if torch.cuda.is_available() else "mps" if torch.backends.mps.is_available() else "cpu"
print(f"Using device: {device}")
專案結構
my_python_project/ # 專案根目錄
├── my_project_env/ # 虛擬環境資料夾(不會上傳到 Git)
├── app.py # 主程式
├── requirements.txt # 套件依賴清單
└── .gitignore # Git 忽略規則
Code
讓我們實作一個最經典的範例:在 Fashion-MNIST 資料集上訓練一個簡單的神經網路來對衣物圖片進行分類。此代碼展示了完整的流程,並自動利用可用的設備進行加速。
# import_libraries.py
import torch
from torch import nn, optim
from torch.utils.data import DataLoader
from torchvision import datasets, transforms
import matplotlib.pyplot as plt
# 1. Set device
device = "cuda" if torch.cuda.is_available() else "mps" if torch.backends.mps.is_available() else "cpu"
print(f"Using {device} device")
# 2. Load and prepare dataset
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.5,), (0.5,))
])
train_dataset = datasets.FashionMNIST(root='./data', train=True, download=True, transform=transform)
test_dataset = datasets.FashionMNIST(root='./data', train=False, download=True, transform=transform)
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False)
# Check the shape of one batch
for X, y in train_loader:
print(f"Shape of X [Batch, Channel, Height, Width]: {X.shape}")
print(f"Shape of y: {y.shape} {y.dtype}")
break
# 3. Build neural network model
class NeuralNetwork(nn.Module):
def __init__(self):
super().__init__()
self.flatten = nn.Flatten()
self.linear_relu_stack = nn.Sequential(
nn.Linear(28*28, 512),
nn.ReLU(),
nn.Linear(512, 512),
nn.ReLU(),
nn.Linear(512, 10)
)
def forward(self, x):
x = self.flatten(x)
logits = self.linear_relu_stack(x)
return logits
model = NeuralNetwork().to(device) # Move model to device (GPU/MPS/CPU)
print(model)
# 4. Define loss function and optimizer
loss_fn = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=1e-3)
# 5. Training loop
def train(dataloader, model, loss_fn, optimizer):
size = len(dataloader.dataset)
model.train()
for batch, (X, y) in enumerate(dataloader):
X, y = X.to(device), y.to(device) # Move data to the same device
# Compute prediction error
pred = model(X)
loss = loss_fn(pred, y)
# Backpropagation
optimizer.zero_grad()
loss.backward()
optimizer.step()
if batch % 100 == 0:
loss, current = loss.item(), batch * len(X)
print(f"loss: {loss:>7f} [{current:>5d}/{size:>5d}]")
# 6. Test loop
def test(dataloader, model, loss_fn):
size = len(dataloader.dataset)
num_batches = len(dataloader)
model.eval()
test_loss, correct = 0, 0
with torch.no_grad():
for X, y in dataloader:
X, y = X.to(device), y.to(device)
pred = model(X)
test_loss += loss_fn(pred, y).item()
correct += (pred.argmax(1) == y).type(torch.float).sum().item()
test_loss /= num_batches
correct /= size
print(f"Test Results: \n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \n")
return correct
# 7. Run training
epochs = 5
accuracy_history = []
for t in range(epochs):
print(f"Epoch {t+1}\n-------------------------------")
train(train_loader, model, loss_fn, optimizer)
acc = test(test_loader, model, loss_fn)
accuracy_history.append(acc)
print("Training Done!")
# 8. Save trained model
torch.save(model.state_dict(), "outputs/model.pth")
print("Saved model state to model.pth")
輸出
當你運行上述代碼後,你將會在控制台看到類似以下的輸出,並在 outputs 資料夾中生成模型文件。
控制台輸出 (Console Output):
Using cuda device # 或 Using mps device / Using cpu device
Shape of X [Batch, Channel, Height, Width]: torch.Size([64, 1, 28, 28])
Shape of y: torch.Size([64]) torch.int64
NeuralNetwork(
(flatten): Flatten(start_dim=1, end_dim=-1)
(linear_relu_stack): Sequential(
(0): Linear(in_features=784, out_features=512, bias=True)
(1): ReLU()
(2): Linear(in_features=512, out_features=512, bias=True)
(3): ReLU()
(4): Linear(in_features=512, out_features=10, bias=True)
)
)
Epoch 1
-------------------------------
loss: 2.301106 [ 0/60000]
loss: 0.558233 [ 6400/60000]
...
Test Error:
Accuracy: 84.0%, Avg loss: 0.412345
Epoch 5
-------------------------------
...
Test Error:
Accuracy: 87.2%, Avg loss: 0.352123
Training Done!
Saved PyTorch Model State to model.pth
結論
通過這篇「從零開始」的 PyTorch 指南,我們解密了 2025 年人工智慧開發的核心工具與實戰應用。你已經學會了:
- 為什麼它是現代 AI 開發的利器:直覺、靈活且生態強大。
- 如何設置環境並利用硬體加速:透過
.to(device)輕鬆在 CPU、GPU (CUDA) 和 MPS 之間切換。 - 一個標準的專案流程:從資料載入、模型定義、訓練循環到模型保存。
這僅僅是開始。AI 的世界廣闊而深邃,等待你探索更複雜的模型(CNN, RNN, Transformer)、更高級的技術(遷移學習、生成對抗網路)、以及如何將模型部署到真實世界。
現在,你已經擁有了加速開發的鑰匙。打開你的編輯器,開始構建屬於你的智能未來吧!!









