要訓練自己的數據集,首先需要將數據加載到PyTorch的Dataset中,并創建一個對應的DataLoader來對數據進行批處理和加載。然后定義一個神經網絡模型,定義損失函數和優化器,并在訓練循環中迭代數據并更新模型參數。以下是一個簡單的示例代碼:
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, Dataset
# 定義自己的數據集類
class CustomDataset(Dataset):
def __init__(self, data):
self.data = data
def __len__(self):
return len(self.data)
def __getitem__(self, idx):
return self.data[idx]
# 定義神經網絡模型
class Model(nn.Module):
def __init__(self):
super(Model, self).__init__()
self.fc = nn.Linear(10, 1) # 輸入特征維度為10
def forward(self, x):
return self.fc(x)
# 加載數據集
data = torch.randn(100, 10)
dataset = CustomDataset(data)
dataloader = DataLoader(dataset, batch_size=10, shuffle=True)
# 定義模型、損失函數和優化器
model = Model()
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.001)
# 訓練模型
num_epochs = 10
for epoch in range(num_epochs):
for batch_idx, batch_data in enumerate(dataloader):
optimizer.zero_grad()
output = model(batch_data)
loss = criterion(output, torch.ones(batch_data.size(0))) # 目標值為1
loss.backward()
optimizer.step()
if batch_idx % 10 == 0:
print('Epoch [{}/{}], Batch [{}/{}], Loss: {:.4f}'
.format(epoch+1, num_epochs, batch_idx, len(dataloader), loss.item()))
在上面的示例中,我們定義了一個簡單的自定義數據集類和神經網絡模型類。然后加載數據集,定義模型、損失函數和優化器,并進行訓練。在訓練循環中,我們迭代數據加載器中的每個批次數據,并計算損失、反向傳播、更新模型參數。您可以根據您的數據集和模型的具體情況進行適當的調整和修改。