1. https://www.cnblogs.com/WSX1994/p/10954925.html使用tfrecords创建自己数据集
    本节主要是采用矩阵读取方式
  1. 先来看一下我们的目录:
  1. dataset1 creat_dataset.py 属于同一目录 mergeImg1 mergeImg2 Dataset1的两子目录(两类为例子)目录中存储图像等文件
  1. 核心文件
    creat_dataset.py 文件如下
    #来生成训练集和测试集的矩阵
  2. import cv2 as cv
  3. import numpy as np
  4. import os
  5.  
  6. dataset_path = ["mergeImg1","mergeImg2"] #这里为了增加限制,只读取以下俩个(防止有其他文件夹 干扰)
  7. #有效的path
  8. def gain_data(path):
  9. train_data = [];train_label = []
  10. test_data = [];test_label = []
  11. category = 0
  12. for i in os.listdir(path): #dataset 目录下的两类
  13. if i in dataset_path: #读取指定的文件夹 因为会存在其他文件夹
  14. filepath = os.path.join(path,i) #目录下/子目录
  15. if os.path.isdir(filepath):
  16. for file in os.listdir(filepath): #目录下的文件
  17. filename = os.path.join(filepath,file)
  18. img = cv.imread(filename) #打开文件
  19. img = cv.resize(img,(160,160)) #将图片进行大小设置
  20. train_data.append(img)
  21. train_label.append(category) #存储对应标签
  22. category = category + 1 #存储类别变更 (0 , 1)
  23. data = np.array(train_data)
  24. label = train_label
  25. cv.destroyAllWindows()
  26. return data,label
  27.  
  28. #标签转化函数 (0,0,1,1) --> ([1,0],[1,0],[0,1],[0,1])
  29. def label_cov(train_label):
  30. result = []
  31. calss_num = len(set(train_label))
  32. label = [0] * calss_num
  33. for i in train_label:
  34. label[i-1] = 1
  35. result.append(label)
  36. label = [0] * calss_num
  37. result = np.array(result)
  38. return result
  39.  
  40. #将数据x 和标签y 进行随机排列(打乱) 注x和y 应该为矩阵类型
  41. def shuffle_data(x , y):
  42. num_example = x.shape[0]
  43. arr = np.arange(num_example)
  44. np.random.shuffle(arr)
  45. data_train = x[arr]
  46. label_train = y[arr]
  47. return data_train,label_train
  48.  
  49. def gain_data1(path): #对于数据集1 进行获取
  50. train_data,train_label = gain_data(os.path.join(path,"Dataset1"))
  51. lab = label_cov(train_label) #标签转换
  52. lab = np.array(lab)
  53. train_data, lab = shuffle_data(train_data, lab) #随机打乱
  54. return train_data,lab
  55.  
  56. def gain_data2(path): #对于数据集2 获取
  57. train_data,train_label = gain_data(os.path.join(path,"Dataset2"))
  58. lab = label_cov(train_label) #标签转换 keras中不需要 tf需要
  59. lab = np.array(lab)
  60. train_data, lab = shuffle_data(train_data, lab) #随机打乱
  61. return train_data,lab
  62.  
  63. 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. solr自动提示 - jquery ui autocomplete

    需求: 搜索框中 输入部分关键词之后,有下拉联想提示.选中提示,使用鼠标或者使用enter键,则触发搜索功能.没有选择搜索提示,使用部分输入关键词作为搜索,直接使用enter键也能触发搜索功能.整个过 ...

  2. Openssl ec命令

    一.简介 椭圆曲线密钥处理工具 二.语法 openssl ec [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-out filename] ...

  3. LinuxSystemProgramming-vi

    Basic VI

  4. CMDB小练习

    为什么要用CMDB? 因为公司之前统计资产信息用的是excel表格,随着业务的增加和信息的变更,这个表格变得越来越乱,所以我们就想着编写出一套自动管理资产信息的系统,实现自动管理资产信息 三种方案? ...

  5. 制作alipay-sdk-java包到本地仓库

    项目要用到支付宝的扫码支付,后台使用的maven 问了客服 官方目前没有 maven 的地址只能手动安装到本地了,如果建了maven 服务器也可以上传到服务器上 从支付宝官网上下载sdk 制作本地安装 ...

  6. error: failed to push some refs to 'https://git.oschina.net/bluede/TuShuGuanLi.g it'

    出现了这样的错,可以强制提交 git push -u origin master -f

  7. kcp源码走读

    kcp协议与tcp协议类似,是一种ARQ协议.他的优点在于比tcp的延迟更小30%-40%,但相应的会牺牲一部分的带宽,大该比tcp多浪费10%~20%.tcp的设计目标是增大网络利用率,而kcp的设 ...

  8. UVALive 7752 Free Figurines (瞎搞)

    题意:给定 n 个盒子,然后告诉你每个盒子在哪个盒子里,数值越大,盒子越大,给定你初态,和末态,问你最少要几步能完成,只有两种操作,一种是把一个盒子连同里面的小盒子放到一个空盒子里,另一种是把一个堆盒 ...

  9. 第05章 管理ElasticSearch

    本章内容 如何选择正确的目录实现,使得ElasticSearch能够以高效的方式访问底层I/O系统. 如何配置发现模块来避免潜在的问题. 如何配置网关模块以适应我们的需求. 恢复模块能带来什么,以及如 ...

  10. Linux删除(清空)正在运行的应用日志文件内容

    在测试环境定位问题时,如果发现日志文件内容太多或太大,有时需要删除该日志,如Tomcat,Nginx日志.以前每次都是先rm -rf ***.log,然后重启应用.直到后来发现了以下命令,原来可以不用 ...