1、概述
从文件读取数据时,往往是需要数据转换时,尤其对于多维数据,在使用文件形式进行存储时,除了tfrecord文件格式化,其他的文件的存储都显得无能为力。所以真正从文件读入的数据需要经过转换之后才能够使用。同样在tensorflow这种以小批次进行梯度下降的框架中,需要打乱数据以及对数据进行batch处理,本文主要讨论这些问题。
2、使用Dataset.map() 预处理数据
Dataset.map(f) 转换通过将指定函数 f 应用于输入数据集的每个元素来生成新数据集。此转换基于 map() 函数(通常应用于函数式编程语言中的列表和其他结构)。函数 f 会接受表示输入中单个元素的 tf.Tensor 对象,并返回表示新数据集中单个元素的 tf.Tensor 对象。此函数的实现使用标准的 TensorFlow 指令将一个元素转换为另一个元素。
下面以nlp的word-embeding为例来说明这个情况,在我们存储的原始预料中包含一些关键词,并且包含这些关键词对应的id,我们可以使用下面代码来看一下数据的基本形态:
# 从CSV文件中读取数据
import pandas as pd
data = pd.read_csv('cutword_ths.csv',header=None,delimiter=' ',names=['id','text'])
data.head()
输出结果如下图所示: