Tensorflow加载与预处理数据详解实现方法

 更新时间:2022年11月21日 11:20:05   作者:沐兮Krystal  
读取大型数据集并对其进行有效预处理可能对其他深度学习库来说很难实现,但是TensorFlow借助Data API很容易实现:只需创建一个数据集对象,并告诉它如何从何处获取数据以及如何对其进行转换

数据API

数据集方法不会修改数据集,而是创建新数据集。

可通过调用 map() 方法将转换应用于每个元素:

dataset = dataset.map(lambda x: x * 2)

乱序数据

交织来自多个文件的行

list_files() 函数返回一个乱序的文件路径的数据集。

filepath_dataset = tf.data.Dataset.list_files(train_filepaths, seed=42)

一次读取5个文件,并交织它们的行。

n_readers = 5
dataset = filepath_dataset.interleave(
	lambda filepath: tf.data.TextLineDataset(filepath).skip(1),
	cycle_length=n_readers)

预处理数据

X_mean, X_std = [...] # 每个特征的均值和标准差
n_inputs = 8 # 对应8个特征
def preprocess(line):
	defs = [0.] * n_inputs + [tf.constant([], dtype=tf.float32)] # 包含csv中每一列的默认值的数组
	fields = tf.io.decode_csv(line, record_defaults=defs) 
	# line 是要解析的行,record_defaults 是一个包含CSV文件每一列的默认值的数组
	x = tf.stack(fields[:-1])
	y = tf.stack(fields[-1:])
	return (x - X_mean) / X_std, y

我们在除最后一个(目标值)之外的所有张量上调用 tf.stack() ,从而将这些张量堆叠到一维度组中。然后对目标值执行相同的操作。

合并在一起

def csv_reader_dataset(filepaths, repeat=1, n_readers=5,
					   n_read_threads=None, shuffle_buffer_size=10000,
					   n_parse_threads=5, batch_size=32):
	dataset = tf.data.Dataset.list_files(filepaths)
	dataset = filepath_dataset.interleave(
		lambda filepath: tf.data.TextLineDataset(filepath).skip(1),
		cycle_length=n_readers, num_parallel_calls=n_read_threads)
	dataset = dataset.map(preprocess, num_parallel_calls=n_parse_threads)
	dataset = dataset.shuffle(shuffle_buffer_size).repeat(repeat)
	return dataset.batch(batch_size).prefetch(1)

到此这篇关于Tensorflow加载与预处理数据详解实现方法的文章就介绍到这了,更多相关Tensorflow加载与预处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中常用utils库详细介绍

    Python中常用utils库详细介绍

    这篇文章主要给大家介绍了关于Python中常用utils库的相关资料,Utils是一个Python库,它提供了一系列的工具,可以帮助你更轻松地管理你的Python环境,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • 详解python字符串相关str

    详解python字符串相关str

    这篇文章主要为大家介绍了python字符串相关str,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • 深度定制Python的Flask框架开发环境的一些技巧总结

    深度定制Python的Flask框架开发环境的一些技巧总结

    现在越来越多的人使用virtualenv虚拟环境部署Python项目,包括针对框架的实例文件夹与版本控制布置,这里我们就来整理关于深度定制Python的Flask框架开发环境的一些技巧总结
    2016-07-07
  • Python简单计算给定某一年的某一天是星期几示例

    Python简单计算给定某一年的某一天是星期几示例

    这篇文章主要介绍了Python简单计算给定某一年的某一天是星期几,涉及Python基于蔡勒公式的简单日期数值运算相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • 浅谈Pytorch中的自动求导函数backward()所需参数的含义

    浅谈Pytorch中的自动求导函数backward()所需参数的含义

    今天小编就为大家分享一篇浅谈Pytorch中的自动求导函数backward()所需参数的含义,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python中Task封装协程的知识点总结

    python中Task封装协程的知识点总结

    在本篇内容里小编给大家总结的是一篇关于python中Task封装协程的知识点总结内容,有兴趣的朋友们可以跟着学习下。
    2021-07-07
  • python实现四舍五入方式

    python实现四舍五入方式

    这篇文章主要介绍了python实现四舍五入方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • python 和c++实现旋转矩阵到欧拉角的变换方式

    python 和c++实现旋转矩阵到欧拉角的变换方式

    今天小编就为大家分享一篇python 和c++实现旋转矩阵到欧拉角的变换方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python 函数编编程的三大法宝map+filter+reduce分享

    Python 函数编编程的三大法宝map+filter+reduce分享

    这篇文章主要介绍了Python 函数编编程的三大法宝map,filter,reduce的分享,python利用 map 在一个可迭代对象的各项上调用函数的工具;利用 filter 来过滤项;利用 reduce 把函数作用在成对的项上来运行结果的工具,下面我们就来对这三者进行详细的介绍,需要的朋友可以参考下
    2022-03-03
  • Python SqlAlchemy动态添加数据表字段实例解析

    Python SqlAlchemy动态添加数据表字段实例解析

    这篇文章主要介绍了Python SqlAlchemy动态添加数据表字段实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02

最新评论