Tensorflow加载与预处理数据详解实现方法
数据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加载与预处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
浅谈Pytorch中的自动求导函数backward()所需参数的含义
今天小编就为大家分享一篇浅谈Pytorch中的自动求导函数backward()所需参数的含义,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-02-02Python 函数编编程的三大法宝map+filter+reduce分享
这篇文章主要介绍了Python 函数编编程的三大法宝map,filter,reduce的分享,python利用 map 在一个可迭代对象的各项上调用函数的工具;利用 filter 来过滤项;利用 reduce 把函数作用在成对的项上来运行结果的工具,下面我们就来对这三者进行详细的介绍,需要的朋友可以参考下2022-03-03Python SqlAlchemy动态添加数据表字段实例解析
这篇文章主要介绍了Python SqlAlchemy动态添加数据表字段实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下2018-02-02
最新评论