MNIST 入门实战:从数据流到模型训练与评估(含完整代码与流程图)

手写数字数据集MNIST 文章目录一、 简介二、下载MNIST数据集训练集和测试集的长度输出图像数据和标记数据的形状显示手写数字图片输出数据集中的第1个样本显示图片 一、 简介 MNIST是一个非常有名的手写体数字识别数据集(手写数字灰度图像数据集),在很多资料中,这个数据集都会被用作深度学习的入门样例。 MNIST数据集是由0到9的数字图像构成的。训练图像有6万张,测试图像有1万张。MNIST数据集是NIST数据集的一个子集,它包含了60000张图片作为训练数据,10000张图片作为测试数据。由250个不同的人手写而成。 每一张图 阅读详情

📺 B站:博主个人介绍

📘 博主书籍-京东购买链接*:Yocto项目实战教程

📘 加博主微信,进技术交流群: jerrydev


MNIST 入门实战:从数据流到模型训练与评估(含完整代码与流程图)

目标:用 MNIST 把深度学习最核心的一条主线走通——数据 → 模型 → 损失 → 反向传播 → 更新参数 → 评估 → 保存/加载 → 推理。读完你会对“训练到底在做什么”“评估到底评估了什么”“.pth 到底是什么”形成清晰、稳定的概念框架,并具备继续突破到更复杂任务(CIFAR、检测、分割、YOLO、Transformer)的基础。


在这里插入图片描述

1. 你已经做到了什么?为什么这条路径很重要

你已经跑通了一个完整的 CNN 分类项目:

  • 数据:MNIST
  • 模型:两层卷积 + 两层全连接(带 Dropout)
  • 训练:CrossEntropyLoss + SGD
  • 评估:test loss + test acc
  • 保存:生成 mnist_cnn.pth

并且得到了非常合理的结果:

  • test acc ≈ 97%+
  • test loss 逐步下降

这说明:

  1. 数据流(DataLoader)没问题;
  2. 模型结构(forward)没问题;
  3. 训练闭环(loss → backward → step)成立;
  4. 评估逻辑(eval + no_grad + 统计)正确;
  5. 参数存档(.pth)可复用。

这条路径是所有 AI 任务的“地基”。以后你换数据集、换模型、换任务,本质上还是这条主线,只是每一段更复杂。


2. 全流程总览:一张逻辑图把它串起来

下面这张“主线流程图”非常建议你记住:

┌──────────────┐
│  数据集 Dataset │  MNIST(train/test)
└──────┬───────┘
       │ transform(ToTensor/Normalize)
       ▼
┌──────────────┐
│ DataLoader     │  batch化、shuffle、并行加载
└──────┬───────┘
       │  (data:[B,1,28,28], target:[B])
       ▼
┌──────────────┐
│  模型 Net      │  forward: [B,1,28,28] → logits[B,10]
└──────┬───────┘
       │
       ▼
┌──────────────┐n│  Loss 函数     │  CrossEntropyLoss(logits, target)
└──────┬───────┘
       │
       ▼
┌──────────────┐
│ backward()    │  自动求梯度: p.grad
└──────┬───────┘
       │
       ▼
┌──────────────┐
│ optimizer.step│  更新参数: θ ← θ - lr * grad
└──────┬───────┘
       │
       ▼
┌──────────────┐
│  评估 Evaluate │  net.eval + no_grad + 指标统计
└──────┬───────┘
       │
       ▼
┌──────────────┐
│ 保存/加载 .pth │  state_dict() / load_state_dict()
└──────────────┘

你可以把它理解为:

  • Net 是“会计算的结构”;
  • Loss 把“对不对”变成“可优化的数字”;
  • Backward 给每个参数算出“该往哪改”;
  • Optimizer 真正“改参数”;
  • Evaluate 用测试集验证“改得值不值”。

3. 数据部分:Dataset / Transform / DataLoader 到底做了什么

3.1 MNIST 是什么数据?

