fit_generator() error!

591 views
Skip to first unread message

muhammadu...@gmail.com

unread,
Mar 1, 2018, 8:42:09 AM3/1/18
to Keras-users
Hello,
 I am using keras Sequence to use multiprocessing for training, but I get this error when I use fit_generator() and I do not know the reason why does this occur:

 File "C:\Users\p366109\Desktop\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\spyder\utils\site\sitecustomize.py", line 688, in runfile
    execfile(filename, namespace)

  File "C:\Users\p366109\Desktop\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\spyder\utils\site\sitecustomize.py", line 101, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/p366109/Desktop/Thesis_Muhammad/Git_Repo/keras_cloud_training.py", line 108, in <module>
    ,initial_epoch=0

  File "C:\Users\p366109\Desktop\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\keras\legacy\interfaces.py", line 87, in wrapper
    return func(*args, **kwargs)

  File "C:\Users\p366109\Desktop\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\keras\models.py", line 1117, in fit_generator
    initial_epoch=initial_epoch)

  File "C:\Users\p366109\Desktop\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\keras\legacy\interfaces.py", line 87, in wrapper
    return func(*args, **kwargs)

  File "C:\Users\p366109\Desktop\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\keras\engine\training.py", line 1724, in fit_generator
    do_validation = bool(validation_data)

TypeError: 'numpy.float64' object cannot be interpreted as an integer

Matias Valdenegro

unread,
Mar 1, 2018, 8:46:25 AM3/1/18
to keras...@googlegroups.com

Hi,

 

Don't you think the actual code that produces this error, or at least the fit_generator call, might be needed to find out why the error is produced?

 

Include some code, my guess is that you are passing a float where an integer is expected.

Akmal

unread,
Mar 1, 2018, 9:15:47 AM3/1/18
to Keras-users
My code for generator is :
hist = model.fit_generator(generator = training_image_data
                           ,steps_per_epoch = train_steps_per_ep
                           ,epochs = num_epoch
                           ,verbose = 1
                           ,callbacks = []
                           ,validation_data = validation_image_data
                           ,validation_steps = val_steps_per_ep
                           ,class_weight = None
                           ,max_queue_size = 10
                           ,workers = 2
                           ,use_multiprocessing = False
                           ,initial_epoch=0
                           )
training_image_data is a keras Sequence class object, training_image_data.__getitem__(0) returns me images and corresponding labels with following shape:
   X, Y = training_image_data.__getitem__(0)
    print(X.shape)
    print(Y.shape)

(5, 400, 1100, 1) ==> (nSamples, img_row, img_col, img_depth)
(5, 364)  ==> (nSamples, number of values to predict against one test example)
both X and Y are float64

lvji...@gmail.com

unread,
Jun 25, 2018, 8:35:13 AM6/25/18
to Keras-users
I also met the samilar problem, I guess it is the bug of the keras, my problem is the following:
  wo code is :
epochs = 60
generator = Generator(128)
for epoch in range(epochs):
    #model.fit(x, y, batch_size=128, epochs=1)
    model.fit_generator(generator, steps_per_epoch=(len(sentences)//128), epochs=1)
    on_epoch_end(model, epoch) 

my problem is :

Epoch 1/1
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-49-a20e0c196bb1> in <module>()
      3 for epoch in range(epochs):
      4     #model.fit(x, y, batch_size=128, epochs=1)
----> 5     model.fit_generator(generator, steps_per_epoch=(len(sentences)//128), epochs=1)
      6     on_epoch_end(model, epoch)

C:\Anaconda3\envs\tensorflow\lib\site-packages\keras\legacy\interfaces.py in wrapper(*args, **kwargs)
     89                 warnings.warn('Update your `' + object_name +
     90                               '` call to the Keras 2 API: ' + signature, stacklevel=2)
---> 91             return func(*args, **kwargs)
     92         wrapper._original_function = func
     93         return wrapper

C:\Anaconda3\envs\tensorflow\lib\site-packages\keras\models.py in fit_generator(self, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)
   1313                                         use_multiprocessing=use_multiprocessing,
   1314                                         shuffle=shuffle,
-> 1315                                         initial_epoch=initial_epoch)
   1316 
   1317     @interfaces.legacy_generator_methods_support

C:\Anaconda3\envs\tensorflow\lib\site-packages\keras\legacy\interfaces.py in wrapper(*args, **kwargs)
     89                 warnings.warn('Update your `' + object_name +
     90                               '` call to the Keras 2 API: ' + signature, stacklevel=2)
---> 91             return func(*args, **kwargs)
     92         wrapper._original_function = func
     93         return wrapper

C:\Anaconda3\envs\tensorflow\lib\site-packages\keras\engine\training.py in fit_generator(self, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)
   2192                 batch_index = 0
   2193                 while steps_done < steps_per_epoch:
-> 2194                     generator_output = next(output_generator)
   2195 
   2196                     if not hasattr(generator_output, '__len__'):

C:\Anaconda3\envs\tensorflow\lib\site-packages\keras\utils\data_utils.py in get(self)
    791             success, value = self.queue.get()
    792             if not success:
--> 793                 six.reraise(value.__class__, value, value.__traceback__)

C:\Anaconda3\envs\tensorflow\lib\site-packages\six.py in reraise(tp, value, tb)
    691             if value.__traceback__ is not tb:
    692                 raise value.with_traceback(tb)
--> 693             raise value
    694         finally:
    695             value = None

C:\Anaconda3\envs\tensorflow\lib\site-packages\keras\utils\data_utils.py in _data_generator_task(self)
    656                             # => Serialize calls to
    657                             # infinite iterator/generator's next() function
--> 658                             generator_output = next(self._generator)
    659                             self.queue.put((True, generator_output))
    660                         else:

<ipython-input-8-6d57f856a2c2> in Generator(batch_size)
      1 def Generator(batch_size=128):
      2     while 1:
----> 3         for i in range(len(sentences)/batch_size-1):
      4             x = np.zeros((batch_size, maxlen, len(chars)), dtype=np.bool)
      5             y = np.zeros((batch_size, len(chars)), dtype=np.bool)

TypeError: 'float' object cannot be interpreted as an integer

who can help me ? 
Reply all
Reply to author
Forward
0 new messages