in supervised_reptile/reptile.py [0:0]
def _split_train_test(samples, test_shots=1):
"""
Split a few-shot task into a train and a test set.
Args:
samples: an iterable of (input, label) pairs.
test_shots: the number of examples per class in the
test set.
Returns:
A tuple (train, test), where train and test are
sequences of (input, label) pairs.
"""
train_set = list(samples)
test_set = []
labels = set(item[1] for item in train_set)
for _ in range(test_shots):
for label in labels:
for i, item in enumerate(train_set):
if item[1] == label:
del train_set[i]
test_set.append(item)
break
if len(test_set) < len(labels) * test_shots:
raise IndexError('not enough examples of each class for test set')
return train_set, test_set