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

pytorch collate_fn测试用例

collate_fn 函数用于处理数据加载器(DataLoader)中的一批数据。在PyTorch中使用 DataLoader 时,通过设置collate_fn,我们可以决定如何将多个样本数据整合到一起成为一个 batch。在某些情况下,该函数需要由用户自定义以满足特定需求。

import torch
from torch.utils.data import Dataset, DataLoader
import numpy as npclass MyDataset(Dataset):def __init__(self, imgs, labels):self.imgs = imgsself.labels = labelsdef __len__(self):return len(self.imgs)def __getitem__(self, idx):img = self.imgs[idx]out_img = img.astype(np.float32)out_img = out_img.transpose(2, 0, 1) #[3, 300, 150]h,w,c  -->>  c,h,wout_label = self.labels[idx] #[4, 5] or [2, 5]return out_img, out_label#if batchsize=3
#batch is list, [3]
#batch0 tuple2  (np[3, 300, 150], np[4, 5])
#batch1 tuple2  (np[3, 300, 150], np[2, 5])
#batch2 tuple2  (np[3, 300, 150], np[4, 5])
def my_collate_fn(batch):"""Custom collate fn for dealing with batches of images that have a differentnumber of associated object annotations (bounding boxes).Arguments:batch: (tuple) A tuple of tensor images and lists of annotationsReturn:A tuple containing:1) (tensor) batch of images stacked on their 0 dim2) (list of tensors) annotations for a given image are stacked on0 dim"""targets = []imgs = []for sample in batch:imgs.append(torch.FloatTensor(sample[0]))targets.append(torch.FloatTensor(sample[1]))imgs_out = torch.stack(imgs, 0) #[3, 3, 300, 150]return imgs_out, targetsimg_data = []
label_data = []nums = 34
H=300
W=150
for _ in range(nums):random_img = np.random.randint(low=0, high=255, size=(H, W, 3))nums_target = np.random.randint(low=0, high=10)random_xyxy_label = np.random.random((nums_target, 5))img_data.append(random_img)label_data.append(random_xyxy_label)dataset = MyDataset(img_data, label_data)
dataloader = DataLoader(dataset, batch_size=3, collate_fn=my_collate_fn)for cnt, (img, label) in enumerate(dataloader):print("==>>", cnt, ",  img shape=", img.shape)for i in range(len(label)):print("label shape=", label[i].shape)

打印如下:

==>> 0 ,  img shape= torch.Size([3, 3, 300, 150])
label shape= torch.Size([8, 5])
label shape= torch.Size([2, 5])
label shape= torch.Size([5, 5])
==>> 1 ,  img shape= torch.Size([3, 3, 300, 150])
label shape= torch.Size([3, 5])
label shape= torch.Size([8, 5])
label shape= torch.Size([5, 5])
==>> 2 ,  img shape= torch.Size([3, 3, 300, 150])
label shape= torch.Size([7, 5])
label shape= torch.Size([1, 5])
label shape= torch.Size([8, 5])

相关文章:

pytorch collate_fn测试用例

collate_fn 函数用于处理数据加载器(DataLoader)中的一批数据。在PyTorch中使用 DataLoader 时,通过设置collate_fn,我们可以决定如何将多个样本数据整合到一起成为一个 batch。在某些情况下,该函数需要由用户自定义以满足特定需求。 import …...

【qemu逃逸】HITB2017-babyqemu 2019数字经济-qemu

前言 由于本地环境问题,babyqemu 环境都没有起起,这里仅仅做记录,exp 可能不正确。 HITB2017-babyqemu 设备逆向 设备定位啥的就不说了,先看下实例结构体: 其中 dma_state 结构体如下: 这里看字段猜测…...

Docker Compose学习笔记

Docker Compose用来做什么? Docker Compose 是Docker官方的开源项目。 Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single …...

基于树 二叉树的回溯搜索算法(DPLL)

1)全称:Davis-Putnam-Logemann-Loveland 2)思想:基于树/二叉树的回溯搜索算法,主要基于两种策略。 单子句规则:如果一个CNF范式中存在单子句L(含有一个文字的子句),取L为…...

【嵌入式】适用于ESP32/ESP8266远程自动烧录工具

文章目录 介绍开始使用下载项目开启服务端开始远程烧录 后记 介绍 esp_remote_flash_tool 是一款基于 esptool.py 的远程自动烧录工具,支持 ESP32 和 ESP8266。 使用场景 基于 ESP-IDF 、ESP8266 NONO SDK、ESP8266 RTOS SDK 进行开发的项目项目代码存储在 Linux…...

服务器遭受攻击如何处理(记录排查)

