tensorflow使用h5py持久化数据集_tensorflow2.6对应哪个版本的h5py-程序员宅基地

技术标签: tensorflow  python  qt  计算机视觉  深度学习  

import cv2
#正则匹配使用:
import re
import os
#此库用于拷贝,删除,移动,复制以及解压缩
import shutil
import numpy as np
import h5py
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
#用于将普通标签转为独热向量
from tensorflow.keras.utils import to_categorical
import matplotlib.pyplot as plt
#如此读取图像,直接返回numpy.ndarray
#img=cv2.imdecode(np.fromfile(“C:/Users/104005162/Desktop/企业微信截图_20220212102256.png”,np.uint8),-1)
#print(img.shape)
##转换为bgr图片,注意此时是PNG图片,不能用矩阵直接转换!
##img=img[:,:,::-1]
##bgra
#img=cv2.cvtColor(img,cv2.COLOR_BGRA2RGB)
def readPictureByPath(path):
img=cv2.imdecode(np.fromfile(path,np.uint8),-1)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
#return np.expand_dims(img,0)
return img
#返回样本的分类序号:
def returnNumClass(path):
if “" not in path:
print(“文件路径非法”)
return None
#如果包含路径,提取出数字
else:
return re.findall("
(.*?).”,path)[0]
#该命令读取某文件夹下所有的文件名:
targetPath=“C:/Users/104005162/Desktop/实验文件夹”
path=“C:/Users/104005162/Desktop/实验数据”
#在路径下新建文件夹:
for i in range(4):
#如果待创建文件夹不存在,创建文件夹
if not os.path.exists(os.path.join(targetPath,str(i))):
os.makedirs(os.path.join(targetPath,str(i)))
else:
print(“待创建文件夹已存在”)
#标签
yLabel=[]
fullNameList=[]
listAllFiles=os.listdir(path)
for fileName in listAllFiles:
fullNameList.append(os.path.join(path,fileName))
#判断是否为文件夹
if os.path.isdir(fullNameList[-1]):
#排除最后一个元素
dirName=fullNameList.pop()
print(dirName+“是一个文件夹”)
#这种表达方式只能用于删除文件
#os.remove(dirName)
#此种表达方式可以用来删除文件夹
shutil.rmtree(dirName)
#跳过此次
continue
#制作对应的标签
yLabel.append(int(returnNumClass(fileName)))
#如果文件提取错误,不返回,只提示
if returnNumClass(fileName)==None:
print(“文件名提取路径失败”+fileName)
continue
#将该文件复制进指定的文件夹中:
else:
#这种方法必须是文件名到文件名
shutil.copyfile(os.path.join(path,fileName), os.path.join(os.path.join(targetPath,returnNumClass(fileName)),fileName))
#这种复制可以是文件名到文件夹名
#shutil.copy(os.path.join(path,fileName), os.path.join(targetPath,returnNumClass(fileName)))
#将y标签转换为独热向量:
#print(to_categorical(yLabel))
yLabel=to_categorical(yLabel)

#返回一个图像迭代器
#遍历fullnameList,读取其中的图片,转换为4维数组:
#以下这种转换方式,将对原先的三维数组,自动新增一个第一维:
allDataSets=[]
for image in fullNameList:
allDataSets.append(readPictureByPath(image))
dataForFlow=np.array(allDataSets)
#(157, 4)
print(yLabel.shape)
#(157, 28, 28, 3)
print(dataForFlow.shape)
#数据持久化:
with h5py.File(“myTextData”, ‘w’) as d:
d[‘x’] =dataForFlow
d[‘label’] = yLabel

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hh1357102/article/details/123419292

智能推荐

Tobii眼动仪系列软件安装与使用_tobii experience-程序员宅基地

文章浏览阅读1.3w次,点赞3次,收藏14次。Tobii眼动仪系列软件本文使用眼动仪:Tobii Eye Tracker 5Tobii Experience | Tobii Ghost软件下载地址Tobii Experience(用来校准)下载并安装Tobii Experience后:设置显示设备:把眼动仪上方的两根白色线和屏幕上的线对齐;选择要侦测的眼睛;改善校准效果:点击之后跟着屏幕上的提示,依次顶着屏幕上的小圆点直至破裂,完成校准。注意校准全程以及后续的体验都尽量不要移动身体位置。Tobii Ghost_tobii experience

