当前位置: 首页 > news >正文

24信计2班 17曾向嵩 pytorch66页实验题

import torch
from torch import optim, nn
from torchvision import datasets, transforms
from torch.utils.data import DataLoader
import torch.nn.functional as Fdevice = torch.device('cuda' if torch.cuda.is_available() else 'cpu')#数据加载
transform_train = transforms.Compose([transforms.RandomCrop(32, padding=4),transforms.RandomHorizontalFlip(),transforms.ToTensor(),transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)),
])transform_test = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)),
])train_dataset = datasets.CIFAR10(root='./data', train=True, download=True, transform=transform_train)
test_dataset = datasets.CIFAR10(root='./data', train=False, download=True, transform=transform_test)train_loader = DataLoader(train_dataset, batch_size=128, shuffle=True, num_workers=4)
test_loader = DataLoader(test_dataset, batch_size=128, shuffle=False, num_workers=4)print(f"Train samples: {len(train_dataset)}")
print(f"Test samples: {len(test_dataset)}")
print(f"Classes: {train_dataset.classes}")#定义MYVGG模型
class MYVGG(nn.Module):def __init__(self, num_classes=10):super(MYVGG, self).__init__()self.features = nn.Sequential(# Block 1nn.Conv2d(3, 64, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.Conv2d(64, 64, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.MaxPool2d(2, 2),# Block 2nn.Conv2d(64, 128, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.Conv2d(128, 128, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.MaxPool2d(2, 2),# Block 3nn.Conv2d(128, 256, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.Conv2d(256, 256, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.MaxPool2d(2, 2),# Block 4nn.Conv2d(256, 512, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.Conv2d(512, 512, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.MaxPool2d(2, 2),# Block 5nn.Conv2d(512, 512, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.Conv2d(512, 512, kernel_size=3, padding=1),nn.ReLU(inplace=True),nn.MaxPool2d(2, 2),)self.classifier = nn.Sequential(nn.Dropout(0.5),nn.Linear(512, num_classes))def forward(self, x):x = self.features(x)x = x.view(x.size(0), -1)x = self.classifier(x)return x#训练函数
def train(model, train_loader, epoch_num=50):optimizer = optim.Adam(model.parameters(), lr=0.001)criterion = nn.CrossEntropyLoss()for epoch in range(epoch_num):model.train()for batch_idx, (data, target) in enumerate(train_loader):data, target = data.to(device), target.to(device)optimizer.zero_grad()output = model(data)loss = criterion(output, target)loss.backward()optimizer.step()if batch_idx % 100 == 0:print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(epoch, batch_idx * len(data), len(train_loader.dataset),100. * batch_idx / len(train_loader), loss.item()))torch.save(model.state_dict(), 'cifar10_vgg.pth')print("Model saved to cifar10_vgg.pth")#测试函数
def test(model, test_loader):model.load_state_dict(torch.load('cifar10_vgg.pth', map_location=device))model.eval()correct = 0total = 0with torch.no_grad():for data, target in test_loader:data, target = data.to(device), target.to(device)outputs = model(data)predicted = torch.argmax(outputs, dim=1)total += target.size(0)correct += (predicted == target).sum().item()acc = 100.0 * correct / totalprint(f'Accuracy on CIFAR-10 test set: {acc:.2f}% ({correct}/{total})')#主函数入口
if __name__ == '__main__':model = MYVGG(num_classes=10).to(device)if device == 'cuda':print(f"Using {torch.cuda.device_count()} GPUs")else:print("Using CPU")print("Start training on CIFAR-10...")train(model, train_loader,epoch_num=20)print("Start testing...")test(model, test_loader)print("24信计2班 曾向嵩 2024310143117")

微信图片_20251021223916_18_192微信图片_20251021223923_19_192

http://www.hskmm.com/?act=detail&tid=36158

相关文章:

  • 解答这些常见的智能合约安全问题,并提供相应的防护措施
  • Day1排版标签,标题与段落
  • 读AI赋能05消费者盈余
  • 解答这些 Solidity 开发中的重要问题
  • grpc 哼哈二将,你值得拥有
  • 解释这些 Solidity 智能合约的核心概念
  • C++编程练习
  • 数据结构练习
  • newDay14
  • L07_在RuoYI项目中添加自己的接口并实现CRUD功能(轻松+AI版)
  • 10
  • 大二to大三暑假大三上前半学期总结
  • 2025.10.18 刷题
  • 低代码如何推动企业敏捷创新与业务赋能
  • hevc解码器下载
  • 低代码如何成为企业数字化转型的加速器
  • 10.18测试
  • 删除链表的倒数第N个结点-leetcode
  • NOI 八
  • Day1标签的关系与vs的注释
  • 软件工程学习日志2025.10.21
  • [PaperReading] DeepSeek-OCR: Contexts Optical Compression
  • Win10安装WindowsCamera相机
  • 简易的本地部署OI-Wiki方法 for CCSP
  • Say 题选记 (10.19 - 10.25)
  • 宝塔面板
  • React Native 启动流程 (Android版)
  • 以TrustedInstaller/System用户运行软件
  • 10月21号
  • 机器学习基础 -- 线性回归模型