MNIST 是手写数字识别数据集:

  • 图片:28×28 灰度图(单通道)
  • 标签:0~9 十个类别
  • 训练集:60000
  • 测试集:10000

在 PyTorch 里,一条样本通常表现为:

  • image: torch.Tensor,形状 [1,28,28]
  • label: int,范围 0…9

3.2 为什么 DataLoader 出来是 [B,1,28,28]?

你训练时拿到的是一个 batch:

  • data.shape == [B, 1, 28, 28]
  • target.shape == [B]

四维的含义非常固定:

维度含义MNIST 示例
Bbatch_size32
C通道数1(灰度)
H高度28
W宽度28

只要你看到 [B,C,H,W],你就知道它是“图片批次输入”。

3.3 transform:ToTensor + Normalize 为什么必做?

你的 transform 典型是:

transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.1307,), (0.3081,))
])
  • ToTensor():把图像从 0~255 的像素转换为 0~1 的 float 张量
  • Normalize(mean, std):做标准化:

[
x’ = \frac{x - mean}{std}
]

为什么要标准化?

  • 让输入分布更稳定;
  • 梯度更容易优化;
  • 训练更快、收敛更稳定。

你看到 min/max 出现负数,就是 Normalize 生效的直接证据。

3.4 你本地的 data/ 目录意味着什么?

你看到的:

data/MNIST/raw/
  train-images-idx3-ubyte
  train-labels-idx1-ubyte
  t10k-images-idx3-ubyte
  t10k-labels-idx1-ubyte

说明:

  • 数据源来自 torchvision.datasets.MNIST(root='data/', download=True, ...);
  • 评估时使用 train=False 对应 t10k-*(测试集);
  • 训练时使用 train=True 对应 train-*(训练集)。

4. 模型部分:Net 是“结构”,参数是“记忆”

4.1 你写的 Net 到底是什么?

在 PyTorch 里:

  • class Net(nn.Module) 定义了网络结构(哪些层、如何连接);
  • forward(self, x) 定义了前向计算(输入如何流过这些层);
  • 模型参数(权重、偏置)被 nn.Conv2d / nn.Linear 等层自动创建。

一句话:

模型 = 结构(Net) + 参数(weights/bias)。

4.2 CNN 为什么有效?卷积、池化、全连接各自负责什么

可以把 CNN 分为两段:

  • 特征提取器:Conv/Pool
  • 分类器:Linear

直觉理解:

  • Conv:在局部区域找“笔画、边缘、拐角”
  • Pool:让特征更稳、更省计算
  • FC:把多个特征组合,输出 10 类得分

4.3 形状追踪:你必须会“追输出形状”

以你常用结构为例:

输入:[B,1,28,28]

  • conv1(1→8, k=3):[B,8,26,26]
  • maxpool(2):[B,8,13,13]
  • conv2(8→16, k=3):[B,16,11,11]
  • maxpool(2):[B,16,5,5]
  • flatten:[B,400](因为 1655=400)
  • fc1:[B,40]
  • fc2:[B,10](logits)

只要你追得出 400 的来源,你对 CNN 的理解就非常稳。

4.4 logits 是什么?为什么不是直接输出概率?

模型输出 [B,10],这不是概率,而是 logits(打分)。

预测类别通常是:

pred = logits.argmax(dim=1)  # [B]

训练时用 CrossEntropyLoss(logits, target),它内部会做 softmax 相关处理,所以你不需要手写 softmax。


5. 训练部分:三件套把“计算结构”变成“会学习的系统”

5.1 训练三件套:loss / backward / optimizer

训练的核心闭环:

  1. forward:模型输出 logits
  2. loss:把“错得程度”变成一个数字
  3. backward:求每个参数的梯度(该往哪改)
  4. step:更新参数(真的改)

最简骨架:

optimizer.zero_grad()
logits = net(data)
loss = criterion(logits, target)
loss.backward()
optimizer.step()

5.2 为什么一定要 zero_grad()