本文的重点是介绍如何鉴别安全事件以及保护现场的方法,以确保服务器负责人能够在第一时间对安全攻击做出反应,并在最短时间内抵御攻击或减少攻击所带来的影响。 在服务器遭遇疑似安全事件时,通常可以从账号、进程、网络和日志四个主要方面进…...

分享81个工作总结PPT,总有一款适合您

分享81个工作总结PPT,总有一款适合您 PPT下载链接:https://pan.baidu.com/s/13hyrlZo2GhRoQjI-6z31-w?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易。知识付…...

什么是DITA?从百度的回答说起

▲ 搜索“大龙谈智能内容”关注GongZongHao▲ 什么是DITA? 把这个问题输入百度,获得以下回答: DITA 是“Darwin Information Typing Architecture”(达尔文信息类型化体系结构)的缩写,它是IBM 公司为OASIS 所支持…...

线扫相机DALSA软件开发套件有哪些

Win10和Win7系统完整SDK目录截图: Sapera Configuration 缓存与内存管理,以及通信端口配置工具,部分功能等效于Detection(查找相机)内的Settings。 Sapera Log Viewer 打开Log Viewer后会显示之前发生过的所有与Sapera LT软件有关的运行信息…...

Scala集合操作

1 集合简介 Scala 中拥有多种集合类型,主要分为可变的和不可变的集合两大类: 可变集合: 可以被修改。即可以更改,添加,删除集合中的元素; 不可变集合类:不能被修改。对集合执行更改,…...

SQL备忘--特殊状态“未知“以及“空值NULL“的判断

一、新逻辑状态:未知 对于大多数其他语言的逻辑判断,一般只有两种结果:真(TURE)或假(FALSE)但在SQL中,还会有第三种判断结果:未知(UNKNOWN),表示无法判断出真或者假。 未知状态会影响传统逻辑运算&#x…...

《Pytorch新手入门》第一节-认识Tensor

《Pytorch新手入门》第一节-认识Tensor 一、认识Tensor1.1 Tensor定义1.2 Tensor运算操作1.3 Tensor与numpy转换 参考《深度学习框架PyTorch:入门与实践_陈云(著)》 一、认识Tensor 1.1 Tensor定义 Tensor 是 PyTorch 中重要的数据结构,可认为是一个高…...

【JAVA学习笔记】55 - 集合-Map接口、HashMap类、HashTable类、Properties类、TreeMap类(难点)

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter14/src/com/yinhai/map_ Map接口 一、Map接口的特点(难点) 难点在于对Node和Entry和EntrySet的关系 注意:这里讲的是JDK8的Map接口特点 Map java 1) Map与Collect…...

Pytorch图像模型转ONNX后出现色偏问题

本篇记录一次从Pytorch图像处理模型转换成ONNX模型之后,在推理过程中出现了明显色偏问题的解决过程。 问题描述:原始pytorch模型推理正常,通过torch.onnx.export()函数转换成onnx之后,推理时出现了比较明显的颜色偏差。 原始模型…...

插值表达式 {{}}

前言 持续学习总结输出中,今天分享的是插值表达式 {{}} Vue插值表达式是一种Vue的模板语法,我们可以在模板中动态地用插值表达式渲染出Vue提供的数据绑定到视图中。插值表达式使用双大括号{{ }}将表达式包裹起来。 1.作用: 利用表达式进行…...

白雪公主

前言 #define 皇后 王后 在很久很久以前,有一个国王,由于王后难产致死,导致生下的孩子没母,由于缺爱,变的非常的刻薄 由于公主过于刻薄,以至于见到她的人都面色煞白感到空中飘雪 37C 的嘴怎能说出如此刻薄的话语。为了…...

宏观角度认识递归之合并两个有序链表

21. 合并两个有序链表 - 力扣(LeetCode) 依旧是利用宏观角度来看待问题,其中最主要的就是要找到重复的子问题; 题目中要求把两个有序链表进行合并,同时不能够创建新的节点,并返回链表的起始点:因…...

Leetcode-509 斐波那契数列