asp.net生成html-程序员宅基地

文章浏览阅读1.1k次。http://community.csdn.net/Expert/topic/3855/3855187.xml?temp=.8432733_asp.net生成html

Collaborative Learning for Weakly Supervised Object Detection 算法笔记_collaborative learning-based network for weakly su-程序员宅基地

文章浏览阅读6.1k次。论文:Collaborative Learning forWeakly Supervised Object Detection 论文链接:https://arxiv.org/abs/1802.03531弱监督目标检测(weakly supervised object detection)是指不需要框标注,仅通过图像级标签就能做目标检测。这方面的研究出发点主要是框标注的成本太高,而图像级标签相..._collaborative learning-based network for weakly supervised remote sensing ob

c语言 扫雷游戏的设计-程序员宅基地

文章浏览阅读872次,点赞29次,收藏31次。一个扫雷游戏的思路,

mongoDB 持久化_mongodb持久化-程序员宅基地

文章浏览阅读2.6k次。mongoDB持久化_mongodb持久化

IDEA插件项目克隆下来后,如何在IDEA中导入?_idea2023 怎么将本地插件批量导入项目中-程序员宅基地

文章浏览阅读1k次。必要条件你的IDEA必须是ULTIMATE版本,只有该版本的支持插件开发安装了开发插件的的插件:Plugin Devkit安装PsiViewer(不必须,但建议)步骤说明打开Project Structure选择SDK没有这个SDK?NEW一个!然后选好JDK这样就可以了转到Modules,点击+号,选择New Module选择模块类型为IntelliJ Platform Plugin,然后Next选择模块路径,即项目路径选_idea2023 怎么将本地插件批量导入项目中

随便推点

计算机网络交换机原理,计算机网络__交换机工作原理-程序员宅基地

文章浏览阅读1.2k次。计算机网络交换机工作原理在前面了解到根据交换机在OSI参考模型中工作的协议层不同,将交换机分为二层交换机、三层交换机、四层交换机。交换机工作的协议层不同,其工作原理也不相同。下面我们将介绍各层交换机的工作原理。1.二层交换机工作原理二层交换机能够识别数据包中的MAC地址信息,然后根据MAC地址进行数据包的转发,并将这些MAC地址与对应的端口记录在内部的地址列表中。二层交换机的工作原理如下:当交换机..._计算机网络交换原理是什么

webgl学习笔记一-程序员宅基地

文章浏览阅读141次。2019独角兽企业重金招聘Python工程师标准>>> ..._webgl为什么清空画布

stm32CubeMX,配合Keil,使用HAL库(或标准库)方式进行串口通信_stm32cubemx和keil-程序员宅基地

文章浏览阅读3.4k次,点赞5次,收藏50次。今天我们学习STM32CubeMX串口的操作,以及HAL库串口的配置,我们会详细的讲解各个模块的使用和具体功能,并且基于HAL库实现Printf函数功能重定向,USART中断接收,本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用_stm32cubemx和keil

PE框架学习-程序员宅基地

文章浏览阅读4.7k次,点赞10次,收藏64次。PE开发基础:开发平台PowerEngine:开发新功能:业务逻辑处理:1、Transaction:交易2、Chain:链、责任链3、Command:命令4、Template:模板5、Action:动作PE交易处理流程:无论一个交易的发送渠道是HTTP还是TCP,最终针对每一个渠道的Adapter会将请求的Form(HTTP)或报文(TCP)转换成与渠道无关的Context..._powerengine dynamic web console

Vector集合的三种遍历方法_vector<string> 遍历-程序员宅基地

文章浏览阅读1.9k次。Vector一种老的动态数组,很多方法都用synchonized修饰,所以它是线程安全得,而一般集合是线程不安全的Vector集合存储元素的特特点 多个线程同时访问不会发生不确定的结果,但是它的效率会比较低,如果要考虑线程安全的话可以用它import java.util.*;/** * Vector集合存储字符串元素并遍历 * * @author Administrator..._vector 遍历

ElementUI框架中的el-checkbox复选框如何改其样式,使其变大?_el-checkbox样式修改-程序员宅基地

文章浏览阅读1.8k次。ElementUI框架中的el-checkbox复选框如何改其样式_el-checkbox样式修改