这真的只是一个好奇的问题。我的代码有效。我有大量实例,我试图将其分成不同的组(训练、验证和测试)。它们在一个列表中表示,但重要的是它们以 23 人为一组。这是我的实现:
train_end = int(len(instances)*TRAINING_END)
while train_end % CHANNELS != 0:
train_end -= 1
valid_end = int(len(instances)*VALIDATION_END)
while valid_end % CHANNELS != 0:
valid_end += 1
然后我使用 [:train_end], [train_end:valid_end], [valid_end:]
对列表进行分区。我觉得在python中采取这么多步骤的所有方法都有更简单的方法。有什么想法吗?
您可以通过执行以下操作跳过 while 循环:
train_end = (int(len(instances)*TRAINING_END) // CHANNELS) * CHANNELS
这样做的效果是确保int(len(instances)*TRAINING_END)
可以被CHANNELS
整除。
对于valid_end
,等价效应为:
valid_end = (int(len(instances)*VALIDATION_END) // CHANNELS + 1) * CHANNELS