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

卷积神经网络|猫狗分类系列--导入kaggle猫狗数据集

解决任何真实问题的重要一步是获取数据,Kaggle提供了大量不同数据科学问题的竞赛。

图片

我们将从

https://www.kaggle.com/competitions/dogs-vs-cats/data

下载猫狗数据集,并对其进行一定的操作,以正确的导入到我们的计算机,为接下来的模型训练做准备。

数据集(带有标号的)包含25000张图片,猫狗各一半,图片格式如下:

类别.序号.jpg,比如

  • cat.1.jpg,cat.2.jpg,cat.3.jpg,....cat.12449.jpg

  • dog.1.jpg,dog.2.jpg,dog.3.jpg,.....dog.12499.jpg

共计25000张。

图片

直接将其导入计算机显然是不行的,我们必须对图片名进行处理,接着构建自己的Dataset类

首先对图片名进行处理:

import ospath="E:\\3-10\\source\\train\\"filenames=[name for name in os.listdir(path)]j=0k=0catList=[]dogList=[]for i,filename in enumerate(filenames):    src=path+filename    namelist=filename.split('.')    if namelist[0]=='cat':        j=j+1        dst=namelist[0]+str(j)+'.0'+'.'+namelist[2] #猫标签设置为0        catList.append(dst)#获得cat的图片名集合    else:        k=k+1        dst=namelist[0]+str(k)+'.1'+'.'+namelist[2] #狗标签设置为1        dogList.append(dst)#获得dog的图片名集合    dst=path+dst    os.rename(src,dst)

注:path为下载的数据集图片的路径

在这步操作后,cat和dog的图片名则变为了下列格式:

  • cat1.0.jpg,

  • cat2.0,jpg

  • cat3.0.jpg

  • ....

  • cat12500.0.jpg

  • dog1.1.jpg,

  • dog2.1.jpg

  • ....

  • dog12500.1.jpg

需要强调的是这里的cat1,dog1...,jpg格式仅仅是一个习惯,没有太多的含义,真正重要的是0,1,...,这是个标签,指明了这张图片的类别,并在构建Dataset类时发挥作用。0代表cat,而1代表dog。

同时,catList和dogList还分别存储了猫和狗的图片路径名程,就像这样。

  • ['cat1.0.jpg', 'cat2.0.jpg', 'cat3.0.jpg', 'cat4.0.jpg', 'cat5.0.jpg'...]

  • ['dog1.1.jpg', 'dog2.1.jpg', 'dog3.1.jpg', 'dog4.1.jpg', 'dog5.1.jpg'...]

之所以这样处理,是因为为了易于划分训练集和测试集

接着,实现自己的Dataset类​​​​​​​

import torch import os from torch.utils.data import Dataset from torchvision import transforms from PIL import Image import numpy as np 
class MyDataset(Dataset):     def __init__(self,path_file,namelists,transform=None):         self.path_file=path_file        self.imgs=namelists         self.transform=transform     def __len__(self):         return len(self.imgs)     def __getitem__(self, idx):         #get the image         img_path = os.path.join(self.path_file,self.imgs[idx])        image=Image.open(img_path)         image=image.resize((28,28))#修改图片大小,默认大小         if self.transform:             image = self.transform(image)         #get the label
        str1=self.imgs[idx].split('.')         label=eval(str1[1])         return image, labeltrain_data=MyDataset(path,catList[0:10000]+dogList[0:10000],transform=transforms.Compose([transforms.ToTensor(),                                                                                     transforms.Resize((224,224))]) ) test_data=MyDataset(path,catList[10000:12500]+dogList[10000:12500],transform=transforms.Compose([transforms.ToTensor(),                                                                                            transforms.Resize((224,224))]) )

训练集和测试集按8:2的比例划分

导入DataLoader:​​​​​​​

train_loader=torch.utils.data.DataLoader(train_data, batch_size=32, shuffle=True) test_loader=torch.utils.data.DataLoader(test_data, batch_size=32, shuffle=True)

测试:​​​​​​​

#测试len(train_data)20000
len(test_data)5000
imgs,labels=next(iter(train_loader))
imgs.size()torch.Size([32, 3, 224, 224])
labels.size()torch.Size([32])
labelstensor([0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1,        1, 0, 0, 0, 0, 1, 0, 0])

