seo是什么意思职业,seo网站优化代码,班级建设网站首页,网络营销乐云seo参考文献#xff1a;https://www.bilibili.com/video/BV1DP411C7Bw/?spm_id_from333.999.0.0vd_source98d31d5c9db8c0021988f2c2c25a9620 AlexNet 是一个经典的卷积神经网络模型#xff0c;用于图像分类任务。 目录 大纲dataloadermodeltraintest 大纲 各个文件的作用https://www.bilibili.com/video/BV1DP411C7Bw/?spm_id_from333.999.0.0vd_source98d31d5c9db8c0021988f2c2c25a9620 AlexNet 是一个经典的卷积神经网络模型用于图像分类任务。 目录 大纲dataloadermodeltraintest 大纲 各个文件的作用
data就是数据集dataloader.py就是数据集的加载以及实例初始化model.py就是AlexNet模块的定义train.py就是模型的训练test.py就是模型的测试
dataloader
import torch
import torchvision
import torchvision.transforms as transformsimport matplotlib.pyplot as plt
import numpy as np# define the dataloader
transform transforms.Compose([transforms.Resize(224),transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])batch_size 16trainset torchvision.datasets.CIFAR10(root./data, trainTrue,downloadTrue, transformtransform)
train_loader torch.utils.data.DataLoader(trainset, batch_sizebatch_size,shuffleTrue)testset torchvision.datasets.CIFAR10(root./data, trainFalse,downloadTrue, transformtransform)
test_loader torch.utils.data.DataLoader(testset, batch_sizebatch_size,shuffleFalse)classes (plane, car, bird, cat,deer, dog, frog, horse, ship, truck)if __name__ __main__:# get some random training imagesdataiter iter(train_loader)images, labels next(dataiter)# print labelsprint( .join(%5s % classes[labels[j]] for j in range(batch_size)))# show imagesimg_grid torchvision.utils.make_grid(images)img_grid img_grid / 2 0.5npimg img_grid.numpy()plt.imshow(np.transpose(npimg, (1, 2, 0)))plt.show()model
import torch.nn as nn
import torchclass AlexNet(nn.Module):def __init__(self, num_classes10):super(AlexNet, self).__init__()self.conv_1 nn.Sequential(nn.Conv2d(3, 96, kernel_size11, stride4, padding2),nn.BatchNorm2d(96),nn.ReLU(),nn.MaxPool2d(kernel_size 3, stride 2))self.conv_2 nn.Sequential(nn.Conv2d(96, 256, kernel_size5, stride1, padding2),nn.BatchNorm2d(256),nn.ReLU(),nn.MaxPool2d(kernel_size 3, stride 2))self.conv_3 nn.Sequential(nn.Conv2d(256, 384, kernel_size3, stride1, padding1),nn.BatchNorm2d(384),nn.ReLU())self.conv_4 nn.Sequential(nn.Conv2d(384, 384, kernel_size3, stride1, padding1),nn.BatchNorm2d(384),nn.ReLU())self.conv_5 nn.Sequential(nn.Conv2d(384, 256, kernel_size3, stride1, padding1),nn.BatchNorm2d(256),nn.ReLU(),nn.MaxPool2d(kernel_size 3, stride 2))self.fc_1 nn.Sequential(nn.Dropout(0.5),nn.Linear(9216, 4096),nn.ReLU())self.fc_2 nn.Sequential(nn.Dropout(0.5),nn.Linear(4096, 4096),nn.ReLU())self.fc_3 nn.Sequential(nn.Linear(4096, num_classes))def forward(self, x):out self.conv_1(x)out self.conv_2(out)out self.conv_3(out)out self.conv_4(out)out self.conv_5(out)out out.reshape(out.size(0), -1)out self.fc_1(out)out self.fc_2(out)out self.fc_3(out)return outif __name__ __main__:model AlexNet()print(model)x torch.randn(1, 3, 224, 224)y model(x)print(y.size())train
import torch
import torch.nn as nnfrom dataloader import train_loader, test_loader
from model import AlexNet# define the hyperparameters
device torch.device(cuda if torch.cuda.is_available() else cpu)
num_classes 10
num_epochs 20
learning_rate 1e-3# load the model
model AlexNet(num_classes).to(device)# loss and optimizer
criterion nn.CrossEntropyLoss()
optimizer torch.optim.Adam(model.parameters(), lrlearning_rate) # train the model
total_len len(train_loader)for epoch in range(num_epochs):for i, (images, labels) in enumerate(train_loader):# move tensors to the configured deviceimages images.to(device)labels labels.to(device)# forward passoutputs model(images)loss criterion(outputs, labels)# backward and optimizeoptimizer.zero_grad()loss.backward()optimizer.step()if (i1) % 100 0:print(Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}.format(epoch1, num_epochs, i1, total_len, loss.item()))# Validationwith torch.no_grad():model.eval()correct 0total 0for images, labels in test_loader:images images.to(device)labels labels.to(device)outputs model(images)_, predicted torch.max(outputs.data, 1)total labels.size(0)correct (predicted labels).sum().item()model.train()print(Accuracy of the network on the {} validation images: {} %.format(10000, 100 * correct / total))# save the model checkpoint
torch.save(model.state_dict(), alexnet.pth)test
import torchfrom dataloader import test_loader, classes
from model import AlexNet# load the pretrained model
device cuda if torch.cuda.is_available() else cpu
model AlexNet().to(device)
model.load_state_dict(torch.load(alexnet.pth, map_locationdevice))# test the pretrained model on CIFAR-10 test data
with torch.no_grad():model.eval()correct 0total 0for images, labels in test_loader:images images.to(device)labels labels.to(device)outputs model(images)_, predicted torch.max(outputs.data, 1)total labels.size(0)correct (predicted labels).sum().item()print(Accuracy of the network on the {} validation images: {} %.format(10000, 100 * correct / total))