当前位置:   article > 正文

tensorflow--从文件读取数据_tensorflow读取文件

tensorflow读取文件

读取数据-csv

tensorflow读取数据流程

  1. 构造文件队列
  2. 读取队列内容 reader = tf.TextLineReader()
  3. 解析成一个样本数据 example, label = tf.decode_csv(value, record_defaults=records)
  4. 批处理
  5. 主线程取样本
def csvread(filelist):
    """
    读取CSV文件
    :param filelist: 文件路径+名字的列表
    :return: 读取的内容
    """
    # 1、构造文件的队列
    # 此操作会隐含地将一个QuenuRunner加入全局图中
    file_queue = tf.train.string_input_producer(filelist)

    # 2、构造csv阅读器读取队列数据(按一行)(key文件名,value读取的内容)
    reader = tf.TextLineReader()
    key, value = reader.read(file_queue)

    # 3、对每行内容解码,example, label是指我读取的数据的两个特征
    # record_defaults:指定每一个样本的每一列的类型,指定默认值[["None"], [4.0]]
    records = [["None"], ["None"]]
    example, label = tf.decode_csv(value, record_defaults=records)

    # 4、想要读取多个数据,就需要批处理
    example_batch, label_batch = tf.train.batch([example, label], batch_size=9, num_threads=1, capacity=9)

    return example_batch, label_batch
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

主线程调用:

# 找到指定文件夹下的所有文件,将路径+名字存到列表中
file_name = os.listdir("文件夹路径")
filelist = [os.path.join("文件夹路径", file) for file in file_name]
# 调用函数读取数据
example, label = csvread(filelist)
# 会话
with tf.Session() as sess:  
    # 线程协调器
    coord = tf.train.Coordinator()
    # 开启读文件的线程
    threads = tf.train.start_queue_runners(sess,coord=coord)
    # 打印出来
    print(sess.run([example, label]))    
    #回收子线程
    coord.request_stop()
    coord.join(threads)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

读取数据-图片

tensorflow读取数据流程

  1. 构造文件队列
  2. 读取队列内容 tf.WholeFileReader()
  3. 解析成一个样本数据 image = tf.image.decode_jpeg(value)
  4. 批处理
  5. 主线程取样本
def read_pic(file_list):
    # 文件队列
    file_queue = tf.train.string_input_producer(file_list)
    # 读数据
    reader = tf.WholeFileReader()
    key, value = reader.read(file_queue)
    # 解码
    image = tf.image.decode_jpeg(value)
    # 统一图片大小
    image_resize = tf.image.resize_images(image, [300, 200])
    # 批处理需要,必须指定通道数
    image_resize.set_shape([300,200,3])
    # 批处理
    image_batch = tf.train.batch([image_resize], batch_size=5)

    return image_batch
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

主线程调用:

# 找到指定文件夹下的所有文件,将路径+名字存到列表中
file_name = os.listdir("文件夹路径")
filelist = [os.path.join("文件夹路径", file) for file in file_name]
# 调用函数读取数据
image = read_pic(file_list)

with tf.Session() as sess:
    coord = tf.train.Coordinator()
    threads = tf.train.start_queue_runners(sess, coord=coord)
   
    print(sess.run(image))

    coord.request_stop()
    coord.join(threads)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

读取数据-二进制

tensorflow读取数据流程

  1. 构造文件队列
  2. 读取队列内容 reader = tf.FixedLengthRecordReader(字节数)
  3. 解析成一个样本数据 content = tf.decode_raw(value, tf.uint8)
  4. 批处理
  5. 主线程取样本
def bin_reader(filelist):
    """
    读取CSV文件
    :param filelist: 文件路径+名字的列表
    :return: 读取的内容
    """
    # 1、构造文件的队列
    # 此操作会隐含地将一个QuenuRunner加入全局图中
    file_queue = tf.train.string_input_producer(filelist)

    # 2、构造csv阅读器读取队列数据(按一行)(key文件名,value读取的内容)
    reader = tf.FixedLengthRecordReader(字节数)
    key, value = reader.read(file_queue)

    # 3、对每行内容解码,需要指定读取内容的类型
    content = tf.decode_raw(value, tf.uint8)

    # 4、想要读取多个数据,就需要批处理
    content_batch = tf.train.batch([contentl], batch_size=9, num_threads=1, capacity=9)

    return example_batch, label_batch
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

主线程调用:

# 找到指定文件夹下的所有文件,将路径+名字存到列表中
file_name = os.listdir("文件夹路径")
filelist = [os.path.join("文件夹路径", file) for file in file_name]
# 调用函数读取数据
content = bin_reader(filelist)
# 会话
with tf.Session() as sess:  
    # 线程协调器
    coord = tf.train.Coordinator()
    # 开启读文件的线程
    threads = tf.train.start_queue_runners(sess,coord=coord)
    # 打印出来
    print(sess.run([contentl]))    
    #回收子线程
    coord.request_stop()
    coord.join(threads)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/249808
推荐阅读
相关标签
  

闽ICP备14008679号