前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >python h5文件读取_python读取整个txt文件

python h5文件读取_python读取整个txt文件

作者头像
全栈程序员站长
发布于 2022-10-03 03:53:03
发布于 2022-10-03 03:53:03
90300
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

这篇文章是一个工具类,用来辅助医学图像分割实战 unet实现(二) 4、数据存储 这一小节的内容。

2019/5/2 更新:HDF5DatasetWrite可以动态扩展储存大小

文件: HDF5DatasetGenerator.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- coding: utf-8 -*-
import h5py
import os
import numpy as np
class HDF5DatasetGenerator:
def __init__(self, dbPath, batchSize, preprocessors=None,
aug=None, binarize=True, classes=2):
self.batchSize = batchSize
self.preprocessors = preprocessors
self.aug = aug
self.binarize = binarize
self.classes = classes
self.db = h5py.File(dbPath)
self.numImages = self.db["images"].shape[0]
# self.numImages = total
print("total images:",self.numImages)
self.num_batches_per_epoch = int((self.numImages-1)/batchSize) + 1
def generator(self, shuffle=True, passes=np.inf):
epochs = 0
while epochs < passes:
shuffle_indices = np.arange(self.numImages) 
shuffle_indices = np.random.permutation(shuffle_indices)
for batch_num in range(self.num_batches_per_epoch):
start_index = batch_num * self.batchSize
end_index = min((batch_num + 1) * self.batchSize, self.numImages)
# h5py get item by index,参数为list,而且必须是增序
batch_indices = sorted(list(shuffle_indices[start_index:end_index]))
images = self.db["images"][batch_indices,:,:,:]
labels = self.db["masks"][batch_indices,:,:,:]
# if self.binarize:
# labels = np_utils.to_categorical(labels, self.classes)
if self.preprocessors is not None:
procImages = []
for image in images:
for p in self.preprocessors:
image = p.preprocess(image)
procImages.append(image)
images = np.array(procImages)
if self.aug is not None:
# 不知道意义何在?本身images就有batchsize个了
(images, labels) = next(self.aug.flow(images, labels,
batch_size=self.batchSize))
yield (images, labels)
epochs += 1
def close(self):
self.db.close()

