def create_data_gen_train(patients_train, BATCH_SIZE, OUTPUT_PATCH_SIZE, losses, INPUT_PATCH_SIZE):
    data_gen_train = BraTS25015_2D_generator_lossSampling(patients_train, BATCH_SIZE, PATCH_SIZE=tuple(np.array(OUTPUT_PATCH_SIZE)+30), losses=losses, num_batches=None, seed=None)
    data_gen_train = DeepLearningBatchGeneratorUtils.seg_channel_selection_generator(data_gen_train, [2])
    data_gen_train = DeepLearningBatchGeneratorUtils.mirror_axis_generator(data_gen_train)
    data_gen_train = DeepLearningBatchGeneratorUtils.rotation_and_elastic_transform_generator(data_gen_train, 150., 10.)
    data_gen_train = DeepLearningBatchGeneratorUtils.pad_generator(data_gen_train, INPUT_PATCH_SIZE)
    data_gen_train = DeepLearningBatchGeneratorUtils.center_crop_seg_generator(data_gen_train, OUTPUT_PATCH_SIZE)
    data_gen_train = DeepLearningBatchGeneratorUtils.MultiThreadedGenerator(data_gen_train, 6, 6)
    data_gen_train._start()
    return data_gen_train