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

python-pytorch基础之cifar10数据集使用图片分类

这里写目录标题

  • 总体思路
  • 获取数据集
    • 下载cifar10数据
    • 解压包
    • 文件介绍
    • 加载图片数字化信息
    • 查看数据信息
  • 数据读取
  • 自定义dataset
  • 使用loader加载
  • 建模
  • 训练
  • 测试
    • 建测试数据的loader
    • 测试准确性
    • 测试一张图片
      • 读取一张图片
      • 加载模型
      • 预测图片类型
      • 创建一个预测函数
      • 随便来张马的图片
    • 结果
  • 其他
    • 打开一个图片
      • 基础信息查看
      • 数据转图片

总体思路

生成数据dataset

使用loader加载dataset

建模

训练

测试

参考:

https://blog.csdn.net/HcViking/article/details/126688941

import numpy

获取数据集

下载cifar10数据

下载地址

http://www.cs.toronto.edu/~kriz/cifar.html

# !wget http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz

解压包

# !tar -zxvf cifar-10-python.tar.gz

文件介绍

总共有六个文件

五个cifar-10-batches-py/data_batch_1 2 3 4 5

一个测试集cifar-10-batches-py/test_batch

分类分别是[“airplane”,“automobile”,“bird”,“cat”,“deer”,“dog”,“frog”,“horse”,“ship”,“truck”]
在这里插入图片描述

加载图片数字化信息

def unpickle(file):import picklewith open(file, 'rb') as fo:dict = pickle.load(fo, encoding='bytes')return dictdic=unpickle("./cifar-10-batches-py/data_batch_1")

查看数据信息

dic.keys()
dict_keys([b'batch_label', b'labels', b'data', b'filenames'])
dic.get(b'filenames')[0:10]
[b'leptodactylus_pentadactylus_s_000004.png',b'camion_s_000148.png',b'tipper_truck_s_001250.png',b'american_elk_s_001521.png',b'station_wagon_s_000293.png',b'coupe_s_001735.png',b'cassowary_s_001300.png',b'cow_pony_s_001168.png',b'sea_boat_s_001584.png',b'tabby_s_001355.png']
len(dic.get(b'filenames'))
10000
X = dic[ b'data']
Y = dic[b'labels']
X[5],type(X),X[5].shape
(array([159, 150, 153, ...,  14,  17,  19], dtype=uint8),numpy.ndarray,(3072,))
## 其他信息-concatenate
nparray=numpy.array([[1,2,3,4,5],[1,4,5,6,7]])
print(nparray)xx=numpy.concatenate(nparray)
xx
[[1 2 3 4 5][1 4 5 6 7]]array([1, 2, 3, 4, 5, 1, 4, 5, 6, 7])

数据读取

import os
import numpy as np
import pickle#读一个批次
def load_cifar_batch(filename):with open(filename,'rb') as f:data_dict=pickle.load(f,encoding='bytes')images =data_dict[b'data']labels=data_dict[b'labels']print("data shape is {0} and type is {1}".format(images.shape,type(images)))print("labels shape is {0} and type is {1}".format(len(labels),type(labels)))# 把3072列分成3个32*32的数据images=images.reshape(10000,3,32,32)print("after data reshape is {0} and type is {1}".format(images.shape

相关文章:

python-pytorch基础之cifar10数据集使用图片分类

这里写目录标题 总体思路获取数据集下载cifar10数据解压包文件介绍加载图片数字化信息查看数据信息数据读取自定义dataset使用loader加载建模训练测试建测试数据的loader测试准确性测试一张图片读取一张图片加载模型预测图片类型创建一个预测函数随便来张马的图片结果其他打开一…...

华纳云:linux下磁盘管理与挂载硬盘方法是什么

在Linux下进行磁盘管理和挂载硬盘的方法如下: 磁盘管理: a. 查看已连接的磁盘:可以使用命令 fdisk -l 或 lsblk 查看系统中已连接的磁盘信息,包括硬盘和分区。 b. 创建分区:如果磁盘是全新的,需要使用 f…...

ChatGPT + Stable Diffusion + 百度AI + MoviePy 实现文字生成视频,小说转视频,自媒体神器!(一)

ChatGPT Stable Diffusion 百度AI MoviePy 实现文字生成视频,小说转视频,自媒体神器!(一) 前言 最近大模型频出,但是对于我们普通人来说,如何使用这些AI工具来辅助我们的工作呢,或者参与进入我们的生活…...

linux strcpy/strncpy/sprintf内存溢出问题

本文主要介绍strcpy/strncpy/sprintf都是不安全的&#xff0c;可能存在内存溢出的问题。下来进行实例分析。 strcpy代码&#xff1a; #include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdbool.h>void test_func(char *str) {b…...

Jmeter如何添加插件

一、前言 ​ 在我们的工作中&#xff0c;我们可以利用一些插件来帮助我们更好的进行性能测试。今天我们来介绍下Jmeter怎么添加插件&#xff1f; 2023最新Jmeter接口测试从入门到精通&#xff08;全套项目实战教程&#xff09; 二、插件管理器 ​ 首先我们需要下载插件管理器j…...

