深度学习(tensorflow) —— 自己数据集读取opencv
- 先来看一下我们的目录:
- 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.每一行表示一个 ...
随机推荐
- solr自动提示 - jquery ui autocomplete
需求: 搜索框中 输入部分关键词之后,有下拉联想提示.选中提示,使用鼠标或者使用enter键,则触发搜索功能.没有选择搜索提示,使用部分输入关键词作为搜索,直接使用enter键也能触发搜索功能.整个过 ...
- Openssl ec命令
一.简介 椭圆曲线密钥处理工具 二.语法 openssl ec [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-out filename] ...
- LinuxSystemProgramming-vi
Basic VI
- CMDB小练习
为什么要用CMDB? 因为公司之前统计资产信息用的是excel表格,随着业务的增加和信息的变更,这个表格变得越来越乱,所以我们就想着编写出一套自动管理资产信息的系统,实现自动管理资产信息 三种方案? ...
- 制作alipay-sdk-java包到本地仓库
项目要用到支付宝的扫码支付,后台使用的maven 问了客服 官方目前没有 maven 的地址只能手动安装到本地了,如果建了maven 服务器也可以上传到服务器上 从支付宝官网上下载sdk 制作本地安装 ...
- error: failed to push some refs to 'https://git.oschina.net/bluede/TuShuGuanLi.g it'
出现了这样的错,可以强制提交 git push -u origin master -f
- kcp源码走读
kcp协议与tcp协议类似,是一种ARQ协议.他的优点在于比tcp的延迟更小30%-40%,但相应的会牺牲一部分的带宽,大该比tcp多浪费10%~20%.tcp的设计目标是增大网络利用率,而kcp的设 ...
- UVALive 7752 Free Figurines (瞎搞)
题意:给定 n 个盒子,然后告诉你每个盒子在哪个盒子里,数值越大,盒子越大,给定你初态,和末态,问你最少要几步能完成,只有两种操作,一种是把一个盒子连同里面的小盒子放到一个空盒子里,另一种是把一个堆盒 ...
- 第05章 管理ElasticSearch
本章内容 如何选择正确的目录实现,使得ElasticSearch能够以高效的方式访问底层I/O系统. 如何配置发现模块来避免潜在的问题. 如何配置网关模块以适应我们的需求. 恢复模块能带来什么,以及如 ...
- Linux删除(清空)正在运行的应用日志文件内容
在测试环境定位问题时,如果发现日志文件内容太多或太大,有时需要删除该日志,如Tomcat,Nginx日志.以前每次都是先rm -rf ***.log,然后重启应用.直到后来发现了以下命令,原来可以不用 ...