5.27 打卡
知识点回顾:
- Dataset类的__getitem__和__len__方法(本质是python的特殊方法)
- Dataloader类
- minist手写数据集的了解
作业:了解下cifar数据集,尝试获取其中一张图片
import torch
import torchvision
from torchvision import transforms
import matplotlib.pyplot as plt
import numpy as np# 1. 定义数据预处理方式
# ToTensor: 将PIL Image或NumPy array转换为PyTorch Tensor (HWC -> CHW),并归一化到[0.0, 1.0]
# 对于显示图片,Normalize可以先不加,或者如果加了,显示前需要逆标准化。
# 为了直接显示原始像素值,我们这里只用ToTensor。
transform = transforms.Compose([transforms.ToTensor()
])# CIFAR-10 的类别名称,方便显示
cifar10_classes = ['airplane', 'automobile', 'bird', 'cat', 'deer','dog', 'frog', 'horse', 'ship', 'truck'
]# 2. 加载CIFAR-10训练集 (如果本地没有会自动下载)
# download=True 会自动处理下载
cifar10_dataset = torchvision.datasets.CIFAR10(root='./data', # 数据下载和存放的根目录train=True, # 加载训练集download=True, # 如果没有本地文件则下载transform=transform # 应用预处理
)print(f"CIFAR-10 训练集大小: {len(cifar10_dataset)}")# 3. 获取一张图片及其标签 (直接通过索引访问 Dataset)
# dataset[0] 会调用数据集的 __getitem__ 方法
image_tensor, label_id = cifar10_dataset[0]print(f"获取到的图像 Tensor 形状: {image_tensor.shape}") # (Channels, Height, Width) -> (3, 32, 32)
print(f"获取到的图像标签 ID: {label_id}")
print(f"获取到的图像标签名称: {cifar10_classes[label_id]}")# 4. 显示图片
# Matplotlib 的 imshow 需要图像为 (Height, Width, Channels) 格式
# PyTorch 的 Tensor 是 (Channels, Height, Width) 格式
# 所以需要使用 .permute() 进行维度转换
# .numpy() 将 Tensor 转换成 NumPy 数组
plt.imshow(image_tensor.permute(1, 2, 0).numpy())
plt.title(f"CIFAR-10 Image - Class: {cifar10_classes[label_id]}")
plt.axis('off') # 不显示坐标轴
plt.show()# 尝试获取另一张图片,例如第 100 张
image_tensor_100, label_id_100 = cifar10_dataset[99] # 索引从0开始plt.imshow(image_tensor_100.permute(1, 2, 0).numpy())
plt.title(f"CIFAR-10 Image - Class: {cifar10_classes[label_id_100]}")
plt.axis('off')
plt.show()print("\n--- 尝试使用 Dataloader 获取并显示一个批次的第一张图片 ---")
# 也可以通过Dataloader来获取图片,虽然对于获取单张图片有点“杀鸡用牛刀”
cifar10_loader = DataLoader(dataset=cifar10_dataset,batch_size=1, # 这里设置batch_size=1,方便直接取出第一张shuffle=False # 不打乱,保证每次取到的是同一张
)data_iter = iter(cifar10_loader)
batch_images, batch_labels = next(data_iter)# batch_images 的形状是 (batch_size, C, H, W) -> (1, 3, 32, 32)
# batch_labels 的形状是 (batch_size) -> (1)single_image_tensor = batch_images[0]
single_label_id = batch_labels[0].item() # .item() 将单个Tensor值转换为Python标量plt.imshow(single_image_tensor.permute(1, 2, 0).numpy())
plt.title(f"CIFAR-10 Image from Dataloader - Class: {cifar10_classes[single_label_id]}")
plt.axis('off')
plt.show()
相关文章:
5.27 打卡
知识点回顾: Dataset类的__getitem__和__len__方法(本质是python的特殊方法)Dataloader类minist手写数据集的了解 作业:了解下cifar数据集,尝试获取其中一张图片 import torch import torchvision from torchvision im…...

Web安全测试-文件上传绕过-DVWA
Web安全测试-文件上传绕过-DVWA 很多网站都有上传资源(图片或者文件)的功能,资源上传后一般会存储在服务器的一个文件夹里面,如果攻击者绕过了上传时候的文件类型验证,传了木马或者其他可执行的代码上去,那服务器就危险了。 我用…...
织梦dedecms arclist最新发布日期显示红色
织梦DedeCMS在当天发表的文章显示红色、添加new图标的问题,织梦模板网在以前的文章中已经发表过类似的文章,今天我们再来回顾和温习一下,主要增加了真正的当天显示红色,而不是24小时内的文章显示红色。 真正的“当天”显示红色&a…...

