tensorflow数据加载器

从入门到精通:玩转TensorFlow Datasets TensorFlow Datasets 提供了一种高效、便捷的方式来加载和处理数据,为机器学习项目节省了大量时间。推荐进一步阅读官方TensorFlow Datasets 文档以获取更多详细信息。 阅读详情

自己看的

import numpy as np
import os
from PIL import Image
import random
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

train_file = './data/train'
test_file = './data/test'

class Data:
        def __init__(self, batch_size, isTrain = True):
                self.batch_size = batch_size    # batch的大小
                self.classific = 9      # 9种分类
                self.isTrain = isTrain  # 训练
                self.ls_imgs_labels = self.get_imgs_labels()       # 获得全部的图片路径
                self.epoch_imgs, self.epoch_labels = self.get_epoch()   # 获得全部的图片内容

        def get_classific(self):
                return self.classific

        # 读取全部图片数据的路径
        def get_imgs_labels(self):
                ls_imgs = []
                cwd = os.getcwd()
                if self.isTrain:
                        folder = train_file
                        print("训练文件")
                else:
                        folder = test_file
                        print("测试文件")
                folder = os.path.normpath(folder)
                folder = os.path.join(cwd,folder)
                # 每个文件夹的图片里面的标签
                label = 0
                # 遍历每一个文件夹
                for files in os.listdir(folder):
                        if files == "airplane":
                                label = 0
                        elif files == "automobile":
                                label = 1
                        elif files == "bird":
                                label = 2
                        elif files == "cat":
                                label = 3
                        elif files == "deer":
                                label = 4
                        elif files == "dog":
                                label = 5
                        elif files == "horse":
                                label = 6
                        elif files == "ship":
                                label = 7
                        elif files == "truck":
                                label = 8
                        else:
                                print("没有这个种类 :",files)
                                return 
                        curr_folder = os.path.join(folder,files)
                        # print("当前处理图片 :",files,"标签 :",label)
                        # 每一张图片
                        for pic in os.listdir(curr_folder):
                                ls_pic = []
                                img_path = os.path.join(curr_folder,pic)
                                # img = Image.open(img_path)
                                # img_raw = img.tobytes()
                                # labels = [0]*self.classific
                                # labels[label] = 1
                                ls_pic.append(img_path)
                                ls_pic.append(label)
                                ls_imgs.append(ls_pic)
                print("全部图片记录完成    %d" % len(ls_imgs))
                return ls_imgs

        # 获得全部图片
        def get_epoch(self):
                print("begin load data")
                # 得到所有图片路径
                ls_imgs_labels = self.ls_imgs_labels

                imgs = []
                labels = []
                for name in ls_imgs_labels:
                        img = Image.open(name[0])
                        img = np.asarray(img) / 255.0
                        imgs.append(img)
                        label = [0] * self.classific
                        label[name[1]] = 1
                        labels.append(label)
                print("data load successful")
                return imgs, labels

        # 从epoch里面选择batch个图片
        def get_epoch_batch(self):
                length = len(self.epoch_labels)
                curr_imgs = []
                curr_labels = []
                count = 0
                while(count < self.batch_size):
                        begin = int(random.random() * length)
                        curr_imgs.append(self.epoch_imgs[begin])
                        curr_labels.append(self.epoch_labels[begin])
                        count = count + 1
                return curr_imgs, curr_labels

        # 获得batch_size个图
        def get_batch(self):
                # 从一个随机数开始
                length = len(self.ls_imgs_labels)
                # 保存需要得到的图片名
                curr_img_name = []
                count = 0
                while(count < self.batch_size):
                        begin = int(random.random() * length)
                        curr_img_name.append(self.ls_imgs_labels[begin])
                        count = count + 1
                
                imgs = []
                labels = []
                for name in curr_img_name:
                        img = Image.open(name[0])
                        img = np.asarray(img) / 255.0
                        imgs.append(img)
                        label = [0]*self.classific
                        label[name[1]] = 1
                        labels.append(label)
                        # print(name)
                return imgs,labels

 

TensorFlow工业级数据加载实战:从Sequence原理到百万级数据高效处理架构设计 始终实现完整的数据验证方法对内存使用设置硬性限制实现可视化调试接口添加数据完整性检查记录数据加载性能指标。 阅读详情

