How to convert generator to DirectoryIterator?

548 views
Skip to first unread message

Nad

unread,
Dec 3, 2018, 11:04:47 AM12/3/18
to Keras-users
Hello, I have a problem and I hope if you can help me. I created a multi input deep learning model, and a lot of functions I could not use it because the testgenerator (in the code) is a generator not a DirectoryIterator.
input_imgen = ImageDataGenerator( 
                                  rotation_range=10,
                                  shear_range=0.2,
                                  zoom_range=0.1,
                                  width_shift_range=0.1,
                                  height_shift_range=0.1
                                  )
 
 
 
test_imgen = ImageDataGenerator()
 
 
 
def generate_generator_multiple(generator,dir1, dir2, batch_size, img_height,img_width):
 
 
    genX1 = generator.flow_from_directory(dir1,
                                          target_size = (img_height,img_width),
                                          class_mode = 'categorical',
                                          batch_size = batch_size,
                                          shuffle=False, 
                                          seed=7)
 
    genX2 = generator.flow_from_directory(dir2,
                                          target_size = (img_height,img_width),
                                          class_mode = 'categorical',
                                          batch_size = batch_size,
                                          shuffle=False, 
                                          seed=7)
    while True:
      X2i = genX2.next() 
      X1i = genX1.next() 
 
      yield [X1i [0], X2i [0]], X1i [1]  #Yield both images and their mutual label


inputgenerator=generate_generator_multiple(generator=input_imgen, dir1=dira, dir2=dirb, batch_size=32, img_height=224, img_width=224) testgenerator=generate_generator_multiple(generator=test_imgen, dir1=dirc, dir2=dird, batch_size=32, img_height=224, img_width=224)

I could not use the following functions because it get errors.

    label2index = testgenerator.classes
    AttributeError: 'generator' object has no attribute 'classes'

    label2index = testgenerator.class_indices
    AttributeError: 'generator' object has no attribute 'class_indices'
    lent= len(testgenerator)
    AttributeError: 'generator' object has no attribute 'len'

I want to convert generator to DirectoryIterator to use the functions above.

How can I convert generator to DirectoryIterator in Keras?

Lance N.

unread,
Dec 3, 2018, 11:35:13 AM12/3/18
to Keras-users
I followed this excellent tutorial yesterday, and it worked well:


Cheers,

Lance Norskog
Reply all
Reply to author
Forward
0 new messages