tensorflow——MNIST(NN模型)

### 如何使用预训练的 MNIST 数字识别模型 #### 使用预训练模型进行推理 对于已经训练好的MNIST数字识别模型,可以直接用于新图片的手写数字预测。通常情况下,这些预训练模型可以在多个深度学习库中找到,比如TensorFlow、PyTorch等。 以PyTorch为例,加载并使用一个预训练的MNIST模型来进行推理的过程如下: ```python import torch from torchvision import datasets, transforms from torchvision.models import resnet18 from torch.utils.data import DataLoader # 定义转换操作,将输入图像标准化到[0, 1]范围,并调整大小为28x28像素 transform = transforms.Compose([ transforms.ToTensor(), ]) # 加载测试集(这里假设只做推理) test_dataset = datasets.MNIST(root='./data', train=False, download=True, transform=transform) test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False) # 假设有一个名为'mnist_cnn.pth'的文件保存着预训练权重 model = resnet18(pretrained=False, num_classes=10) # 创建ResNet-18架构,指定输出类别数为10 model.load_state_dict(torch.load('mnist_cnn.pth')) # 载入预训练参数 model.eval() # 设置评估模式 with torch.no_grad(): # 关闭梯度计算以节省内存 correct = 0 total = 0 for images, labels in test_loader: outputs = model(images) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum().item() print(f'Test Accuracy of the model on {total} test images: {(correct / total):.2f}%') ``` 这段代码展示了如何加载预训练模型并对新的手写数字样本执行分类任务[^2]。 #### 对预训练模型进行微调 当现有的预训练模型无法满足特定场景下的性能要求时,则可以通过迁移学习的方式对其进行进一步优化——即所谓的“微调”。 以下是针对特定领域内更复杂的任务对上述MNIST预训练模型实施微调的一个简化版本: ```python import torch.optim as optim # 继续沿用之前的'train_dataset' train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True) criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=0.001) for epoch in range(num_epochs): running_loss = 0.0 for i, data in enumerate(train_loader, 0): inputs, targets = data optimizer.zero_grad() outputs = model(inputs) loss = criterion(outputs, targets) loss.backward() optimizer.step() running_loss += loss.item() print(f'[Epoch {epoch + 1}] Loss: {running_loss/(i+1)}') torch.save(model.state_dict(), 'finetuned_mnist_model.pth') # 将微调后的模型保存下来以便后续部署或继续迭代改进 ``` 通过这种方式,在保持原有大部分层不变的情况下仅修改最后一两层来适应目标任务的数据分布特点,从而实现更好的泛化能力与更高的准确性[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值