如何使用Python的tf.data更精细地控制Tensorflow?
‘tf.Data’可以帮助定制模型构建流程,通过将数据集中的数据洗牌以使所有类型的数据均匀分布(如果可能)。
我们将使用包含数千朵花的图像的花朵数据集。它包含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("下面显示每个子集的长度")
print(tf.data.experimental.cardinality(train_ds).numpy())
print(tf.data.experimental.cardinality(val_ds).numpy())
代码来源:https://www.tensorflow.org/tutorials/load_data/images
更多Python相关文章,请阅读:Python 教程
输出
定义自定义输入流水线
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’列表。
极客教程