当前位置: 首页 > 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
http://www.lryc.cn/news/105805.html

相关文章:

  • 华纳云:linux下磁盘管理与挂载硬盘方法是什么
  • ChatGPT + Stable Diffusion + 百度AI + MoviePy 实现文字生成视频,小说转视频,自媒体神器!(一)
  • linux strcpy/strncpy/sprintf内存溢出问题
  • Jmeter如何添加插件
  • flask---CBV使用和源码分析
  • Qt 实现压缩文件、文件夹和解压缩操作zip
  • 简单工厂模式VS策略模式
  • 【MySQL】触发器 (十二)
  • 听说 Spring Bean 的创建还有一条捷径?
  • 大数据课程E6——Flume的Processor
  • 实现邮箱管理之gmail邮箱、office365(Azure)邮箱之披荆斩棘问题一览
  • (AcWing)多重背包问题 I,II
  • 如何把几个视频合并在一起?视频合并方法分享
  • 【MyBatis】初学MyBatis
  • 深度学习训练营之DCGAN网络学习
  • 自定义MVC增删改查
  • RabbitMQ 教程 | 第2章 RabbitMQ 入门
  • 双网卡如何配置DNS?我是一个仅主机模式配置静态(static)IP、一个NET或桥接(dhcp获取)
  • Android10: 动态隐藏导航栏和状态栏总结
  • roop 视频换脸
  • Java类集框架(一)
  • Jsp+Ssh+Mysql实现的简单的企业物资信息管理系统项目源码附带视频指导运行教程
  • 【Spring】深究SpringBoot自动装配原理
  • 阿里云负载均衡SLB网络型NLB负载均衡架构性能详解
  • JavaScript学习 -- SM4算法应用实例
  • 【JVM】什么是双亲委派机制
  • 网络安全 Day24-select高级用法和多表连接
  • JUC并发编程之volatile详解
  • swing布局详解
  • el-table某一列嵌套使用el-popover,使用click触发,导致页面下拉框组件无法触发弹框关闭(解决办法)