相关文章:

卷积神经网络|猫狗分类系列--导入kaggle猫狗数据集

解决任何真实问题的重要一步是获取数据,Kaggle提供了大量不同数据科学问题的竞赛。 我们将从 https://www.kaggle.com/competitions/dogs-vs-cats/data 下载猫狗数据集,并对其进行一定的操作,以正确的导入到我们的计算机,为接下…...

【linux 多线程并发】线程本地数据存储的两种方式,每个线程可以有同名全局私有数据,以及两种方式的性能分析

线程本地数据(TLS) ​专栏内容: 参天引擎内核架构 本专栏一起来聊聊参天引擎内核架构,以及如何实现多机的数据库节点的多读多写,与传统主备,MPP的区别,技术难点的分析,数据元数据同步,多主节点的…...

2401d,d导入C的问题

原文 D中是否可用仅C头文件库? 在C语言中,我需要这样做: #define STB_DS_IMPLEMENTATION #include "stb_ds.h"在包含h文件前,必须在单个C文件中定义. 在D中试过: enum STB_DS_IMPLEMENTATION 1; import stb_ds;但它不管用.有建议吗?也许使用中间C文件会工作 ,但…...

SpringCloud GateWay实现路由限流

目录 RequestRateLimiterGatewayFilterFactory令牌桶算法实现限流 RequestRateLimiterGatewayFilterFactory Spring Cloud Gateway 内置了一个限流功能的过滤器工厂,那就是RequestRateLimiterGatewayFilterFactory ,它使用 Redis 和 Lua 脚本实现令牌桶…...

打印日期c++

给出年份 y和一年中的第 d天,算出第 d天是几月几号。 输入格式 输入包含多组测试数据。 每组数据占一行,包含两个整数 y 和 d。 输出格式 每组数据输出一行一个结果,格式为 yyyy-mm-dd。 数据范围 输入最多包含 100 组数据, 1≤y≤3000, 1≤d…...

数据结构入门到入土——链表(1)

目录 一,顺序表表/ArrayList的缺陷 二,链表 三,链表的实现 四,与链表有关的题目练习(1) 1.删除链表中等于给定值 val 的所有节点 2.反转一个单链表 3.给定一个带有头结点 head 的非空单链表&#xf…...

MySQL C API的使用

MySQL C API的使用 介绍及使用 MySQL C API(也称为 MySQL Connector/C)是用于与 MySQL 数据库交互的 C 语言 API。它提供了一组函数和结构体,允许你在 C 程序中连接到 MySQL 数据库服务器,并执行查询、插入、更新等数据库操作。…...

JavaScript防御性编程

简单聊一下防御性编程,初衷是开发人员为了防止自己被裁员,而将代码编写为只有自己能看懂。如何只有自己能看懂?方法多种多样,但不能将简单问题复杂化,比如:编写一堆无效的逻辑关系,或将业务复杂…...

微信预约小程序制作指南:从小白到专家

在当今的数字时代,微信小程序已经成为了一种非常流行的应用方式。预约功能更是成为了许多小程序的核心功能之一。如果你也想为你的小程序添加预约功能,以下步骤将会对你有所帮助。 一、进入乔拓云网后台 乔拓云网是一个在线小程序开发平台,你…...

向量数据库:Milvus