PyTorch 默认会把梯度累加;如果不清零,上一个 batch 的梯度会污染当前 batch。

你可以把它理解为:

  • 每个 batch 都要单独算一次“该怎么改”;
  • 不能把历史梯度一直加下去。

5.3 net.train() 与 net.eval() 的区别(非常关键)

这不是“可有可无”。尤其你用了 Dropout。

  • net.train():训练模式,Dropout 生效
  • net.eval():评估模式,Dropout 关闭(输出更稳定)

你出现 test acc 比 train acc 高一点,在带 Dropout 的训练里不罕见:训练时更难,评估时更容易。

5.4 为什么 loss 会从 2.3 降下来?

在 10 类分类里,模型完全随机时:

  • 每类概率大约 1/10
  • 交叉熵大约 (\ln(10) ≈ 2.3026)

所以你最开始看到 loss ≈ 2.3 非常合理。

训练后,模型对正确类别给更高分,loss 就下降。


6. 评估部分:你到底评估了什么?关键函数和关键变量

你目前做的基础评估非常正确:

  • 平均 loss(test avg loss)
  • 准确率(test accuracy)

评估的关键点:

6.1 评估数据从哪里来?

评估使用的是 MNIST 测试集:

test_ds = torchvision.datasets.MNIST('data/', train=False, ...)

对应你目录里的:

  • t10k-images-idx3-ubyte
  • t10k-labels-idx1-ubyte

6.2 评估为什么要 no_grad()?

评估只需要 forward,不需要 backward。

torch.no_grad() 的价值:

  • 更快
  • 更省显存
  • 更不容易内存爆

6.3 评估最核心的统计逻辑是什么?

  • logits:net(data)
  • loss:criterion(logits, target)
  • pred:logits.argmax(dim=1)
  • correct:(pred == target).sum()

最终:

  • avg_loss = total_loss / total_samples
  • acc = total_correct / total_samples

7. 训练日志该怎么读?你这份结果说明了什么

你的输出:

Epoch 1: train loss=0.6006, train acc=80.70%
          test loss=0.1068, test acc=96.75%
Epoch 2: train loss=0.3271, train acc=89.95%
          test loss=0.0856, test acc=97.34%
Epoch 3: train loss=0.2842, train acc=91.26%
          test loss=0.0718, test acc=97.60%

可以简单做三点结论:

  1. loss 在下降:说明优化器在持续把模型往正确方向推;
  2. acc 在上升:说明预测正确率提升;
  3. test acc 达到 97%+:说明模型已经学到 MNIST 的主特征;

你的模型在 3 个 epoch 已经接近“够用”。如果继续训练可能还会涨,但收益会变小。


8. mnist_cnn.pth 到底是什么?怎么理解它的“类型”

8.1 .pth 不是模型结构,而是模型参数

你保存的是:

torch.save(net.state_dict(), 'mnist_cnn.pth')
  • state_dict() 是一个“参数字典”:键是参数名,值是张量
  • .pth 只是常用后缀名,表示 PyTorch 的保存文件

一句话:

mnist_cnn.pth 保存的是 你训练得到的“记忆”(权重/偏置)。

8.2 为什么必须同时有 Net 才能用 .pth

.pth 本身不包含 forward 的代码逻辑。

可用模型 = Net() + load_state_dict(mnist_cnn.pth)。

8.3 你可以用一行看它内部是什么

import torch
sd = torch.load('mnist_cnn.pth', map_location='cpu')
print(type(sd))
print(list(sd.keys())[:10])

你会看到:它是 dict,里面有 conv1.weight、fc2.bias 等键。


9. 一份“初学者最推荐”的工程组织方式

你现在的结构已经很健康:

jerry_mnist/
  create_model.py   # 模型结构
  get_data.py       # 数据准备(可选)
  train_model.py    # 训练 + 评估 + 保存
  eval_basic.py     # (建议新增)单独评估
  mnist_cnn.pth     # 训练结果参数
  data/             # MNIST 数据缓存

