一、PyCharmpytorch基礎入門
PyCharmpytorch是一種開發深度學習模型的IDE(集成開發環境),採用Python編程語言。它為開發者提供了一種直觀而強大的方法來創建深度學習模型。
下面讓我們從基本的安裝開始。首先,您需要安裝Python,建議使用最新版本的Python 3。之後,在安裝PyCharmpytorch之前,需要安裝PyTorch庫。PyTorch是Facebook的深度學習框架,它是由Torch7框架轉換而來的。下面是安裝PyTorch的命令:
pip install torch
完成了PyTorch的安裝,我們來安裝PyCharmpytorch。它可以從JetBrains官網上獲得,但是需要付費使用。我們可以使用社區版,它是免費的版本。
在安裝完成後,打開PyCharmpytorch,開始創建一個新的項目。選擇Python解釋器並選擇創建一個新的虛擬環境(Virtual Environment)來管理您的依賴項。此外,我們還需要安裝PyTorch的Python接口,也稱為torchvision。建議使用以下命令:
pip install torchvision
二、數據集的準備和預處理
在創建一個深度學習模型之前,我們需要準備好數據集並進行預處理。我們可以使用以下命令從MNIST下載數據集:
import torchvision.datasets as dsets
import torchvision.transforms as transforms
train_datasets = dsets.MNIST(root='./data', train=True, transform=transforms.ToTensor(), download=True)
test_datasets = dsets.MNIST(root='./data', train=False, transform=transforms.ToTensor())
在這裡,我們使用了ToTensor函數將圖像轉換為PyTorch張量。此外,我們還可以將數據集切分為訓練集、驗證集和測試集。以下是執行此操作的示例:
from torch.utils.data.sampler import SubsetRandomSampler
import numpy as np
# 計算數據集的數量和切分的點
dataset_size = len(train_datasets)
indices = list(range(dataset_size))
split = int(np.floor(0.2 * dataset_size))
# 隨機劃分訓練集、驗證集和測試集
np.random.shuffle(indices)
train_indices, valid_indices, test_indices = indices[2 * split:], indices[:split], indices[split:2 * split]
train_sampler = SubsetRandomSampler(train_indices)
valid_sampler = SubsetRandomSampler(valid_indices)
test_sampler = SubsetRandomSampler(test_indices)
現在我們已經準備好訓練數據集、驗證數據集和測試數據集。對於每個數據集,我們需要創建一個數據加載器,它可以將數據集包裝成PyTorch數據集對象。以下是創建數據加載器的示例:
from torch.utils.data.dataloader import DataLoader
batch_size = 64
train_loader = DataLoader(train_datasets, batch_size=batch_size, sampler=train_sampler)
valid_loader = DataLoader(train_datasets, batch_size=batch_size, sampler=valid_sampler)
test_loader = DataLoader(test_datasets, batch_size=batch_size, sampler=test_sampler)
在這裡,我們使用了數據加載器來批量處理和加載數據。batch_size是我們指定的單個批次中的圖像數量。
三、創建神經網絡模型並訓練模型
現在,我們將創建一個簡單的神經網絡模型,並使用訓練數據集和驗證數據集來訓練它。以下是使用PyCharmpytorch創建神經網絡模型的示例:
import torch.nn as nn
import torch.nn.functional as F
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(784, 128)
self.fc2 = nn.Linear(128, 10)
def forward(self, x):
x = x.view(-1, 784)
x = F.relu(self.fc1(x))
x = self.fc2(x)
return F.log_softmax(x)
model = Net()
在這裡,我們創建了一個包含兩個全連接層的神經網絡模型。在前向傳遞中,我們使用relu激活函數將數據從784維嵌入到128維,並使用log_softmax激活函數將其從128維嵌入到10維。我們使用CrossEntropyLoss作為我們的損失函數,並使用Adam優化算法來進行優化:
import torch.optim as optim
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.01)
現在我們已經創建好了模型,損失函數和優化器,讓我們使用訓練數據集和驗證數據集來訓練模型。訓練過程將重複執行多個epochs,並且使用驗證數據集來評估模型性能:
num_epochs = 10
for epoch in range(num_epochs):
for batch_idx, (data, target) in enumerate(train_loader):
optimizer.zero_grad()
output = model(data)
loss = criterion(output, target)
loss.backward()
optimizer.step()
correct, total = 0, 0
with torch.no_grad():
for data, target in valid_loader:
output = model(data)
_, predicted = torch.max(output.data, 1)
total += target.size(0)
correct += (predicted == target).sum().item()
print('Epoch [{}/{}], Validation Accuracy: {:.2f}%'.format(epoch+1, num_epochs, 100 * correct / total))
四、測試訓練好的模型
在完成了模型的訓練後,我們可以使用測試數據集來測試模型的性能。下面是使用測試數據集測試我們的模型的示例:
test_loss = 0
correct = 0
with torch.no_grad():
for data, target in test_loader:
output = model(data)
test_loss += criterion(output, target).item()
pred = output.data.max(1, keepdim=True)[1]
correct += pred.eq(target.data.view_as(pred)).sum()
test_loss /= len(test_loader.dataset)
accuracy = 100. * correct / len(test_loader.dataset)
print('Test Average loss: {:.4f}, Test Accuracy: {}/{} ({:.0f}%)'.format(test_loss, correct, len(test_loader.dataset), accuracy))
至此,我們已經成功地創建了一個深度學習模型,使用訓練數據集訓練模型,並使用測試數據集測試模型的性能。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/253336.html