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. 【HDU5361】In Touch

    题意有n个人住在一条直线上,从左到右编号为1,2,3....n                                                                     ...

  2. ARGB_8888

    原文出处:http://www.cnblogs.com/and_he/archive/2012/12/22/argb.html A:透明度 R:红色 G:绿 B:蓝 Bitmap.Config ARG ...

  3. vim的vim-addons的问题

    最近急切想把vim变成IDE,这个过程的毕竟之路就是装插件,vim有自己的插件管理软件装起插件来相当方便,首先安装这个软件: sudo apt-get install vim-addon-manage ...

  4. 万能头文件#include<bits/stdc++.h>

    最近在打cf时赛后翻阅别人的代码总是会发现一个陌生而奇怪的头文件#include<bits/stdc++.h> 奇怪之处就在于基本上所有的代码只要用了这个头文件就不再写其他头文件了. 百度 ...

  5. RTX二次开发笔记2

    问题一:关于DLL文件的引用 在安装文件夹内 APIObject.dll==>RTXSAPI.dll 服务器API接口 RTXCAPI.DLL ==> 客户端API接口 问题二:RTX二次 ...

  6. 常见的移动端Web页面问题解决方案

    1.安卓浏览器看背景图片,有些设备会模糊. 用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢? 经过研究,是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率来显 ...

  7. Spring在代码中获取bean的几种方式(转)

    获取spring中bean的方式总结: 方法一:在初始化时保存ApplicationContext对象 ApplicationContext ac = new FileSystemXmlApplica ...

  8. js闭包原理与例子[转]

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.闭包原理: 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域 ...

  9. mongodb ---- findAndModify 写法

    db.coll.findAndModify({ query:{x:"ggg"}, update:{$set:{"x":"gggg"}}, f ...

  10. mongodb 更新操作

    db.aaaa.update({},{$push:{money:{$each:[8,9,10],$slice:-4}}}) db.aaaa.update({},{$addToSet:{money:{$ ...