读取数据

数据读取

  • TensorFlow的数据供给机制允许你在TensorFlow运算图中将数据注入到任一张量中通过给run()或者eval()函数输入 feed_dict 参数, 可以启动运算过程。

    • 虽然你可以使用常量和变量来替换任何一个张量, 但是最好的做法应该是使用 placeholder op节点设计 placeholder 节点的唯一的意图就是为了提供数据供给(feeding)的方法。
    • placeholder节点被声明时是未初始化的,如果没有为它供给数据, 则TensorFlow运算的时候会产生错误, 所以千万不要忘了为 placeholder 提供数据。

      with tf. Session() :
      input = tf. placeholder(tf. float32)
      classifier = …
      print classifier. eval(feed_dict={input: my_python_preprocessing_fn() } )

  • 从文件读取数据
    一共典型的文件读取管线会包含下面这些步骤:

    1. 文件名列表
    2. 可配置的 文件名乱序(shuffling)
    3. 可配置的 最大训练迭代数(epoch limit)
    4. 文件名队列
    5. 针对输入文件格式的阅读器
    6. 纪录解析器
    7. 可配置的预处理器
    8. 样本队列
       * 文件名列表,可以用张量或者 tf.train.match_filenames_once 函数来产生文件名列表

      • 将文件名列表交给 tf.train.string_input_producer 函数. string_input_producer 来生成一个先入先出的队列,文件阅读器会需要它来读取数据。

        tf.train.string_input_producer(string_tensor,
        num_epochs=None, shuffle=True, seed=None, capacity=32,name=None)
        args:
        string_tensor 产生的字符串张量
        num_epochs :一个可选参数,整型,迭代次数.如果不指定,就一直循环运行无限次
        shuffle=True 会对文件名进行乱序处理
        seed: 整型 可选参数,当shuffle=true指定源

      • 文件格式
        根据不同的文件格式,选择对应的文件阅读器,然后将文件名队列提供给阅读器的 read 方法,得到一个key表示输入的文件和其中的记录,同时得到一个字符串标量,这个字符串
        标量可以被一个或多个解析器,或者转换操作将其解码为张量并且构造称为样本。
        eg: csv

        filename_queue = tf. train. string_input_producer([“file0.csv”, “file1.csv”] )
        使用read方法

        reader = tf. TextLineReader()
        key, value = reader. read(filename_queue)

        filename_queue = tf. train. string_input_producer([“file0.csv”, “file1.csv”] )
        reader = tf. TextLineReader()
        key, value = reader. read(filename_queue)
        // 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)
        features = tf. concat(0, [col1, col2, col3, col4] )
        with tf. Session() as sess:
        // Start populating the filename queue.
        coord = tf. train. Coordinator()
        // 在使用run()和eval执行read之前,必须调用f.train.start_queue_runners 来将文件名填充到队
        列。
        threads = tf. train. start_queue_runners(coord=coord)
        for i in range(1200) :
        // Retrieve a single instance:
        example, label = sess. run([features, col5] )
        coord. request_stop()
        coord. join(threads)

  • 固定长度的记录
    从二进制文件中读取固定长度纪录, 可以使用 tf.FixedLengthRecordReader 的 tf.decode_raw 操作。 decode_ra
    w 操作可以讲一个字符串转换为一个uint8的张量。
    cifa-10的的每条记录的长度是固定的,前一个字节为标签,后面的是图像数据.
  • 标准tensorflow格式
  • 预处理你
    可以对输入的样本进行任意的预处理,例如归一化处理 等等
  • 批处理
    在数据输入管线的末端, 我们需要有另一个队列来执行输入样本的训练,评价和推理。因此我们使用 tf.train.s
    huffle_batch 函数来对队列中的样本进行乱序处理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值