TensorFlow Python-有没有一种方法可以将tensorflow_datasets数据集插入ImageGenerator?

问题描述 投票:0回答:1

我已经尝试了很长时间在tensorflow.keras.preprocessing.image.ImageGenerator函数中使用数据增强,但是我看到的每个示例都在带有文件的目录中传递。我的目标是使用tensorflow_datasets导入MNIST,然后将其传递给数据增强功能,但我一直无法找出方法。

如果目录更容易使用,并且任何人都可以找到简单的方法,并且可以成功地向我说明如何使用,我愿意使用目录。

请参见下面的代码

谢谢你,马克斯

import tensorflow as tf
import tensorflow_datasets as tfds
from tensorflow.keras.preprocessing.image import ImageDataGenerator

def main():
    data, info = tfds.load("mnist", with_info=True)
    train_data, test_data = data['train'], data['test']

    image_gen = ImageDataGenerator(
        rescale=1./255,
        rotation_range=20,
        width_shift_range=0.2,
        height_shift_range=0.2,
        shear_range=0.2,
        zoom_range=0.2,
        fill_mode='nearest')

    #
    # What Do I Do Here??
    #

    # train_data_gen = image_gen.flow(data)


if __name__ == "__main__":
    main()


python python-3.x tensorflow tensorflow-datasets tensorflow2.0
1个回答
0
投票

[今天上午,我花了很大一部分时间试图弄清楚,如果使用这两种方法中的任何一种,那么,这是处理TF2中数据加载AND增强的“正确”方法。 "TensorFlow 2.0 removes redundant APIs"太多了吧?我目前的理解是,这两种数据加载方法是independent,并且意在separate使用(尽管TF的某个人可以在这里鸣叫会很棒)。

首先,ImageDataGenerator生成具有实时数据增强量的张量图像数据。我已经看到了一些使用ImageDataGenerator将数据集读取到tfds的numpy数组中的解决方案,但是如果这不是反模式,我会感到震惊。我的理解是,如果您使用ImageDataGenerator,则应该同时使用它来加载和预处理数据。

我已选择采用官方(也许是!!)ImageDataGenerator路线。我没有利用tensorflow_datasets中的内置增强功能,而是使用tensorflow_datasets加载数据集,然后结合使用缓存和ImageDataGenerator进行预处理。

首先,我们使用S3 API加载数据:

tfds.load

然后,使用一系列帮助器和map calls函数,我们可以进行预处理:

map

由于我们有一个train_size = 45000 val_size = 5000 (train, val, test), info = tfds.load( "cifar10:3.*.*", as_supervised=True, split=[ "train[0:{}]".format(train_size), "train[{}:{}]".format(train_size, train_size + val_size), "test", ], with_info=True ) ,因此我们可以使用标准API进行批处理,重复等。

© www.soinside.com 2019 - 2024. All rights reserved.