Код: Выделить всё
torch.utils.data.DataloaderТеперь я загружаю каждый пакет отдельно в свой графический процессор.
Код: Выделить всё
CTX = torch.device('cuda')
train_loader = torch.utils.data.DataLoader(
train_dataset,
batch_size=BATCH_SIZE,
shuffle=True,
num_workers=0,
)
net = Net().to(CTX)
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=LEARNING_RATE)
for epoch in range(EPOCHS):
for inputs, labels in test_loader:
inputs = inputs.to(CTX) # this is where the data is loaded into GPU
labels = labels.to(CTX)
optimizer.zero_grad()
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
print(f'training accuracy: {net.validate(train_loader, device=CTX)}/{len(train_dataset)}')
print(f'validation accuracy: {net.validate(test_loader, device=CTX)}/{len(test_dataset)}')
Код: Выделить всё
def validate(self, val_loader, device=torch.device('cpu')):
correct = 0
for inputs, labels in val_loader:
inputs = inputs.to(device)
labels = labels.to(device)
outputs = torch.argmax(self(inputs), dim=1)
correct += int(torch.sum(outputs==labels))
return correct
Код: Выделить всё
train_loader.to(CTX)
Я работаю с NVIDIA GeForce RTX 2060 с установленным CUDA Toolkit 10.2. .
Подробнее здесь: https://stackoverflow.com/questions/653 ... r-into-gpu
Мобильная версия