def after_ep_func(epoch):
        out_fp = comb_paths(run_hp.output_path,
                            'ep%d_%s' % (epoch, run_hp.checkpoint_full_fn))
        imodel.save_state(out_fp)

        gen_folder_path = comb_paths(run_hp.output_path, "output_ep%d" % epoch)
        summ_eval(output_folder=gen_folder_path,
                  data_pipeline=eval_data_pipeline,
                  eval_data_source=eval_dev_data_source,
                  summ_gen_func=partial(idev.summ_generator,
                                        summ_post_proc=summ_post_proc),
                  rev_formatter_func=idev.format_revs,
                  avg_rouge=True,
                  sent_splitter=run_hp.sent_split_func,
                  analytics_func=run_hp.analytics_func)
        gen_seqs(data_sources=gen_data_sources,
                 output_folder=gen_folder_path,
                 gen_func=partial(idev.gen_and_save_summs))
                               epochs=run_hp.epochs,
                               after_epoch_func=after_ep_func)
        logger.info("Total time elapsed %f (s) " % (time() - start))

        imodel.save_state(
            comb_paths(run_hp.output_path, run_hp.checkpoint_full_fn))

    #   AFTER TRAINING PROCEDURES   #

    gen_folder_path = comb_paths(run_hp.output_path, "output")

    summ_eval(output_folder=gen_folder_path,
              eval_data_source=eval_test_data_source,
              summ_gen_func=partial(idev.summ_generator,
                                    summ_post_proc=summ_post_proc),
              data_pipeline=eval_data_pipeline,
              rev_formatter_func=idev.format_revs,
              avg_rouge=True,
              sent_splitter=run_hp.sent_split_func,
              analytics_func=run_hp.analytics_func)

    gen_seqs(data_sources=gen_data_sources,
             output_folder=gen_folder_path,
             gen_func=partial(idev.gen_and_save_summs))
else:
    # inference procedure where summaries are generated for reviews in CSV
    # files
    infer_bsz = parser_args.infer_batch_size
    infer_inp_file_path = parser_args.infer_input_file_path
    out_file_name = get_file_name(infer_inp_file_path)
    infer_out_file_path = comb_paths(run_hp.output_path,