使用循环 class Solution {public int fib(int n) {if(n 0){return 0;}if(n 1){return 1;}int res 0;int pre1 1;int pre2 0;for(int i 2; i < n; i){res pre1 pre2;pre2 pre1;pre1 res;}return res;} }使用HashMap class Solution {private Map<Integer,Int…...

解密 docker 容器内 DNS 解析原理

背景 这几天在使用 docker 中&#xff0c;碰到了在容器中 DNS 解析的一些问题。故花些时间弄清了原理&#xff0c;写此文章分享。 1. docker run 命令启动的容器 以启动一个 busybox 容器为例&#xff1a; rootubuntu20:~# docker run -itd --name u1 busybox 63b59ca8aeac…...

故障诊断模型 | Maltab实现SVM支持向量机的故障诊断

效果一览 文章概述 故障诊断模型 | Maltab实现SVM支持向量机的故障诊断 模型描述 Chinese: Options:可用的选项即表示的涵义如下   -s svm类型:SVM设置类型(默认0)   0 – C-SVC   1 --v-SVC   2 – 一类SVM   3 – e -SVR   4 – v-SVR   -t 核函数类型:核函…...

别再傻傻分不清了!STM32定时器里Prescaler和ClockDivision到底有啥区别?

STM32定时器双分频机制深度解析&#xff1a;从Prescaler到ClockDivision的实战指南 引言&#xff1a;当电机转速突然失控时 那是一个加班的深夜&#xff0c;实验室里只有示波器的荧光在闪烁。我正调试一套基于STM32的直流电机控制系统&#xff0c;PWM波形突然出现诡异的抖动——…...

5个高效技巧:用LaTeX Beamer制作学术演示的专业呈现

5个高效技巧&#xff1a;用LaTeX Beamer制作学术演示的专业呈现 【免费下载链接】Latex-Beamer-Template 中文学术LaTeX Beamer模板 项目地址: https://gitcode.com/gh_mirrors/la/Latex-Beamer-Template 在学术汇报中&#xff0c;演示文稿的质量直接影响研究成果的传达…...

Circios机器人控制库:面向教学的Arduino语义化运动编程

1. 项目概述Circios Roboter-Steuerung 是一款面向基础教育场景的 Arduino 兼容机器人控制库&#xff0c;专为德国 Circios 教学机器人硬件平台设计。该库并非通用型工业级驱动框架&#xff0c;而是聚焦于“可理解性”与“教学友好性”双重目标&#xff1a;在保证底层硬件可精确…...

【熟练】客户端命令详解

3.1 run 命令 run命令主要用于运行一个大模型&#xff0c;命令格式是&#xff1a; ollama run MODEL[:Version] [PROMPT] [flags] 比如&#xff0c;运行通义千问命令&#xff1a; ollama run qwen2:0.5b [:Version] 可以理解成版本&#xff0c;而版本信息常常以大模型规模来命名…...

RTAB-Map在消防机器人中的应用:浓烟环境导航技术终极指南

RTAB-Map在消防机器人中的应用&#xff1a;浓烟环境导航技术终极指南 【免费下载链接】rtabmap RTAB-Map library and standalone application 项目地址: https://gitcode.com/gh_mirrors/rt/rtabmap RTAB-Map&#xff08;Real-Time Appearance-Based Mapping&#xff0…...

叠加百分比标签

Matlab&python绘制混淆矩阵求解绘图&#xff0c;带百分比的混淆矩阵&#xff0c;颜色多变风格多样。最近在模型评估的时候发现&#xff0c;带百分比的混淆矩阵比纯数字版本直观太多了。今天直接上代码&#xff0c;聊聊Matlab和Python两种实现方案&#xff0c;顺便分享几个配…...

全球UV打印机市场洞察:规模增长与竞争格局演变

QYResearch调研显示&#xff0c;2025年全球UV打印机市场规模约达15.16亿美元&#xff0c;预计2032年将攀升至21.51亿美元&#xff0c;2026 - 2032期间年复合增长率&#xff08;CAGR&#xff09;为5.2%。从细分市场看&#xff0c;平板式UV打印机在装饰装潢领域表现突出&#xff…...

ClawdBot保姆级教程:零基础掌握设备授权,安全使用本地AI

ClawdBot保姆级教程&#xff1a;零基础掌握设备授权&#xff0c;安全使用本地AI 1. ClawdBot简介&#xff1a;你的本地AI助手 ClawdBot是一个可以在个人设备上运行的AI助手应用&#xff0c;它使用vLLM作为后端模型引擎&#xff0c;提供强大的本地AI能力。与常见的云端AI服务不…...

AIGlasses OS Pro Java面试题解析:视觉相关算法实现

AIGlasses OS Pro Java面试题解析&#xff1a;视觉相关算法实现 最近有不少朋友在准备技术面试&#xff0c;特别是那些涉及智能硬件和视觉算法的岗位。我发现很多面试官喜欢问一些结合了实际产品场景的算法题&#xff0c;比如“如果让你为AIGlasses OS Pro这样的智能眼镜实现一…...

Maven 构建报错:无法连接私有仓库及依赖传输失败

错误信息翻译text从 http://192.168.1.238:8090/repository/group-maven/ 传输 org.postgresql:postgresql:pom:42.2.24 失败 该依赖已在本地仓库缓存&#xff0c;直到 repo2 的更新间隔结束或强制更新前&#xff0c;不会重新尝试解析。 原始错误&#xff1a;无法从 repo2 (htt…...