| import json | |
| import matplotlib.pyplot as plt | |
| import numpy as np | |
| import os | |
| DOMAINS = [ | |
| ("experiments/mnist_sci_v2", "MNIST (Vision)"), | |
| ("experiments/mitbih_sci_v2", "MIT-BIH (Medical)") | |
| ] | |
| def plot(): | |
| plt.figure(figsize=(10, 4)) | |
| for i, (path, name) in enumerate(DOMAINS): | |
| log = os.path.join(path, "per_example.jsonl") | |
| if not os.path.exists(log): continue | |
| data = [] | |
| with open(log, 'r') as f: | |
| for l in f: data.append(json.loads(l)) | |
| corr = [d['steps'] for d in data if d['correct_sci']] | |
| wrong = [d['steps'] for d in data if not d['correct_sci']] | |
| plt.subplot(1, 2, i+1) | |
| plt.hist(corr, bins=np.arange(1, 26)-0.5, alpha=0.6, density=True, label='Correct', color='green') | |
| plt.hist(wrong, bins=np.arange(1, 26)-0.5, alpha=0.6, density=True, label='Incorrect', color='red') | |
| plt.title(f"{name}: Adaptive Compute") | |
| plt.xlabel("Inference Steps") | |
| plt.ylabel("Density") | |
| plt.legend() | |
| plt.tight_layout() | |
| plt.savefig("metacognition_hero.png") | |
| print("Saved metacognition_hero.png") | |
| if __name__ == "__main__": | |
| plot() |