深度学习(tensorflow) —— 自己数据集读取opencv
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的更多相关文章
- 深度学习-tensorflow学习笔记(2)-MNIST手写字体识别
深度学习-tensorflow学习笔记(2)-MNIST手写字体识别超级详细版 这是tf入门的第一个例子.minst应该是内置的数据集. 前置知识在学习笔记(1)里面讲过了 这里直接上代码 # -*- ...
- 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识
深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识 在tf第一个例子的时候需要很多预备知识. tf基本知识 香农熵 交叉熵代价函数cross-entropy 卷积神经网络 s ...
- 深度学习Tensorflow相关书籍推荐和PDF下载
深度学习Tensorflow相关书籍推荐和PDF下载 baihualinxin关注 32018.03.28 10:46:16字数 481阅读 22,673 1.机器学习入门经典<统计学习方法&g ...
- AI学习---深度学习&TensorFlow安装
深度学习 深度学习学习目标: 1. TensorFlow框架的使用 2. 数据读取(解决大数据下的IO操作) + 神经网络基础 3. 卷积神经网络的学习 + 验证码识别的案例 机器学习与深度学 ...
- 深度学习Tensorflow生产环境部署(上·环境准备篇)
最近在研究Tensorflow Serving生产环境部署,尤其是在做服务器GPU环境部署时,遇到了不少坑.特意总结一下,当做前车之鉴. 1 系统背景 系统是ubuntu16.04 ubuntu@ub ...
- 深度学习---tensorflow简介
个core可以有不同的代码路径.对于反向传播算法来说,基本计算就是矩阵向量乘法,对一个向量应用激活函数这样的向量化指令,而不像在传统的代码里会有很多if-else这样的逻辑判断,所以使用GPU加速非常 ...
- 吴裕雄--天生自然 神经网络人工智能项目:基于深度学习TENSORFLOW框架的图像分类与目标跟踪报告(续四)
2. 神经网络的搭建以及迁移学习的测试 7.项目总结 通过本次水果图片卷积池化全连接试验分类项目的实践,我对卷积.池化.全连接等相关的理论的理解更加全面和清晰了.试验主要采用python高级编程语言的 ...
- 人工智能新手入门学习路线和学习资源合集(含AI综述/python/机器学习/深度学习/tensorflow)
[说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] 1. 分享个人对于人工智能领域的算法综述:如果你想开始学习算法,不妨先了解人工 ...
- 深度学习tensorflow实战笔记(1)全连接神经网络(FCN)训练自己的数据(从txt文件中读取)
1.准备数据 把数据放进txt文件中(数据量大的话,就写一段程序自己把数据自动的写入txt文件中,任何语言都能实现),数据之间用逗号隔开,最后一列标注数据的标签(用于分类),比如0,1.每一行表示一个 ...
随机推荐
- Spark 性能相关参数配置详解-任务调度篇
随着Spark的逐渐成熟完善, 越来越多的可配置参数被添加到Spark中来, 本文试图通过阐述这其中部分参数的工作原理和配置思路, 和大家一起探讨一下如何根据实际场合对Spark进行配置优化. 由于篇 ...
- 解剖Nginx·模块开发篇(5)解读内置非默认模块 ngx_http_stub_status_module
1 Background ngx_http_stub_status_module 是一个 Nginx 的内置 HTTP 模块,该模块可以提供 Nginx 的状态信息.默认情况下这个模块是不被编译进来的 ...
- Java-Properties文件读取工具类
import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configurat ...
- 636. Exclusive Time of Functions 进程的执行时间
[抄题]: Given the running logs of n functions that are executed in a nonpreemptive single threaded CPU ...
- 全新的css网站布局--Grid布局
Grid布局全新的css网站布局 CSS Grid 布局由两个核心组成部分是 wrapper(父元素)和 items(子元素). wrapper 是实际的 grid(网格),items 是 grid( ...
- CF 438E The Child and Binary Tree
BZOJ 3625 吐槽 BZOJ上至今没有卡过去,太慢了卡得我不敢交了…… 一件很奇怪的事情就是不管是本地还是自己上传数据到OJ测试都远远没有到达时限. 本题做法 设$f_i$表示权值为$i$的二叉 ...
- linux下安装或升级GCC4.8.2,以支持C++11标准[转]
在编译kenlm的时候需要安装gcc, 然后还需要安装g++. g++安装命令:sudo apt-get install g++ ----------------------以下为网上转载内容,加上自 ...
- 后台注册js代码的方法
Page.ClientScript.RegisterClientScriptBlock(JSUtil.CurrentPage.GetType(), Util.NewGuid(), @"< ...
- pymsql的简单实用方法
在进行本文以下内容之前需要注意: 1.你有一个MySQL数据库,并且已经启动. 2.你有可以连接该数据库的用户名和密码 3.你有一个有权限操作的database 连接数据库 #导入pymsql imp ...
- Jsp 的映射
Jsp 的映射 Jsp 的映射 Jsp最佳实践 不管是jsp还是Servlet,虽然都可以开发动态Web资源,但是这两门 技术的各自特点,在长期的软件实践中,人们逐渐的把servlet作为 web应用 ...
