小编Pau*_*low的帖子

被调用函数是否应始终检查C中的数组大小?

这是一个关于编程风格而不是技术性的问题:我的C函数是否总是需要一个数组长度的参数,尽管函数不依赖于它?

所以无论是喜欢这样void foo(int* a, int size)还是喜欢void foo(int* a)

例如,当函数只是操作数组的前128位时,函数是否需要一个数组长度,首先检查数组是否是正确的长度,或者我应该信任调用者,他遵循文档并只调用函数阵列的大小合适?

我是C的新手,所以我担心像缓冲区溢出这样的东西是可能的.为什么一个比另一个好的技术推理会很棒.谢谢!

c arrays coding-style

10
推荐指数
1
解决办法
643
查看次数

OpenAI Gym环境“ CartPole-v0”和“ CartPole-v1”之间的区别

我找不到OpenAI Gym环境“ CartPole-v0”和“ CartPole-v1”之间差异的确切描述。

两种环境都有专用于它们的单独的官方网站(请参见12),尽管我只能在Gym github存储库中找到一个没有版本识别的代码(请参阅3)。我还检查了通过调试器准确加载了哪些文件,尽管它们似乎都加载了相同的上述文件。唯一的区别似乎是它们在内部分配的max_episode_stepsreward_threshold,可以如下访问。CartPole-v0的值为200 / 195.0,而CartPole-v1的值为500 / 475.0。其余的乍一看似乎是相同的。

import gym

env = gym.make("CartPole-v1")
print(self.env.spec.max_episode_steps)
print(self.env.spec.reward_threshold)
Run Code Online (Sandbox Code Playgroud)

因此,如果有人可以为我描述确切的差异或将我转发到正在这样做的网站,我将不胜感激。非常感谢你!

machine-learning reinforcement-learning openai-gym

4
推荐指数
1
解决办法
853
查看次数

训练后将保存的 NEAT-Python Genome 应用到测试环境

我使用了一些 NEAT 算法为一些简单的游戏(例如 flappybird)编写了自己的 AI 代码。一切正常,我知道发生了什么。问题是我不知道如何处理结果。人工智能学到了一些东西,我想保存这个进度。TechwithTim YouTuber 说了一些关于使用 pickle 的事情,当我保存它时它对我有用。我什至可以从文件中加载它,但这就是我的结束。我不知道接下来要做什么,在知道在他之前玩游戏的那些鸟的情况下,只让一只鸟开始玩游戏。

保存在一个代码中

winner = p.run(game,50)
with open("winner.pkl", "wb") as f:
    pickle.dump(winner, f)
    f.close()
Run Code Online (Sandbox Code Playgroud)

用另一个代码打开:

with open("winner.pkl", "wb") as f:
    genome = pickle.load(f)
Run Code Online (Sandbox Code Playgroud)

使用时

print(type(genome))
Run Code Online (Sandbox Code Playgroud)

输出是

<class "neat.genome.DefaultGenome">
Run Code Online (Sandbox Code Playgroud)

python artificial-intelligence neat

3
推荐指数
1
解决办法
6068
查看次数