pytorch gpu的简单例子
时间: 2023-05-10 15:02:17 浏览: 80
在PyTorch中使用GPU可以大大加速模型的训练和推断速度。一般来说,只需将模型和数据移动到GPU上即可。
首先,需要确保PyTorch和CUDA已安装并配置正确。可以使用以下代码检查:
```
import torch
if torch.cuda.is_available():
print('CUDA is available')
else:
print('CUDA is not available')
```
如果CPU上运行,则输出为“CUDA is not available”,否则输出为“CUDA is available”。
接下来,创建一个简单的神经网络模型和一些随机数据,示例代码如下:
```
import torch
import torch.nn as nn
import torch.optim as optim
# 创建一个简单的神经网络模型
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(10, 5)
self.fc2 = nn.Linear(5, 2)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x
# 随机数据
data = torch.randn(32, 10)
labels = torch.randint(low=0, high=2, size=(32,))
```
将模型和数据移动到GPU上,示例代码如下:
```
# 定义设备
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# 移动模型到GPU
net = Net().to(device)
# 移动数据到GPU
data = data.to(device)
labels = labels.to(device)
```
接下来,定义损失函数和优化器,并在GPU上执行训练。
```
# 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.1)
# 在GPU上执行训练
for epoch in range(10):
optimizer.zero_grad()
outputs = net(data)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
print('Epoch {}, Loss: {:.4f}'.format(epoch+1, loss.item()))
```
在训练过程中,PyTorch会自动将梯度计算和优化器操作放在GPU上执行。可以通过使用`.item()`将损失从GPU转移到CPU,使得打印输出更方便。通过在训练之前将模型和数据移动到GPU上,PyTorch会自动在GPU上执行模型的前向和后向传播,从而加快训练速度。