特性 Milvus由Go(63.4%),Python(17.0%),C(16.6%),Shell(1.3%)等语言开发开发,支持python,go,java接口(C,Rust,c#等语言还在开发中),支持单机、集群部署,支持CPU、GPU运算。Milvus 中的所有搜索和查询操作都在内存中执行…...

亚马逊国际商品详情 API:获取特定商品详细信息的实践

随着电子商务的飞速发展,亚马逊作为全球最大的在线零售商之一,提供了丰富的商品详情 API,使得第三方开发者能够轻松地获取亚马逊网站上的商品信息。本文将介绍如何使用亚马逊国际商品详情 API(Amazon Product Advertising API&…...

MSB30M-ASEMI小贴片整流桥MSB30M

编辑:ll MSB30M-ASEMI小贴片整流桥MSB30M 型号:MSB30M 品牌:ASEMI 封装:UMSB-4 最大平均正向电流:3A 最大重复峰值反向电压:1000V 产品引线数量:4 产品内部芯片个数:4 产品…...

Redis启动方式

redis三种启动方式 1.直接启动 进入redis根目录,执行命令: #加上‘&’号使redis以后台程序方式运行 ./redis-server & 2.通过指定配置文件启动 可以为redis服务启动指定配置文件,例如配置为/etc/redis/6379.conf 进入redis根目录&#x…...

TEMU 新手小白必看!2024入驻流程/入驻类目/入驻资料等详细流程讲解

2023 TEMU 可谓是赚足眼球,流量持续上涨,2024年相信不少卖家们已经跃跃欲试,但大陆卖家如何入驻TEMU?哪些品类适合入驻?又有哪些入驻要求和资料?别急,今天东哥就一一给大家详细讲解,…...

【C语言】数组

一维数组的创建和初始化 数组是一组相同类型元素的集合。 数组的创建 //数组的创建方式:type_t arr_name [const_n];//type_t 是指数组的元素类型//const_n 是一个常量表达式,用来指定数组的大小数组创建的实例: 数组创建&#xff…...

常见测试技术都有哪些?

测试技术是用于评估系统或组件的方法,目的是发现它是否满足给定的要求。系统测试有助于识别缺口、错误,或与实际需求不同的任何类型的缺失需求。测试技术是测试团队根据给定的需求评估已开发软件所使用的最佳实践。这些技术可以确保产品或软件的整体质量…...

Spring事务控制

1.事务介绍 1.1什么是事务? 当你需要一次执行多条SQL语句时,可以使用事务。通俗一点说,如果这几条SQL语句全部执行成功,则才对数据库进行一次更新,如果有一条SQL语句执行失败,则这几条SQL语句全部不进行执…...

swaggerUI不好用,试试这个openapiUI?

title: swaggerUI不好用,试试这个openapiUI? date: 2024-01-08 categories: [tool] tags: [openapi,工具] description: 基于swaggger2, openapi3规范的UI文档 1.背景 由于长期使用 swaggerUI 工具,它的轻量风格个人觉得还是不错的,但是它…...

嵌入式物联网项目开发实战例程-STM32F103系列之外围器件代码

开发STM32F103很好的参考例程,轻松实现各类外围器件的开发。持续更新中,欢迎关注及收藏。 0001基于STM32F103单片机GPIO实现控制LED灯闪烁的程序代码.zip 0002基于STM32F103单片机GPIO实现按键KEY的检测程序代码.zip 0003基于STM32F103单片机GPIO实现外部…...

Docker Compose--部署SpringBoot项目--实战

原文网址:Docker Compose--部署SpringBoot项目--实战-CSDN博客 简介 本文用实战介绍Docker Compose部署SpringBoot项目。 ----------------------------------------------------------------------------------------------- 分享Java真实高频面试题&#xff0c…...

单电阻FOC算法实现永磁同步电机的调整步骤和设置

本文档介绍了使用 单电阻FOC 算法实现永磁同步电机(Permanent Magnet Synchronous Motor,PMSM)调整所需的步骤和设置。由于不同电机存在参数差异,因此需针对不同的电机和负载对该算法进行调整。该电机库已经在在落地扇和空净等风机…...

化学DS-1040 Tosylate 抑制剂 1335138-89-0科研用途

化合物1219962-49-8是一种小分子化合物,分子式为C15H25N3O4,相对分子质量为305.37。该化合物为白色至灰白色粉末,不溶于水,易溶于有机溶剂,如甲醇、乙醇等。 AT791是一种与细胞周期调控相关的蛋白激酶,参与…...

PaddlePaddle初使用

模型导出与预测 # -c 后面设置训练算法的yml配置文件 # -o 配置可选参数 # Global.pretrained_model 参数设置待转换的训练模型地址,不用添加文件后缀 .pdmodel,.pdopt或.pdparams。 # Global.save_inference_dir参数设置转换的模型将保存的地址。pytho…...

【FPGA】分享一些FPGA数字信号处理相关的书籍

在做FPGA工程师的这些年,买过好多书,也看过好多书,分享一下。 后续会慢慢的补充书评。 【FPGA】分享一些FPGA入门学习的书籍【FPGA】分享一些FPGA协同MATLAB开发的书籍 【FPGA】分享一些FPGA视频图像处理相关的书籍 【FPGA】分享一些FPGA高速…...

深度解析JavaScript面试热点:事件循环、上下文、箭头函数、变量作用域与ES6模块

JavaScript面试中经常涉及到事件循环、上下文、箭头函数、变量作用域以及ES6模块等核心概念。通过清晰的代码示例,我们深入讨论这些主题,揭示其中的关键细节。 事件循环(Event Loop) JavaScript开发者每天都与事件循环打交道&am…...

Javaweb之Mybatis的动态SQL的详细解析

3. Mybatis动态SQL 3.1 什么是动态SQL 在页面原型中,列表上方的条件是动态的,是可以不传递的,也可以只传递其中的1个或者2个或者全部。 而在我们刚才编写的SQL语句中,我们会看到,我们将三个条件直接写死了。 如果页面…...

物联网与智能家居:跨境电商与未来生活的融合

物联网(Internet of Things,IoT)和智能家居技术正迅速崛起,成为跨境电商领域的创新引擎。这两者的巧妙结合不仅为消费者提供更智能、便捷的生活方式,同时也为电商平台和制造商带来了全新的商机。本文将深入探讨物联网与…...

Java内存模型(JMM)是基于多线程的吗

Java内存模型(JMM)是基于多线程的吗 这个问题按我的思路转换了下,其实就是在问:为什么需要Java内存模型 总结起来可以由几个角度来看待「可见性」、「有序性」和「原子性」 面试官:今天想跟你聊聊Java内存模型&#…...

Linux离线安装MySQL(rpm)

目录 下载安装包安装MySQL检测安装结果服务启停MySQL用户设置 下载安装包 下载地址:https://downloads.mysql.com/archives/community/ 下载全量包如:(mysql-8.1.0-1.el7.x86_64.rpm-bundle.tar) 解压:tar -xzvf mysql-8.1.0-1.el7.x86_64.…...

用 Socket.D 替代原生 WebSocket 做前端开发

socket.d.js 是基于 websocket 包装的 socket.d 协议的实现。就是用 ws 传输数据,但功能更强大。 功能原生 websocketsocket.d说明listen有有监听消息send有有发消息sendAndRequest无有发消息并接收一个响应(类似于 http)sendAndSubscribe无…...

淘宝客做网站推广赚钱吗/互联网营销推广

在网络上给自己安个家,或许是不少人的愿望。这需要有两个前提条件,第一需要有个靠谱的免费空间,第二,如果想使用自己独立域名的话,需要自己申请一个域名,然后空间需要支持绑定独立域名。sourceforge.net提供…...

开发类似wordpress/seo分析网站

JVM推荐视频教程:10月最新Java虚拟机面试解析全集,带你征服大厂面试官!_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com前言Java 相比 C/C 最显著的特点便是引入了自动垃圾回收 (下文统一用 GC 指代自动垃圾回收),它解决了 C/C 最令…...

聊城公司做网站/网站注册地址查询

数字硬件建模SystemVerilog(四)-综合 综合编译器将实现细节添加到抽象RTL模型,合成编译器: 将RTL功能转换为等效功能的通用逻辑门。 将通用门映射到特定的ASIC或FPGA目标。 执行逻辑优化以满足时钟速度要求。 执行逻辑优化以满足面积和功率要求&#…...

衡阳市住房和城乡建设网站/备案域名查询

HBase简介HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的…...

付费阅读下载网站开发/百度推广官网网站

oracle段区块1.什么是Oracle? (1. What Is an Oracle?) A blockchain oracle is any device or entity that connects a deterministic blockchain with off-chain data.区块链Oracle是将确定性区块链与链下数据连接的任何设备或实体。 There is a lot to unpack …...

网站上的视频/哪些网站可以免费申请域名

A.这主要看你互斥锁锁的资源是那部分的,如果是进程内资源,则可以实现同一进程不同线程之间的互斥,而如果将共享内存作为互斥锁进行操作则可以实现不同进程之间的互斥。 B.这是必然的,加锁是为了防止数据的二义性 C.信号量同时使…...