flask---CBV使用和源码分析

1 cbv写法 -1 写个类&#xff0c;继承MethodView-2 在类中写跟请求方式同名的方法-3 注册路由&#xff1a;app.add_url_rule(/home, view_funcHome.as_view(home))#home是endpoint&#xff0c;就是路由别名#例子 class add(MethodView):def get(self):return holleapp.add_url…...

Qt 实现压缩文件、文件夹和解压缩操作zip

一、实现方式 通过Qt自带的库来实现&#xff0c;使用多线程方式&#xff0c;通过信号和槽来触发压缩与解压缩&#xff0c;并将压缩和解压缩结果回传过来。 使用的类&#xff1a; #include "QtGui/private/qzipreader_p.h" #include "QtGui/private/qzipwriter…...

简单工厂模式VS策略模式

简单工厂模式VS策略模式 今天复习设计模式&#xff0c;由于简单工厂模式和策略模式太像了&#xff0c;重新整理梳理一下 简单工厂模式MUL图&#xff1a; 策略模式UML图&#xff1a; 1、简单工厂模式中只管创建实例&#xff0c;具体怎么使用工厂实例由调用方决定&#xff0c…...

【MySQL】触发器 (十二)

🚗MySQL学习第十二站~ 🚩本文已收录至专栏:MySQL通关路 ❤️文末附全文思维导图,感谢各位点赞收藏支持~ 一.引入 触发器是与表有关的数据库对象,作用在insert/update/delete语句执行之前(BEFORE)或之后(AFTER),自动触发并执行触发器中定义的SQL语句集合。它可以协助应…...

听说 Spring Bean 的创建还有一条捷径?

文章目录 1. resolveBeforeInstantiation1.1 applyBeanPostProcessorsBeforeInstantiation1.2 applyBeanPostProcessorsAfterInitialization1.3 案例 2. 源码实践2.1 切面 Bean2.2 普通 Bean 在 Spring Bean 的创建方法中&#xff0c;有如下一段代码&#xff1a; AbstractAutow…...

大数据课程E6——Flume的Processor

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Processor的概念和配置参数; ⚪ 掌握Processor的使用方法; ⚪ 掌握Processor的Default Processo; ⚪ 掌握Processor的Load Balance Processo; 一、Failover Sink Processor 1. …...

实现邮箱管理之gmail邮箱、office365(Azure)邮箱之披荆斩棘问题一览

要进行Office365邮箱的授权对接&#xff0c;你需要先申请一个应用&#xff0c;并获取授权访问令牌。 以下是一个简单的步骤&#xff1a; 登录 Azure 门户&#xff1a;https://portal.azure.com/创建一个新的应用程序&#xff0c;或者使用现有的应用程序。要创建新的应用程序&…...

(AcWing)多重背包问题 I,II

有 N 种物品和一个容量是 V 的背包。 第 i 种物品最多有 si 件&#xff0c;每件体积是 vi&#xff0c;价值是 wi。 求解将哪些物品装入背包&#xff0c;可使物品体积总和不超过背包容量&#xff0c;且价值总和最大。 输出最大价值。 输入格式 第一行两个整数 N&#xff0c;…...

如何把几个视频合并在一起?视频合并方法分享

当我们需要制作一个比较长的视频时&#xff0c;将多个视频进行合并可以使得整个过程更加高效。此外&#xff0c;合并视频还可以避免出现“剪辑断层”的情况&#xff0c;使得视频内容更加连贯&#xff0c;更加容易被观众理解和接受。再有&#xff0c;合并视频还可以减少视频文件…...

【MyBatis】初学MyBatis

目录 MyBatis 是什么&#xff1f;MyBatis框架搭建1.添加MyBatis框架2.设置MyBatis配置数据库的相关链接信息xml 保存路径和命名格式 根据MyBatis写法完成数据库的操作MyBatis插件MyBatis传递参数查询${} 和 #{} 有什么区别&#xff1f;SQL注入问题 MyBatis like查询MyBatis多表…...

深度学习训练营之DCGAN网络学习

深度学习训练营之DCGAN网络学习 原文链接环境介绍DCGAN简单介绍生成器&#xff08;Generator&#xff09;判别器&#xff08;Discriminator&#xff09;对抗训练 前置工作导入第三方库导入数据数据查看 定义模型初始化权重定义生成器generator定义判别器 模型训练定义参数模型训…...

自定义MVC增删改查

目录 mymvcdemo是自定义mvc框架的使用示例 1.1 实体类 1.2 dao方法 1.3 写Service / biz 三层架构 1.4 建action 相当于selvert 1.5 con连接MySQL 8.0 版本 1.6 配置文件 XML 1.7 主界面布局 1.8 增加界面布局 1.9 写tld配置文件 2.0 注意架包 我是已经打包好的 mymv…...

RabbitMQ 教程 | 第2章 RabbitMQ 入门

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是 DevO…...