相关推荐

Tensorflow实现多GPU并行方式

今天小编就为大家分享一篇Tensorflow实现多GPU并行方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

8月10日TensorFlow学习笔记——TensorFlow 数据类型、创建、索引与切片、维度变换、前向传播

本文为8月10日TensorFlow学习笔记,分为十个章节: - Numpy 回归问题实战; - 手写数字识别; - 数据类型; - 创建 Tensor; - 常见维度; - 索引与切片; - 维度变换; - Broadcasting; - 数学运算; - 前向传播。 ...

Ashen_0nee的博客 1163

Allegro 16.6 高级技巧实战:用Region规则和动态间距搞定高密度连接器布局布线

本文深入探讨了Allegro 16.6在高密度连接器布局布线中的高级技巧,重点介绍了Region规则和动态间距属性的应用。通过局部规则覆盖和分层控制,解决0.5mm以下引脚间距的布线难题,提升PCB设计效率和质量。

weixin_30352645的博客 439

【神经网络学习日记(5)】数据加载器(DataLoader)的调用

神经网络的学习路上,不可避免的要使用DataLoader(数据加载器),本文介绍了数据加载器的作用和调用的代码

Spark_lr的博客 1646

智能枕头

睡觉和吃饭是一样重要的,一个人想要健康的体魄,不仅要饮食得当,更需要有一个好的睡眠质量。随着人们生活品质的提高,人们对于睡眠的要求越来越高,那么就非常需要一款舒适的枕头。为了适应市场的需求,我爱物联网推出了智能枕头。因为智能枕头可以给头部及颈椎一个良好的承托力,舒适、柔软、放松,让人更好的进入睡眠。 目录 一、智能枕头方案介绍 二、智能枕头的优点 三、智能枕头功能介绍 四、智能枕头APP开发 五、...

6108我爱物联网方案开发优快云博客 3659

EverOS:为AI智能体构建长期记忆系统的完整指南

长期记忆是AI智能体实现持续学习和自我演进的核心能力,它通过结构化存储和关联检索历史交互信息,使智能体能够跨越单次对话的局限。其技术原理通常涉及向量数据库、记忆提取算法和知识图谱等组件,用于对非结构化对话内容进行编码、组织和索引。这一能力的技术价值在于显著提升了智能体的个性化服务水平、任务完成连贯性以及从经验中学习的能力,是实现真正“智能”伙伴的关键。在应用场景上,长期记忆系统广泛应用于个性化聊天伴侣、持续学习的编程助手、游戏NPC角色塑造以及客户服务机器人等领域。本文以EverOS为例,深入解析了其提供的

weixin_28679635的博客 449

Pytorch ----- 数据集 (dataset) 数据加载器 (dataloader) num_workeres工作原理 及调整方法 ~~学习笔记

数据集 (dataset): 应该支持索引取数据 数据加载器 (dataloader):主要用于拿出mini_batch 前几节使用数据直接将数据用文件加载,然后将所有数据都放进去。像这样。。。。。。 所有数据都放进去 叫batch。可以最大化向量计算优势(并行),提高计算速度。 只用一个样本, 随机梯度下降,帮助克服鞍点问题。但训练时间过长 常用Mini_batch 均衡训练时间和性能的需求。 Mini-batch 循环使用: 嵌套循环,外层循环次数控制,内层每一次执行一个Mini_batch。每一

深度不学习!!的博客 4347

ZYNQ GP总线实现PS与PL交互

3,完成 ZYNQ7 Processing System 的配置更改后,回到 Diagram 界面中,可以看到新出现了名为 M_AXI_GP0_ACLK、M_AXI_GP0 和 FCLK_CLK0 的接口,下面我们要对这些接口进行连接或引出。此处的偏移量,AXI的相邻寄存器偏移量相差4个字节,默认slv_reg0的偏移量是0,可以推导出slv_reg1,slv_reg2的偏移量分别为4和8,这里只用到了slv_reg0,所以偏移量为0。当然了,窗口数量的增加,势必会使得单个窗口的采样深度变小。

wangjie36的博客 7094

DataLoader的使用

import torchvision from torch.utils.data import DataLoader from torch.utils.tensorboard import SummaryWriter # 准备测试集 test_data = torchvision.datasets.CIFAR10("./dataset", train=False, transform=torchvision.transforms.ToTensor()) # batch_size为批量大小(即每次取四张图片