推荐原则:

  • 模型结构独立文件(便于复用)
  • 训练脚本只管训练
  • 评估脚本只管评估
  • 推理脚本只管推理

这样你后面做 CIFAR10、做猫狗分类、做 YOLO,都可以复用思路。


10. 代码模板:最简训练脚本(带注释)

下面是一份“看一眼就懂”的训练框架(与你现在的逻辑一致):

# train_model.py(结构示意)

# 1) 准备 DataLoader(train_loader / test_loader)
# 2) 创建模型 net = Net().to(device)
# 3) 定义 loss + optimizer
# 4) 循环 epoch:
#    4.1 net.train()
#    4.2 对 train_loader:zero_grad → forward → loss → backward → step
#    4.3 net.eval() + no_grad()
#    4.4 对 test_loader:forward → 统计 loss/acc
# 5) 保存参数 torch.save(net.state_dict(), 'mnist_cnn.pth')

你要掌握的是“骨架”,以后换任何任务都能套进去。


11. 评估进阶:从两个指标走向“知道错在哪”

你现在评估了 loss/acc,这已经是基础合格。

接下来想提高理解和实战能力,建议加三种评估:

  1. 混淆矩阵:看哪些数字互相混淆
  2. 每类准确率:哪个类最弱
  3. 错误样本可视化:错的样本长什么样

这三件事会让你从“知道结果不错”升级到“知道怎么继续提升”。


12. 从 MNIST 走向更大突破:下一步练什么最有效

当你把 MNIST 这一套跑稳后,推荐你按这个顺序升级:

12.1 升级数据:CIFAR-10

  • 32×32 彩色图(3 通道)
  • 更贴近真实视觉任务
  • 你会遇到:数据增强、过拟合、模型更深

12.2 升级模型:更规范的 CNN(BatchNorm、更多层)

  • 加 BatchNorm 稳定训练
  • 更深的网络、残差结构(ResNet)

12.3 升级任务:目标检测(YOLO)

  • 输入输出不再是 10 类得分
  • 变为:框位置 + 类别 + 置信度

但注意:无论怎么升级,“主线流程图”依旧成立。


13. 关键知识点清单(建议你定期扫一遍)

数据

  • Dataset / DataLoader
  • [B,C,H,W] 含义
  • transform:ToTensor / Normalize

模型

  • nn.Module / forward
  • Conv / Pool / Flatten / Linear
  • logits 与 argmax

训练

  • criterion(CrossEntropyLoss)
  • optimizer(SGD/Adam)
  • zero_grad → forward → loss → backward → step
  • train() vs eval()

评估

  • no_grad()
  • avg loss / accuracy
  • 错误分析(混淆矩阵、错例)

保存

  • state_dict() / load_state_dict()
  • .pth 是参数存档,不是结构

14. 你目前这份项目的一句话“专业总结”

你已经完成了一个可复用的 PyTorch 图像分类最小工程:

  • 使用 torchvision.datasets.MNIST 构建训练/测试数据流;
  • 使用自定义 CNN(两层卷积 + 两层全连接 + Dropout)进行分类;
  • 使用 CrossEntropyLoss + SGD 完成训练闭环并达到 97%+ 测试准确率;
  • 使用 state_dict() 将训练得到的参数保存为 mnist_cnn.pth,可在任意环境中通过 load_state_dict() 复现推理效果。

15. 附:你可以直接复制的“推理脚本”骨架(可选)

如果你想快速验证 .pth 的价值:

# predict_one_batch.py
import torch
import torchvision
from torch.utils.data import DataLoader
from torchvision import transforms

from create_model import Net

device = 'cuda' if torch.cuda.is_available() else 'cpu'

# 1) load model
net = Net().to(device)
net.load_state_dict(torch.load('mnist_cnn.pth', map_location=device))
net.eval()

# 2) test loader
transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.1307,), (0.3081,))
])

