一张图介绍假设检验分类

假设检验根据数据的分布形态,分为参数类假设检验(基于正太分布)和非参数类假设检验 (非正太分布)

### 使用 ResNet18 实现分类 #### 背景介绍 在计算机视觉领域,基于深度学习的分类任务广泛应用于多个行业,包括但不限于工业生产检测、医学像分析等场景[^1]。ResNet18作为一种经典的卷积神经网络架构,在处理复杂的像识别问题方面表现出色。 #### 准备工作 为了能够顺利地使用ResNet18进行分类,需先安装PyTorch及相关依赖库: ```bash pip install torch torchvision ``` #### 构建模型并加载预训练权重 下面展示一段Python代码片段,用于构建ResNet18模型,并加载官方提供的ImageNet数据集上的预训练参数: ```python import torch from torchvision import models # 初始化ResNet18模型结构 model = models.resnet18(pretrained=True) # 修改最后一层全连接层以适应特定的任务需求(假设目标类别数为num_classes) num_ftrs = model.fc.in_features model.fc = torch.nn.Linear(num_ftrs, num_classes) ``` #### 数据预处理与增强 对于输入到ResNet中的每一张片都需要经过标准化处理以及可能的数据增广操作,这有助于提升最终模型的表现效果。这里给出一个简单的例子说明如何创建适用于训练阶段的数据管道: ```python from torchvision import transforms data_transforms = { 'train': transforms.Compose([ transforms.RandomResizedCrop(224), transforms.RandomHorizontalFlip(), transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ]), 'val': transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ]) } ``` #### 定义损失函数和优化器 选择合适的损失函数和优化算法同样重要。通常情况下交叉熵作为多分类问题的标准配置;而随机梯度下降(SGD)或Adam则是较为常用的两种优化方法之一: ```python criterion = torch.nn.CrossEntropyLoss() optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9) ``` #### 开始训练过程 设置好上述组件之后就可以正式开启训练循环了。注意这里的`dataset`变量应该指向已经准备完毕的数据集实例对象: ```python for epoch in range(num_epochs): running_loss = 0.0 for inputs, labels in dataloaders['train']: optimizer.zero_grad() outputs = model(inputs) _, preds = torch.max(outputs, 1) loss = criterion(outputs, labels) loss.backward() optimizer.step() running_loss += loss.item() * inputs.size(0) epoch_loss = running_loss / dataset_sizes['train'] print('Training complete') ``` #### 验证与评估性能 当完成了全部轮次的学习后,还需要对测试集合做一次完整的前向传播计算来检验实际泛化能力: ```python correct = 0 total = 0 with torch.no_grad(): for images, labels in test_loader: outputs = model(images) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum().item() accuracy = 100 * correct / total print(f'Accuracy of the network on the {total} test images: {accuracy:.2f}% ') ``` #### 模型保存与推理服务部署 一旦获得了满意的实验结果,则可考虑将当前状态下的整个网络序列化存储起来以便后续重复利用或者直接上线提供在线预测功能: ```python torch.save(model.state_dict(), './resnet18.pth') # 加载已有的checkpoint继续之前的工作流程... loaded_model = models.resnet18() loaded_model.load_state_dict(torch.load('./resnet18.pth')) loaded_model.eval() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值