Skip to main content
 首页 » 编程设计

python之如何访问/处理 TensorFlow 数据集中的内容

2024年09月03日27EasonJim

我正在使用 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>'