weixin_43328054的博客 341

13、混合系统的离散与连续交互

本文详细探讨了混合系统中离散事件与连续动态的交互机制,涵盖了建模方法、分析技术、设计挑战以及多种控制策略。通过具体案例研究和操作语义的定义,展示了混合系统在制造业、交通系统、机器人技术和过程控制等领域的广泛应用。文章还介绍了实验仿真、稳定性研究及优化方法,旨在帮助读者全面理解混合系统的设计与控制要点,并为未来智能化和自适应混合系统的发展提供了展望。

5f4d3s2a1q的博客 127

【AutoSAR】【BootLoader】AutoSAR Bootloader 原理与流程

目录 一、HIS规范 二、BOOTLOADER软件架构 三、烧写流程 一、HIS规范 国外整车厂意识到在线刷新ECU的重要性,由奥迪公司、宝马公司、戴姆勒公司、保时捷公司、大众公司成立一个委员会,名为HIS委员会,专门负责帮助汽车制造商掌握微处理器控制单元软件和质量保证领域的原理和方法; HIS Bootloader的主要功能是通过标准的通信接口对ECU进行再编程 。 HIS Bootloader的软件设计基于AUTOSAR体系架构、ISO14229、ISO15765-2、HI...

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 5247

PyTorch----数据加载器

什么是数据加载器? 深度学习是由数据支撑起来的,所以我们一般在做深度学习的时候往往伴随着大量、复杂的数据。如果把所有的数据全部加载到内存上,容易把电脑的内存“撑爆”,所以要分批次一点点加载数据 每一种深度学习的框架都有自己所规定的数据格式,数据加载器就有了必要的作用 数据加载器就是把大量的数据,分批次加载和处理成框架所需要的数据格式 数据分批次加载 使用PyTorch内置的模块 torch.utils.data.DataLoader()数据加载器: 参数 dataset:数据集 batch_size

bjsyc123456的博客 2791

【文献笔记】CVPR 2023|Attention-Based Point Cloud Edge Sampling

优点能够有效采出点云数据的边缘点分类任务性能优越不足没有设计出一个更好的上采样方法,导致分割任务的性能略低只考虑了边缘特征,没有利用其他几何特征。

m0_55908255的博客 319

【深度学习pytorch-19】数据加载器

数据加载器是深度学习中不可或缺的组件,尤其是对于处理大规模数据集时。它不仅负责将数据分批加载,还能提供打乱、并行加载、数据增强等功能,确保模型训练的效率和效果。PyTorch 和 TensorFlow 都提供了高效的数据加载器,支持自定义功能以满足不同任务的需求。

m0_69378371的博客 1141

打造AI智能体员工,我用扣子复刻了华与华、奥美和金枪大叔

这事说穿了,就是你用多个AI智能体,分别扮演专业角色,构成一支能力互补、各司其职的“数字团队”。每个智能体,都有明确的角色设定、任务边界和接口形式。它不再是一个泛泛的ChatGPT,而是你手下的“品牌顾问”、“策略专家”、“文案大神”、“短视频导演”、“运营总监”。简单来说,你不再是雇一个人,而是养一群机器人打工——24小时不摸鱼,不请假,不离职。如果你是个人创业者、内容创作者、培训机构、中小企业主,其实都可以尝试构建属于你自己的“AI虚拟员工矩阵”。

互联网架构师笔记 1498

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

从零到可运行:手把手教你用Python为NUS-WIDE数据集构建PyTorch/TensorFlow数据加载器

本文详细指导如何使用Python为NUS-WIDE数据集构建PyTorch/TensorFlow数据加载器,涵盖文件解析、多模态特征封装和工业级异常处理。重点解决图片损坏、内存溢出等实际问题,提供从零到可运行的完整解决方案,助力计算机视觉项目高效开发。

weixin_28362173的博客 372

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

TensorFlow 2.0 移动姿态估计:轻松实现移动端姿态识别

???? TensorFlow 2.0 移动姿态估计:轻松实现移动端姿态识别 项目介绍 Mobile Pose Estimation for TensorFlow 2.0 是一个基于 TensorFlow 2.0 和 Keras API 实现的移动端姿态估计项目。该项目源自 edvardHua/PoseEstimationForMobile,并在原项目重新开放后独立维护。目前,该项目已成功实现基于 Ho...

