考虑到要是自己去做一个项目,那么第一步是如何把数据导入到代码中,何种形式呢?是否需要做预处理?官网中给的实例mnist,数据导入都是写好的模块,那么自己的数据呢?

  一、从文件中读取数据(CSV文件、二进制文件、图片或其他格式)

  读取文件,都需要一个阅读器reader和一个转换解码操作decode,不同格式的文件对应不同的接口API。

  1)CSV文件:用的文件读取器和解码器是 TextLineReader 和 decode_csv 。 下面代码来自TensorFlow官网,加了注释。

filename_queue = tf.train.string_input_producer(["file0.csv", "file1.csv"])
#["file0.csv", "file1.csv"]是文件名列表,tf.train.string_input_producer()用来生成文件名队列,有参数shuffle=True可执行乱序,num_epochs=None可设置文件名字符串的生成次数
#对于输入管道,输出文件名字符串到队列中
reader = tf.TextLineReader()#阅读器,个人感觉功能同Python的open()。
key, value = reader.read(filename_queue)#参数是文件名队列,返回一个tuple,key和value,每次返回阅读器的下一条记录(一行)。 # Default values, in case of empty columns. Also specifies the type of the
# decoded result.
record_defaults = [[1], [1], [1], [1], [1]] #定义解析的格式
col1, col2, col3, col4, col5 = tf.decode_csv(
value, record_defaults=record_defaults)
#将CSV解析为tensor,每列映射为一个tensor,返回一个tensor列表。
features = tf.concat(0, [col1, col2, col3, col4])
#0代表按行合并。参数1是在哪个维度合并,参数2是待合并的值。
with tf.Session() as sess:
# Start populating the filename queue.
coord = tf.train.Coordinator() #创建一个线程协调器
threads = tf.train.start_queue_runners(coord=coord) #启动Graph中所有队列的线程 for i in range(1200):
# Retrieve a single instance:
example, label = sess.run([features, col5])
#运行,获取样本和标签
coord.request_stop() #请求停止所有线程
coord.join(threads) #等待线程结束

  2)二进制文件:用的文件读取器和解码器是  tf.FixedLengthRecordReader 和 tf.decode_raw ,读取固定长度的文件。

  decode_raw操作可以将一个字符串转换为一个uint8的张量。

  3)标准TensorFlow格式:

  可以将任意的数据转换为TensorFlow所支持的格式, 这种方法可以使TensorFlow的数据集更容易与网络应用架构相匹配。方法就是使用TFRecords文件。

  写入数据后,通过修改 tf.train.Example 的Features,将 protocol buffer 序列化为一个字符串,再通过 tf.python_io.TFRecordWriter 将序列化的字符串写入 TFRecords文件中。使用tf.TFRecordReader和tf.parse_single_example解析器,可以从TFRecords文件中读取数据。这个parse_single_example操作可以将 protocol buffer 解析为张量。

  

  二、供给数据feed_dict参数

  定义了operation之后,使用sess.run()或tensor.eval()或op.run()时,通过参数feed_dict传递数据,该参数是和placeholder配套使用的。先声明一个占位符,比如x,y。然后在op中使用了x,y进行计算,等到op.run()时,op.run(feed_dict={x:x_batch,y:y_batch})即可。前提是x_batch和y_batch已知,已有数据。

