如何使用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”列表。

更新于:2021年2月19日

143 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告