TensorFlow数据读取

本文详细介绍了TensorFlow数据读取的三种方式,包括数据直接嵌入、使用占位符和异步IO的队列机制。重点讨论了使用Queue异步读取数据的流程,包括TextLineReader、WholeFileReader和TFRecordReader。此外,还阐述了TensorFlow标准数据格式TFRecord的压缩和空间优化优势。
摘要由CSDN通过智能技术生成

TensorFlow数据读取背后的通讯机制

tensorflow背后的通讯机制以及存储压缩都是基于Protobuf,包括某些定义,比如graph。Protobuf是开源的。下载地址:Protocol Buffers - Google’s data interchange format

TensorFlow数据IO三种方式

  1. Freload data constant 数据直接嵌入graph,由graph传入session中运行,在这种情况下数据必须是小数据,一个session只能执行一个graph,TensorFlow中的Graph是一个有向无环图(Directed acyclic graph)也就是在开始定义graph的时候就传入。一个session只能执行一个graph,如果把数据直接嵌入在graph里面,graph本身传给不同的devise也是通过压缩成Protobuf传出去的,用到devise的地方都是采取这样的方式传递。这样的话数据需要copy很多次,效率非常低,尽可能的不使用数据嵌入的方式,除非在constant相当少的情况下。

    
    import tensorflow as tf
    
    x = tf.constant([1,2,3], name = 'x')
    y = tf.constant([4,5,6], name = 'y')
    z = tf.add(x,y,name= 'z')
    
    with tf.Session() as sess:
    
        print(sess.run(z))

    运行结果:[5 7 9]

  2. Feeding placeholder fee_dict。由占位符代替数据,运行时填入数据。先定义好placeholder然后再传入数据,placeholder的优点是在graph里面并没有把数据给到,节点的唯一的意图就是为了提供数据供给的方法。placeholder节点被声明的时候是未初始化的,也不包含数据,如

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值