python - PyBrain 神经元操作

标签 python neural-network pybrain

是否有一种好方法可以在完全连接的 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/

相关文章:

python - 使用 Pybrain 进行序列模式识别

python - Pybrain 神经网络 : _convertToOneOfMany error

python - 在 sqlalchemy 核心中使用 IFNULL

python - 如何为文件中的每个单词添加数字组合?

python - 在 Python 中打印一列二维列表

machine-learning - 我们如何在数据集上使用无监督学习技术,然后标记集群?

python - 如何在Python中为MySQL设置空值

python - 使用神经网络的多元线性回归中的系数值

machine-learning - 何时停止训练 - LOOV MLP

python - PyBrain:删除单个连接