test_ds = torchvision.datasets.MNIST('data/', train=False, download=True, transform=transform)
test_loader = DataLoader(test_ds, batch_size=32, shuffle=True)

data, target = next(iter(test_loader))
data = data.to(device)

with torch.no_grad():
    logits = net(data)
    pred = logits.argmax(dim=1).cpu()

print('pred[:10]  =', pred[:10].tolist())
print('target[:10]=', target[:10].tolist())

结尾:你下一步应该做什么(最实用)

如果你想把基础打得更牢,建议你立刻做两个小任务:

  1. 写一个 eval_basic.py:只输出 test loss / test acc(你已经理解清楚)
  2. 写一个 eval_confusion.py:输出混淆矩阵 + 错例图(知道错在哪)

做完这两步,你会对“评估”不再停留在“跑出一个数字”,而是能解释为什么这样、如何继续提升。


如果你希望我继续按“最小步骤”推进:下一步我会在不增加太多代码复杂度的前提下,带你实现 混淆矩阵 + 错例可视化(这一步对形成实战直觉特别有帮助)。

[Pytorch]MNIST数字识别训练与验证 本文介绍了使用PyTorch构建MNIST手写数字识别模型的全流程。首先通过torchvision下载并预处理MNIST数据集,创建DataLoader进行批量加载。然后构建一个简单的三层神经网络模型(输入层+ReLU激活+输出层),继承nn.Module实现参数管理和前向传播。训练过程采用交叉熵损失函数和Adam优化器,分10个epoch进行训练并评估模型性能。最后展示了如何加载训练好的模型参数进行单张图片推理。虽然该模型在MNIST测试集上表现良好,但对真实手写数字识别效果不佳,未来需要进一步优化模型 阅读详情

相关推荐

用MindSpore从零训练MNIST:手写数字识别完整实战指南

深度学习模型的训练链路,从数据流水线到模型推理,本质上是一条固定可复用的技术路径。即使面对MNIST这样的入门级数据集,掌握数据预处理、网络定义、超参数调优、Checkpoint保存和模型导出等基础环节,也能为后续理解大规模复杂模型打下坚实基础。MindSpore作为国产开源框架,提供简洁的Dataset接口与静态图模式,适合系统梳理梯度更新与计算图编译的核心原理。本文通过一个手写数字识别任务,完整展示基于MindSpore的卷积神经网络训练流程,并对比大模型训练中的分布式并行、混合精度等工程优化,帮助读者

weixin_29056781的博客 130

从手写数字识别入门深度学习丨MNIST数据集详解

就像无数人从敲下“Hello World”开始代码之旅一样,许多研究员从“MNIST数据集”开启了人工智能的探索之路。

OpenDataLab的博客 4万+

2026深度学习入门首选PyTorch:从环境搭建到MNIST实战全指南

深度学习作为人工智能的核心技术,正在深刻改变计算机视觉、自然语言处理等领域。初学者面对的第一个关键决策便是选择深度学习框架,这直接影响学习曲线与开发效率。TensorFlow与PyTorch虽均基于计算图与自动求导机制,但PyTorch凭借动态图模式和贴近原生Python的调试体验,已成为学术界与工业界的主流选择。从张量操作、自动微分到模型训练,PyTorch提供了清晰且高效的工程化路径。掌握其核心语法后,可通过MNIST手写数字识别等经典项目完整实践数据加载、模型构建、GPU配置与训练评估流程。无论是入门

weixin_33862993的博客 625

MNIST数据集

MNIST数据集

Iron802的博客 6万+

深度学习入门实战:2小时从零跑通MNIST手写数字识别项目

深度学习入门,很多人卡在第一步:环境配置、代码看不懂、项目跑不起来。今天我们不谈复杂理论,直接解决一个核心问题——如何从零开始,快速上手并完成一个完整的深度学习项目。无论你是刚接触Python的新手,还是有一定编程基础但被深度学习各种框架和概念劝退的同学,这篇文章将提供一个清晰、可执行的路径。 我们将以经典的图像分类任务为例,带你走完一个深度学习项目的完整生命周期:从环境搭建、数据准备、模型选择与训练,到最终的评估与部署。整个过程将围绕《动手学深度学习》这本广受好评的教材展开,它提供了交互式的Jupyter

