导入
加载和生成数据集
学习如何加载现有数据集,并对数据进行处理,以生成可供 TensorFlow 使用的数据集格式。
...
一个数据流水线
1import tensorflow as tf 2 3# 创建一个 TensorFlow 数据集 4dataset = tf.data.Dataset.range(5) 5 6# 重复数据并生成批次 7data_batch = dataset.repeat(4).batch(8) 8 9# 消费批处理后的数据集 10for row in data_batch: 11 print(row)
1import tensorflow as tf 2 3# 声明一个 TensorFlow 变量 4my_tensor = tf.Variable([[4, -6, 1, -9], [3, 7, -5, 8], 5 [14, -16, 13, 11], [13, 17, -15, 18], 6 [2, 8, 3, -1], [30, -2, -1, 1]]) 7 8# 从指定变量创建 TensorFlow 数据集 9dataset = tf.data.Dataset.from_tensor_slices(my_tensor) 10 11# 消费该数据集 12print('\n原始数据集中的张量:') 13for item in dataset: 14 print(item) 15 16# 生成批次 17batch_size = 2 18batched_dataset = dataset.batch(batch_size) 19print('\n批处理后的数据集:') 20for item in batched_dataset: 21 print(item) 22 23# 在指定的缓冲区大小内打乱批次顺序 24print('\n打乱顺序后的批处理数据集:') 25shuffled_dataset = batched_dataset.shuffle(buffer_size = 3) 26for item in shuffled_dataset: 27 print(item) 28 29## 遍历整个打乱并批处理后的数据集 30print('\n遍历整个数据集:') 31for index, dataset_row in enumerate(shuffled_dataset): 32 print('元素 ' + str(index), ':', end=' ') # end=' ' 防止 print 输出换行 33 print(dataset_row.numpy()) 34 35## 遍历打乱并批处理后数据集的前 num_el 个元素 36num_el = 2 37print(f'\n遍历数据集的 {num_el} 个元素:') 38for index, data in enumerate(shuffled_dataset.take(num_el)): 39 print('元素 ' + str(index), ':', end=' ') 40 print(data.numpy())
1import numpy as np 2import pandas as pd 3import tensorflow as tf 4 5# 导入在线 CSV 文件 6url = "https://storage.googleapis.com/tf-datasets/titanic/train.csv" 7 8# 将文件存储为 Pandas DataFrame 9titanic_train = pd.read_csv(url) 10 11# 显示 Pandas DataFrame 的前 5 行 12print(titanic_train.head(5)) 13 14# 从 Pandas DataFrame 中提取特征和标签 15titanic_train_features = titanic_train.copy() 16titanic_train_labels = titanic_train_features.pop('survived') # 该数据集中 'survived' 列作为输出标签 17 18## 将 DataFrame 转换为张量字典 19titanic_features_dict = {name: np.array(value) for name, value in titanic_train_features.items()} 20 21## from_tensor_slices 函数可以处理任意结构的嵌套字典或元组 22## 下面的代码创建一个 (特征, 标签) 对的数据集 23titanic_ds = tf.data.Dataset.from_tensor_slices((titanic_features_dict, titanic_train_labels)) 24 25# 使用此数据集训练模型时,需先打乱顺序并生成批次 26titanic_batches = titanic_ds.shuffle(len(titanic_train_labels)).batch(3) 27 28## 遍历打乱后数据集的前 num_el 个批次 29num_el = 1 30print(f'\n\n遍历 {num_el} 个批次:') 31for item in titanic_batches.take(num_el): 32 print('\n', item)