TensorFlow入门(十四、数据读取机制(1))

TensorFlow的数据读取方式

TensorFlow的数据读取方式共有三种,分别是:

①预加载数据(Preloaded data)

预加载数据的方式,其实就是静态图(Graph)的模式。即将数据直接内嵌到Graph中,再把Graph传入Session中运行。

示例代码如下:

python 复制代码
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

a = tf.constant([[5,2]])
b = tf.constant([[1],[3]])
c = tf.matmul(a,b)

init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    print(sess.run(c))

②先产生数据,再喂数据(Feeding)

先生产数据,通过feed_dict喂数据(Feeding)的方式。

示例代码如下:

python 复制代码
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

a = tf.placeholder(tf.int16)
b = tf.placeholder(tf.int16)
c = tf.add(a,b)

a1 = 6
b1 = 8

init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    print(sess.run(c,feed_dict = {a:a1,b:b1}))

③直接从文件中读取(Reading from file)

前两种方法虽然方便,但无法满足大型数据集训练时对速度要高效、内存消耗要小的要求。因此,TensorFlow提供了第三种方式,即在静态图(Graph)中定义好文件读取的方法,TensorFlow自动从文件(也就是文本或图片)中读取数据,然后解码成可用的样本集。

从文件读取数据的流程主要分为四个步骤:

①创建文件,准备数据

②创建文件名队列,将已准备的文件,按照随机顺序放入队列

③创建Reader,读取文件

④将读取的内容解码后输出

示例代码如下:

生成文件

python 复制代码
import csv

file_name = "file.csv"
with open(file_name,"w",newline = "") as csvfile:
    writer = csv.writer(csvfile, dialect = "excel")
    with open("data1.txt","r") as file_txt:
        for line in file_txt:
            line_datas = str(line).strip("\n").split(",")
            print(line_datas)
            writer.writerow(line_datas)

data1.txt的存放位置如下图,代码执行后会生成file.csv文件

读取文件

python 复制代码
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

#要保存后csv格式的文件名
file_name_string = "file.csv"
filename_queue = tf.train.string_input_producer([file_name_string])
#定义reader,每次一行
reader = tf.TextLineReader()
key,value = reader.read(filename_queue)
#定义decoder
var1,var2 = tf.decode_csv(value,record_defaults = [[1.0],[1.0]])

#运行图
init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    sess.run(tf.local_variables_initializer())
    #创建一个协调器,管理线程
    coord = tf.train.Coordinator()
    #启动QueueRunner,此时文件名队列已经进队
    threads = tf.train.start_queue_runners(coord = coord)
    for row in enumerate(open(file_name_string,"r")):
        e_val,l_val = sess.run([var1,var2])
        print(e_val,l_val)
    coord.request_stop()
    coord.join(threads)

读取图片

示例代码如下:

python 复制代码
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

import os
import matplotlib.pyplot as plt

file_name = os.listdir("./image")
file_list = [os.path.join("./image",file) for file in file_name]

#创建输入队列,默认顺序打乱
filename_queue = tf.train.string_input_producer(file_list,shuffle = True,num_epochs = 2)
key,image = tf.WholeFileReader().read(filename_queue)
#解码成tf中图像格式
image = tf.image.decode_jpeg(image)

with tf.Session() as sess:
    sess.run(tf.local_variables_initializer())
    #创建一个协调器,管理线程
    coord = tf.train.Coordinator()
    threads = tf.train.start_queue_runners(coord = coord)
    for _ in file_list:
        #执行
        img = image.eval()
        plt.figure(1)
        plt.imshow(img)
        plt.show()
    coord.request_stop()
    coord.join(threads)
相关推荐
瓦学妹1 分钟前
为什么您的AI总是显示“不支持的区域”?如何解决?
大数据·网络·人工智能
项目治理之道15 分钟前
可视化+AI:Visual ALM 正在重新定义2026年的项目协作
人工智能·项目管理工具·项目管理软件·项目管理系统·项目管理平台
szephyr21 分钟前
腾讯云 ADP 智能体上线后响应变慢,先查 RAG 召回链路还是 Workflow 分支?诊断路径与排查清单
大数据·人工智能·腾讯云
郝学胜-神的一滴21 分钟前
力扣 692:巧用小顶堆高效求解前K个高频单词
java·数据结构·python·程序人生·算法·leetcode·职场和发展
栈溢出的浪漫22 分钟前
Python单元测试框架覆盖率-Coverage
python·单元测试·工具·覆盖率·coverage
问商十三载23 分钟前
RAG的适用边界在哪里?2026年价值与局限详解
大数据·前端·人工智能
淼澄研学24 分钟前
Python构建AI应用:从环境配置到FastAPI部署的5个实操步骤
人工智能·python·fastapi
1570925113427 分钟前
优先队列:从Java源码到实战
开发语言·python
找方案33 分钟前
AI医疗大模型获批三类证:AI诊疗正式纳入正规医疗体系
人工智能·dubbo·ai医疗·ai医疗大模型·ai诊疗
黎阳之光40 分钟前
黎阳之光:用“视频孪生”擦亮国门智慧底色
大数据·人工智能·物联网·安全·数字孪生