我正在构建自己的生成器,以与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)
答案 0 :(得分:1)
在验证中,图像的顺序不应影响您的结果。因此,从理论上讲,以随机顺序给出验证图像是没有问题的。您只想确保所有验证图像都仅使用一次,这样您的结果就具有可比性。