weixin_29053073的博客 290

深度学习入门:MNIST数据集实战指南

本文还有配套的精品资源,点击获取 简介:MNIST数据集是一个用于手写数字识别的经典机器学习数据集,含有60,000个训练样本和10,000个测试样本,每样本为28x28像素的灰度图像。数据集分为训练集和测试集,用于训练和评估机器学习模型。该数据集在深度学习领域具有重要地位,尤其适合初学者学习和实践图像识别技术。本文将介绍如何处理MNIST数据集,构建和评估模型,以及如何使...

weixin_34779181的博客 1万+

MNIST是什么

初始的迷茫 我想很多菜鸟和我一样,开始零基础学习机器学习,没办法火啊,为了钱大家都是冲呀。估计很多人开始学习ML,就一头雾水,完全不知道在说什么。因为学习模式和学习其他语言完全不同,我们知道学习其他语言的时候,第一个程序就是打印“Hello World”。 其实机器学习是在某个框架下,使用某种语言,来解决问题。因此对于零基础的菜鸟而言,我们需要先学习好某种语言,可以推荐Python,因为功能强...

努力中的老周的专栏 4万+

TensorFlow入门实战:基于MNIST的手写数字识别完整教程

Sequential模型允许用户按照前向传播顺序依次添加网络层,每层的输出自动成为下一层的输入,适合初学者快速实现标准CNN架构。layers.Flatten(), # 展平为一维向量layers.Dense(64, activation='relu'), # 全连接层layers.Dropout(0.5), # 防止过拟合layers.Dense(10, activation='softmax') # 输出层])代码逻辑解析:第一层必须指定,后续层自动推断输入维度。

weixin_33597080的博客 1220

PyTorch MNIST实战:透彻理解深度学习数据流与模型训练

深度学习图像分类是AI入门的关键路径,但很多初学者能跑通代码却难以理解数据流转与模型训练的内在逻辑。数据流作为连接原始图像、张量变换、归一化、批量加载、前向传播、损失计算、反向传播与参数更新的核心闭环,直接影响模型效果。本文从数据加载、张量形状、归一化原理等基础概念切入,剖析深度学习训练流程的技术价值与应用场景,并借助MNIST手写数字识别这一经典任务,提供完整的PyTorch实现代码与逐层形状推导。通过掌握数据流,读者不仅能在MNIST上轻松达到99%准确率,更能将方法论迁移到其他图像分类任务,真正突破“

weixin_26950847的博客 306

MNIST手写数字识别完整工程:含训练脚本、预存模型、可视化绘图与推理示例

直接运行就能跑通的手写数字识别Python项目,基于CNN架构处理MNIST数据集。包含网络结构定义(network.py)、基础层实现(layer.py)、SGD优化器(optimizer.py)、标准化数据加载器(dataset.py)、训练过程实时绘图工具(drawer.py),以及损失/准确率曲线图(loss.png)。模型参数已保存为save_params.pkl,支持一键加载进行预测;超参统一配置在params.yaml中,便于调整学习率、批次大小等。附带分析脚本(analyser.py)用于评

butter的博客 271

基于TensorFlow的MNIST手写数字识别项目实战

MNIST数据集是一个包含手写数字的大型数据库,广泛用于训练各类图像处理系统。它由60,000个训练样本和10,000个测试样本组成,每个样本都是28x28像素大小的灰度图。由于其多样性和广泛的使用,MNIST成为了机器学习和深度学习实验的”Hello World”。TensorFlow最初由Google大脑团队开发,是一个开源的机器学习库,它允许研究者和开发者构建和训练机器学习模型。自从2015年开源以来,TensorFlow因其强大的功能和灵活的设计,在工业界和学术界得到广泛应用。

