Keras创建自己的发电机

时间:2018-12-04 14:59:41

标签: python tensorflow keras deep-learning

我正在构建自己的生成器,以与keras库中的fit_generator()和predict_generator()函数一起使用。我的生成器工作正常,但我想知道它是否已正确构建。尤其是用于验证和测试集。

对于这两组,我禁用了数据增强处理,因为它仅用于训练阶段,但我仍在使用随机性从输入中选择数据。因此,我想知道仍然使用数据的随机性选择作为验证集是否正确?

我认为是,但是我不确定。

    def generator(inputs, labels, validation=False):  
       batch_inputs = np.zeros((batch_size, *input_shape))
       batch_labels = np.zeros((batch_size, num_classes))
       indexes = list(range(0,len(inputs))

       while True:
           for i in range(self.batch_size):
               # choose random index in inputs
               if validation:
                  index = indexes.pop()
               else:
                  index = random.randint(0, len(inputs) - 1)

               batch_inputs[i] = rgb_processing(inputs[index], validation) # data_augmentation processing functions validation=true --> disable data augmentation
               batch_labels[i] = to_categorical(labels[index], num_classes=self.num_classes)
           yield batch_inputs, batch_labels


    train_batches = generator(train.X.values, train.y.values)
    validate_batches = generator(validate.X.values, validate.y.values, validation=True)

1 个答案:

答案 0 :(得分:1)

在验证中,图像的顺序不应影响您的结果。因此,从理论上讲,以随机顺序给出验证图像是没有问题的。您只想确保所有验证图像都仅使用一次,这样您的结果就具有可比性。