gpt4 book ai didi

python - PyBrain 神经元操作

转载 作者:太空狗 更新时间:2023-10-30 00:08:01 25 4
gpt4 key购买 nike

是否有一种好方法可以在完全连接的 PyBrain 网络中添加/删除神经元及其关联连接?假设我开始于:

from pybrain.tools.shortcuts import buildNetwork
net = buildNetwork(2,3,1)

我如何在保持所有旧权重的同时使其成为 (2,4,1) 或 (2,2,1) 网络(并将任何新权重初始化为随机的,就像在初始化网络时所做的那样) )?我想这样做的原因是因为我试图使用进化学习策略来确定最佳架构,而“变异”步骤涉及以一定概率添加/删除节点。 (输入和输出模块应该始终保持不变。)

编辑:我发现 NeuronDecomposableNetwork 应该可以使这更容易,但我似乎仍然必须分别跟踪神经元和连接。

最佳答案

我假设您正在按照 NEAT 的思路进行操作算法?您的问题有两种不同的答案:

  1. 开放式网络拓扑的演变:在这种情况下,我建议将每个神经元封装在它自己的“层”/模块中,并添加/删除它们及其与网络的连接迭代,有点像 this tutorial ,除了会有更多(单神经元)层。不要忘记在每次拓扑更改后调用 sortModules() 方法。

  2. 在预定义的框架(比如最多 1000 个神经元)内找到最佳拓扑。在这种情况下,一开始就构建完整的网络会更容易、更高效,并且只需屏蔽一些连接(例如使用 MaskedParameters 模块)。其中,memetic algorithms (used like this)旨在搜索此类拓扑空间。

如您所说,另一种方法是手动管理所有权重(通过跟踪 what is where 或使用 NeuronDecomposableNetwork),但我不推荐那样做。


一般性评论:对于像您这样的 pybrain 的更高级用途,依赖“buildNetwork”快捷方式确实太有限了,您将希望直接使用 Network/Module/Connection API。

关于python - PyBrain 神经元操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11660014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com