gitblog_00005的博客 1062

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

DeepChem手册3.9数据

3.9数据 DeepChem的dc.data提供处理数据的APIs。 如果你的数据存贮于CSV和SDF文件,你可以使用数据加载器(Data Loaders)。数据加载器读取数据,并将数据转换成特征(如,SMILES到ECFP),并将特征保存到数据集类。如果你的数据是pthon对象,如Numpy数组或Pandas数据框,你可以直接使用Datasets。 Contents Datasets – NumpyDataset – DiskDataset – ImageDataset Data ..

lishaoan77的专栏 854

Petastorm性能基准测试:比较不同配置下的数据读取效率

Petastorm是一个强大的开源库,能够从Apache Parquet格式的数据集中实现深度学习模型的单机或分布式训练和评估。它支持TensorFlow、PyTorch和PySpark等机器学习框架,并且可以通过纯Python代码使用。本文将深入探讨Petastorm的性能基准测试,帮助用户了解不同配置下的数据读取效率,从而优化模型训练流程。 ## 为什么性能基准测试对Petastorm至关重

gitblog_00295的博客 850

data_loader返回的每个batch的数据大小是怎么计算得到的?

data_loader返回的每个batch的数据大小是怎么计算得到的?

水w的博客 1935

deeplearning-models自定义数据集指南:CelebA到QuickDraw全解析

想要在深度学习项目中高效处理自定义数据集吗?deeplearning-models项目提供了完整的自定义数据集处理解决方案,从CelebA人脸图像到QuickDraw涂鸦数据集,让你轻松驾驭各类数据格式。🎯 ## 为什么选择deeplearning-models处理自定义数据集? **deeplearning-models**是一个包含各种深度学习架构、模型和技巧的集合,特别针对PyTorc

gitblog_00271的博客 993

CLEVR数据集实战:如何用Python快速搭建视觉推理测试环境(附代码)

本文详细介绍了如何使用Python快速搭建基于CLEVR数据集的视觉推理测试环境,涵盖环境配置、数据集获取、PyTorch和TensorFlow双框架实现以及基准模型测试。通过实战代码示例,帮助开发者高效解决视觉推理任务中的常见问题,提升模型性能。

weixin_30642561的博客 366

TensorFlow2.0 从零实现YoloV3检测网络一

TensorFlow2.0 从零实现YoloV3检测网络 在正式开始教程之前,需要强调一下,这不仅仅是一篇教你从零实现一个yolov3检测器的教程,同时也是一个最新最详尽比较权威中肯的TensorFlow2.0教程(我们会包含从dataloader到基础keras api网络搭建的所有过程). 同时欢迎大家来我们的论坛探讨AI问题: ft.manaai.cn, 同时也欢迎大家支持一下我们做的AI市...

luodoudoudou的博客 9232

TensorFlow 2语义分割预处理关键:CityScapes中resize插值选型与对齐

语义分割不同于图像分类,其逐像素预测特性要求预处理必须严格保边、抗混叠、空间一致。resize作为数据流首环,直接影响模型对车道线、行人等边缘敏感类别的感知能力;双线性插值虽高效,却会平滑高频细节,导致mIoU下降;而bicubic与area方法在锐度保持和抗混叠方面更具优势。技术价值在于规避隐性精度损失——实测显示,仅切换插值方式即可提升mIoU达2.4个百分点。典型应用场景包括自动驾驶感知、城市场景理解及医疗影像分割,尤其适用于基于Unet架构在CityScapes等高精度评估协议数据集上的工程落地。本

weixin_29051193的博客 122

Tensorflow入门学习(网络八股扩展)

自制数据集,解决本领域应用 import tensorflow as tf from PIL import Image import numpy as np import os train_path = './mnist_image_label/mnist_train_jpg_60000/' train_txt = './mnist_image_label/mnist_train_jpg_60000.txt' x_train_savepath = './mnist_image_labe...

qq_40533899的博客 500
上一篇: 利用深度图使用3d-3dICP估计位姿
下一篇: 电话号码的字母组合
rdc01234
博客等级 码龄9年 10粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值