weixin_30481539的博客 959

Tensorflow实战入门:MNIST手写数字识别

说在前头 本文是使用BP神经网络中的softmax回归模型实现MNIST手写数字识别,实际上能实现MNIST手写数字识别的神经网络还有CNN(卷积神经网络),下一篇可能会写。 Tensorflow是个什么东西 Tensorflow是一个采用 数据流图,用于数值计算的开源软件库。节点在图中表示数学操作,图中的线则表示在节点间相互联系的多维数据数组,即张量(Tensor)。 数据流图用“结点”和“线”...

阿坨的博客 2153

分析攻击流量样本

利用wireshark分析.pcap攻击样本的攻击流程,利用漏洞等。

一段旅途 6842

Blocks实战:从零训练MNIST手写数字识别模型的完整教程

想用 Theano 搭建属于自己的第一个神经网络,却不知道从哪下手?Blocks 正是为此而生的深度学习框架。这篇 **Blocks 实战教程** 将带你用 Blocks 从零训练一个 **MNIST 手写数字识别模型**,从环境搭建、模型构建到训练监控与结果分析,一步步走完完整流程。无论你是刚入门深度学习的新手,还是想快速上手 Blocks 的开发者,这篇文章都能帮你扫清障碍,亲手跑通第一个神经

gitblog_00701的博客 728

STM32G474实战:数字LLC电源控制程序从零到跑通(附完整代码解析)

本文详细介绍了基于STM32G474微控制器开发数字LLC电源控制程序的完整实战流程。从硬件平台搭建、CubeMX工程配置,到核心控制逻辑、双速率中断框架、数字PID实现,再到Burst模式、状态机等高级策略与异常处理,提供了从零到跑通的系统化指南与代码解析,助力开发者掌握高效数字电源的程序编写与调试技巧。

s1t2u3的博客 1237

告别UI字体臃肿!详解TextMeshPro字体AssetBundle打包优化技巧(Unity 2022实测)

本文详细解析了Unity 2022中使用TextMeshPro时字体资源AssetBundle打包的优化技巧,特别针对中日文等多语言场景下的字体臃肿问题。通过公共资源标记、依赖关系分析和实战案例,帮助开发者有效减少包体体积和内存占用,提升游戏性能。

weixin_33725722的博客 418

【AI训练师训练数据流程】

确定AI模型的应用场景:如图像识别、语音交互、文本分类、推荐系统等。举例:若目标是训练垃圾分类AI,需明确识别的垃圾类别(可回收物、厨余垃圾等)及识别精度要求。

专业分享AI训练师&AI软件测试 2393

DPABINet保姆级教程:零代码完成脑网络分析与图论计算

本文提供DPABINet的零代码脑网络分析全流程指南。该工具通过图形化界面集成时间序列提取、连接矩阵构建、图论指标计算及统计分析,大幅降低技术门槛。重点解析了阈值选择、二值化与小世界属性计算等关键步骤,帮助研究者快速掌握脑网络分析与图论计算,提升科研效率与可重复性。

j2k3l4的博客 667

PyTorch实战:从零构建CNN模型,轻松搞定MNIST手写数字识别

大家好!欢迎来到我的深度学习博客! 对于每个踏入计算机视觉领域的人来说,MNIST手写数字识别就像是编程世界的“Hello, World!”。它足够简单,能够让我们快速上手;也足够完整,可以帮我们走通一个深度学习项目的全流程。

一位热衷于机器学习的博主,致力于将复杂的AI算法化繁为简。分享代码实战与前沿洞见,与你一同探索人工智能的奇妙世界。 1420

基于Ventoy制作单个U盘引导Windows+Linux+黑苹果macOS

