训练后将保存的整洁Python基因组应用于测试环境

训练后将保存的整洁Python基因组应用于测试环境,python,artificial-intelligence,neat,Python,Artificial Intelligence,Neat,我使用了一些简洁的算法来编写我自己的AI,用于一些简单的游戏,比如flappy bird。一切正常,我知道发生了什么。问题是我不知道如何处理结果。人工智能学到了一些东西,我想保存这一进展。TechWithTimYouTuber说了一些关于使用pickle的事情,当我保存它时,它对我很有用。我甚至可以从文件中加载它,但这就是我结束的地方。我不知道下一步该怎么做,只让一只鸟在他面前玩游戏 保存在一个代码中 winner = p.run(game,50) with open("winner.pkl",

我使用了一些简洁的算法来编写我自己的AI,用于一些简单的游戏,比如flappy bird。一切正常,我知道发生了什么。问题是我不知道如何处理结果。人工智能学到了一些东西,我想保存这一进展。TechWithTimYouTuber说了一些关于使用pickle的事情,当我保存它时,它对我很有用。我甚至可以从文件中加载它,但这就是我结束的地方。我不知道下一步该怎么做,只让一只鸟在他面前玩游戏

保存在一个代码中

winner = p.run(game,50)
with open("winner.pkl", "wb") as f:
    pickle.dump(winner, f)
    f.close()
在另一代码中打开:

with open("winner.pkl", "wb") as f:
    genome = pickle.load(f)
使用时

print(type(genome))
输出为

<class "neat.genome.DefaultGenome">

我假设您提供的代码不是您自己的,并且您遵循了某种教程。代码的质量很低,注释形式的文档几乎不存在,变量命名也不是英语。如果你编写了代码,那么对于初学者来说,这是完全正确的。事实上甚至令人印象深刻。虽然特别是对于初学者教程,我强烈建议搜索更好的解释和文档化教程

话虽如此,为了重播保存的基因组,您需要向项目中添加以下代码:

def replay_genome(config_path, genome_path="winner.pkl"):
    # Load requried NEAT config
    config = neat.config.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path)

    # Unpickle saved winner
    with open(genome_path, "rb") as f:
        genome = pickle.load(f)

    # Convert loaded genome into required data structure
    genomes = [(1, genome)]

    # Call game with only the loaded genome
    game(genomes, config)
显然,由于代码质量很低,我无法理解到提供干净的重播代码的程度。因此,代码只是简单地重用现有的游戏代码来训练种群,尽管在这种情况下种群只包含加载的基因组

无耻插头:如果您想了解更多有关神经进化的信息,请参阅此处:

看起来您成功保存并加载了基因组。你现在的问题是如何将保存在该基因组中的神经网络再次应用于测试环境。如果你上传一个链接到你训练种群(基因组集合)的代码,我可以指出你将基因组应用到测试环境的部分。然后,您只需使用选定的优胜者基因组重复此代码结构@保伦斯塔克酒店