动态改变神经网络结构

时间:2017-08-31 14:48:17

标签: machine-learning tensorflow neural-network

我正在尝试实现类似NEAT的算法,该算法涉及动态改变神经网络结构,如添加或删除节点和连接。我一直在使用Tensorflow来完成我以前在监督学习方面的工作。但是,一旦在Tensorflow中定义了网络,就无法对其进行更改。是否有其他可用的框架提供此功能? 感谢。

1 个答案:

答案 0 :(得分:1)

除非它是专门为NEAT设计的框架,否则,不是真的。符号执行的本质必然意味着“创建网络”#34;接下来是一个"运行/训练网络"步。但是,根据您改变网络拓扑的频率类型,Tensorflow绝对可行:它经常会保存所有参数,并制作新模型 - 但这可能不是可怕,取决于你的参数。

如果您不喜欢这样,您可以使用屏蔽手动将更多内容整合在一起。也就是说,有一些神经元"掩盖" out and removed,或者某些connnections" masked"出。您可以通过为应用之前预先乘以参数的所有参数设置0-1值掩码来实现此目的。保持"允许"连接稀疏,但尽可能密集地连接其他所有东西。它会在某种程度上让你减速,因为有一些额外的计算,但tf.cond调用可能只能通过有条件执行来节省你的大部分时间。这不能让您完全免费拓扑演变,但可以非常灵活。