def main(argv): parser = ArgumentParser(argv[0], description=__doc__) parser.add_argument('model', type=str) parser.add_argument('--data', '-d', type=str, default='data/BSDS300_8x8.mat') parser.add_argument('--num_data', '-N', type=int, default=1000000) args = parser.parse_args(argv[1:]) data_test = loadmat(args.data)['patches_test'] dim = data_test.shape[1] # reconstruct patches patch_size = int(sqrt(data_test.shape[1] + 1) + .5) data_test = hstack([data_test, -sum(data_test, 1)[:, None]]) data_test = data_test.reshape(-1, patch_size, patch_size) if args.num_data > 0 and data_test.shape[0] > args.num_data: data_test = data_test[random_select(args.num_data, data_test.shape[0])] model = Experiment(args.model)['model'] print '{0:.3f} [nat]'.format( -model.evaluate(data_test) * dim * log(2.))