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

动手学深度学习课程竞赛:Classify Leaves

课程地址:30 第二部分完结竞赛:图片分类【动手学深度学习v2】_哔哩哔哩_bilibili

竞赛地址:Classify Leaves | Kaggle

李沐老师官方总结:43 树叶分类竞赛技术总结【动手学深度学习v2】_哔哩哔哩_bilibili


[数据预处理及建立不同数据集]

import torch
import numpy as np
import pandas as pd
from torchvision import transforms
from PIL import Image
from torch import nn
from torch.nn import functional as F
from d2l import torch as d2l
from torch.utils.data import Dataset, DataLoader
# 读取train和test图片列表
path = '/home/NAS/HUIDA/YaqinJiang/my/chapter_convolutional-modern/classify-leaves/'
train_csv = pd.read_csv(path + 'train.csv')
test_csv = pd.read_csv(path + 'test.csv')
# 由于train图片列表的排列有顺序性,为了尽量训练得全面,要先进行随机打乱
train_csv = train_csv.sample(frac=1).reset_index(drop=True)
# 将tarin的label按类别编号,用于预测对应
# 先创建一个标签到索引的映射
labels = sorted(list(set(train_csv.iloc[:, 1])))
label_index = {label: index for index, label in enumerate(labels)}
# 然后创建一个索引到标签的映射
index_label = {v: k for k, v in label_index.items()}
# 创建Dataset,用于读取train、valid和test数据
class LeavesDataSet(Dataset):# 设置k,作为第k折def __init__(self, data_csv, mode='train', k=0):self.mode = modeself.k = kself.data_csv = data_csvself.data_len = len(data_csv.index)self.fold_size = self.data_len // 5# 所有的train数据,最后训练的时候用if mode == 'all':self.all_images = np.asarray(self.data_csv.iloc[:, 0])self.all_labels = np.asarray(self.data_csv.iloc[:, 1])self.image_names = self.all_images self.label_names = self.all_labelsself.trans = transforms.Compose([transforms.Resize((224, 224)),# train数据做数据增强transforms.RandomHorizontalFlip(p=0.5),transforms.ColorJitter(brightness=0.4, contrast=0.4, saturation=0.4),transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406],[0.229, 0.224, 0.225])])elif mode == 'train':# 第k折前后均为train数据self.train_images = np.asarray(pd.concat([self.data_csv.iloc[0:self.k*self.fold_size, 0],self.data_csv.iloc[(self.k+1)*self.fold_size:, 0]]))self.train_labels = np.asarray(pd.concat([self.data_csv.iloc[0:self.k*self.fold_size, 1],self.data_csv.iloc[(self.k+1)*self.fold_size:, 1]])) self.image_names = self.train_images self.label_names = self.train_labelsself.trans = transforms.Compose([

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • NI 和 Ettus Research USRP 设备之间有何区别?
  • Ant Design Vue 快速上手指南与常见问题排查
  • KEIL Stm32 bin文件生成的两种方法以及报错的处理
  • 视频生成新突破:内容-运动潜在扩散模型(CMD)
  • 解锁跨境电商FP独立站的两大关键痛点及解决方案
  • QT窗口在上下屏切换问题(RK3588)
  • unity的 Assembly definitions- asmdef文件
  • 【深度学习】过拟合
  • zdppy_cache Python的国产开源缓存框架
  • 前端手写源码系列(二)——手写call、apply、bind
  • Conda命令
  • 基于 Dots + GPU Instance 的大规模物体渲染
  • appium学习记录
  • ISP代理与住宅代理:主要区别?
  • ECMAScript 6 基础
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Druid 在有赞的实践
  • ES6 ...操作符
  • es6要点
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • JAVA并发编程--1.基础概念
  • java中具有继承关系的类及其对象初始化顺序
  • JS笔记四:作用域、变量(函数)提升
  • Sass Day-01
  • underscore源码剖析之整体架构
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 收藏好这篇,别再只说“数据劫持”了
  • 算法系列——算法入门之递归分而治之思想的实现
  • 无服务器化是企业 IT 架构的未来吗?
  • 在Unity中实现一个简单的消息管理器
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • #pragma once
  • #大学#套接字
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (1)STL算法之遍历容器
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (33)STM32——485实验笔记
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (第30天)二叉树阶段总结
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (一)SpringBoot3---尚硅谷总结
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)LINQ之路
  • (状压dp)uva 10817 Headmaster's Headache
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划