现代 CSS 高阶技巧:实现平滑内凹圆角的工程化实践
通过 数学计算 CSS mask 复合遮罩 实现的真正几何内凹效果: 背景是一张图片,用来证明中间的凹陷是透明的。 完整代码: app.js import FormPage from "./pages/formPage"; import "./App.css"; const App () > {re…...

【运维自动化-标准运维】如何实现在不同步骤间传递参数
当流程有多个步骤时,经常需要把前面某个个步骤处理的结果传递给下一个或后面的步骤使用(输出作为输入),这就是跨步骤传参的场景,标准运维通过特有的标记符号"<SOPS_VAR>key:value</SOPS_VAR> "来…...
STM32 UART通信实战指南:从原理到项目落地
STM32串口通信实战指南:从零开始手把手教你 前言:为什么串口这么重要? 在嵌入式开发中,串口就像设备的"嘴巴"和"耳朵"。无论是给单片机下达指令、读取传感器数据,还是让两个模块"对话"…...
基于stm32的 永磁同步电机二电平驱动控制系统设计
基于STM32的永磁同步电机(PMSM)二电平驱动控制系统设计方案: 系统架构 永磁同步电机二电平驱动控制系统主要由以下部分组成: STM32微控制器:作为控制核心,生成PWM信号并处理反馈数据。功率驱动电路:使用IGBT或MOSFET构成三相桥式逆变器,实现二电平驱动。电流采样电路:…...

[AI]主流大模型、ChatGPTDeepseek、国内免费大模型API服务推荐(支持LangChain.js集成)
主流大模型特色对比表 模型核心优势适用场景局限性DeepSeek- 数学/代码能力卓越(GSM8K准确率82.3%)1- 开源生态完善(支持医疗/金融领域)7- 成本极低(API价格仅为ChatGPT的2%-3%)5科研辅助、代码开发、数据…...

手机IP地址更换的影响与操作指南
在移动互联网时代,IP地址如同手机的“网络身份证”,其变更可能对上网体验、隐私安全及服务访问产生连锁反应。无论是为了绕过地域限制、保护隐私,还是解决网络冲突,了解IP更换的影响与正确操作方法都至关重要。本文将系统分析影响…...
iOS 响应者链详解
响应者链是 iOS 中处理用户事件(如触摸、摇动、按键)的核心机制,由一系列 UIResponder 对象构成,决定了事件传递的路径和优先级。以下是其核心机制与使用场景的详细解析: 一、响应者链的组成 1. 响应者对象࿰…...
Flink Table API 编程入门实践
Flink Table API 编程入门实践 前言 Apache Flink 是目前大数据实时计算领域的明星产品,Flink Table API 则为开发者提供了声明式、类似 SQL 的数据处理能力,兼具 SQL 的易用性与编程 API 的灵活性。本文将带你快速了解 Flink Table API 的基本用法&am…...

MongoDB 安全机制详解:全方位保障数据安全
在当今数据驱动的时代,数据库安全至关重要。MongoDB 作为一款流行的 NoSQL 数据库,广泛应用于 Web 应用、大数据分析和物联网等领域。然而,随着 MongoDB 的普及,其安全性也面临诸多挑战,如未授权访问、数据泄露和注入攻…...
Teensy LC 一款由 PJRC 公司开发的高性能 32 位微控制器开发板
Teensy LC 是一款由 PJRC 公司开发的高性能 32 位微控制器开发板,具有以下特点: 硬件配置 核心处理器 :采用 MKL26Z64VFT4 ARM Cortex-M0 处理器,运行频率为 48MHz,相较于传统的 8 位 AVR 处理器,速度更快…...
MicroPython 开发ESP32应用教程 之 线程介绍及实例分析
MicroPython ESP32 线程(Thread)基础 MicroPython 在 ESP32 上支持线程(Thread)功能,通过 _thread 模块实现。线程允许程序并发执行多个任务,适合处理需要同时运行的场景,例如传感器数据采集和…...
鸿蒙5开发宝藏案例分享---一多断点开发实践
🌟【鸿蒙开发实战进阶】六大核心案例深度拆解,带你玩转多端适配! 📐 案例4:动态网格布局(电商商品列表) 应用场景:手机/平板商品展示差异 痛点分析:手机单列→平板多列&…...

嵌入式学习之系统编程(六)线程
目录 一、线程 (一)线程概念 (二)特征 (三)优缺点 二、线程与进程的区别(面问) 三、多线程程序设计步骤 四、线程的创建(相关函数) 1、pthread_create…...
分布式常见概念
分布式常见概念 反向代理正向代理 vs 反向代理(对比理解名称)正向代理示意(“我去帮你拿数据”)反向代理示意(“你找我,我替你联系内部服务器”)为什么叫“反向”? API网关一、为什么…...
数据库的事务(Transaction)
在数据库中,事务(Transaction) 是保证数据操作一致性和完整性的核心机制。它通过一组原子性的操作单元,确保所有操作要么全部成功(提交),要么全部失败(回滚)。以下是数据…...

大语言模型 提示词的少样本案例的 演示选择与排序新突破
提示词中 演示示例的选择与排序 这篇论文《Rapid Selection and Ordering of In-Context Demonstrations via Prompt Embedding Clustering》聚焦于提升大语言模型(LLMs)在自适应上下文学习(ICL)场景中演示示例的选择与排序效率 一、论文要解决的问题 在上下文学习(ICL)…...

【算法篇】二分查找算法:基础篇
题目链接: 34.在排序数组中查找元素的第一个和最后一个位置 题目描述: 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返…...
Qtc++开发遇到的问题-按钮点击不管用?
我在设计自己的控件的时候,遇到了按钮点击不管用的问题,而且是有的自定义控件不管用,有的管用,有的一开始管用,多点几次就不管用了, 它是这样的,一个lineEdit和位于两侧的按钮,分别…...

重磅发布 | 复旦533页《大规模语言模型:从理论到实践(第2版)》(免费下载)
在人工智能浪潮席卷全球的今天,大语言模型正以前所未有的速度推动着科技进步和产业变革。从 ChatGPT 到各类行业应用,LLM 不仅重塑了人机交互的方式,更成为推动学术研究与产业创新的关键技术。 面对这一飞速演进的技术体系,如何系…...

智能体赋能效率,企业知识库沉淀价值:UMI企业智脑的双轮驱动!
智能体企业知识库:UMI企业智脑的核心功能与价值 在人工智能技术飞速发展的今天,企业智能化转型已经成为不可逆转的趋势。作为企业级AI智能体开发平台的佼佼者,优秘智能推出的UMI企业智脑,以其强大的智能体开发能力和全面的企业知…...
STM32CubeMX,arm-none-eabi-gcc简单试用
在windows下,为stm32系列单片机编程,keil有了免费的试用版,有很多开发板示例,给学习单片机编程带来很大的方便。 STM32CubeMX提供了stm32单片机的功能设置,在输出方式上给出了几种方式,有mdk(k…...
Spring AI(一)
Spring AI 官网 Spring AI 是一个用于 AI 工程的应用程序框架。其目标是将 Spring 生态系统设计原则(如可移植性和模块化设计)应用于 AI 领域,并将使用 POJO 作为应用程序的构建块推广到 AI 领域。 Spring AI 的核心是解决了 AI 集成的根本挑战:将您的企业数据和 API 与 A…...
Nacos适配GaussDB超详细部署流程
1部署openGauss 官方文档下载 https://support.huaweicloud.com/download_gaussdb/index.html 社区地址 安装包下载 本文主要是以部署轻量级为主要教程 1.1系统环境准备 操作系统选择 系统AARCH64X86-64openEuler√√CentOS7√Docker√√1.2软硬件安装环境 版本轻量版(单…...
vue-pure-admin动态路由无Layout实现解决方案
背景: 最近在使用vue-pure-admin开发后台项目的时候发现作者并没有动态路由的全屏无Layout实现方案。查询作者路由发现,作者只做了静态路由的无Layout方案,其它动态路由,作者在做整合的时候,都放进了 \ 下面的子路由&…...

vue项目 build时@vue-office/docx报错
我在打包vue项目时, 开始用的npm run build和cnpm run build,总是提示 vue-office/docx 错误,尝试过用cnpm重新安装node_modules几次都没用。类似下面的提示一直有。 Error: [commonjs--resolver] Failed to resolve entry for package "…...
卓力达蚀刻工艺:精密制造的跨行业赋能者
引言 蚀刻技术作为现代精密制造的核心工艺之一,通过化学或物理方法对金属材料进行选择性去除,实现微米级复杂结构的加工。南通卓力达凭借20余年技术积淀与全产业链布局,成为全球高端制造领域的重要支撑力量。本文将从蚀刻技术的多领域应用与…...
【大模型面试每日一题】Day 30:解释一下 FlashAttention 技术,并对比其与传统注意力在显存效率和计算性能上的差异。
【大模型面试每日一题】Day 30:解释一下 FlashAttention 技术,并对比其与传统注意力在显存效率和计算性能上的差异。 📌 题目重现 🌟🌟 面试官:解释一下 FlashAttention 技术,并对比其与传统注…...