我正在使用 cnn_dailymail属于 TensorFlow Datasets 的数据集. 我按如下方式访问它:
import tensorflow_datasets as tfds
data, info = tfds.load('cnn_dailymail', with_info=True)
train_data, test_data = data['train'], data['test']
从我使用的数据集中提取单个示例:
cnn_ex, = train_data.take(1)
cnn_ex['highlights'].numpy()
这将返回一个类似这样的字符串:"emma monaghan, 27, from glasgow, used to weigh 18st 5lbs ." .我想对该数据集应用一些预处理步骤,以便我可以将其用作深度学习算法的输入。上面的示例在预处理后应如下所示:"<start> emma monaghan, 27, from glasgow, used to weigh 18st 5lbs . <end>" .
有没有办法一次访问和预处理所有文本(在 train_data 中)而无需应用 take()函数多次?例如,将 TensorFlow 数据集转换为 numpy 数组就已经有所帮助。谢谢!
请您参考如下方法:
您可以使用 dataset.map() 对您的数据应用转换。例如:
import tensorflow as tf
import tensorflow_datasets as tfds
data, info = tfds.load('cnn_dailymail', with_info=True)
dataset_train, dataset_test = data['train'], data['test']
def map_fn(x, start=tf.constant('<start>'), end=tf.constant('<end>')):
strings = [start, x['highlights'], end]
x['highlights'] = tf.strings.join(strings, separator=' ')
return x
dataset_train = dataset_train.map(map_fn) # <-- apply transformation for the whole data
elem, = dataset_train.take(1)
print(elem['highlights'].numpy())
# b'<start> arthur potts dawson: british ... <end>'
