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

P66作业

点击查看代码
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="D:\\Pysch2\\Pytorch\\cifar-10-python", train=True, download=False, transform=transform_train)
test_dataset = datasets.CIFAR10(root="D:\\Pysch2\\Pytorch\\cifar-10-python", train=False, download=False, 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=5):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=5)print("Start testing...")test(model, test_loader)print("24信计2班 刘伯伦 2024310143129")
http://www.hskmm.com/?act=detail&tid=31369

相关文章:

  • ECT-OS-JiuHuaShan元推理 的意义、价值、作用、应用场景及哲学理念
  • Gitee vs. GitHub 2025:中国开发者为何更青睐本土代码托管平台?
  • 2025 年自润滑轴承厂商最新推荐排行榜:聚焦高承载技术与全球客户口碑,助力企业精准选择优质供应商无油/复合/耐磨/无油向心关节轴承厂家推荐
  • 几个好看的PS1配色
  • 2025 年 MBR 膜厂家最新推荐排行榜:权威评选优选品牌,污水处理设备选型指南全解析污水处理设备MBR膜厂家推荐
  • 统一管理第三方包的依赖包版本号
  • 主线程阻塞型帧堆积(Frame Backlog)
  • 图像去雾算法详解与MATLAB实现
  • ROS 传感器模块的通用架构设计与跨中间件扩展实践
  • 替代传统FTP的系统:企业数字化转型新选择
  • 算法设计与分析作业
  • 需求分析论
  • 2025年叠螺机/加药装置/输送机厂家最新权威推荐榜:专业制造与高效输送系统综合解决方案
  • 2025年书包柜厂家最新推荐排行榜,学生书包柜,员工书包柜,更衣柜储物柜,智能书包柜公司口碑之选
  • 2025.10.14 刷题
  • 企业高效数据传输:数据摆渡解决方案全解析
  • 别再空谈数据价值!制造业如何用主数据管理 “抠” 出千万级成本?
  • 2025.10.13 测试
  • 2025年注塑加工行业优质企业最新推荐排行榜:助力需求企业精准筛选可靠合作伙伴
  • 2025 年工程管理软件平台公司最新推荐榜:聚焦数字化效能,优选靠谱服务商
  • 被 Excel 格式折腾的那些瞬间---excl格式转换
  • 阵列信号处理中的盲源分离算法
  • 标准版v9.0破解版及软件安装包
  • 内外网传文件有哪些痛点?一文读懂高效传输方案是什么样的
  • win32中的COM接口清单
  • 内存的堆、内存的栈有什么区别
  • 2025 年铝板厂家最新推荐榜:覆盖多系列铝板产品,精选优质企业,为采购者提供专业选型参考
  • 用 AI 批量优化思源笔记排版
  • 2025 年连接线线束厂家最新推荐榜:新能源电子 / 机器人电子等多领域优质企业品控、定制能力及合作案例全面盘点
  • 2025年黄金回收品牌最新权威推荐榜:专业鉴定与高价回收口碑之选,正规资质黄金回收厂家精选指南