是否存在将神经元及其相关连接添加到/从完全连接的PyBrain网络中删除的好方法?说我开始:
from pybrain.tools.shortcuts import buildNetwork
net = buildNetwork(2,3,1)
在保持所有旧权重的同时,如何将其变成(2,4,1)或(2,2,1)网络(并初始化网络时将所有新权重初始化为随机的)?我之所以想这样做,是因为我正在尝试使用进化学习策略来确定最佳架构,而“变异”步骤涉及以一定的概率添加/删除节点。 (输入和输出模块应始终保持不变。)
编辑:我发现NeuronDecomposableNetwork应该使这更容易,但似乎仍然必须分别跟踪神经元和连接。
最佳答案
我假设您正在按照NEAT算法进行操作?
您的问题有两种不同的答案:
sortModules()
方法。 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/