欢迎!
在本教程中,我将指导您使用Pytorch创建一个简单的图像分类模型,Pytorch是Python中流行的深度学习库。
pron© - 条件:
- Python安装。
- 熟悉Python中的编程。
- 对神经网络的基本理解。
1.Instala㧣O:
我们开始之前,请确保您已经安装了必要的软件包:
这是关于配置环境和安装Pytorch,这是一个广泛用于深度学习任务的库,而Archivion则提供用户视觉实用。
- pytorch :实施深度学习架构(例如神经网络)的主要库。
- torchvision :Pytorch的辅助库,可访问流行数据集,模型架构和计算视觉的图像转换。
pip install torch torchvision
2.导入库:
在使用软件包的功能之前,您需要导入它。
toch:omã³dulululopytorch的负责人。
torchvision:如前所述,这有助于专门针对计算视觉任务的数据集和模型。
变换:这提供了常见的图像转换。在深刻的学习中,输入数据通常需要起诉以提高培训效率和表现。
nn:这个母亲为神经网络提供了所有构建块。
最佳:包含常见优化算法以调整模型的模型范围。
import torch
import torchvision
import torchvision.transforms as transforms
import torch.nn as nn
import torch.optim as optim
3.阅读并预先编程数据:
我们将使用CIFAR-10数据库,这是10堂32 x 32的60,000张彩色图像。
CIFAR-10数据库:一种众所周知的计算视图,由60,000多彩32 x 32张图像组成,涵盖10个类别。
transform.compose():链几个图像变换。在此示例中,首先将图像转换为张量,然后归一化以在-1和1之间的值。
之间。数据加载器:协助食品批量,洗牌并并行充电,使培训过程效率更高。
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)) # Normalize the images
])
trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4, shuffle=True, num_workers=2)
testset = torchvision.datasets.CIFAR10(root='./data', train=False, download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=4, shuffle=False, num_workers=2)
classes = ('plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck')
4.定义神经网络:
我们定义了一个简单的卷积神经网络结构(CNN)。
在这里,我们正在定义卷积神经网络(CNN)。 CNN是用于图像处理任务的模式神经网络类型。
nn.conv2d():表示卷积层。他等待(input_channels,output_channels,kernel_size)以及其他部分。
nn.maxpool2d():代表母亲的合并,这降低了表示的空间大小,从而使中风更加崩溃并提取了主导资源。
nn.linear():表示一个完全连接的层,该图层连接下一个层的每个神经元。
向前功能指定数据如何通过网络流动。这种流对于向前传播和反式。
至关重要。
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 6, 5) # 3 input channels, 6 output channels, 5x5 kernel
self.pool = nn.MaxPool2d(2, 2) # 2x2 max pooling
self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16 * 5 * 5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10) # 10 output classes
def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 16 * 5 * 5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x
net = Net()
5.定义损失函数和优化器:
让我们使用横向渗透丢失和SGD优化器。
交叉中心:通常用于分类任务。它衡量预测的预测性和真实类中风之间的差异。
SGD(Stocectic梯度不错):通过调整模型重量来最大程度地减少损失的全部优化。
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)
6.培训网络:
在这里,让我们训练一些pocas的模型。
深度学习的本质是在模型重量调整的迭代过程中,以最大程度地减少损失:
zere梯度:当Pytorch累积梯度时,您需要在每个步骤之前清洁它们。
正向传播:通过模型传递输入以预测。
计算损失:比较预测与实际卷。
向后传播:重新传播整个网络中的损失,以计算与每个重量相关的损失梯度。
优化:调整权重以最小化损失的方向。
循环确保模型查看数据保险库(©pocas)并调整您的权重。
for epoch in range(5): # Loop over the dataset multiple times
running_loss = 0.0
for i, data in enumerate(trainloader, 0):
inputs, labels = data
optimizer.zero_grad() # Zero the parameter gradients
outputs = net(inputs) # Forward
loss = criterion(outputs, labels) # Calculate loss
loss.backward() # Backward
optimizer.step() # Optimize
running_loss += loss.item()
if i % 2000 == 1999: # Print every 2000 mini-batches
print('[%d, %5d] loss: %.3f' % (epoch + 1, i + 1, running_loss / 2000))
running_loss = 0.0
print('Finished Training')
7.测试网络:
训练后,评估未看到数据的模型性能至关重要:
torch.no_grad():禁用梯度的计算,这在评估期间没有必要,保存内存和计算。
输出:这些是每个类提供的概率。
预测:通过最有可能选择班级,我们获得了预期类的卷。
计算acurãia:告诉多少预测对应于实际卷并计算百分比。
在此过程结束时,您将拥有一个训练有素的神经网络模型,能够对CIFAR-10数据集进行分类。请记住,这是一个基本教程。为了提高现实世界应用的精确和效率,需要进行更高级的吨和精细的调整。
correct = 0
total = 0
with torch.no_grad():
for data in testloader:
images, labels = data
outputs = net(images)
_, predicted = outputs.max(1)
total += labels.size(0)
correct += (predicted == labels).sum().item()
print('Accuracy of the network on the 10000 test images: %d %%' % (100 * correct / total))
就是这样!在短短10分钟内,您就学会了使用Pytorch创建和培训简单的图像分类模型。有了更多的时间和调整,您可以进一步改善该模型或更深入地研究建筑和先进的舌头!
嗨,我是Maik。希望您喜欢这篇文章。如果您有任何DAN或想与我联系并访问更多遏制,请关注我的频道:
LinkedIn:https://www.linkedin.com/in/maikpaixao/
Twitter:https://twitter.com/maikpaixao
Facebook:https://www.facebook.com/maikpaixao
YouTube:https://www.youtube.com/@maikpaixao
Instagram:https://www.instagram.com/prof.maikpaixao/
github:https://github.com/maikpaixao