in supervised_reptile/reptile.py [0:0]
def evaluate(self,
dataset,
input_ph,
label_ph,
minimize_op,
predictions,
num_classes,
num_shots,
inner_batch_size,
inner_iters,
replacement):
"""
Run a single evaluation of the model.
Samples a few-shot learning task and measures
performance.
Args:
dataset: a sequence of data classes, where each data
class has a sample(n) method.
input_ph: placeholder for a batch of samples.
label_ph: placeholder for a batch of labels.
minimize_op: TensorFlow Op to minimize a loss on the
batch specified by input_ph and label_ph.
predictions: a Tensor of integer label predictions.
num_classes: number of data classes to sample.
num_shots: number of examples per data class.
inner_batch_size: batch size for every inner-loop
training iteration.
inner_iters: number of inner-loop iterations.
replacement: sample with replacement.
Returns:
The number of correctly predicted samples.
This always ranges from 0 to num_classes.
"""
train_set, test_set = _split_train_test(
_sample_mini_dataset(dataset, num_classes, num_shots+1))
old_vars = self._full_state.export_variables()
for batch in _mini_batches(train_set, inner_batch_size, inner_iters, replacement):
inputs, labels = zip(*batch)
if self._pre_step_op:
self.session.run(self._pre_step_op)
self.session.run(minimize_op, feed_dict={input_ph: inputs, label_ph: labels})
test_preds = self._test_predictions(train_set, test_set, input_ph, predictions)
num_correct = sum([pred == sample[1] for pred, sample in zip(test_preds, test_set)])
self._full_state.import_variables(old_vars)
return num_correct