Kaggle猫狗分类Pytorch CNN

2023-11-18

介绍

猫狗分类来源于Kaggle上的一个入门竞赛。

https://www.kaggle.com/competitions/dogs-vs-cats-redux-kernels-edition/overview

代码及解释

首先,导入一系列的库。

import numpy as np
from PIL import Image
from pathlib import Path
import torch
from torch import nn
import torch.nn.functional as F
from torch.utils.data import Dataset, DataLoader, random_split
from torchvision import transforms
import matplotlib.pyplot as plt

这段代码主要是导入了一些Python库,包括:

  1. numpy:Python中常用的科学计算库,用于处理数组、矩阵等数值数据。
  2. PIL(Python Imaging Library):Python图像处理库,用于处理各种图像格式。
  3. pathlib:Python处理文件和目录路径的标准库,支持多平台。
  4. torch:PyTorch深度学习框架的核心库。
  5. nn:PyTorch中用于构建神经网络的模块。
  6. F(functional):PyTorch中用于创建自定义卷积层、激活函数等的函数。
  7. DataLoader:PyTorch中用于加载和批量处理数据的工具。
  8. transforms:PyTorch中对图像和数据进行预处理的工具。
  9. matplotlib:Python绘图库,用于绘制数据和图像。

这些库的导入是PyTorch实践项目中经常用到的基础操作,其中PIL、numpy和matplotlib主要用于读取和展示图像、transforms用于对图像进行数据增强,torch和nn则是构建和训练深度神经网络的核心。
而后,启用GPU加速。

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print("device: ", device)
get_label = lambda x: x.name.split('.')[0]

class get_dataset(Dataset):
    def __init__(self, root, transform=None):
        self.images = list(Path(root).glob('*.jpg'))
        self.transform = transform
    def __len__(self):
        return len(self.images)
    def __getitem__(self, idx):
        img = self.images[idx]
        label = get_label(img)
        label = 1 if label == 'dog' else 0
        if self.transform:
            img = self.transform(Image.open(img))
        return img, torch.tensor(label, dtype=torch.int64)

这段代码定义了一个类get_dataset,用于加载和预处理数据集。
在类的初始化函数中,root为数据集路径,transform为数据预处理函数。通过list和glob函数获取符合条件的文件名,即所有后缀为jpg的图片文件名,并将其转为列表self.images。同时记录transform函数,即数据预处理函数。
__len__函数返回数据集中的图片数量,__getitem__函数根据索引idx获取对应图片和标签。首先获取索引对应的图片img,并通过get_label函数获取该图片对应的标签。该函数将图片文件名以’.‘分割,并将第一个分割出来的字符串作为标签。如果标签等于’dog’,则将其转为数字1,否则转为数字0。
接着如果有定义transform函数,就将img通过transform函数进行数据预处理。最后返回处理后的图片和标签,其中标签用torch.tensor转为整型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kaggle猫狗分类Pytorch CNN 的相关文章

