Как сохранить и переобучить модель аккуратного питона?

Я обучаю модель изящного питона игре в змейку. Я хочу сохранить модель через 50 поколений, а после этого хочу загрузить и переобучить оттуда, возможно ли это? Я видел метод, в котором вы можете воспроизвести его, но просто воспроизвести его один раз, не переучивая его с этого этапа.

Мой код для сохранения:

winner = p.run(main, 170)
with open("winner.pkl", "wb") as f:
    pickle.dump(winner, f)
    f.close()

Я хочу иметь возможность загрузить его и снова вызвать функцию запуска, чтобы переобучить его

def run(config_file):
config = neat.config.Config(neat.DefaultGenome, neat.DefaultReproduction,
                            neat.DefaultSpeciesSet, neat.DefaultStagnation,
                            config_file)
p = neat.Population(config)
p.add_reporter(neat.StdOutReporter(True))
stats = neat.StatisticsReporter()
p.add_reporter(stats)
winner = p.run(main, 50)
with open("winner.pkl", "wb") as f:
    pickle.dump(winner, f)
    f.close()

if __name__ == '__main__':
    local_dir = os.path.dirname(__file__)
    config_path = os.path.join(local_dir, 'config-feedforward.txt')
    run(config_path)

person Silvian Achim    schedule 30.07.2020    source источник
comment
посмотрите на это: stackoverflow.com/questions/61365668/ мне помогло)   -  person Евгений Ананьин    schedule 27.08.2020


Ответы (1)


Попробуй это:

https://neat-python.readthedocs.io/en/latest/_modules/checkpoint.html

Он работает, только проблема в том, что он загружается из последнего сохраненного поколения и перезаписывает его снова.

Итак, если вы пробежите 5 поколений и сохраните все 5: 0,1,2,3,4; Если вы загрузите последний, то получите сейвы: 4,5,6,7,8

Это не позволяет сохранить только одно поколение, так как оно будет загружать заново одно и то же поколение, что в основном оставит вас в поколении 0 все время ... супер странно.

Но это сценарий, если вы не против каждый раз терять последнее поколение.

Кто-нибудь, у кого есть обходной путь для этого?

person Igor Markovic    schedule 30.09.2020