48 lines
1.1 KiB
Ruby
Executable File
48 lines
1.1 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
def save(model_name)
|
|
require 'date'
|
|
|
|
models_dir = 'models'
|
|
model_path = File.join(models_dir, model_name)
|
|
if not File.exists? model_path then
|
|
return false
|
|
end
|
|
|
|
episode_count = (File.read File.join(model_path, 'episodes_trained')).to_i
|
|
|
|
puts "Found model #{model_name} with episodes #{episode_count} trained!"
|
|
|
|
file_name = "model-#{model_name}-#{episode_count}-#{Time.now.strftime('%Y%m%d-%H%M%S')}.tar.gz"
|
|
save_path = File.join(models_dir, 'saves', file_name)
|
|
puts "Saving to #{save_path}"
|
|
|
|
system("tar", "-cvzf", save_path, "-C", models_dir, model_name)
|
|
|
|
return true
|
|
end
|
|
|
|
def train(model, episodes)
|
|
system("python3", "main.py", "--train", "--model", model, "--episodes", episodes.to_s)
|
|
end
|
|
|
|
def evaluate(model, episodes, method)
|
|
system("python3", "main.py", "--eval" , "--model", model, "--episodes", episodes.to_s, "--eval-methods", method)
|
|
end
|
|
|
|
model = ARGV[0]
|
|
|
|
if model.nil? then raise "no model specified" end
|
|
|
|
while true do
|
|
save model
|
|
train model, 1000
|
|
save model
|
|
train model, 1000
|
|
3.times do
|
|
evaluate model, 250, "pubeval"
|
|
end
|
|
3.times do
|
|
evaluate model, 250, "dumbeval"
|
|
end
|
|
end
|