随机推荐

  • 使用Python构建强大的网络爬虫

    介绍 网络爬虫是从网站收集数据的强大技术 而Python是这项任务中最流行的语言之一 然而 构建一个强大的网络爬虫不仅仅涉及到获取网页并解析其HTML 在本文中 我们将为您介绍创建一个网络爬虫的过程 这个爬虫不仅可以获取和保存网页内容 还可
  • 【满分】【华为OD机试真题2023 JAVA&JS】字符串重新排序

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 字符串重新排序 知识点排序数组 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 给定一个字符串s s包含以空格分隔的若干个单词 请对s进行如下处理后输出 1 单词
  • ctfshow web171-174

    Web 171 打开发现以下内容 看到了一个查询语句 于是认真看了一下 拼接sql语句查找指定ID用户 sql select username password from user where username flag and id GE
  • shell脚本中$#、$*、$@、$?、$0-n等含义一次性搞明白!!!

    一 Shell脚本变量的含义 1 表示执行脚本传入参数的个数 2 表示执行脚本传入参数的列表 不包括 0 3 表示进程的id Shell本身的PID ProcessID 即脚本运行的当前 进程ID号 4 Shell最后运行的后台Proces
  • 了解少儿编程和机器人编程的区别

    最近少儿编程已经成了炽手可热的培训 不过很多家长也在网上看到有很多网站也提到了机器人编程 这就让很多家长纳闷了 都是编程少儿编程和机器人编程有什么区别呢 现在我们就一起和南京小码王少儿编程培训机构来看下吧 一 少儿编程和机器人编程是什么 机
  • 看天气WeatherCan V1.0 ---气象数据分析系统web版

    版权声明 本文为CSDN博主 老郭1 的原创文章 遵循CC 4 0 BY SA版权协议 转载请附上原文出处链接及本声明 原文链接 https blog csdn net HZGJF article details 104772394 Wea
  • 电脑睡眠,休眠,关闭硬盘的区别

    最近在设置电源选项是对电脑睡眠 休眠 关闭硬盘不太了解 就上网查了一下 睡眠是一种节能状态 睡眠可保存所有打开的文档和程序 当您希望再次开始工作时 可使计算机快速恢复全功率工作 通常在几秒钟之内 使计算机进入睡眠状态就像是暂停DVD 播放器
  • 支付宝转账有“后悔药”了 遇诈骗这样做可冻结资金

    在支付宝上转完账猛然意识到可能是骗子 怎么办 今后 可以 一键 撤回了 昨天 在2018网络安全生态峰会上 蚂蚁金服集团副总裁芮雄文宣布支付宝的延时到账升级为2 0 如果遭遇诈骗 只要延时转账还未到账 及时报警就能冻结交易 一旦警方下达止付
  • C++ primer Plus 第十三章复习题

    1 派生类从基类哪里继承了什么 成员数据 还有一半的成员函数 公有成员和保护成员是可见得 私有成员不可见 2 派生类不能从基类哪里继承什么 构造函数 析构函数 赋值运算符 还有友元函数 都不能继承 3 假设baseDMA operator
  • 大数据毕业设计 深度学习股票预测系统 - python lstm

    文章目录 0 前言 1 课题意义 1 1 股票预测主流方法 2 什么是LSTM 2 1 循环神经网络 2 1 LSTM诞生 2 如何用LSTM做股票预测 2 1 算法构建流程 2 2 部分代码 3 实现效果 3 1 数据 3 2 预测结果
  • 什么是高内聚,低耦合?

    高内聚 低耦合是一个老生常谈的话题 所以拿出来说一下 我们在看Linux的一些资料 或者是在面试 又或者跟一个比较牛的大佬讨论技术的时候 可能会听到这个概念 所以 什么是高内聚 低耦合呢 高内聚 我们指的是认识的一群人或者一些东西分成的一类
  • 第一次从零到有开发项目

    在达内培训中 我们有项目峰会的活动 身为项目组长我组织了我的组员们从零到有进行了一个类CSDN的博客网站开发 目录 项目介绍 项目页面 总结 项目介绍 Kun吧 Kun吧是一个类csdn的学习技术社区 在这里可以交流学习技术 分享学习日常
  • 第十一届蓝桥杯C/C++回文日期

    include
  • 程序员转行做什么工作比较好?

    作为程序员来说 其实程序员的发展之路有多种 你可以结合自己的实际情况去做出相应的选择 程序员最基本的发展路线就是 从普通程序员做到熟练的开发者 接下来就会有多种选择 你可以选择做高级开发工程师 也可以成为一个一线熟练的开发人员 或者你也可以
  • Yolo v7的最简TensorFlow实现

    Yolo v7去年推出之后 取得了很好的性能 作者也公布了基于Pytorch实现的源代码 在我之前的几篇博客当中 对代码进行了深入的解析 了解了Yolo v7的技术细节和实现机制 因为我一直是用的Tensorflow 因此也想尝试把代码移植
  • c#数据结构转c++指针

    C string转c char C 使用IntPtr类型接受Marshal StringToHGlobalAnsi分配的内存 string sno 12345 IntPtr strsno Marshal StringToHGlobalAns
  • c++基础:循环练习案例展示

    1 猜数字 题目 系统随机生成一个1到100的数字 玩家进行猜测 如果猜错 提示玩家数字过大或过小 如果猜对恭喜玩家胜利 并且退出游戏 代码 include
  • Portainer -- Docker可视化管理工具

    http blog csdn net A632189007 article details 78779920 https portainer io install html https portainer readthedocs io en
  • vue3 computed

    前言 import computed from vue let aa computed gt 传回调函数 let aa computed 传对象 返回的类似一个ref包装的响应式对象 如果值是基本数据类型 需要 value进行拆箱 一 常规
  • Kaggle猫狗分类Pytorch CNN

    介绍 猫狗分类来源于Kaggle上的一个入门竞赛 https www kaggle com competitions dogs vs cats redux kernels edition overview 代码及解释 首先 导入一系列的库