Python 脑神经元操作

Python 脑神经元操作,python,neural-network,pybrain,Python,Neural Network,Pybrain,有没有一种好方法可以将神经元及其相关连接添加/删除到完全连接的大脑网络中?假设我从以下几点开始: from pybrain.tools.shortcuts import buildNetwork net = buildNetwork(2,3,1) 在保持所有旧权重的同时(并像初始化网络时那样,将任何新权重初始化为随机权重),我将如何使其成为(2,4,1)或(2,2,1)网络?我之所以想这样做,是因为我试图使用进化学习策略来确定最佳架构,“变异”步骤涉及以一定概率添加/删除节点。(输入和输出模块

有没有一种好方法可以将神经元及其相关连接添加/删除到完全连接的大脑网络中?假设我从以下几点开始:

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


编辑:我找到了NeuronDecomposableNetwork,这应该会使这更容易,但似乎我仍然必须单独跟踪神经元和连接。

我想你是按照算法的思路来做的? 您的问题有两种不同的答案:

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

  • 在预定义的框架内寻找最佳拓扑(最多1000个神经元)。在这种情况下,一开始构建完整的网络更容易、更高效,只需屏蔽部分连接(例如使用模块)。其中,设计用于搜索此类拓扑空间的

  • 正如您所说,另一种方法是手动管理所有权重(通过跟踪或使用
    NeuronalDecomposableNetwork
    ),但我不建议这样做



    一般评论:对于pybrain的更高级使用,如您的pybrain,依赖“buildNetwork”快捷方式实在是太有限了,您需要直接使用网络/模块/连接API。

    太棒了,这对我很有帮助,谢谢!我真的很喜欢第一个想法。从来没有想过使用层作为单独的神经元。是的,在尝试了大约三天之后,我也不推荐手动管理lol(另一个stackoverflow帖子就是我想到的)。我会在做了一些实验后回来(这是我第一次发现它,但几乎正是我想要得到的),并用结果更新我的帖子。