File size: 1,603 Bytes
a448db8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import pandas as pd
import matplotlib.pyplot as plt
import os

def main():
    os.makedirs('results', exist_ok=True)
    
    if not os.path.exists('rewards_log.csv'):
        print("No rewards_log.csv found. Run inference first.")
        return
        
    try:
        df = pd.read_csv('rewards_log.csv')
    except Exception as e:
        print(f"Error reading CSV: {e}")
        return
        
    if df.empty:
        print("rewards_log.csv is empty.")
        return

    # Plot 1: Reward Curve over Training Steps (using index as training step)
    plt.figure(figsize=(10, 6))
    plt.plot(df.index, df['reward'], alpha=0.3, label='Episode Reward')
    
    # 10-step rolling average
    rolling_avg = df['reward'].rolling(window=10, min_periods=1).mean()
    plt.plot(df.index, rolling_avg, color='red', linewidth=2, label='10-step Rolling Average')
    
    plt.xlabel('Training Step')
    plt.ylabel('Episode Reward (0-1)')
    plt.title('Reward Curve')
    plt.legend()
    plt.grid(True, alpha=0.3)
    plt.savefig('results/reward_curve.png')
    plt.close()
    
    # Plot 2: Average Reward per Task ID
    plt.figure(figsize=(10, 6))
    avg_per_task = df.groupby('task_id')['reward'].mean().sort_values()
    avg_per_task.plot(kind='barh', color='skyblue')
    plt.xlabel('Average Episode Reward (0-1)')
    plt.ylabel('Task ID')
    plt.title('Average Reward by Task ID')
    plt.grid(axis='x', alpha=0.3)
    plt.tight_layout()
    plt.savefig('results/reward_by_task.png')
    plt.close()
    
    print("Plots saved to results/ directory.")

if __name__ == "__main__":
    main()