in supervised_reptile/reptile.py [0:0]
def train_step(self,
dataset,
input_ph,
label_ph,
minimize_op,
num_classes,
num_shots,
inner_batch_size,
inner_iters,
replacement,
meta_step_size,
meta_batch_size):
old_vars = self._model_state.export_variables()
updates = []
for _ in range(meta_batch_size):
mini_dataset = _sample_mini_dataset(dataset, num_classes, num_shots)
mini_batches = self._mini_batches(mini_dataset, inner_batch_size, inner_iters,
replacement)
for batch in mini_batches:
inputs, labels = zip(*batch)
last_backup = self._model_state.export_variables()
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})
updates.append(subtract_vars(self._model_state.export_variables(), last_backup))
self._model_state.import_variables(old_vars)
update = average_vars(updates)
self._model_state.import_variables(add_vars(old_vars, scale_vars(update, meta_step_size)))