如何使用 Python 将 Tensorflow 与 tf.data 结合使用,以便更精细地控制?
pythonserver side programmingprogrammingtensorflow
‘tf.Data’ 有助于自定义模型构建管道,方法是对数据集中的数据进行混洗,以便所有类型的数据均匀分布(如果可能)。
阅读更多: 什么是 TensorFlow,以及 Keras 如何与 TensorFlow 配合使用来创建神经网络?
我们将使用 flowers 数据集,其中包含数千朵花的图像。它包含 5 个子目录,每个类都有一个子目录。
我们使用 Google Colaboratory 来运行以下代码。Google Colab 或 Colaboratory 可帮助在浏览器上运行 Python 代码,并且无需配置,可以免费访问 GPU(图形处理单元)。Colaboratory 是在 Jupyter Notebook 之上构建的。
print("定义自定义输入管道") list_ds = tf.data.Dataset.list_files(str(data_dir/'*/*'), shuffle=False) list_ds = list_ds.shuffle(image_count, reshuffle_each_iteration=False) for f in list_ds.take(5): print(f.numpy()) class_names = np.array(sorted([item.name for item in data_dir.glob('*') if item.name != "LICENSE.txt"])) print(class_names) print("数据集被分成训练集和验证集") val_size = int(image_count * 0.2) train_ds = list_ds.skip(val_size) val_ds = list_ds.take(val_size) print("显示每个子集的长度below") print(tf.data.experimental.cardinality(train_ds).numpy()) print(tf.data.experimental.cardinality(val_ds).numpy())
代码来源:https://www.tensorflow.org/tutorials/load_data/images
输出
定义自定义输入管道 b'/root/.keras/datasets/flower_photos/dandelion/14306875733_61d71c64c0_n.jpg' b'/root/.keras/datasets/flower_photos/dandelion/8935477500_89f22cca03_n.jpg' b'/root/.keras/datasets/flower_photos/sunflowers/3001531316_efae24d37d_n.jpg' b'/root/.keras/datasets/flower_photos/daisy/7133935763_82b17c8e1b_n.jpg' b'/root/.keras/datasets/flower_photos/tulips/17844723633_da85357fe3.jpg' ['daisy' 'dandelion' 'roses' 'sunflowers' 'tulips'] 数据集分为训练集和验证集 每个子集的长度如下所示 2936 734
解释
- keras.preprocessing 实用程序是一种使用图像目录创建 'tf.data.Dataset' 的方法。
- 为了更好地控制这一点,可以使用 'tf.data' 编写自定义输入管道。
- 文件的树结构可用于编译 'class_names' 列表。