如何使用Python和tf.data对Tensorflow进行更精细的控制?
‘tf.Data’有助于通过对数据集中的数据进行混洗来定制模型构建管道,以便所有类型的数据都能均匀分布(如果可能)。
阅读更多: 什么是TensorFlow以及Keras如何与TensorFlow一起创建神经网络?
我们将使用包含数千张花卉图像的花卉数据集。它包含5个子目录,每个类别都有一个子目录。
我们使用Google Colaboratory来运行以下代码。Google Colab或Colaboratory有助于在浏览器上运行Python代码,无需任何配置,并可免费访问GPU(图形处理单元)。Colaboratory构建在Jupyter Notebook之上。
print("Defining customized input pipeline") 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("The dataset is split into training and validation set") val_size = int(image_count * 0.2) train_ds = list_ds.skip(val_size) val_ds = list_ds.take(val_size) print("Length of each subset is displayed below") print(tf.data.experimental.cardinality(train_ds).numpy()) print(tf.data.experimental.cardinality(val_ds).numpy())
代码来源:https://tensorflowcn.cn/tutorials/load_data/images
输出
Defining customized input pipeline 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'] The dataset is split into training and validation set Length of each subset is displayed below 2936 734
解释
- keras.preprocessing实用程序是一种使用图像目录创建“tf.data.Dataset”的方法。
- 为了获得对它的更多控制,可以使用'tf.data'编写自定义输入管道。
- 文件树结构可用于编译“class_names”列表。
广告