文件: HDF5DatasetWriter.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- coding: utf-8 -*-
import h5py
import os
class HDF5DatasetWriter:
def __init__(self, image_dims, mask_dims, outputPath, bufSize=200):
""" Args: - bufSize: 当内存储存了bufSize个数据时,就需要flush到外存 """
if os.path.exists(outputPath):
raise ValueError("The supplied 'outputPath' already"
"exists and cannot be overwritten. Manually delete"
"the file before continuing", outputPath)
self.db = h5py.File(outputPath, "w")
self.data = self.db.create_dataset("images", image_dims, maxshape=(None,)+image_dims[1:], dtype="float")
self.masks = self.db.create_dataset("masks", mask_dims, maxshape=(None,)+mask_dims[1:], dtype="int")
self.dims = image_dims
self.bufSize = bufSize
self.buffer = { 
"data": [], "masks": []}
self.idx = 0
def add(self, rows, masks):
# extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
# 注意,用extend还有好处,添加的数据不会是之前list的引用!!
self.buffer["data"].extend(rows)
self.buffer["masks"].extend(masks)
print("len ",len(self.buffer["data"]))
if len(self.buffer["data"]) >= self.bufSize:
self.flush()
def flush(self):
i = self.idx + len(self.buffer["data"])
if i>self.data.shape[0]:
# 扩展大小的策略可以自定义
new_shape = (self.data.shape[0]*2,)+self.dims[1:]
print("resize to new_shape:",new_shape)
self.data.resize(new_shape)
self.masks.resize(new_shape)
self.data[self.idx:i,:,:,:] = self.buffer["data"]
self.masks[self.idx:i,:,:,:] = self.buffer["masks"]
print("h5py have writen %d data"%i)
self.idx = i
self.buffer = { 
"data": [], "masks": []}
def close(self):
if len(self.buffer["data"]) > 0:
self.flush()

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/197612.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月3日 下,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深度学习中超大规模数据集的处理
在机器学习项目中,如果使用的是比较小的数据集,数据集的处理上可以非常简单:加载每个单独的图像,对其进行预处理,然后输送给神经网络。但是,对于大规模数据集(例如ImageNet),我们需要创建一次只访问一部分数据集的数据生成器(比如mini batch),然后将小批量数据传递给网络。其实,这种方法在我们之前的示例中也有所涉及,在使用数据增强技术提升模型泛化能力一文中,我就介绍了通过数据增强技术批量扩充数据集,虽然那里并没有使用到超大规模的数据集。Keras提供的方法允许使用磁盘上的原始文件路径作为训练输入,而不必将整个数据集存储在内存中。
云水木石
2019/07/02
1.5K0
深度学习中超大规模数据集的处理
.h5文件的读取_python读写h5文件
HDF(Hierarchical Data Format)指一种为存储和处理大容量科学数据设计的文件格式及相应库文件。详见其官方介绍:https://support.hdfgroup.org/HDF5/ 。
全栈程序员站长
2022/09/30
2.8K0
.h5文件的读取_python读写h5文件
H5文件简介和使用
H5文件是层次数据格式第5代的版本(Hierarchical Data Format,HDF5),它是用于存储科学数据的一种文件格式和库文件。接触到这个文件格式也是因为上Coursera深度学习课程的时候,作业用到了。它是由美国超级计算与应用中心研发的文件格式,用以存储和组织大规模数据。目前由非营利组织HDF小组提供支持。
全栈程序员站长
2022/09/30
2.4K0
实战|手把手教你训练一个基于Keras的多标签图像分类器
原文链接:https://www.pyimagesearch.com/2018/05/07/multi-label-classification-with-keras/
kbsc13
2019/08/16
1.9K1
python读取图像数据的一些方法[通俗易懂]
工作和学习中设计一个神经网络中经常需要设计一个数据载入器。首先第一件事我们要根据我们的任务要求确定一个数据提供的方法。如我们是一个分类任务,我们就需要读取数据和数据本身对应的标签。
全栈程序员站长
2022/10/01
7190
python读取图像数据的一些方法[通俗易懂]
站在巨人的肩膀上:迁移学习
在上一篇文章《使用数据增强技术提升模型泛化能力》中,我们针对训练数据不足的问题,提出采用数据增强(data augmentation)技术,提升模型的准确率。最终结果是:在17flowers数据集上,我们将准确率从60%多增加到70%,取得了不错的效果。然而,对于一个商业应用来说,70%多的准确率还是有些拿不出手。我们还有更好的手段吗?
云水木石
2019/07/02
5510
站在巨人的肩膀上:迁移学习
斯坦福tensorflow教程-tensorflow 实现逻辑回归03_logreg_placeholder.py实验结果utils.py
03_logreg_placeholder.py 代码有详细的注释: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2018-06-05 17:00:43 # @Author : quincy # @Email :yanqiang@cyou-inc.com import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import numpy as np import tensorflo
致Great
2018/06/06
7250
TensorFlow应用实战 | 编写训练的python文件
一个错误的个人使用,因为我的TensorFlow版本较老。keras并没有被集成进来。
用户1332428
2018/07/30
6160
TensorFlow应用实战 | 编写训练的python文件
TensorFlow 高效编程
TensorFlow 和其他数字计算库(如 numpy)之间最明显的区别在于 TensorFlow 中操作的是符号。这是一个强大的功能,这保证了 TensorFlow 可以做很多其他库(例如 numpy)不能完成的事情(例如自动区分)。这可能也是它更复杂的原因。今天我们来一步步探秘 TensorFlow,并为更有效地使用 TensorFlow 提供了一些指导方针和最佳实践。
ApacheCN_飞龙
2022/12/02
1.6K0
TensorFlow 2.0 快速入门指南:第二部分
在本节中,我们将首先看到 TensorFlow 在监督机器学习中的许多应用,包括线性回归,逻辑回归和聚类。 然后,我们将研究无监督学习,特别是应用于数据压缩和去噪的自编码。
ApacheCN_飞龙
2023/04/23
5530
利用Tensorflow构建自己的物体识别模型(一)
利用Tensorflow训练搭建自己的物体训练模型,万里长征第一步,先安装tensorflow。
月小水长
2019/07/31
5870
利用Tensorflow构建自己的物体识别模型(一)
试试kaggle竞赛:辨别猫狗
在上一篇文章《深度学习中超大规模数据集的处理》中讲到采用HDF5文件处理大规模数据集。有朋友问到:HDF5文件是一次性读入内存中,然后通过键进行访问吗?答案当然不是,在前面的文章中也提到过,最后生成的train.hdf5文件高达30G,如果全部加载到内存,内存会撑爆。实际上,由于HDF5采用了特殊的文件格式,这样我们可以在一次读操作中加载一个批量(比如128)的图片,而不用一个个的读取。也就是说采用这种方式,只是减少了IO操作次数,另外加载的图片是RAW图像数据,减少了解码时间。
云水木石
2019/07/02
5640
试试kaggle竞赛:辨别猫狗
生成h5文件_h5实现文件下载
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/09/30
8570
yolo-world 源码解析(五)
ApacheCN_飞龙
2024/03/09
5040
【Keras】Keras使用进阶
通常用keras做分类任务的时候,一张图像往往只对应着一种类别,但是在实际的问题中,可能你需要预测出一张图像的多种属性。例如在pyimagesearch的《multi-label-classification-with-keras》这篇文章中提出了一个衣服数据集,整个数据集有两种属性,一种是颜色(blue, red, black),另一种是衣服的类型(dress, jeans, shirt) 。如假设one-hot-vector编码顺序是(blue, red, black, dress, jeans, shirt)则black jeans的 label就是[0,0,1,0,1,0]。
keloli
2019/08/12
1.2K0
H5文件读取_如何用电脑读取手机文件
调用的时候,先用DataLoader将数据装入 training_data_loader中
全栈程序员站长
2022/09/30
4970
轻松学Pytorch – 构建UNet实现道路裂纹检测
大家好,我又好久没有给大家更新这个系列了,但是我内心一直没有忘记要更新pytorch初学者系列文章,今天给大家分享一下Pytorch如何构建UNet网络并实现模型训练与测试,实现一个道路裂纹检测!
OpenCV学堂
2020/11/16
2.1K0
轻松学Pytorch – 构建UNet实现道路裂纹检测
h5文件简介_h5特性
H5文件是层次数据格式第5代的版本(Hierarchical Data Format,HDF5),它是用于存储科学数据的一种文件格式和库文件。由美国超级计算中心与应用中心研发的文件格式,用以存储和组织大规模数据.
全栈程序员站长
2022/09/30
3.7K0
h5文件简介_h5特性
文本分类实战(八)—— Transformer模型
  文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类。
西西嘛呦
2020/08/26
2K0
文本分类实战(八)—— Transformer模型
论文实践学习 - Deep Metric Learning via Lifted Structured Feature Embedding
利用 code/gen_splits.m 来创建 mat 格式的 train/test 数据集分割,主要修改的地方如下:
AIHGF
2019/02/18
7750
相关推荐
深度学习中超大规模数据集的处理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验