深度学习:tensorflow入门:tf对csv文件和图片文件读取

import tensorflow as tf
import os


def csvread(filelist):
    """
    读取CSV文件
    :param filelist: 文件路径+名字的列表
    :return: 读取的内容
    """
    # 1、构造文件的队列
    file_queue = tf.train.string_input_producer(filelist)

    # 2、构造csv阅读器读取队列数据(按行)
    reader = tf.TextLineReader()

    key, value = reader.read(file_queue)

    # 3、对每行内容解码
    # record_defaults:指定没一个样本的每一列的类型,指定默认值
    records = [["None"], ["None"]]

    example, lable = tf.decode_csv(value, record_defaults=records)

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

    return example_batch, lable_batch

def picread(filelist):
    """
    读取图片并转化为张量
    :param filelist: 文件路径+名字的列表
    :return: 每张图像的张量
    """
    # 1、构造文件队列
    file_queue = tf.train.string_input_producer(filelist)
    
    # 2、构造阅读器去读取图片内容(默认读取一张图片)
    reader = tf.WholeFileReader()
    
    key, value = reader.read(file_queue)
    
    # 3、对读取的图片数据进行解码
    image = tf.image.decode_jpeg(value)
    
    # 4、处理图片的大小(统一大小)
    image_resize = tf.image.resize_images(image, [200, 200])
    
    # 注意:一定要把样本的形状固定 [200, 200, 3],在批处理的时候要求所有数据形状必须定义
    image_resize.set_shape([200, 200, 3])
    
    # 5、进行批处理
    image_batch = tf.train.batch([image_resize], batch_size=20, num_threads=1, capacity=20)
      
    return image_batch

if __name__ == '__main__':
    # 1、找到文件,放入列表  路径+名字  ->列表当中
    file_name = os.listdir("./data")

    filelist = [os.path.join("./data", file) for file in file_name]

    example, lable = picread(filelist)

    # 开启会话
    with tf.Session() as sess:
        # 定义一个线程协调器
        coord = tf.train.Coordinator()

        # 开启读取文件的线程
        threads = tf.train.start_queue_runners(sess, coord=coord)

        # 打印读取的内容
        print(sess.run([example, lable]))

        # 回收子线程
        coord.request_stop()

        coord.join(threads)

你可能感兴趣的:(深度学习:tensorflow入门:tf对csv文件和图片文件读取)