Migrate snake example to observation_function and refresh its training run
The egocentric/egocentric_player/egocentric_radius flags were removed from retro_gamer in favor of an explicit observation_function. snake_observation.py reproduces the old egocentric+board+extras behavior by calling egocentric_board/encode_board/encode_state directly, and runs/snake/config.toml now points at it. That config change made the prior 12,000-episode checkpoint history incompatible (retro_gamer's checkpoint compatibility checker can't verify a new observation_function is behaviorally equivalent to the old flags, so it conservatively refuses to resume), so the old checkpoints were deleted and a fresh 20,000-episode run was recorded. Track only the four checkpoints the lab actually references (ep_1300, ep_2300, ep_4000, ep_20000) instead of all 200, and update .gitignore so future student runs of runs/snake aren't committed by default. snake_training.md's Q5 training-curve table and Q6 checkpoint episodes are updated to match the real numbers from this run.
This commit is contained in:
53
runs/snake/config.toml
Normal file
53
runs/snake/config.toml
Normal file
@@ -0,0 +1,53 @@
|
||||
[game]
|
||||
module = "retro.examples.snake"
|
||||
|
||||
[metadata]
|
||||
actions = [
|
||||
"KEY_RIGHT",
|
||||
"KEY_UP",
|
||||
"KEY_LEFT",
|
||||
"KEY_DOWN",
|
||||
]
|
||||
reward = "reward"
|
||||
extras_size = 2
|
||||
board_size = [
|
||||
17,
|
||||
17,
|
||||
]
|
||||
character_set = [
|
||||
"@",
|
||||
"*",
|
||||
">",
|
||||
"<",
|
||||
"^",
|
||||
"v",
|
||||
]
|
||||
observation_function = "snake_observation:egocentric_observation"
|
||||
|
||||
[preprocessing]
|
||||
spatial = false
|
||||
board = true
|
||||
observe_state = []
|
||||
|
||||
[model]
|
||||
hidden_sizes = [
|
||||
128,
|
||||
64,
|
||||
]
|
||||
|
||||
[training]
|
||||
learning_rate = 0.0001
|
||||
learning_rate_decay = 0.9999
|
||||
gamma = 0.99
|
||||
epsilon = 1.0
|
||||
epsilon_decay = 0.9997
|
||||
epsilon_min = 0.05
|
||||
batch_size = 64
|
||||
memory_capacity = 50000
|
||||
target_update_freq = 500
|
||||
train_every = 4
|
||||
training_episodes = 20000
|
||||
prioritize_experiences = true
|
||||
exploration_turns = 200
|
||||
unknown_character_strategy = "ignore"
|
||||
max_turns_per_episode = 2000
|
||||
Reference in New Issue
Block a user