TensorFlow中数据读取—如何载入样本的更多相关文章

  1. TensorFlow中数据读取之tfrecords

    关于Tensorflow读取数据,官网给出了三种方法: 供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码来供给数据. 从文件读取数据: 在TensorFlow ...

  2. tensorflow之数据读取探究(1)

    Tensorflow中之前主要用的数据读取方式主要有: 建立placeholder,然后使用feed_dict将数据feed进placeholder进行使用.使用这种方法十分灵活,可以一下子将所有数据 ...

  3. Tensorflow学习-数据读取

    Tensorflow数据读取方式主要包括以下三种 Preloaded data:预加载数据 Feeding: 通过Python代码读取或者产生数据,然后给后端 Reading from file: 通 ...

  4. 『TensorFlow』数据读取类_data.Dataset

    一.资料 参考原文: TensorFlow全新的数据读取方式:Dataset API入门教程 API接口简介: TensorFlow的数据集 二.背景 注意,在TensorFlow 1.3中,Data ...

  5. tensorflow之数据读取探究(2)

    tensorflow之tfrecord数据读取 Tensorflow关于TFRecord格式文件的处理.模型的训练的架构为: 1.获取文件列表.创建文件队列:http://blog.csdn.net/ ...

  6. 由浅入深之Tensorflow(3)----数据读取之TFRecords

    转载自http://blog.csdn.net/u012759136/article/details/52232266 原文作者github地址 概述 关于Tensorflow读取数据,官网给出了三种 ...

  7. 关于Tensorflow 的数据读取环节

    Tensorflow读取数据的一般方式有下面3种: preloaded直接创建变量:在tensorflow定义图的过程中,创建常量或变量来存储数据 feed:在运行程序时,通过feed_dict传入数 ...

  8. 机器学习: TensorFlow 的数据读取与TFRecords 格式

    最近学习tensorflow,发现其读取数据的方式看起来有些不同,所以又重新系统地看了一下文档,总得来说,tensorflow 有三种主流的数据读取方式: 1) 传送 (feeding): Pytho ...

  9. TensorFlow的数据读取机制

    一.tensorflow读取机制图解 首先需要思考的一个问题是,什么是数据读取?以图像数据为例,读取的过程可以用下图来表示 假设我们的硬盘中有一个图片数据集0001.jpg,0002.jpg,0003 ...

随机推荐

  1. flask对数据库的外键 主键

    近期一直在学flask框架,后悔当初没有好好学习数据库.一个外键的知识,真的是太....蓝瘦香菇 创建数据库 class Users(db.Model): __tablename__ = 'users ...

  2. c++11-17 模板核心知识(十五)—— 解析模板之依赖型类型名称与typename Dependent Names of Types

    模板名称的问题及解决 typename规则 C++20 typename 上篇文章c++11-17 模板核心知识(十四)-- 解析模板之依赖型模板名称 Dependent Names of Templ ...

  3. 学习笔记:斜率优化DP

    作为数学渣,先复习一下已知两点\((x_1, y_1)\), \((x_2, y_2)\),怎么求过两点的一次函数的斜率... 待定系数法代入 \(y = kx + b\) 有: \(x_1k + b ...

  4. DVWA各等级sql注入

    sql全等级注入 level:low <?php if( isset( $_REQUEST[ 'Submit' ] ) ) { //判断submit是否存在 // Get input $id = ...

  5. GaussDB(DWS)应用实践丨负载管理与作业排队处理方法

    摘要:本文用来总结一些GaussDB(DWS)在实际应用过程中,可能出现的各种作业排队的情况,以及出现排队时,我们应该怎么去判断是否正常,调整一些参数,让资源分配与负载管理更符合当前的业务:或者在作业 ...

  6. MySQL主从重新同步

    主从数据不一致,重新配置主从同步也是一种解决方法. 1.从库停止主从复制 stop slave; 2.对主库数据库加锁 flush tables with read lock; 3.备份主库数据 my ...

  7. html2canvas使用心得

    近两年做了几次微信H5活动的开发,为了达到传播分享的效果,通常最终都需要生成个性化的图片,供用户长按保存分享,在这里就把自己的一些使用心得记录下来,供其他小伙伴借鉴. 这里备注一下,我目前用的是  h ...

  8. 如何配置nginx达到只允许域名访问网址,禁止ip访问的效果

    需求:接入阿里云的waf对网站进行防护,但是如果直接通过IP地址访问网站即可绕过阿里云waf,于是希望禁止通过ip访问网站 修改nginx配置文件 在server段里插入如下内容即可 if ($hos ...

  9. JDK下载与安装

    Java有很多个版本,最新的版本会兼容之前的. 先附上下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downlo ...

  10. Java读取系统默认时区

    工作中,遇到一个Java读取默认时区的问题,后来看了openjdk的源码,大致整理一下过程 public class Test { public void test(){ TimeZone.getDe ...