TensorFlow的数据读取方法

本文介绍了TensorFlow中三种读取数据的方法,并详细对比了string_input_producer与slice_input_producer的区别,包括它们如何加载数据及使用的场景。
部署运行你感兴趣的模型镜像

Tensorflow一共提供了3种读取数据的方法:
第一种方法个人感觉比较麻烦:在TensorFlow程序运行的每一步, 让Python代码来供给数据,比如说用PIL和numpy处理数据,然后输入给神经网络。
第二种方法:从文件读取数据,在TensorFlow图的起始, 让一个输入管线从文件中读取数据:string_input_producer()和slice_input_producer()。

他们两者区别可以简单理解为:string_input_producer每次取出一个文件名。slice_input_producer可以既可以同时放出文件名和它对应的label,也可以只放出一个文件名。而在实际应用代码的时候也只是读取文件的方式不一样,其他大致相同。

string_input_producer加载数据的方法:

reader = tf.FixedLengthReader(record_bytes=record_bytes)

key,value = reader.read(filename_queue),其中key是文件名,value是byte类型的文件流二进制,一般需要解码(decode)一下才能变成数组,然后进行reshape操作。

path_queue是文件队列,文件队列的生成的方法:

filenames = [os.path.join(data_dir, 'data_32_QP%d.dat' % i) for i in range(1,4)] ##data_dir是数据的路径,data_32_QP%d.dat是数据文件

for f in filenames:

  if not gfile.Exists(f):  ## 判断目录或文件是否存在,filename可为目录路径或带文件名的路径,有该目录则返回True,否则False。

    raise ValueError('Failed to find file:'  + f )

filename_queue = tf.train.string_input_producer(filenames)  ##输出一个带有字符串的队列

reader = tf.FixedLengthReader(record_bytes=record_bytes)  ##record_bytes 是读取的字符长度,优点是每次读取后,下次读取是接着此处读取,不会重新从文件头开始读取

key,value = reader.read(filename_queue)   ## 数据读取之后需要 处理一下:record_bytes = tf.decode_raw(value, tf.uint8)

record_bytes = tf.decode_raw(value, tf.uint8)  ## 这个函数主要用于数据类型的转变,不会改变原始数据的值还有形状的

slice_input_producer加载图片的reader使用tf.read_file(filename)直接读取。记得图片需要解码和resize成数组,才可以放入内存队列file_queue中等待调用。

转载于:https://www.cnblogs.com/Mydream6/p/11333952.html

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

当你需要在Python项目中读取信息熵值时,首先需要理解信息熵的概念,它度量了数据中信息的不确定性。文件操作是获取这些数据的常用方法,而代码注释则有助于其他开发者理解你的代码逻辑。在深度学习框架TensorFlow中,数据读取是构建模型的一个重要步骤。以下是一个结合文件操作、信息熵和TensorFlow数据读取的示例代码: 参考资源链接:[华为H13-311_V3.0认证考试:Python注释、文件操作与信息熵](https://wenku.youkuaiyun.com/doc/52bcp393vt?spm=1055.2569.3001.10343) 首先,假设我们有一个包含文本信息的数据集,我们想要计算每个文本的信息熵值。我们将使用Python的内置库以及TensorFlow的`tf.data.Dataset`来实现数据读取和预处理。 ```python import tensorflow as tf import math # 假设我们有一个函数来计算字符串的信息熵 def calculate_entropy(text): # 统计每个字符出现的频率 char_frequency = {char: text.count(char) for char in set(text)} total_chars = sum(char_frequency.values()) # 计算每个字符的信息熵 entropy = -sum((frequency/total_chars) * math.log2(frequency/total_chars) for frequency in char_frequency.values()) return entropy # 使用TensorFlow的Dataset API来读取和处理数据 def read_dataset(file_path): dataset = tf.data.TextLineDataset(file_path) # 从文件中逐行读取数据 dataset = dataset.map(lambda text: tf.py_function(func=calculate_entropy, inp=[text], Tout=tf.float32)) # 将每行文本映射到信息熵计算函数 return dataset # 注释说明: # 1. 导入必要的TensorFlow库和math模块。 # 2. 定义calculate_entropy函数,计算并返回给定文本的信息熵。 # 3. 定义read_dataset函数,使用TensorFlow的Dataset API来从指定文件路径中读取文本数据,并将每行文本映射到calculate_entropy函数进行处理。 # 假设数据存储在'./data.txt'文件中 file_path = './data.txt' entropy_dataset = read_dataset(file_path) # 使用TensorFlow的迭代器遍历数据集 for entropy in entropy_dataset: print('Information Entropy:', entropy.numpy()) ``` 在这个示例中,我们展示了如何编写一个Python函数来计算文本信息熵,并使用TensorFlow的Dataset API来读取和处理文件中的数据。我们还在代码中添加了详细的注释,以便其他开发者理解每个步骤的作用和目的。通过这种方式,我们可以有效地将数据读取与信息处理结合起来,为机器学习项目提供必要的数据预处理步骤。 参考资源链接:[华为H13-311_V3.0认证考试:Python注释、文件操作与信息熵](https://wenku.youkuaiyun.com/doc/52bcp393vt?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值