引言
深度学习是当前人工智能领域的热点,而CUDA则是加速深度学习计算的重要工具。Ubuntu 18.04系统作为一款广泛使用的Linux发行版,内置了对CUDA的支持,使得深度学习入门变得无障碍。本文将详细介绍如何在Ubuntu 18.04系统中配置CUDA环境,并探讨如何开始深度学习之旅。
系统要求
在开始之前,请确保您的Ubuntu 18.04系统满足以下要求:
- 硬件要求:NVIDIA GPU(至少1GB显存)
- 软件要求:Ubuntu 18.04系统
安装CUDA Toolkit
更新系统:
sudo apt update
sudo apt upgrade
添加CUDA源:
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo add-apt-repository "deb [arch=amd64] https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /"
安装CUDA Toolkit:
sudo apt update
sudo apt install cuda
验证CUDA安装:
nvcc --version
如果安装成功,您将看到CUDA Toolkit的版本信息。
安装深度学习框架
以下是一些常用的深度学习框架,您可以根据自己的需求选择安装:
安装TensorFlow
安装TensorFlow GPU版本:
pip install tensorflow-gpu
验证TensorFlow安装:
import tensorflow as tf
print(tf.__version__)
安装PyTorch
安装PyTorch GPU版本:
pip install torch torchvision torchaudio
验证PyTorch安装:
import torch
print(torch.__version__)
深度学习实践
以下是使用TensorFlow和PyTorch进行深度学习实践的一个简单例子:
TensorFlow实践
import tensorflow as tf
# 创建一个简单的神经网络
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(10, activation='relu', input_shape=(784,)),
tf.keras.layers.Dense(10, activation='softmax')
])
# 编译模型
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 加载数据集
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 数据预处理
x_train, x_test = x_train / 255.0, x_test / 255.0
# 训练模型
model.fit(x_train, y_train, epochs=5)
# 测试模型
model.evaluate(x_test, y_test)
PyTorch实践
”`python import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms
创建一个简单的神经网络
class SimpleNN(nn.Module):
def __init__(self):
super(SimpleNN, self).__init__()
self.fc1 = nn.Linear(784, 10)
self.fc2 = nn.Linear(10, 10)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x
实例化网络
model = SimpleNN()
定义损失函数和优化器
criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=0.001)
加载数据集
transform = transforms.Compose([transforms.ToTensor()]) train_dataset = datasets.MNIST(root=‘./data’, train=True, download=True, transform=transform) train_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=64, shuffle=True)
训练模型
for epoch in range(5):
for data, target in train_loader:
optimizer.zero_grad()
output = model(data)
loss = criterion(output, target)
loss.backward()
optimizer.step()
测试模型
test_dataset = datasets.MNIST(root=‘./data’, train=False, transform=transform) test_loader = torch.utils.data.DataLoader(dataset=test_dataset, batch_size=64, shuffle=False)
with torch.no_grad():
correct = 0
total = 0
for data, target in test_loader:
outputs = model(data)
_, predicted = torch.max(outputs.data, 1)
total += target.size(0)
correct += (predicted == target).sum().item