run_miniimagenet.py (27 lines of code) (raw):
"""
Train a model on miniImageNet.
"""
import random
import tensorflow as tf
from supervised_reptile.args import argument_parser, model_kwargs, train_kwargs, evaluate_kwargs
from supervised_reptile.eval import evaluate
from supervised_reptile.models import MiniImageNetModel
from supervised_reptile.miniimagenet import read_dataset
from supervised_reptile.train import train
DATA_DIR = 'data/miniimagenet'
def main():
"""
Load data and train a model on it.
"""
args = argument_parser().parse_args()
random.seed(args.seed)
train_set, val_set, test_set = read_dataset(DATA_DIR)
model = MiniImageNetModel(args.classes, **model_kwargs(args))
with tf.Session() as sess:
if not args.pretrained:
print('Training...')
train(sess, model, train_set, test_set, args.checkpoint, **train_kwargs(args))
else:
print('Restoring from checkpoint...')
tf.train.Saver().restore(sess, tf.train.latest_checkpoint(args.checkpoint))
print('Evaluating...')
eval_kwargs = evaluate_kwargs(args)
print('Train accuracy: ' + str(evaluate(sess, model, train_set, **eval_kwargs)))
print('Validation accuracy: ' + str(evaluate(sess, model, val_set, **eval_kwargs)))
print('Test accuracy: ' + str(evaluate(sess, model, test_set, **eval_kwargs)))
if __name__ == '__main__':
main()