一款国内高手开发的一个名为Ventoy的开源多系统启动U盘制作工具,官方链接:https://www.ventoy.net/cn/index.html Ventoy 特点 不影响U盘日常普通使用 直接从ISO文件启动,无需解开 支持MBR和GPT分区格式(1.0.15+) 支持超过4GB的ISO文件 支持大部分常见操作系统, 已测试650+ 个ISO文件 不仅仅是启动,而是完整的安装过程 版本升级时数据不会丢失 Ventoy 待改进 不支持macOS和ChromeOS 准备2个空的U.

wybarcelona的博客 3万+

COMSOL仿真避坑指南:列管反应器模拟中多孔介质与化学反应设置的5个常见错误

本文详细解析了COMSOL仿真中列管反应器模拟的5个常见错误,包括多孔介质模型选择、化学反应接口配置、对流扩散方程处理、薄层热阻设置及网格独立性验证。特别针对多孔介质与化学反应设置的误区,提供了实用的判断标准和修正方法,帮助工程师避免计算偏差,提升仿真精度。

weixin_29597551的博客 321

TensorFlow安装与入门: 使用CNN训练MNIST

上学期钻研了下Python3和人工神经网络,如多层感知器、卷积神经网络等算法原理。这两天看了下TensorFlow这个框架,在这里记录下遇到的小问题,以及参考官网的说明写的使用CNN训练MNIST的Python代码。

liuyaqi1993的博客 1463

YOLO训练/写作脚本目录一览 | 涉及标签格式转换、数据扩充、热力图、感受野、精度曲线、数量统计等近百个脚本文件

在大家购买专栏后,便可获得全部的脚本文件。在获取到文件后,只需按照将程序放在个人项目中即可一键运行。

Limiiiing的博客 2375

MindSpore上跑通MNIST:从LeNet到数据并行的大模型训练地基

深度学习训练的完整链路,从数据读取、网络构建到反向传播与模型导出,是构建一切大规模训练能力的基石。MNIST作为经典手写数字识别数据集,看似简单,却能系统验证框架的数据流、控制流与参数更新机制,堪称最小完整闭环。通过MindSpore框架实践LeNet卷积网络,不仅能理解张量形状变换、损失函数与优化器匹配、Checkpoint断点续训等核心概念,还能掌握从单机单卡平滑切换至数据并行的方法。这种从基础流程到分布式扩展的路径,正是通往大模型训练的地基工程。无论是后续接触LLM微调还是千卡集群,数据管道的处理逻辑

weixin_29053577的博客 185

【现代人形机器人:从物理建模到大模型驱动的控制与学习】第1章 机器人建模回顾

本章建立读者进行后续控制 / 优化 / 学习工作的数学与计算基础。内容分为三大块:刚体运动学:位姿表示、坐标变换、旋转参数与李代数/李群(指数映射、twist)多关节机构的正/逆运动学:DH 与 POE 两种建模、雅可比矩阵推导、数值/解析逆解方法与奇异性问题约束动力学:拉格朗日公式、牛顿—欧拉递归算法、接触/冲击模型、受约束系统的方程(拉格朗日乘子与互补性条件)每一节同时给出与练习题。假设读者已具备线性代数(矩阵、特征分解、SVD)、多变量微积分与基础力学(牛顿第二定律)知识。

u012133341的博客 181

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

MXNet Clojure Module API 实战指南:从 MNIST 训练到模型保存与恢复

本教程以 MXNet 的 Clojure 绑定(`org.apache.clojure-mxnet`)为核心,系统讲解 Module API 这一"中高层"训练接口的完整使用链路:如何准备 MNIST 数据迭代器、如何用 Symbol 组装全连接网络、如何通过 `bind`/`init-params` 准备计算、如何用 `fit`/`predict`/`score` 完成训练、评估与预测,以及如何

gitblog_00643的博客 453

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: RK3588 FIT 镜像实战:从 make.sh 输出到签名、回滚与烧录(含 AVB 关系)
下一篇: RK 系统安全(System-Verity / System-Encryption)原理与落地实战
嵌入式孙老师
博客等级 码龄7年 5686粉丝 898原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值