https://www.cnblogs.com/WSX1994/p/10954925.html使用tfrecords创建自己数据集
本节主要是采用矩阵读取方式
先来看一下我们的目录:
dataset1 和creat_dataset.py  属于同一目录       mergeImg1 和mergeImg2 为Dataset1的两子目录(两类为例子)目录中存储图像等文件
核心文件
creat_dataset.py 文件如下
#来生成训练集和测试集的矩阵
import cv2 as cv
import numpy as np
import os dataset_path = ["mergeImg1","mergeImg2"] #这里为了增加限制,只读取以下俩个(防止有其他文件夹 干扰)
#有效的path
def gain_data(path):
train_data = [];train_label = []
test_data = [];test_label = []
category = 0
for i in os.listdir(path): #dataset 目录下的两类
if i in dataset_path: #读取指定的文件夹 因为会存在其他文件夹
filepath = os.path.join(path,i) #目录下/子目录
if os.path.isdir(filepath):
for file in os.listdir(filepath): #目录下的文件
filename = os.path.join(filepath,file)
img = cv.imread(filename) #打开文件
img = cv.resize(img,(160,160)) #将图片进行大小设置
train_data.append(img)
train_label.append(category) #存储对应标签
category = category + 1 #存储类别变更 (0 , 1)
data = np.array(train_data)
label = train_label
cv.destroyAllWindows()
return data,label #标签转化函数 (0,0,1,1) --> ([1,0],[1,0],[0,1],[0,1])
def label_cov(train_label):
result = []
calss_num = len(set(train_label))
label = [0] * calss_num
for i in train_label:
label[i-1] = 1
result.append(label)
label = [0] * calss_num
result = np.array(result)
return result #将数据x 和标签y 进行随机排列(打乱) 注x和y 应该为矩阵类型
def shuffle_data(x , y):
num_example = x.shape[0]
arr = np.arange(num_example)
np.random.shuffle(arr)
data_train = x[arr]
label_train = y[arr]
return data_train,label_train def gain_data1(path): #对于数据集1 进行获取
train_data,train_label = gain_data(os.path.join(path,"Dataset1"))
lab = label_cov(train_label) #标签转换
lab = np.array(lab)
train_data, lab = shuffle_data(train_data, lab) #随机打乱
return train_data,lab def gain_data2(path): #对于数据集2 获取
train_data,train_label = gain_data(os.path.join(path,"Dataset2"))
lab = label_cov(train_label) #标签转换 keras中不需要 tf需要
lab = np.array(lab)
train_data, lab = shuffle_data(train_data, lab) #随机打乱
return train_data,lab a,b= gain_data1("目录") #a,b返回的就是我们需要的数据 可以直接传入神经网络中

如果大家有什么不明白的可以与我交流。 读取数据所使用的函数都十分简单。

深度学习(tensorflow) —— 自己数据集读取opencv的更多相关文章

  1. 深度学习-tensorflow学习笔记(2)-MNIST手写字体识别

    深度学习-tensorflow学习笔记(2)-MNIST手写字体识别超级详细版 这是tf入门的第一个例子.minst应该是内置的数据集. 前置知识在学习笔记(1)里面讲过了 这里直接上代码 # -*- ...

  2. 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识

    深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识 在tf第一个例子的时候需要很多预备知识. tf基本知识 香农熵 交叉熵代价函数cross-entropy 卷积神经网络 s ...

  3. 深度学习Tensorflow相关书籍推荐和PDF下载

    深度学习Tensorflow相关书籍推荐和PDF下载 baihualinxin关注 32018.03.28 10:46:16字数 481阅读 22,673 1.机器学习入门经典<统计学习方法&g ...

  4. AI学习---深度学习&TensorFlow安装

    深度学习   深度学习学习目标: 1. TensorFlow框架的使用 2. 数据读取(解决大数据下的IO操作) + 神经网络基础 3. 卷积神经网络的学习 + 验证码识别的案例   机器学习与深度学 ...

  5. 深度学习Tensorflow生产环境部署(上·环境准备篇)

    最近在研究Tensorflow Serving生产环境部署,尤其是在做服务器GPU环境部署时,遇到了不少坑.特意总结一下,当做前车之鉴. 1 系统背景 系统是ubuntu16.04 ubuntu@ub ...

  6. 深度学习---tensorflow简介

    个core可以有不同的代码路径.对于反向传播算法来说,基本计算就是矩阵向量乘法,对一个向量应用激活函数这样的向量化指令,而不像在传统的代码里会有很多if-else这样的逻辑判断,所以使用GPU加速非常 ...

  7. 吴裕雄--天生自然 神经网络人工智能项目:基于深度学习TENSORFLOW框架的图像分类与目标跟踪报告(续四)

    2. 神经网络的搭建以及迁移学习的测试 7.项目总结 通过本次水果图片卷积池化全连接试验分类项目的实践,我对卷积.池化.全连接等相关的理论的理解更加全面和清晰了.试验主要采用python高级编程语言的 ...

  8. 人工智能新手入门学习路线和学习资源合集(含AI综述/python/机器学习/深度学习/tensorflow)

    [说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] 1. 分享个人对于人工智能领域的算法综述:如果你想开始学习算法,不妨先了解人工 ...

  9. 深度学习tensorflow实战笔记(1)全连接神经网络(FCN)训练自己的数据(从txt文件中读取)

    1.准备数据 把数据放进txt文件中(数据量大的话,就写一段程序自己把数据自动的写入txt文件中,任何语言都能实现),数据之间用逗号隔开,最后一列标注数据的标签(用于分类),比如0,1.每一行表示一个 ...

随机推荐

  1. JAVA本地调用(JNI- java调用c)

    记录一下工作内容,对术语了解不多,暂且这样记着吧.  java调用c 一.写jni的步骤如下: 1.创建java类,定义接口函数,使用native修饰: 2.将java类编译成class: 3.将cl ...

  2. sql2008 安装提示重启失败

    [转] https://www.cnblogs.com/chenshaogang/p/4313022.html

  3. 爬虫常用Xpath和CSS3选择器对比

    爬虫常用Xpath和CSS3选择器对比 1. 简介 CSS是来配合HTML工作的,和Xpath对比起来,CSS选择器通常都比较短小,但是功能不够强大.CSS中的空白符' '和Xpath的'//'都表示 ...

  4. Java设计模式(3)——抽象工厂模式

    抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的.抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象. 一.产品族和产品等级结构 为 ...

  5. OBD Problem Vehicles

    This page contains a list of vehicles that are known to be non-compliant with OBD-II in one way or a ...

  6. SMTPAppender

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. http://logback.qos ...

  7. SecondaryNameNode中的“Inconsistent checkpoint fields”错误原因

    该错误原因,可能是因为没有设置好SecondaryNameNode上core-site.xml文件中的"hadoop.tmp.dir". 2014-04-17 11:42:18,1 ...

  8. 关于搜索elasticsearch的数据条数大于10000的坑 max_result_window的两种设置方式

    当用elasticsearch进行深度分页查询时的size-from大于10000的时候,就会报错“”, 官方推荐是scroll查询返回结果是无序的不满足业务需求,所以还是通过设置最大返回结果数来达到 ...

  9. Android开发环境包下载地址

    Android SDK Android NDK Android Studio 官方下载地址   (网上转来的) 如果下载速度很慢或者无法下载,有三种解决方法 1.忍耐. 2.使用P2SP下载工具,比如 ...

  10. php二维数组去除重复值

    <?php //二维数组 $test["aa"] = array("id"=>"17","name"=> ...