双网卡如何配置DNS?我是一个仅主机模式配置静态(static)IP、一个NET或桥接(dhcp获取)

目录 一、所有主机初始化 二、135、136服务器&#xff0c;部署DNS调度服务器 1、更改主机主从DNS服务器的主机名称 2、安装bind软件、修改主配置文件 3、修改区域配置文件 4、修改数据文件 5、启动named服务、修改网卡信息 6、解析 7、双网卡的话记得注释以下内容、注…...

Android10: 动态隐藏导航栏和状态栏总结

&#xff08;1&#xff09;全屏相关设置 //&#xff08;1&#xff09;主题添加 <item name"android:windowFullscreen">true</item>//&#xff08;2&#xff09;setContentView之前添加 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCRE…...

终极Markdown编辑器rich-markdown-editor:React + Prosemirror强强联合

终极Markdown编辑器rich-markdown-editor&#xff1a;React Prosemirror强强联合 【免费下载链接】rich-markdown-editor The open source React and Prosemirror based markdown editor that powers Outline. Want to try it out? Create an account: 项目地址: https://g…...

Android开发者的USB摄像头避坑指南:从设备枚举到SurfaceView预览的完整流程

Android开发者实战&#xff1a;USB摄像头集成全流程与疑难解析 去年接手一个医疗设备项目时&#xff0c;我需要在Android平板上接入工业级USB摄像头。本以为三天能搞定&#xff0c;结果光是解决画面拉伸问题就耗了一周。这份踩坑经验总结&#xff0c;将带你系统掌握从设备枚举到…...

【数据结构】二叉树入门全解:从定义、性质到经典真题

一、先搞懂&#xff1a;什么是二叉树&#xff1f;二叉树&#xff08;Binary Tree&#xff09;是一种特殊的树形结构&#xff0c;定义非常清晰&#xff1a;它是由 n&#xff08;n≥0&#xff09; 个结点构成的有限集合&#xff0c;满足&#xff1a;空树&#xff1a;当 n0 时&…...

[论文分享] ICLR 2026 Oral GEPA:反思性提示词演化可以超越强化学习

摘要 大型语言模型&#xff08;LLMs&#xff09;正越来越多地通过强化学习&#xff08;RL&#xff09;方法&#xff08;如群体相对策略优化 GRPO&#xff09;来适应下游任务&#xff0c;而这类方法通常需要数千次尝试&#xff08;rollouts&#xff09;才能学习新任务。我们认为…...

Arduino嵌入式轻量日志库SimpleLogger设计与实践

1. 项目概述SimpleLogger 是一款专为 Arduino 平台设计的轻量级日志库&#xff0c;其核心设计哲学是“极简可用、零侵入、低资源占用”。在资源受限的微控制器&#xff08;如 ATmega328P、ESP32-S2、nRF52840 等&#xff09;上&#xff0c;传统日志框架&#xff08;如 ArduinoL…...

StreamIO:Arduino嵌入式统一I/O流与缓冲区抽象库

1. StreamIO 库概述StreamIO 是一个面向嵌入式 Arduino 生态的轻量级 I/O 抽象封装库&#xff0c;其核心设计目标是统一处理流式数据&#xff08;Stream&#xff09;与静态内存缓冲区&#xff08;array buffer&#xff09;的读写操作。在传统 Arduino 开发中&#xff0c;开发者…...

WordPress用Linux服务器还是Windows服务器更好?

对于绝大多数 WordPress 用户来说&#xff0c;Linux 服务器是更好的选择。 WordPress 本身是用 PHP 编写的&#xff0c;最初就是为 Linux 环境&#xff08;特别是 LAMP/LEMP 架构&#xff09;设计的。虽然它也可以在 Windows 上运行&#xff0c;但在性能、成本、生态支持和安全…...

实战揭秘:抖音直播弹幕抓取的三大技术突破与完整实现方案

实战揭秘&#xff1a;抖音直播弹幕抓取的三大技术突破与完整实现方案 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取&#xff08;2025最新版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher 在直播电商蓬勃发…...

保姆级教程:用Arduino IDE给你的ESP8266写个‘网络诊断’程序,一键排查连接问题

ESP8266网络诊断工具开发实战&#xff1a;从被动排错到主动分析 当你盯着串口监视器里不断滚动的"Connecting..."字样&#xff0c;而ESP8266始终无法连上WiFi时&#xff0c;是否想过——我们本可以做得比盲目重试更聪明&#xff1f;本文将带你开发一个会"思考&q…...

深入解析Xilinx FPGA中的IDDR与ODDR原语:从原理到实践

1. 认识FPGA中的DDR采样难题 在高速数据采集和传输领域&#xff0c;双倍数据速率&#xff08;DDR&#xff09;技术已经成为标配。想象一下你正在用AD9361这类射频收发器与FPGA通信&#xff0c;数据时钟频率轻松达到数百MHz。这时候如果还沿用传统的单沿采样&#xff0c;就像用单…...