TensorFlow进阶项目实战(二)

(一)csv文件读取

运行代码之前,先手动创建文件,流程如下图:

在这里插入图片描述
在这里插入图片描述

# csv文件读取示例
import tensorflow as tf
import os
def csv_read(filelist):
    # 2. 构建文件队列
    file_queue = tf.train.string_input_producer(filelist)
    # 3. 构建csv reader,读取队列内容(一行)
    reader = tf.TextLineReader()
    k, v = reader.read(file_queue)
    # 4. 对每行内容进行解码
    ## record_defaults:指定每一个样本每一列的类型,指定默认值
    records = [["None"], ["None"]]
    example, label = tf.decode_csv(v, record_defaults=records)  # 每行两个值
    # 5. 批处理
    # batch_size: 跟队列大小无关,只决定本批次取多少数据
    example_bat, label_bat = tf.train.batch([example, label],
                                            batch_size=9,
                                            num_threads=1,
                                            capacity=9)
    return example_bat, label_bat


if __name__ == "__main__":
    # 1. 找到文件,构造一个列表
    dir_name = "../data/"
    file_names = os.listdir(dir_name)
    file_list = []
    for f in file_names:
        file_list.append(os.path.join(dir_name, f))  # 拼接目录和文件名
        
    example, label = csv_read(file_list)
    # 开启session运行结果
    with tf.Session() as sess:
        coord = tf.train.Coordinator() # 定义线程协调器
        # 开启读取文件线程
        # 调用 tf.train.start_queue_runners 之后,才会真正把tensor推入内存序列中
        # 供计算单元调用,否则会由于内存序列为空,数据流图会处于一直等待状态
        # 返回一组线程
        threads = tf.train.start_queue_runners(sess, coord=coord)
        print(sess.run([example, label])) # 打印读取的内容
        # 回收线程
        coord.request_stop()
        coord.join(threads)

(二)图片文件的读取

图片文件读取API
图像读取器:tf.WholeFileReader

功能:将文件的全部内容作为值输出的
read方法:读取文件内容,返回文件名和文件内容

图像解码器:

tf.image.decode jpeg(constants):解码jpeg格式tf.image.decode_png(constants):解码png格式
返回值:3-D张量,[height, width, channels]

修改图像大小:

tf.image.resize_images(images,size)
images:图片数据,3-D或4-D张量
3-D:[长,宽,通道]
4-D:[数量,长,宽,通道]
size:1-D int32张量,[长、宽](不需要传通道数)

# 图片文件读取示例
import tensorflow as tf
import os
def img_read(filelist):
    #1.构建文件队列
    file_queue = tf.train.string_input_producer(filelist)
    # 2. 定义reader,读取文件内容,默认读取一张图片
    reader = tf.WholeFileReader()
    k, v = reader.read(file_queue) #读取样本数据
    # 3.解码
    img = tf.image.decode_jpeg(v)  

    # 4. 批处理, 图片需要处理成统一大小
    img_resized = tf.image.resize(img, [200, 200])  # 200*200
    img_resized.set_shape([200, 200, 3])  # 固定样本形状,批处理时对数据形状有要求(静态形状)
    img_bat = tf.train.batch([img_resized],
                             batch_size=10,
                             num_threads=1)
    return img_bat
# 1. 找到文件,构造一个列表
dir_name = "test_img/"
file_names = os.listdir(dir_name)
file_list = []
for f in file_names:
    file_list.append(os.path.join(dir_name, f))  # 拼接目录和文件名
imgs = img_read(file_list)
# 开启session运行结果
with tf.Session() as sess:
    coord = tf.train.Coordinator()  # 定义线程协调器
    # 开启读取文件线程
    # 调用 tf.train.start_queue_runners 之后,才会真正把tensor推入内存序列中
    # 供计算单元调用,否则会由于内存序列为空,数据流图会处于一直等待状态
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值