Minist

部署运行你感兴趣的模型镜像

Mnist数据集下载、转换为lmdb,训练、测试、生成mean文件、生成label.txt、单张图片分类测试、可视化网络、可视化loss和accurate

【1、下载数据】 sudo ./data/mnist/get_mnist.sh 

【2、转lmdb格式】 sudo ./examples/mnist/create_mnist.sh

【3、训练】 sudo ./examples/mnist/train_lenet.sh 2>&1 |tee ./examples/mnist/mnist.log 
(注意:2>&1 |tee ./examples/mnist/mnist.log 生成log文件,以便于后面对log可视化,生成loss曲线图)

【4、测试】 sudo ./build/tools/caffe test -model ./examples/mnist/lenet_train_test.prototxt -weights ./examples/mnist/lenet_iter_10000.caffemodel -iterations 100

【5、生成mean文件】 sudo ./build/tools/compute_image_mean ./examples/mnist/mnist_train_lmdb ./examples/mnist/mean.binaryproto

【6、生成label.txt文件】直接打开一个txt,数列写入0-9,保存为label.txt即可

【7、分类图片】 sudo ./build/examples/cpp_classification/classification.bin ./examples/mnist/lenet.prototxt ./examples/mnist/lenet_iter_50000.caffemodel ./examples/mnist/mean.binaryproto ./examples/mnist/labels.txt ./data/mnist_test/test0_45.jpg

【8、可视化网络】 http://ethereon.github.io/netscope/#/editor

【9、可视化loss和accurate】   sudo python ./tools/extra/plot_training_log.py chart_type[0-7] ./examples/mnist/save.png ./examples/mnist/mnist.log

您可能感兴趣的与本文相关的镜像

GPT-oss:20b

GPT-oss:20b

图文对话
Gpt-oss

GPT OSS 是OpenAI 推出的重量级开放模型,面向强推理、智能体任务以及多样化开发场景

你可能是想输入 **MNIST**,这是一个非常经典的机器学习数据集。我们来详细解释一下: --- ### ✅ 正确名称:**MNIST** **MNIST**(Modified National Institute of Standards and Technology)是一个广泛用于图像分类任务的手写数字识别数据集。 --- ### 📌 MNIST 数据集简介 | 项目 | 内容 | |------|------| | 类别数 | 10(数字 0~9) | | 图像大小 | 28×28 像素 | | 图像格式 | 灰度图(单通道) | | 训练样本数 | 60,000 张 | | 测试样本数 | 10,000 张 | | 每张图像标签 | 对应的数字类别(0-9) | --- ### 🔧 在 PyTorch 中加载 MNIST 数据集的示例代码 ```python import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader import torchvision import torchvision.transforms as transforms # 设置设备 device = torch.device("cuda" if torch.cuda.is_available() else "cpu") # 数据预处理:转为张量并归一化 transform = transforms.Compose([ transforms.ToTensor(), # 转为 [0, 1] transforms.Normalize((0.5,), (0.5,)) # 归一化到 [-1, 1], 单通道 ]) # 加载 MNIST 数据集 train_dataset = torchvision.datasets.MNIST( root='./datasets', train=True, download=True, transform=transform ) test_dataset = torchvision.datasets.MNIST( root='./datasets', train=False, download=True, transform=transform ) # 创建数据加载器 train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True, num_workers=2) test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False, num_workers=2) # 类别名称 classes = [str(i) for i in range(10)] ``` --- ### 🧠 使用 LeNet 处理 MNIST(适配灰度图) 由于 MNIST 是单通道(1 channel),需要调整输入通道数: ```python class LeNet(nn.Module): def __init__(self): super(LeNet, self).__init__() self.features = nn.Sequential( nn.Conv2d(1, 6, 5), # 输入通道 1(灰度图) nn.Tanh(), nn.AvgPool2d(2, 2), nn.Conv2d(6, 16, 5), nn.Tanh(), nn.AvgPool2d(2, 2), nn.Conv2d(16, 120, 5), nn.Tanh() ) self.classifier = nn.Sequential( nn.Linear(120, 84), nn.Tanh(), nn.Linear(84, 10), nn.LogSoftmax(dim=1) ) def forward(self, x): x = self.features(x) x = torch.flatten(x, 1) x = self.classifier(x) return x ``` --- ### ✅ 完整训练流程(简略版) ```python model = LeNet().to(device) criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=0.001) # 训练循环 for epoch in range(5): model.train() running_loss = 0.0 for images, labels in train_loader: images, labels = images.to(device), labels.to(device) optimizer.zero_grad() outputs = model(images) loss = criterion(outputs, labels) loss.backward() optimizer.step() running_loss += loss.item() print(f"Epoch [{epoch+1}/5], Loss: {running_loss/len(train_loader):.4f}") # 测试准确率 model.eval() correct = 0 total = 0 with torch.no_grad(): for images, labels in test_loader: images, labels = images.to(device), labels.to(device) outputs = model(images) _, predicted = torch.max(outputs, 1) total += labels.size(0) correct += (predicted == labels).sum().item() print(f"测试准确率: {100 * correct / total:.2f}%") ``` --- ### 🖼️ 可视化一个批次的 MNIST 图像 ```python import matplotlib.pyplot as plt def imshow(img): img = img / 2 + 0.5 # 反归一化 [-1,1] -> [0,1] npimg = img.numpy() plt.imshow(np.transpose(npimg, (1, 2, 0)), cmap='gray') plt.show() # 获取一批数据 dataiter = iter(train_loader) images, labels = next(dataiter) # 显示图像 imshow(torchvision.utils.make_grid(images[:8])) print(' '.join(f'{classes[labels[j]]}' for j in range(8))) ``` --- ### ❗ 常见拼写错误 | 错误拼写 | 正确拼写 | 说明 | |---------|----------|------| | MINIST | MNIST | 手写数字数据集,不是“Ministry” 😊 | | Mnist | MNIST | 应全大写或标准命名 | | minist | MNIST | 同上 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值