DataGenerator Output Dims

Hi,

I am trying to read some Grey-scaled images using the DataGenerator. However, the image shape is coming out as (n, m, 3).

When I try to pass the input shape as (n,m,1) the geenerator renders images with (n,m,1,3) shape.

How can i enforce the (n,m,1)?

# coursera 
train_dir = '/content/data/train'
print("Train Directory --> ", os.listdir(train_dir))

train_datagen = ImageDataGenerator(rescale=1./255)

train_data_generator = train_datagen.flow_from_directory(
    train_dir,
    target_size=(img_height, img_width),
    batch_size=128,
    class_mode='categorical'
) 

train_data_generator.image_shape



Found 83484 images belonging to 4 classes.
(512, 496, 3)

ImageDataGenerator is deprecated in recent versions of tensorflow. Here’s an api you can use along with setting the color_mode property.

In [4]: train_generator = tf.keras.utils.image_dataset_from_directory(
…: directory=data_root,
…: color_mode=“grayscale”,
…: subset=“training”,
…: validation_split=.3,
…: image_size=(64,64),
…: seed=42,
…: shuffle=True)
Found 4 files belonging to 2 classes.
Using 3 files for training.

In [4]: train_generator.element_spec
Out[4]:
(TensorSpec(shape=(None, 64, 64, 1), dtype=tf.float32, name=None),
TensorSpec(shape=(None,), dtype=tf.int32, name=None))

Will the future lectures reflect this update?

The next update to the course should hopefully fix usage of this api. I’ve informed the staff about this.

If you are planning to take the tensorflow developer certificate exam, the handbook asks you know the ImageDataGenerator API.

1 Like

One more question, it seems like this new API does not support augmentation, how do we go about that?

Please see this link.