Why is accuracy from fit_generator different to that from evaluate_generator in Keras?

后端 未结 3 1573
别跟我提以往
别跟我提以往 2020-12-16 20:40

What I do:

  • I am training a pre-trained CNN with Keras fit_generator(). This produces evaluation metrics (loss, acc, val_los
3条回答
  •  被撕碎了的回忆
    2020-12-16 21:17

    Set use_multiprocessing=False at fit_generator level fixes the problem BUT at the cost of slowing down training significantly. A better but still imperfect workround would be to set use_multiprocessing=False for only the validation generator as the code below modified from keras' fit_generator function.

    ...
            try:
                if do_validation:
                    if val_gen and workers > 0:
                        # Create an Enqueuer that can be reused
                        val_data = validation_data
                        if isinstance(val_data, Sequence):
                            val_enqueuer = OrderedEnqueuer(val_data,
                                                           **use_multiprocessing=False**)
                            validation_steps = len(val_data)
                        else:
                            val_enqueuer = GeneratorEnqueuer(val_data,
                                                             **use_multiprocessing=False**)
                        val_enqueuer.start(workers=workers,
                                           max_queue_size=max_queue_size)
                        val_enqueuer_gen = val_enqueuer.get()
    ...
    

提交回复
热议问题