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

小白的进阶之路系列之十二----人工智能从初步到精通pytorch综合运用的讲解第五部分

在本笔记本中,我们将针对Fashion-MNIST数据集训练LeNet-5的变体。Fashion-MNIST是一组描绘各种服装的图像瓦片,有十个类别标签表明所描绘的服装类型。

# PyTorch model and training necessities
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim# Image datasets and image manipulation
import torchvision
import torchvision.transforms as transforms# Image display
import matplotlib.pyplot as plt
import numpy as np# PyTorch TensorBoard support
from torch.utils.tensorboard import SummaryWriter# In case you are using an environment that has TensorFlow installed,
# such as Google Colab, uncomment the following code to avoid
# a bug with saving embeddings to your TensorBoard directory# import tensorflow as tf
# import tensorboard as tb
# tf.io.gfile = tb.compat.tensorflow_stub.io.gfile

在TensorBoard中显示图像

让我们首先将数据集中的样本图像添加到TensorBoard:

# Helper function for inline image display
def matplotlib_imshow(img, one_channel=False):if one_channel:img = img.mean(dim=0)img = img / 2 + 0.5     # unnormalizenpimg = img.numpy()if one_channel:plt.imshow(npimg, cmap="Greys")else:plt.imshow(np.transpose(npimg, (1, 2, 0)))if __name__ == '__main__':transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5,), (0.5,))])# Store separate training and validations splits in ./datatraining_set = torchvision.datasets.FashionMNIST('./data',download=True,train=True,transform=transform)validation_set = torchvision.datasets.FashionMNIST('./data',download=True,train=False,transform=transform)training_loader = torch.utils.data.DataLoader(training_set,batch_size=4,shuffle=True,num_workers=2)validation_loader = torch.utils.data.DataLoader(validation_set,batch_size=4,shuffle=False,num_workers=2)# Class labelsclasses = ('T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat','Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle Boot')# Extract a batch of 4 imagesdataiter = iter(training_loader)images, labels = next(dataiter)# Create a grid from the images and show themimg_grid = torchvision.utils.make_grid(images)matplotlib_imshow(img_grid, one_channel=True)plt.show()

输出为:

在这里插入图片描述

上面,我们使用TorchVision和Matplotlib创建了一个小批量输入数据的视觉网格。下面,我们在SummaryWriter上使用add_image()调用来记录TensorBoard使用的图像,并且我们还调用flush())来确保它立即写入磁盘。

    # Default log_dir argument is "runs" - but it's good to be specific# torch.utils.tensorboard.SummaryWriter is imported abovewriter = SummaryWriter('runs/fashion_mnist_experiment_1')# Write image data to TensorBoard log dirwriter.add_image('Four Fashion-MNIST Images', img_grid)writer.flush()# To view, start TensorBoard on the command line with:#   tensorboard --logdir=runs# ...and open a browser tab to http://localhost:6006/

如果您在命令行启动TensorBoard并在新的浏览器选项卡中打开它(通常在localhost:6006),您应该在IMAGES选项卡下看到图像网格。

绘制标量以可视化训练

TensorBoard对于跟踪您的训练进度和效果非常有用。下面,我们将运行一个训练循环,跟踪一些指标,并保存数据供TensorBoard使用。

让我们定义一个模型来对图像块进行分类,以及一个用于训练的优化器和损失函数:

    class Net(nn.Module):def __init__(self):super(Net, self).__init__()self.conv1 = nn.Conv2d(1, 6, 5)self.pool = nn.MaxPool2d(2, 2)self.conv2 = nn.Conv2d(6, 16, 5)self.fc1 = nn.Linear(16 * 4 * 4, 120)self.fc2 = nn.Linear(120, 84)self.fc3 = nn.Linear(84, 10)def forward(self, x):x = self.pool(F.relu(self.conv1(x)))x = self.pool(F.relu(sel
http://www.lryc.cn/news/2398645.html

相关文章:

  • Java并发编程实战 Day 6:Future与异步编程模型
  • .NET Core 中预防跨网站请求伪造 (XSRFCSRF) 攻击
  • MFC Resource.h 文件详解与修改指南
  • 2025年06月03日Github流行趋势
  • AI视频编码器(0.4.3) 调试训练bug——使用timm SoftTargetCrossEntropy时出现loss inf
  • 【数据分析】基于Cox模型的R语言实现生存分析与生物标志物风险评估
  • 使用nginx配置反向代理,负载均衡
  • 从 iPhone 备份照片: 保存iPhone图片的5种方法
  • Spring Ai 从Demo到搭建套壳项目(一)初识与实现与deepseek对话模式
  • 快速上手pytest
  • 设备驱动与文件系统:02 键盘
  • matlab分布式电源接入对配电网的影响
  • 前端ul-image的src接收base64快捷写法
  • 交通违法拍照数据集,可识别接打电话,不系安全带的行为,支持YOLO,COCO JSON,VOC XML格式的标注数据集 最高正确识别率可达88.6%
  • Qt OpenGL 3D 编程入门
  • 性能优化 - 工具篇:基准测试 JMH
  • Ubuntu 中安装 PostgreSQL 及常规操作指南
  • Nginx网站服务:从入门到LNMP架构实战
  • Java面试八股--08-数据结构和算法篇
  • Java面试八股--06-Linux篇
  • Ajax技术分析方法全解:从基础到企业级实践(2025最新版)
  • Unity 性能优化终极指南 — GameObject 篇
  • dvwa7——SQL Injection
  • Spring AI 项目实战(四):Spring AI + DeepSeek 超参数优化——智能化机器学习平台(附完整源码)
  • Axure疑难杂症:中继器图片替换功能优化(支持修改已有记录-玩转中继器)
  • sqlite3 命令行工具详细介绍
  • ubuntu 22.04 编译安装nignx 报错 openssl 问题
  • 线程相关面试题
  • pikachu通关教程-目录遍历漏洞(../../)
  • Maven-生命周期