大脑皮层神经元操作

2024-06-10 19:05:10 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一个好方法可以在完全连接的大脑网络中添加/删除神经元及其相关连接?假设我从:

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

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

编辑:我发现了神经元可分解网络,这应该会使这更容易,但似乎我仍然需要分别跟踪神经元和连接。在


Tags: 方法fromimport网络net架构步骤tools
1条回答
网友
1楼 · 发布于 2024-06-10 19:05:10

我想你是按照NEAT算法来做的? 你的问题有两个不同的答案:

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

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

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


总评:对于像您这样的pybrain的更高级的使用,依赖“buildNetwork”快捷方式实在是太有限了,您应该直接使用Network/Module/connectionapi。在

相关问题 更多 >